blob: 191307f2dcec308bfedf106b56829bf2dbc293ca [file] [log] [blame]
Mark Young39389872017-01-19 21:10:49 -07001// Copyright (c) 2015-2017 The Khronos Group Inc.
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06003// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06007// http://www.apache.org/licenses/LICENSE-2.0
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06009// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014
15// This header is generated from the Khronos Vulkan XML API Registry.
16
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017#ifndef VULKAN_HPP
18#define VULKAN_HPP
19
20#include <algorithm>
21#include <array>
22#include <cassert>
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023#include <cstddef>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024#include <cstdint>
25#include <cstring>
26#include <initializer_list>
27#include <string>
28#include <system_error>
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029#include <tuple>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030#include <type_traits>
31#include <vulkan/vulkan.h>
32#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33# include <memory>
34# include <vector>
35#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060036static_assert( VK_HEADER_VERSION == 55 , "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
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600428 enum class Result
429 {
430 eSuccess = VK_SUCCESS,
431 eNotReady = VK_NOT_READY,
432 eTimeout = VK_TIMEOUT,
433 eEventSet = VK_EVENT_SET,
434 eEventReset = VK_EVENT_RESET,
435 eIncomplete = VK_INCOMPLETE,
436 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
437 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
438 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
439 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
440 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
441 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
442 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
443 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
444 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
445 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
446 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600447 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600448 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
449 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
450 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
451 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
452 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
453 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700454 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700455 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -0600456 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600457 };
458
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700459 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600460 {
461 switch (value)
462 {
463 case Result::eSuccess: return "Success";
464 case Result::eNotReady: return "NotReady";
465 case Result::eTimeout: return "Timeout";
466 case Result::eEventSet: return "EventSet";
467 case Result::eEventReset: return "EventReset";
468 case Result::eIncomplete: return "Incomplete";
469 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
470 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
471 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
472 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
473 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
474 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
475 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
476 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
477 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
478 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
479 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600480 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600481 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
482 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
483 case Result::eSuboptimalKHR: return "SuboptimalKHR";
484 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
485 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
486 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
487 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700488 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -0600489 case Result::eErrorInvalidExternalHandleKHR: return "ErrorInvalidExternalHandleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600490 default: return "invalid";
491 }
492 }
493
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600494#ifndef VULKAN_HPP_NO_EXCEPTIONS
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600495#if defined(_MSC_VER) && (_MSC_VER == 1800)
496# define noexcept _NOEXCEPT
497#endif
498
499 class ErrorCategoryImpl : public std::error_category
500 {
501 public:
502 virtual const char* name() const noexcept override { return "vk::Result"; }
503 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
504 };
505
506#if defined(_MSC_VER) && (_MSC_VER == 1800)
507# undef noexcept
508#endif
509
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700510 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600511 {
512 static ErrorCategoryImpl instance;
513 return instance;
514 }
515
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700516 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600517 {
518 return std::error_code(static_cast<int>(e), errorCategory());
519 }
520
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700521 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600522 {
523 return std::error_condition(static_cast<int>(e), errorCategory());
524 }
525
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600526#if defined(_MSC_VER) && (_MSC_VER == 1800)
527# define noexcept _NOEXCEPT
528#endif
529
530 class Error
531 {
532 public:
533 virtual ~Error() = default;
534
535 virtual const char* what() const noexcept = 0;
536 };
537
538 class LogicError : public Error, public std::logic_error
539 {
540 public:
541 explicit LogicError( const std::string& what )
542 : Error(), std::logic_error(what) {}
543 explicit LogicError( char const * what )
544 : Error(), std::logic_error(what) {}
545 virtual ~LogicError() = default;
546
547 virtual const char* what() const noexcept { return std::logic_error::what(); }
548 };
549
550 class SystemError : public Error, public std::system_error
551 {
552 public:
553 SystemError( std::error_code ec )
554 : Error(), std::system_error(ec) {}
555 SystemError( std::error_code ec, std::string const& what )
556 : Error(), std::system_error(ec, what) {}
557 SystemError( std::error_code ec, char const * what )
558 : Error(), std::system_error(ec, what) {}
559 SystemError( int ev, std::error_category const& ecat )
560 : Error(), std::system_error(ev, ecat) {}
561 SystemError( int ev, std::error_category const& ecat, std::string const& what)
562 : Error(), std::system_error(ev, ecat, what) {}
563 SystemError( int ev, std::error_category const& ecat, char const * what)
564 : Error(), std::system_error(ev, ecat, what) {}
565 virtual ~SystemError() = default;
566
567 virtual const char* what() const noexcept { return std::system_error::what(); }
568 };
569
570#if defined(_MSC_VER) && (_MSC_VER == 1800)
571# undef noexcept
572#endif
573
574 class OutOfHostMemoryError : public SystemError
575 {
576 public:
577 OutOfHostMemoryError( std::string const& message )
578 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
579 OutOfHostMemoryError( char const * message )
580 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
581 };
582 class OutOfDeviceMemoryError : public SystemError
583 {
584 public:
585 OutOfDeviceMemoryError( std::string const& message )
586 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
587 OutOfDeviceMemoryError( char const * message )
588 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
589 };
590 class InitializationFailedError : public SystemError
591 {
592 public:
593 InitializationFailedError( std::string const& message )
594 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
595 InitializationFailedError( char const * message )
596 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
597 };
598 class DeviceLostError : public SystemError
599 {
600 public:
601 DeviceLostError( std::string const& message )
602 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
603 DeviceLostError( char const * message )
604 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
605 };
606 class MemoryMapFailedError : public SystemError
607 {
608 public:
609 MemoryMapFailedError( std::string const& message )
610 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
611 MemoryMapFailedError( char const * message )
612 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
613 };
614 class LayerNotPresentError : public SystemError
615 {
616 public:
617 LayerNotPresentError( std::string const& message )
618 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
619 LayerNotPresentError( char const * message )
620 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
621 };
622 class ExtensionNotPresentError : public SystemError
623 {
624 public:
625 ExtensionNotPresentError( std::string const& message )
626 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
627 ExtensionNotPresentError( char const * message )
628 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
629 };
630 class FeatureNotPresentError : public SystemError
631 {
632 public:
633 FeatureNotPresentError( std::string const& message )
634 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
635 FeatureNotPresentError( char const * message )
636 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
637 };
638 class IncompatibleDriverError : public SystemError
639 {
640 public:
641 IncompatibleDriverError( std::string const& message )
642 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
643 IncompatibleDriverError( char const * message )
644 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
645 };
646 class TooManyObjectsError : public SystemError
647 {
648 public:
649 TooManyObjectsError( std::string const& message )
650 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
651 TooManyObjectsError( char const * message )
652 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
653 };
654 class FormatNotSupportedError : public SystemError
655 {
656 public:
657 FormatNotSupportedError( std::string const& message )
658 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
659 FormatNotSupportedError( char const * message )
660 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
661 };
662 class FragmentedPoolError : public SystemError
663 {
664 public:
665 FragmentedPoolError( std::string const& message )
666 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
667 FragmentedPoolError( char const * message )
668 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
669 };
670 class SurfaceLostKHRError : public SystemError
671 {
672 public:
673 SurfaceLostKHRError( std::string const& message )
674 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
675 SurfaceLostKHRError( char const * message )
676 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
677 };
678 class NativeWindowInUseKHRError : public SystemError
679 {
680 public:
681 NativeWindowInUseKHRError( std::string const& message )
682 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
683 NativeWindowInUseKHRError( char const * message )
684 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
685 };
686 class OutOfDateKHRError : public SystemError
687 {
688 public:
689 OutOfDateKHRError( std::string const& message )
690 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
691 OutOfDateKHRError( char const * message )
692 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
693 };
694 class IncompatibleDisplayKHRError : public SystemError
695 {
696 public:
697 IncompatibleDisplayKHRError( std::string const& message )
698 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
699 IncompatibleDisplayKHRError( char const * message )
700 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
701 };
702 class ValidationFailedEXTError : public SystemError
703 {
704 public:
705 ValidationFailedEXTError( std::string const& message )
706 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
707 ValidationFailedEXTError( char const * message )
708 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
709 };
710 class InvalidShaderNVError : public SystemError
711 {
712 public:
713 InvalidShaderNVError( std::string const& message )
714 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
715 InvalidShaderNVError( char const * message )
716 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
717 };
718 class OutOfPoolMemoryKHRError : public SystemError
719 {
720 public:
721 OutOfPoolMemoryKHRError( std::string const& message )
722 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
723 OutOfPoolMemoryKHRError( char const * message )
724 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
725 };
Mark Youngabc2d6e2017-07-07 07:59:56 -0600726 class InvalidExternalHandleKHRError : public SystemError
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600727 {
728 public:
Mark Youngabc2d6e2017-07-07 07:59:56 -0600729 InvalidExternalHandleKHRError( std::string const& message )
730 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
731 InvalidExternalHandleKHRError( char const * message )
732 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600733 };
734
735 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
736 {
737 assert ( static_cast<long long int>(result) < 0 );
738 switch ( result )
739 {
740 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
741 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
742 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
743 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
744 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
745 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
746 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
747 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
748 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
749 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
750 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
751 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
752 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
753 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
754 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
755 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
756 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
757 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
758 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
Mark Youngabc2d6e2017-07-07 07:59:56 -0600759 case Result::eErrorInvalidExternalHandleKHR: throw InvalidExternalHandleKHRError ( message );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600760 default: throw SystemError( make_error_code( result ) );
761 }
762 }
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600763#endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600764} // namespace vk
765
766namespace std
767{
768 template <>
769 struct is_error_code_enum<vk::Result> : public true_type
770 {};
771}
772
773namespace vk
774{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600775
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600776 template <typename T>
777 struct ResultValue
778 {
779 ResultValue( Result r, T & v )
780 : result( r )
781 , value( v )
782 {}
783
784 Result result;
785 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700786
787 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600788 };
789
790 template <typename T>
791 struct ResultValueType
792 {
793#ifdef VULKAN_HPP_NO_EXCEPTIONS
794 typedef ResultValue<T> type;
795#else
796 typedef T type;
797#endif
798 };
799
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600800 template <>
801 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600802 {
803#ifdef VULKAN_HPP_NO_EXCEPTIONS
804 typedef Result type;
805#else
806 typedef void type;
807#endif
808 };
809
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700810 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600811 {
812#ifdef VULKAN_HPP_NO_EXCEPTIONS
813 assert( result == Result::eSuccess );
814 return result;
815#else
816 if ( result != Result::eSuccess )
817 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600818 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600819 }
820#endif
821 }
822
823 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700824 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600825 {
826#ifdef VULKAN_HPP_NO_EXCEPTIONS
827 assert( result == Result::eSuccess );
828 return ResultValue<T>( result, data );
829#else
830 if ( result != Result::eSuccess )
831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600832 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600833 }
834 return data;
835#endif
836 }
837
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700838 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600839 {
840#ifdef VULKAN_HPP_NO_EXCEPTIONS
841 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
842#else
843 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
844 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600845 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600846 }
847#endif
848 return result;
849 }
850
851 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700852 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 -0600853 {
854#ifdef VULKAN_HPP_NO_EXCEPTIONS
855 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
856#else
857 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
858 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600859 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600860 }
861#endif
862 return ResultValue<T>( result, data );
863 }
864
865 using SampleMask = uint32_t;
866
867 using Bool32 = uint32_t;
868
869 using DeviceSize = uint64_t;
870
871 enum class FramebufferCreateFlagBits
872 {
873 };
874
875 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
876
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600877 enum class QueryPoolCreateFlagBits
878 {
879 };
880
881 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
882
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600883 enum class RenderPassCreateFlagBits
884 {
885 };
886
887 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
888
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600889 enum class SamplerCreateFlagBits
890 {
891 };
892
893 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
894
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600895 enum class PipelineLayoutCreateFlagBits
896 {
897 };
898
899 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
900
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600901 enum class PipelineCacheCreateFlagBits
902 {
903 };
904
905 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
906
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600907 enum class PipelineDepthStencilStateCreateFlagBits
908 {
909 };
910
911 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
912
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600913 enum class PipelineDynamicStateCreateFlagBits
914 {
915 };
916
917 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
918
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600919 enum class PipelineColorBlendStateCreateFlagBits
920 {
921 };
922
923 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
924
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600925 enum class PipelineMultisampleStateCreateFlagBits
926 {
927 };
928
929 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
930
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600931 enum class PipelineRasterizationStateCreateFlagBits
932 {
933 };
934
935 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
936
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600937 enum class PipelineViewportStateCreateFlagBits
938 {
939 };
940
941 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
942
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600943 enum class PipelineTessellationStateCreateFlagBits
944 {
945 };
946
947 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
948
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600949 enum class PipelineInputAssemblyStateCreateFlagBits
950 {
951 };
952
953 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
954
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600955 enum class PipelineVertexInputStateCreateFlagBits
956 {
957 };
958
959 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
960
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600961 enum class PipelineShaderStageCreateFlagBits
962 {
963 };
964
965 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
966
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600967 enum class BufferViewCreateFlagBits
968 {
969 };
970
971 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
972
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600973 enum class InstanceCreateFlagBits
974 {
975 };
976
977 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
978
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600979 enum class DeviceCreateFlagBits
980 {
981 };
982
983 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
984
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600985 enum class DeviceQueueCreateFlagBits
986 {
987 };
988
989 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
990
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600991 enum class ImageViewCreateFlagBits
992 {
993 };
994
995 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
996
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600997 enum class SemaphoreCreateFlagBits
998 {
999 };
1000
1001 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1002
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001003 enum class ShaderModuleCreateFlagBits
1004 {
1005 };
1006
1007 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1008
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001009 enum class EventCreateFlagBits
1010 {
1011 };
1012
1013 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1014
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001015 enum class MemoryMapFlagBits
1016 {
1017 };
1018
1019 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1020
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001021 enum class DescriptorPoolResetFlagBits
1022 {
1023 };
1024
1025 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1026
Mark Young0f183a82017-02-28 09:58:04 -07001027 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001028 {
1029 };
1030
Mark Young0f183a82017-02-28 09:58:04 -07001031 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001032
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001033 enum class DisplayModeCreateFlagBitsKHR
1034 {
1035 };
1036
1037 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1038
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001039 enum class DisplaySurfaceCreateFlagBitsKHR
1040 {
1041 };
1042
1043 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1044
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001045#ifdef VK_USE_PLATFORM_ANDROID_KHR
1046 enum class AndroidSurfaceCreateFlagBitsKHR
1047 {
1048 };
1049#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1050
1051#ifdef VK_USE_PLATFORM_ANDROID_KHR
1052 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001053#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1054
1055#ifdef VK_USE_PLATFORM_MIR_KHR
1056 enum class MirSurfaceCreateFlagBitsKHR
1057 {
1058 };
1059#endif /*VK_USE_PLATFORM_MIR_KHR*/
1060
1061#ifdef VK_USE_PLATFORM_MIR_KHR
1062 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001063#endif /*VK_USE_PLATFORM_MIR_KHR*/
1064
Mark Young39389872017-01-19 21:10:49 -07001065#ifdef VK_USE_PLATFORM_VI_NN
1066 enum class ViSurfaceCreateFlagBitsNN
1067 {
1068 };
1069#endif /*VK_USE_PLATFORM_VI_NN*/
1070
1071#ifdef VK_USE_PLATFORM_VI_NN
1072 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001073#endif /*VK_USE_PLATFORM_VI_NN*/
1074
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001075#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1076 enum class WaylandSurfaceCreateFlagBitsKHR
1077 {
1078 };
1079#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1080
1081#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1082 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001083#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1084
1085#ifdef VK_USE_PLATFORM_WIN32_KHR
1086 enum class Win32SurfaceCreateFlagBitsKHR
1087 {
1088 };
1089#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1090
1091#ifdef VK_USE_PLATFORM_WIN32_KHR
1092 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001093#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1094
1095#ifdef VK_USE_PLATFORM_XLIB_KHR
1096 enum class XlibSurfaceCreateFlagBitsKHR
1097 {
1098 };
1099#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1100
1101#ifdef VK_USE_PLATFORM_XLIB_KHR
1102 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001103#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1104
1105#ifdef VK_USE_PLATFORM_XCB_KHR
1106 enum class XcbSurfaceCreateFlagBitsKHR
1107 {
1108 };
1109#endif /*VK_USE_PLATFORM_XCB_KHR*/
1110
1111#ifdef VK_USE_PLATFORM_XCB_KHR
1112 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001113#endif /*VK_USE_PLATFORM_XCB_KHR*/
1114
Mark Young0f183a82017-02-28 09:58:04 -07001115#ifdef VK_USE_PLATFORM_IOS_MVK
1116 enum class IOSSurfaceCreateFlagBitsMVK
1117 {
1118 };
1119#endif /*VK_USE_PLATFORM_IOS_MVK*/
1120
1121#ifdef VK_USE_PLATFORM_IOS_MVK
1122 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001123#endif /*VK_USE_PLATFORM_IOS_MVK*/
1124
1125#ifdef VK_USE_PLATFORM_MACOS_MVK
1126 enum class MacOSSurfaceCreateFlagBitsMVK
1127 {
1128 };
1129#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1130
1131#ifdef VK_USE_PLATFORM_MACOS_MVK
1132 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001133#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1134
Mark Young39389872017-01-19 21:10:49 -07001135 enum class CommandPoolTrimFlagBitsKHR
1136 {
1137 };
1138
1139 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1140
Mark Young0f183a82017-02-28 09:58:04 -07001141 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1142 {
1143 };
1144
1145 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1146
Mark Young0f183a82017-02-28 09:58:04 -07001147 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1148 {
1149 };
1150
1151 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1152
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06001153 enum class PipelineCoverageToColorStateCreateFlagBitsNV
1154 {
1155 };
1156
1157 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
1158
1159 enum class PipelineCoverageModulationStateCreateFlagBitsNV
1160 {
1161 };
1162
1163 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
1164
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001165 class DeviceMemory
1166 {
1167 public:
1168 DeviceMemory()
1169 : m_deviceMemory(VK_NULL_HANDLE)
1170 {}
1171
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001172 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001173 : m_deviceMemory(VK_NULL_HANDLE)
1174 {}
1175
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001176 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
1177 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001178 {}
1179
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001180#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001181 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001182 {
1183 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001184 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001185 }
1186#endif
1187
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001188 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001189 {
1190 m_deviceMemory = VK_NULL_HANDLE;
1191 return *this;
1192 }
1193
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001194 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001195 {
1196 return m_deviceMemory == rhs.m_deviceMemory;
1197 }
1198
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001199 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001200 {
1201 return m_deviceMemory != rhs.m_deviceMemory;
1202 }
1203
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001204 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001205 {
1206 return m_deviceMemory < rhs.m_deviceMemory;
1207 }
1208
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001209
1210
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001211 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001212 {
1213 return m_deviceMemory;
1214 }
1215
1216 explicit operator bool() const
1217 {
1218 return m_deviceMemory != VK_NULL_HANDLE;
1219 }
1220
1221 bool operator!() const
1222 {
1223 return m_deviceMemory == VK_NULL_HANDLE;
1224 }
1225
1226 private:
1227 VkDeviceMemory m_deviceMemory;
1228 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001229
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001230 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1231
1232 class CommandPool
1233 {
1234 public:
1235 CommandPool()
1236 : m_commandPool(VK_NULL_HANDLE)
1237 {}
1238
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001239 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001240 : m_commandPool(VK_NULL_HANDLE)
1241 {}
1242
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001243 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
1244 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001245 {}
1246
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001247#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001248 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001249 {
1250 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001251 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001252 }
1253#endif
1254
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001255 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001256 {
1257 m_commandPool = VK_NULL_HANDLE;
1258 return *this;
1259 }
1260
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001261 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001262 {
1263 return m_commandPool == rhs.m_commandPool;
1264 }
1265
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001266 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001267 {
1268 return m_commandPool != rhs.m_commandPool;
1269 }
1270
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001271 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001272 {
1273 return m_commandPool < rhs.m_commandPool;
1274 }
1275
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001276
1277
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001278 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001279 {
1280 return m_commandPool;
1281 }
1282
1283 explicit operator bool() const
1284 {
1285 return m_commandPool != VK_NULL_HANDLE;
1286 }
1287
1288 bool operator!() const
1289 {
1290 return m_commandPool == VK_NULL_HANDLE;
1291 }
1292
1293 private:
1294 VkCommandPool m_commandPool;
1295 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001296
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001297 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1298
1299 class Buffer
1300 {
1301 public:
1302 Buffer()
1303 : m_buffer(VK_NULL_HANDLE)
1304 {}
1305
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001306 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001307 : m_buffer(VK_NULL_HANDLE)
1308 {}
1309
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001310 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
1311 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001312 {}
1313
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001314#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001315 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001316 {
1317 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001318 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001319 }
1320#endif
1321
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001322 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001323 {
1324 m_buffer = VK_NULL_HANDLE;
1325 return *this;
1326 }
1327
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001328 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001329 {
1330 return m_buffer == rhs.m_buffer;
1331 }
1332
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001333 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001334 {
1335 return m_buffer != rhs.m_buffer;
1336 }
1337
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001338 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001339 {
1340 return m_buffer < rhs.m_buffer;
1341 }
1342
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001343
1344
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001345 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001346 {
1347 return m_buffer;
1348 }
1349
1350 explicit operator bool() const
1351 {
1352 return m_buffer != VK_NULL_HANDLE;
1353 }
1354
1355 bool operator!() const
1356 {
1357 return m_buffer == VK_NULL_HANDLE;
1358 }
1359
1360 private:
1361 VkBuffer m_buffer;
1362 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001363
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001364 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1365
1366 class BufferView
1367 {
1368 public:
1369 BufferView()
1370 : m_bufferView(VK_NULL_HANDLE)
1371 {}
1372
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001373 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001374 : m_bufferView(VK_NULL_HANDLE)
1375 {}
1376
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001377 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
1378 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001379 {}
1380
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001381#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001382 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001383 {
1384 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001385 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001386 }
1387#endif
1388
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001389 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001390 {
1391 m_bufferView = VK_NULL_HANDLE;
1392 return *this;
1393 }
1394
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001395 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001396 {
1397 return m_bufferView == rhs.m_bufferView;
1398 }
1399
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001400 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001401 {
1402 return m_bufferView != rhs.m_bufferView;
1403 }
1404
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001405 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001406 {
1407 return m_bufferView < rhs.m_bufferView;
1408 }
1409
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001410
1411
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001412 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001413 {
1414 return m_bufferView;
1415 }
1416
1417 explicit operator bool() const
1418 {
1419 return m_bufferView != VK_NULL_HANDLE;
1420 }
1421
1422 bool operator!() const
1423 {
1424 return m_bufferView == VK_NULL_HANDLE;
1425 }
1426
1427 private:
1428 VkBufferView m_bufferView;
1429 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001430
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001431 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1432
1433 class Image
1434 {
1435 public:
1436 Image()
1437 : m_image(VK_NULL_HANDLE)
1438 {}
1439
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001440 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001441 : m_image(VK_NULL_HANDLE)
1442 {}
1443
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001444 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
1445 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001446 {}
1447
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001448#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001449 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001450 {
1451 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001452 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001453 }
1454#endif
1455
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001456 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001457 {
1458 m_image = VK_NULL_HANDLE;
1459 return *this;
1460 }
1461
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001462 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001463 {
1464 return m_image == rhs.m_image;
1465 }
1466
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001467 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001468 {
1469 return m_image != rhs.m_image;
1470 }
1471
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001472 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001473 {
1474 return m_image < rhs.m_image;
1475 }
1476
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001477
1478
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001479 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001480 {
1481 return m_image;
1482 }
1483
1484 explicit operator bool() const
1485 {
1486 return m_image != VK_NULL_HANDLE;
1487 }
1488
1489 bool operator!() const
1490 {
1491 return m_image == VK_NULL_HANDLE;
1492 }
1493
1494 private:
1495 VkImage m_image;
1496 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001497
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001498 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1499
1500 class ImageView
1501 {
1502 public:
1503 ImageView()
1504 : m_imageView(VK_NULL_HANDLE)
1505 {}
1506
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001507 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001508 : m_imageView(VK_NULL_HANDLE)
1509 {}
1510
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001511 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
1512 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001513 {}
1514
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001515#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001516 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001517 {
1518 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001519 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001520 }
1521#endif
1522
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001523 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001524 {
1525 m_imageView = VK_NULL_HANDLE;
1526 return *this;
1527 }
1528
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001529 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001530 {
1531 return m_imageView == rhs.m_imageView;
1532 }
1533
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001534 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001535 {
1536 return m_imageView != rhs.m_imageView;
1537 }
1538
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001539 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001540 {
1541 return m_imageView < rhs.m_imageView;
1542 }
1543
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001544
1545
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001546 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001547 {
1548 return m_imageView;
1549 }
1550
1551 explicit operator bool() const
1552 {
1553 return m_imageView != VK_NULL_HANDLE;
1554 }
1555
1556 bool operator!() const
1557 {
1558 return m_imageView == VK_NULL_HANDLE;
1559 }
1560
1561 private:
1562 VkImageView m_imageView;
1563 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001564
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001565 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1566
1567 class ShaderModule
1568 {
1569 public:
1570 ShaderModule()
1571 : m_shaderModule(VK_NULL_HANDLE)
1572 {}
1573
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001574 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001575 : m_shaderModule(VK_NULL_HANDLE)
1576 {}
1577
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001578 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
1579 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001580 {}
1581
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001582#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001583 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001584 {
1585 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001586 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001587 }
1588#endif
1589
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001590 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001591 {
1592 m_shaderModule = VK_NULL_HANDLE;
1593 return *this;
1594 }
1595
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001596 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001597 {
1598 return m_shaderModule == rhs.m_shaderModule;
1599 }
1600
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001601 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001602 {
1603 return m_shaderModule != rhs.m_shaderModule;
1604 }
1605
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001606 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001607 {
1608 return m_shaderModule < rhs.m_shaderModule;
1609 }
1610
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001611
1612
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001613 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001614 {
1615 return m_shaderModule;
1616 }
1617
1618 explicit operator bool() const
1619 {
1620 return m_shaderModule != VK_NULL_HANDLE;
1621 }
1622
1623 bool operator!() const
1624 {
1625 return m_shaderModule == VK_NULL_HANDLE;
1626 }
1627
1628 private:
1629 VkShaderModule m_shaderModule;
1630 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001631
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001632 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1633
1634 class Pipeline
1635 {
1636 public:
1637 Pipeline()
1638 : m_pipeline(VK_NULL_HANDLE)
1639 {}
1640
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001641 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001642 : m_pipeline(VK_NULL_HANDLE)
1643 {}
1644
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001645 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
1646 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001647 {}
1648
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001649#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001650 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001651 {
1652 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001653 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001654 }
1655#endif
1656
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001657 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001658 {
1659 m_pipeline = VK_NULL_HANDLE;
1660 return *this;
1661 }
1662
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001663 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001664 {
1665 return m_pipeline == rhs.m_pipeline;
1666 }
1667
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001668 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001669 {
1670 return m_pipeline != rhs.m_pipeline;
1671 }
1672
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001673 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001674 {
1675 return m_pipeline < rhs.m_pipeline;
1676 }
1677
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001678
1679
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001680 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001681 {
1682 return m_pipeline;
1683 }
1684
1685 explicit operator bool() const
1686 {
1687 return m_pipeline != VK_NULL_HANDLE;
1688 }
1689
1690 bool operator!() const
1691 {
1692 return m_pipeline == VK_NULL_HANDLE;
1693 }
1694
1695 private:
1696 VkPipeline m_pipeline;
1697 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001698
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001699 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1700
1701 class PipelineLayout
1702 {
1703 public:
1704 PipelineLayout()
1705 : m_pipelineLayout(VK_NULL_HANDLE)
1706 {}
1707
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001708 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001709 : m_pipelineLayout(VK_NULL_HANDLE)
1710 {}
1711
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001712 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
1713 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001714 {}
1715
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001716#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001717 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001718 {
1719 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001720 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001721 }
1722#endif
1723
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001724 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001725 {
1726 m_pipelineLayout = VK_NULL_HANDLE;
1727 return *this;
1728 }
1729
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001730 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001731 {
1732 return m_pipelineLayout == rhs.m_pipelineLayout;
1733 }
1734
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001735 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001736 {
1737 return m_pipelineLayout != rhs.m_pipelineLayout;
1738 }
1739
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001740 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001741 {
1742 return m_pipelineLayout < rhs.m_pipelineLayout;
1743 }
1744
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001745
1746
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001747 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001748 {
1749 return m_pipelineLayout;
1750 }
1751
1752 explicit operator bool() const
1753 {
1754 return m_pipelineLayout != VK_NULL_HANDLE;
1755 }
1756
1757 bool operator!() const
1758 {
1759 return m_pipelineLayout == VK_NULL_HANDLE;
1760 }
1761
1762 private:
1763 VkPipelineLayout m_pipelineLayout;
1764 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001765
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001766 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1767
1768 class Sampler
1769 {
1770 public:
1771 Sampler()
1772 : m_sampler(VK_NULL_HANDLE)
1773 {}
1774
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001775 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001776 : m_sampler(VK_NULL_HANDLE)
1777 {}
1778
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001779 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
1780 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001781 {}
1782
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001783#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001784 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001785 {
1786 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001787 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001788 }
1789#endif
1790
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001791 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001792 {
1793 m_sampler = VK_NULL_HANDLE;
1794 return *this;
1795 }
1796
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001797 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001798 {
1799 return m_sampler == rhs.m_sampler;
1800 }
1801
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001802 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001803 {
1804 return m_sampler != rhs.m_sampler;
1805 }
1806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001807 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001808 {
1809 return m_sampler < rhs.m_sampler;
1810 }
1811
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001812
1813
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001814 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001815 {
1816 return m_sampler;
1817 }
1818
1819 explicit operator bool() const
1820 {
1821 return m_sampler != VK_NULL_HANDLE;
1822 }
1823
1824 bool operator!() const
1825 {
1826 return m_sampler == VK_NULL_HANDLE;
1827 }
1828
1829 private:
1830 VkSampler m_sampler;
1831 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001832
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001833 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1834
1835 class DescriptorSet
1836 {
1837 public:
1838 DescriptorSet()
1839 : m_descriptorSet(VK_NULL_HANDLE)
1840 {}
1841
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001842 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001843 : m_descriptorSet(VK_NULL_HANDLE)
1844 {}
1845
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001846 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
1847 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001848 {}
1849
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001850#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001851 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001852 {
1853 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001854 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001855 }
1856#endif
1857
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001858 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001859 {
1860 m_descriptorSet = VK_NULL_HANDLE;
1861 return *this;
1862 }
1863
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001864 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001865 {
1866 return m_descriptorSet == rhs.m_descriptorSet;
1867 }
1868
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001869 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001870 {
1871 return m_descriptorSet != rhs.m_descriptorSet;
1872 }
1873
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001874 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001875 {
1876 return m_descriptorSet < rhs.m_descriptorSet;
1877 }
1878
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001879
1880
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001881 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001882 {
1883 return m_descriptorSet;
1884 }
1885
1886 explicit operator bool() const
1887 {
1888 return m_descriptorSet != VK_NULL_HANDLE;
1889 }
1890
1891 bool operator!() const
1892 {
1893 return m_descriptorSet == VK_NULL_HANDLE;
1894 }
1895
1896 private:
1897 VkDescriptorSet m_descriptorSet;
1898 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001899
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001900 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1901
1902 class DescriptorSetLayout
1903 {
1904 public:
1905 DescriptorSetLayout()
1906 : m_descriptorSetLayout(VK_NULL_HANDLE)
1907 {}
1908
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001909 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001910 : m_descriptorSetLayout(VK_NULL_HANDLE)
1911 {}
1912
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001913 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
1914 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001915 {}
1916
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001917#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001918 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001919 {
1920 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001921 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001922 }
1923#endif
1924
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001925 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001926 {
1927 m_descriptorSetLayout = VK_NULL_HANDLE;
1928 return *this;
1929 }
1930
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001931 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001932 {
1933 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
1934 }
1935
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001936 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001937 {
1938 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
1939 }
1940
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001941 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001942 {
1943 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
1944 }
1945
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001946
1947
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001948 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001949 {
1950 return m_descriptorSetLayout;
1951 }
1952
1953 explicit operator bool() const
1954 {
1955 return m_descriptorSetLayout != VK_NULL_HANDLE;
1956 }
1957
1958 bool operator!() const
1959 {
1960 return m_descriptorSetLayout == VK_NULL_HANDLE;
1961 }
1962
1963 private:
1964 VkDescriptorSetLayout m_descriptorSetLayout;
1965 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001966
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001967 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
1968
1969 class DescriptorPool
1970 {
1971 public:
1972 DescriptorPool()
1973 : m_descriptorPool(VK_NULL_HANDLE)
1974 {}
1975
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001976 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001977 : m_descriptorPool(VK_NULL_HANDLE)
1978 {}
1979
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001980 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
1981 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001982 {}
1983
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001984#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001985 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001986 {
1987 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001988 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001989 }
1990#endif
1991
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001992 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001993 {
1994 m_descriptorPool = VK_NULL_HANDLE;
1995 return *this;
1996 }
1997
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001998 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001999 {
2000 return m_descriptorPool == rhs.m_descriptorPool;
2001 }
2002
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002003 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002004 {
2005 return m_descriptorPool != rhs.m_descriptorPool;
2006 }
2007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002008 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002009 {
2010 return m_descriptorPool < rhs.m_descriptorPool;
2011 }
2012
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002013
2014
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002015 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002016 {
2017 return m_descriptorPool;
2018 }
2019
2020 explicit operator bool() const
2021 {
2022 return m_descriptorPool != VK_NULL_HANDLE;
2023 }
2024
2025 bool operator!() const
2026 {
2027 return m_descriptorPool == VK_NULL_HANDLE;
2028 }
2029
2030 private:
2031 VkDescriptorPool m_descriptorPool;
2032 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002033
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002034 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2035
2036 class Fence
2037 {
2038 public:
2039 Fence()
2040 : m_fence(VK_NULL_HANDLE)
2041 {}
2042
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002043 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002044 : m_fence(VK_NULL_HANDLE)
2045 {}
2046
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002047 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
2048 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002049 {}
2050
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002051#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002052 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002053 {
2054 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002055 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002056 }
2057#endif
2058
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002059 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002060 {
2061 m_fence = VK_NULL_HANDLE;
2062 return *this;
2063 }
2064
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002065 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002066 {
2067 return m_fence == rhs.m_fence;
2068 }
2069
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002070 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002071 {
2072 return m_fence != rhs.m_fence;
2073 }
2074
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002075 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002076 {
2077 return m_fence < rhs.m_fence;
2078 }
2079
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002080
2081
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002082 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002083 {
2084 return m_fence;
2085 }
2086
2087 explicit operator bool() const
2088 {
2089 return m_fence != VK_NULL_HANDLE;
2090 }
2091
2092 bool operator!() const
2093 {
2094 return m_fence == VK_NULL_HANDLE;
2095 }
2096
2097 private:
2098 VkFence m_fence;
2099 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002100
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002101 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2102
2103 class Semaphore
2104 {
2105 public:
2106 Semaphore()
2107 : m_semaphore(VK_NULL_HANDLE)
2108 {}
2109
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002110 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002111 : m_semaphore(VK_NULL_HANDLE)
2112 {}
2113
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002114 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
2115 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002116 {}
2117
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002118#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002119 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002120 {
2121 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002122 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002123 }
2124#endif
2125
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002126 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002127 {
2128 m_semaphore = VK_NULL_HANDLE;
2129 return *this;
2130 }
2131
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002132 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002133 {
2134 return m_semaphore == rhs.m_semaphore;
2135 }
2136
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002137 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002138 {
2139 return m_semaphore != rhs.m_semaphore;
2140 }
2141
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002142 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002143 {
2144 return m_semaphore < rhs.m_semaphore;
2145 }
2146
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002147
2148
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002149 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002150 {
2151 return m_semaphore;
2152 }
2153
2154 explicit operator bool() const
2155 {
2156 return m_semaphore != VK_NULL_HANDLE;
2157 }
2158
2159 bool operator!() const
2160 {
2161 return m_semaphore == VK_NULL_HANDLE;
2162 }
2163
2164 private:
2165 VkSemaphore m_semaphore;
2166 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002167
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002168 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2169
2170 class Event
2171 {
2172 public:
2173 Event()
2174 : m_event(VK_NULL_HANDLE)
2175 {}
2176
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002177 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002178 : m_event(VK_NULL_HANDLE)
2179 {}
2180
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002181 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
2182 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002183 {}
2184
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002185#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002186 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002187 {
2188 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002189 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002190 }
2191#endif
2192
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002193 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002194 {
2195 m_event = VK_NULL_HANDLE;
2196 return *this;
2197 }
2198
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002199 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002200 {
2201 return m_event == rhs.m_event;
2202 }
2203
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002204 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002205 {
2206 return m_event != rhs.m_event;
2207 }
2208
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002209 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002210 {
2211 return m_event < rhs.m_event;
2212 }
2213
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002214
2215
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002216 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002217 {
2218 return m_event;
2219 }
2220
2221 explicit operator bool() const
2222 {
2223 return m_event != VK_NULL_HANDLE;
2224 }
2225
2226 bool operator!() const
2227 {
2228 return m_event == VK_NULL_HANDLE;
2229 }
2230
2231 private:
2232 VkEvent m_event;
2233 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002234
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002235 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2236
2237 class QueryPool
2238 {
2239 public:
2240 QueryPool()
2241 : m_queryPool(VK_NULL_HANDLE)
2242 {}
2243
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002244 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002245 : m_queryPool(VK_NULL_HANDLE)
2246 {}
2247
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002248 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
2249 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002250 {}
2251
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002252#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002253 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002254 {
2255 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002256 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002257 }
2258#endif
2259
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002260 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002261 {
2262 m_queryPool = VK_NULL_HANDLE;
2263 return *this;
2264 }
2265
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002266 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002267 {
2268 return m_queryPool == rhs.m_queryPool;
2269 }
2270
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002271 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002272 {
2273 return m_queryPool != rhs.m_queryPool;
2274 }
2275
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002276 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002277 {
2278 return m_queryPool < rhs.m_queryPool;
2279 }
2280
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002281
2282
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002283 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002284 {
2285 return m_queryPool;
2286 }
2287
2288 explicit operator bool() const
2289 {
2290 return m_queryPool != VK_NULL_HANDLE;
2291 }
2292
2293 bool operator!() const
2294 {
2295 return m_queryPool == VK_NULL_HANDLE;
2296 }
2297
2298 private:
2299 VkQueryPool m_queryPool;
2300 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002301
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002302 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2303
2304 class Framebuffer
2305 {
2306 public:
2307 Framebuffer()
2308 : m_framebuffer(VK_NULL_HANDLE)
2309 {}
2310
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002311 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002312 : m_framebuffer(VK_NULL_HANDLE)
2313 {}
2314
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002315 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
2316 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002317 {}
2318
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002319#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002320 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002321 {
2322 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002323 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002324 }
2325#endif
2326
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002327 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002328 {
2329 m_framebuffer = VK_NULL_HANDLE;
2330 return *this;
2331 }
2332
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002333 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002334 {
2335 return m_framebuffer == rhs.m_framebuffer;
2336 }
2337
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002338 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002339 {
2340 return m_framebuffer != rhs.m_framebuffer;
2341 }
2342
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002343 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002344 {
2345 return m_framebuffer < rhs.m_framebuffer;
2346 }
2347
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002348
2349
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002350 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002351 {
2352 return m_framebuffer;
2353 }
2354
2355 explicit operator bool() const
2356 {
2357 return m_framebuffer != VK_NULL_HANDLE;
2358 }
2359
2360 bool operator!() const
2361 {
2362 return m_framebuffer == VK_NULL_HANDLE;
2363 }
2364
2365 private:
2366 VkFramebuffer m_framebuffer;
2367 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002368
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002369 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2370
2371 class RenderPass
2372 {
2373 public:
2374 RenderPass()
2375 : m_renderPass(VK_NULL_HANDLE)
2376 {}
2377
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002378 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002379 : m_renderPass(VK_NULL_HANDLE)
2380 {}
2381
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002382 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
2383 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002384 {}
2385
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002386#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002387 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002388 {
2389 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002390 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002391 }
2392#endif
2393
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002394 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002395 {
2396 m_renderPass = VK_NULL_HANDLE;
2397 return *this;
2398 }
2399
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002400 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002401 {
2402 return m_renderPass == rhs.m_renderPass;
2403 }
2404
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002405 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002406 {
2407 return m_renderPass != rhs.m_renderPass;
2408 }
2409
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002410 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002411 {
2412 return m_renderPass < rhs.m_renderPass;
2413 }
2414
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002415
2416
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002417 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002418 {
2419 return m_renderPass;
2420 }
2421
2422 explicit operator bool() const
2423 {
2424 return m_renderPass != VK_NULL_HANDLE;
2425 }
2426
2427 bool operator!() const
2428 {
2429 return m_renderPass == VK_NULL_HANDLE;
2430 }
2431
2432 private:
2433 VkRenderPass m_renderPass;
2434 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002435
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002436 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2437
2438 class PipelineCache
2439 {
2440 public:
2441 PipelineCache()
2442 : m_pipelineCache(VK_NULL_HANDLE)
2443 {}
2444
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002445 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002446 : m_pipelineCache(VK_NULL_HANDLE)
2447 {}
2448
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002449 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
2450 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002451 {}
2452
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002453#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002454 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002455 {
2456 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002457 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002458 }
2459#endif
2460
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002461 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002462 {
2463 m_pipelineCache = VK_NULL_HANDLE;
2464 return *this;
2465 }
2466
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002467 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002468 {
2469 return m_pipelineCache == rhs.m_pipelineCache;
2470 }
2471
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002472 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002473 {
2474 return m_pipelineCache != rhs.m_pipelineCache;
2475 }
2476
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002477 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002478 {
2479 return m_pipelineCache < rhs.m_pipelineCache;
2480 }
2481
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002482
2483
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002484 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002485 {
2486 return m_pipelineCache;
2487 }
2488
2489 explicit operator bool() const
2490 {
2491 return m_pipelineCache != VK_NULL_HANDLE;
2492 }
2493
2494 bool operator!() const
2495 {
2496 return m_pipelineCache == VK_NULL_HANDLE;
2497 }
2498
2499 private:
2500 VkPipelineCache m_pipelineCache;
2501 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002502
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002503 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2504
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002505 class ObjectTableNVX
2506 {
2507 public:
2508 ObjectTableNVX()
2509 : m_objectTableNVX(VK_NULL_HANDLE)
2510 {}
2511
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002512 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002513 : m_objectTableNVX(VK_NULL_HANDLE)
2514 {}
2515
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002516 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
2517 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002518 {}
2519
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002520#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002521 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002522 {
2523 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002524 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002525 }
2526#endif
2527
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002528 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002529 {
2530 m_objectTableNVX = VK_NULL_HANDLE;
2531 return *this;
2532 }
2533
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002534 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002535 {
2536 return m_objectTableNVX == rhs.m_objectTableNVX;
2537 }
2538
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002539 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002540 {
2541 return m_objectTableNVX != rhs.m_objectTableNVX;
2542 }
2543
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002544 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002545 {
2546 return m_objectTableNVX < rhs.m_objectTableNVX;
2547 }
2548
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002549
2550
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002551 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002552 {
2553 return m_objectTableNVX;
2554 }
2555
2556 explicit operator bool() const
2557 {
2558 return m_objectTableNVX != VK_NULL_HANDLE;
2559 }
2560
2561 bool operator!() const
2562 {
2563 return m_objectTableNVX == VK_NULL_HANDLE;
2564 }
2565
2566 private:
2567 VkObjectTableNVX m_objectTableNVX;
2568 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002569
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002570 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2571
2572 class IndirectCommandsLayoutNVX
2573 {
2574 public:
2575 IndirectCommandsLayoutNVX()
2576 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2577 {}
2578
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002579 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002580 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2581 {}
2582
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002583 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
2584 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002585 {}
2586
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002587#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002588 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002589 {
2590 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002591 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002592 }
2593#endif
2594
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002595 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002596 {
2597 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2598 return *this;
2599 }
2600
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002601 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002602 {
2603 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2604 }
2605
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002606 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002607 {
2608 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2609 }
2610
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002611 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002612 {
2613 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2614 }
2615
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002616
2617
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002618 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002619 {
2620 return m_indirectCommandsLayoutNVX;
2621 }
2622
2623 explicit operator bool() const
2624 {
2625 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2626 }
2627
2628 bool operator!() const
2629 {
2630 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2631 }
2632
2633 private:
2634 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2635 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002636
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002637 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2638
Mark Young0f183a82017-02-28 09:58:04 -07002639 class DescriptorUpdateTemplateKHR
2640 {
2641 public:
2642 DescriptorUpdateTemplateKHR()
2643 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2644 {}
2645
2646 DescriptorUpdateTemplateKHR( std::nullptr_t )
2647 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2648 {}
2649
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002650 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
2651 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002652 {}
2653
2654#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002655 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002656 {
2657 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002658 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002659 }
2660#endif
2661
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002662 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002663 {
2664 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2665 return *this;
2666 }
2667
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002668 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002669 {
2670 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2671 }
2672
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002673 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002674 {
2675 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2676 }
2677
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002678 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002679 {
2680 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2681 }
2682
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002683
2684
Mark Young0f183a82017-02-28 09:58:04 -07002685 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2686 {
2687 return m_descriptorUpdateTemplateKHR;
2688 }
2689
2690 explicit operator bool() const
2691 {
2692 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2693 }
2694
2695 bool operator!() const
2696 {
2697 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2698 }
2699
2700 private:
2701 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2702 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002703
Mark Young0f183a82017-02-28 09:58:04 -07002704 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2705
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002706 class DisplayKHR
2707 {
2708 public:
2709 DisplayKHR()
2710 : m_displayKHR(VK_NULL_HANDLE)
2711 {}
2712
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002713 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002714 : m_displayKHR(VK_NULL_HANDLE)
2715 {}
2716
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002717 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2718 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002719 {}
2720
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002721#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002722 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002723 {
2724 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002725 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002726 }
2727#endif
2728
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002729 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002730 {
2731 m_displayKHR = VK_NULL_HANDLE;
2732 return *this;
2733 }
2734
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002735 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002736 {
2737 return m_displayKHR == rhs.m_displayKHR;
2738 }
2739
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002740 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002741 {
2742 return m_displayKHR != rhs.m_displayKHR;
2743 }
2744
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002745 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002746 {
2747 return m_displayKHR < rhs.m_displayKHR;
2748 }
2749
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002750
2751
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002752 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002753 {
2754 return m_displayKHR;
2755 }
2756
2757 explicit operator bool() const
2758 {
2759 return m_displayKHR != VK_NULL_HANDLE;
2760 }
2761
2762 bool operator!() const
2763 {
2764 return m_displayKHR == VK_NULL_HANDLE;
2765 }
2766
2767 private:
2768 VkDisplayKHR m_displayKHR;
2769 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002770
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002771 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
2772
2773 class DisplayModeKHR
2774 {
2775 public:
2776 DisplayModeKHR()
2777 : m_displayModeKHR(VK_NULL_HANDLE)
2778 {}
2779
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002780 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002781 : m_displayModeKHR(VK_NULL_HANDLE)
2782 {}
2783
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002784 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
2785 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002786 {}
2787
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002788#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002789 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002790 {
2791 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002792 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002793 }
2794#endif
2795
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002796 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002797 {
2798 m_displayModeKHR = VK_NULL_HANDLE;
2799 return *this;
2800 }
2801
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002802 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002803 {
2804 return m_displayModeKHR == rhs.m_displayModeKHR;
2805 }
2806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002807 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002808 {
2809 return m_displayModeKHR != rhs.m_displayModeKHR;
2810 }
2811
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002812 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002813 {
2814 return m_displayModeKHR < rhs.m_displayModeKHR;
2815 }
2816
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002817
2818
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002819 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002820 {
2821 return m_displayModeKHR;
2822 }
2823
2824 explicit operator bool() const
2825 {
2826 return m_displayModeKHR != VK_NULL_HANDLE;
2827 }
2828
2829 bool operator!() const
2830 {
2831 return m_displayModeKHR == VK_NULL_HANDLE;
2832 }
2833
2834 private:
2835 VkDisplayModeKHR m_displayModeKHR;
2836 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002837
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002838 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
2839
2840 class SurfaceKHR
2841 {
2842 public:
2843 SurfaceKHR()
2844 : m_surfaceKHR(VK_NULL_HANDLE)
2845 {}
2846
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002847 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002848 : m_surfaceKHR(VK_NULL_HANDLE)
2849 {}
2850
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002851 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
2852 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002853 {}
2854
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002855#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002856 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002857 {
2858 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002859 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002860 }
2861#endif
2862
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002863 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002864 {
2865 m_surfaceKHR = VK_NULL_HANDLE;
2866 return *this;
2867 }
2868
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002869 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002870 {
2871 return m_surfaceKHR == rhs.m_surfaceKHR;
2872 }
2873
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002874 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002875 {
2876 return m_surfaceKHR != rhs.m_surfaceKHR;
2877 }
2878
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002879 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002880 {
2881 return m_surfaceKHR < rhs.m_surfaceKHR;
2882 }
2883
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002884
2885
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002886 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002887 {
2888 return m_surfaceKHR;
2889 }
2890
2891 explicit operator bool() const
2892 {
2893 return m_surfaceKHR != VK_NULL_HANDLE;
2894 }
2895
2896 bool operator!() const
2897 {
2898 return m_surfaceKHR == VK_NULL_HANDLE;
2899 }
2900
2901 private:
2902 VkSurfaceKHR m_surfaceKHR;
2903 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002904
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002905 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
2906
2907 class SwapchainKHR
2908 {
2909 public:
2910 SwapchainKHR()
2911 : m_swapchainKHR(VK_NULL_HANDLE)
2912 {}
2913
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002914 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002915 : m_swapchainKHR(VK_NULL_HANDLE)
2916 {}
2917
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002918 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
2919 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002920 {}
2921
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002922#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002923 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002924 {
2925 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002926 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002927 }
2928#endif
2929
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002930 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002931 {
2932 m_swapchainKHR = VK_NULL_HANDLE;
2933 return *this;
2934 }
2935
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002936 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002937 {
2938 return m_swapchainKHR == rhs.m_swapchainKHR;
2939 }
2940
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002941 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002942 {
2943 return m_swapchainKHR != rhs.m_swapchainKHR;
2944 }
2945
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002946 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002947 {
2948 return m_swapchainKHR < rhs.m_swapchainKHR;
2949 }
2950
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002951
2952
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002953 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002954 {
2955 return m_swapchainKHR;
2956 }
2957
2958 explicit operator bool() const
2959 {
2960 return m_swapchainKHR != VK_NULL_HANDLE;
2961 }
2962
2963 bool operator!() const
2964 {
2965 return m_swapchainKHR == VK_NULL_HANDLE;
2966 }
2967
2968 private:
2969 VkSwapchainKHR m_swapchainKHR;
2970 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002971
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002972 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
2973
2974 class DebugReportCallbackEXT
2975 {
2976 public:
2977 DebugReportCallbackEXT()
2978 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2979 {}
2980
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002981 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002982 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2983 {}
2984
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002985 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
2986 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002987 {}
2988
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002989#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002990 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002991 {
2992 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002993 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002994 }
2995#endif
2996
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002997 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002998 {
2999 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3000 return *this;
3001 }
3002
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003003 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003004 {
3005 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3006 }
3007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003008 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003009 {
3010 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3011 }
3012
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003013 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003014 {
3015 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3016 }
3017
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003018
3019
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003020 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003021 {
3022 return m_debugReportCallbackEXT;
3023 }
3024
3025 explicit operator bool() const
3026 {
3027 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3028 }
3029
3030 bool operator!() const
3031 {
3032 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3033 }
3034
3035 private:
3036 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3037 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003038
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003039 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3040
3041 struct Offset2D
3042 {
3043 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3044 : x( x_ )
3045 , y( y_ )
3046 {
3047 }
3048
3049 Offset2D( VkOffset2D const & rhs )
3050 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003051 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003052 }
3053
3054 Offset2D& operator=( VkOffset2D const & rhs )
3055 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003056 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003057 return *this;
3058 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003059 Offset2D& setX( int32_t x_ )
3060 {
3061 x = x_;
3062 return *this;
3063 }
3064
3065 Offset2D& setY( int32_t y_ )
3066 {
3067 y = y_;
3068 return *this;
3069 }
3070
3071 operator const VkOffset2D&() const
3072 {
3073 return *reinterpret_cast<const VkOffset2D*>(this);
3074 }
3075
3076 bool operator==( Offset2D const& rhs ) const
3077 {
3078 return ( x == rhs.x )
3079 && ( y == rhs.y );
3080 }
3081
3082 bool operator!=( Offset2D const& rhs ) const
3083 {
3084 return !operator==( rhs );
3085 }
3086
3087 int32_t x;
3088 int32_t y;
3089 };
3090 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3091
3092 struct Offset3D
3093 {
3094 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3095 : x( x_ )
3096 , y( y_ )
3097 , z( z_ )
3098 {
3099 }
3100
3101 Offset3D( VkOffset3D const & rhs )
3102 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003103 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003104 }
3105
3106 Offset3D& operator=( VkOffset3D const & rhs )
3107 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003108 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003109 return *this;
3110 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003111 Offset3D& setX( int32_t x_ )
3112 {
3113 x = x_;
3114 return *this;
3115 }
3116
3117 Offset3D& setY( int32_t y_ )
3118 {
3119 y = y_;
3120 return *this;
3121 }
3122
3123 Offset3D& setZ( int32_t z_ )
3124 {
3125 z = z_;
3126 return *this;
3127 }
3128
3129 operator const VkOffset3D&() const
3130 {
3131 return *reinterpret_cast<const VkOffset3D*>(this);
3132 }
3133
3134 bool operator==( Offset3D const& rhs ) const
3135 {
3136 return ( x == rhs.x )
3137 && ( y == rhs.y )
3138 && ( z == rhs.z );
3139 }
3140
3141 bool operator!=( Offset3D const& rhs ) const
3142 {
3143 return !operator==( rhs );
3144 }
3145
3146 int32_t x;
3147 int32_t y;
3148 int32_t z;
3149 };
3150 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3151
3152 struct Extent2D
3153 {
3154 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3155 : width( width_ )
3156 , height( height_ )
3157 {
3158 }
3159
3160 Extent2D( VkExtent2D const & rhs )
3161 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003162 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003163 }
3164
3165 Extent2D& operator=( VkExtent2D const & rhs )
3166 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003167 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003168 return *this;
3169 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003170 Extent2D& setWidth( uint32_t width_ )
3171 {
3172 width = width_;
3173 return *this;
3174 }
3175
3176 Extent2D& setHeight( uint32_t height_ )
3177 {
3178 height = height_;
3179 return *this;
3180 }
3181
3182 operator const VkExtent2D&() const
3183 {
3184 return *reinterpret_cast<const VkExtent2D*>(this);
3185 }
3186
3187 bool operator==( Extent2D const& rhs ) const
3188 {
3189 return ( width == rhs.width )
3190 && ( height == rhs.height );
3191 }
3192
3193 bool operator!=( Extent2D const& rhs ) const
3194 {
3195 return !operator==( rhs );
3196 }
3197
3198 uint32_t width;
3199 uint32_t height;
3200 };
3201 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3202
3203 struct Extent3D
3204 {
3205 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3206 : width( width_ )
3207 , height( height_ )
3208 , depth( depth_ )
3209 {
3210 }
3211
3212 Extent3D( VkExtent3D const & rhs )
3213 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003214 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003215 }
3216
3217 Extent3D& operator=( VkExtent3D const & rhs )
3218 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003219 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003220 return *this;
3221 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003222 Extent3D& setWidth( uint32_t width_ )
3223 {
3224 width = width_;
3225 return *this;
3226 }
3227
3228 Extent3D& setHeight( uint32_t height_ )
3229 {
3230 height = height_;
3231 return *this;
3232 }
3233
3234 Extent3D& setDepth( uint32_t depth_ )
3235 {
3236 depth = depth_;
3237 return *this;
3238 }
3239
3240 operator const VkExtent3D&() const
3241 {
3242 return *reinterpret_cast<const VkExtent3D*>(this);
3243 }
3244
3245 bool operator==( Extent3D const& rhs ) const
3246 {
3247 return ( width == rhs.width )
3248 && ( height == rhs.height )
3249 && ( depth == rhs.depth );
3250 }
3251
3252 bool operator!=( Extent3D const& rhs ) const
3253 {
3254 return !operator==( rhs );
3255 }
3256
3257 uint32_t width;
3258 uint32_t height;
3259 uint32_t depth;
3260 };
3261 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3262
3263 struct Viewport
3264 {
3265 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3266 : x( x_ )
3267 , y( y_ )
3268 , width( width_ )
3269 , height( height_ )
3270 , minDepth( minDepth_ )
3271 , maxDepth( maxDepth_ )
3272 {
3273 }
3274
3275 Viewport( VkViewport const & rhs )
3276 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003277 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003278 }
3279
3280 Viewport& operator=( VkViewport const & rhs )
3281 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003282 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003283 return *this;
3284 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003285 Viewport& setX( float x_ )
3286 {
3287 x = x_;
3288 return *this;
3289 }
3290
3291 Viewport& setY( float y_ )
3292 {
3293 y = y_;
3294 return *this;
3295 }
3296
3297 Viewport& setWidth( float width_ )
3298 {
3299 width = width_;
3300 return *this;
3301 }
3302
3303 Viewport& setHeight( float height_ )
3304 {
3305 height = height_;
3306 return *this;
3307 }
3308
3309 Viewport& setMinDepth( float minDepth_ )
3310 {
3311 minDepth = minDepth_;
3312 return *this;
3313 }
3314
3315 Viewport& setMaxDepth( float maxDepth_ )
3316 {
3317 maxDepth = maxDepth_;
3318 return *this;
3319 }
3320
3321 operator const VkViewport&() const
3322 {
3323 return *reinterpret_cast<const VkViewport*>(this);
3324 }
3325
3326 bool operator==( Viewport const& rhs ) const
3327 {
3328 return ( x == rhs.x )
3329 && ( y == rhs.y )
3330 && ( width == rhs.width )
3331 && ( height == rhs.height )
3332 && ( minDepth == rhs.minDepth )
3333 && ( maxDepth == rhs.maxDepth );
3334 }
3335
3336 bool operator!=( Viewport const& rhs ) const
3337 {
3338 return !operator==( rhs );
3339 }
3340
3341 float x;
3342 float y;
3343 float width;
3344 float height;
3345 float minDepth;
3346 float maxDepth;
3347 };
3348 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3349
3350 struct Rect2D
3351 {
3352 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3353 : offset( offset_ )
3354 , extent( extent_ )
3355 {
3356 }
3357
3358 Rect2D( VkRect2D const & rhs )
3359 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003360 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003361 }
3362
3363 Rect2D& operator=( VkRect2D const & rhs )
3364 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003365 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003366 return *this;
3367 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003368 Rect2D& setOffset( Offset2D offset_ )
3369 {
3370 offset = offset_;
3371 return *this;
3372 }
3373
3374 Rect2D& setExtent( Extent2D extent_ )
3375 {
3376 extent = extent_;
3377 return *this;
3378 }
3379
3380 operator const VkRect2D&() const
3381 {
3382 return *reinterpret_cast<const VkRect2D*>(this);
3383 }
3384
3385 bool operator==( Rect2D const& rhs ) const
3386 {
3387 return ( offset == rhs.offset )
3388 && ( extent == rhs.extent );
3389 }
3390
3391 bool operator!=( Rect2D const& rhs ) const
3392 {
3393 return !operator==( rhs );
3394 }
3395
3396 Offset2D offset;
3397 Extent2D extent;
3398 };
3399 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3400
3401 struct ClearRect
3402 {
3403 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3404 : rect( rect_ )
3405 , baseArrayLayer( baseArrayLayer_ )
3406 , layerCount( layerCount_ )
3407 {
3408 }
3409
3410 ClearRect( VkClearRect const & rhs )
3411 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003412 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003413 }
3414
3415 ClearRect& operator=( VkClearRect const & rhs )
3416 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003417 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003418 return *this;
3419 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003420 ClearRect& setRect( Rect2D rect_ )
3421 {
3422 rect = rect_;
3423 return *this;
3424 }
3425
3426 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3427 {
3428 baseArrayLayer = baseArrayLayer_;
3429 return *this;
3430 }
3431
3432 ClearRect& setLayerCount( uint32_t layerCount_ )
3433 {
3434 layerCount = layerCount_;
3435 return *this;
3436 }
3437
3438 operator const VkClearRect&() const
3439 {
3440 return *reinterpret_cast<const VkClearRect*>(this);
3441 }
3442
3443 bool operator==( ClearRect const& rhs ) const
3444 {
3445 return ( rect == rhs.rect )
3446 && ( baseArrayLayer == rhs.baseArrayLayer )
3447 && ( layerCount == rhs.layerCount );
3448 }
3449
3450 bool operator!=( ClearRect const& rhs ) const
3451 {
3452 return !operator==( rhs );
3453 }
3454
3455 Rect2D rect;
3456 uint32_t baseArrayLayer;
3457 uint32_t layerCount;
3458 };
3459 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3460
3461 struct ExtensionProperties
3462 {
3463 operator const VkExtensionProperties&() const
3464 {
3465 return *reinterpret_cast<const VkExtensionProperties*>(this);
3466 }
3467
3468 bool operator==( ExtensionProperties const& rhs ) const
3469 {
3470 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3471 && ( specVersion == rhs.specVersion );
3472 }
3473
3474 bool operator!=( ExtensionProperties const& rhs ) const
3475 {
3476 return !operator==( rhs );
3477 }
3478
3479 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3480 uint32_t specVersion;
3481 };
3482 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3483
3484 struct LayerProperties
3485 {
3486 operator const VkLayerProperties&() const
3487 {
3488 return *reinterpret_cast<const VkLayerProperties*>(this);
3489 }
3490
3491 bool operator==( LayerProperties const& rhs ) const
3492 {
3493 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3494 && ( specVersion == rhs.specVersion )
3495 && ( implementationVersion == rhs.implementationVersion )
3496 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3497 }
3498
3499 bool operator!=( LayerProperties const& rhs ) const
3500 {
3501 return !operator==( rhs );
3502 }
3503
3504 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3505 uint32_t specVersion;
3506 uint32_t implementationVersion;
3507 char description[VK_MAX_DESCRIPTION_SIZE];
3508 };
3509 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3510
3511 struct AllocationCallbacks
3512 {
3513 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3514 : pUserData( pUserData_ )
3515 , pfnAllocation( pfnAllocation_ )
3516 , pfnReallocation( pfnReallocation_ )
3517 , pfnFree( pfnFree_ )
3518 , pfnInternalAllocation( pfnInternalAllocation_ )
3519 , pfnInternalFree( pfnInternalFree_ )
3520 {
3521 }
3522
3523 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003525 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003526 }
3527
3528 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3529 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003530 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003531 return *this;
3532 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003533 AllocationCallbacks& setPUserData( void* pUserData_ )
3534 {
3535 pUserData = pUserData_;
3536 return *this;
3537 }
3538
3539 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3540 {
3541 pfnAllocation = pfnAllocation_;
3542 return *this;
3543 }
3544
3545 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3546 {
3547 pfnReallocation = pfnReallocation_;
3548 return *this;
3549 }
3550
3551 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3552 {
3553 pfnFree = pfnFree_;
3554 return *this;
3555 }
3556
3557 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3558 {
3559 pfnInternalAllocation = pfnInternalAllocation_;
3560 return *this;
3561 }
3562
3563 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3564 {
3565 pfnInternalFree = pfnInternalFree_;
3566 return *this;
3567 }
3568
3569 operator const VkAllocationCallbacks&() const
3570 {
3571 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3572 }
3573
3574 bool operator==( AllocationCallbacks const& rhs ) const
3575 {
3576 return ( pUserData == rhs.pUserData )
3577 && ( pfnAllocation == rhs.pfnAllocation )
3578 && ( pfnReallocation == rhs.pfnReallocation )
3579 && ( pfnFree == rhs.pfnFree )
3580 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3581 && ( pfnInternalFree == rhs.pfnInternalFree );
3582 }
3583
3584 bool operator!=( AllocationCallbacks const& rhs ) const
3585 {
3586 return !operator==( rhs );
3587 }
3588
3589 void* pUserData;
3590 PFN_vkAllocationFunction pfnAllocation;
3591 PFN_vkReallocationFunction pfnReallocation;
3592 PFN_vkFreeFunction pfnFree;
3593 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3594 PFN_vkInternalFreeNotification pfnInternalFree;
3595 };
3596 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3597
3598 struct MemoryRequirements
3599 {
3600 operator const VkMemoryRequirements&() const
3601 {
3602 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3603 }
3604
3605 bool operator==( MemoryRequirements const& rhs ) const
3606 {
3607 return ( size == rhs.size )
3608 && ( alignment == rhs.alignment )
3609 && ( memoryTypeBits == rhs.memoryTypeBits );
3610 }
3611
3612 bool operator!=( MemoryRequirements const& rhs ) const
3613 {
3614 return !operator==( rhs );
3615 }
3616
3617 DeviceSize size;
3618 DeviceSize alignment;
3619 uint32_t memoryTypeBits;
3620 };
3621 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3622
3623 struct DescriptorBufferInfo
3624 {
3625 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3626 : buffer( buffer_ )
3627 , offset( offset_ )
3628 , range( range_ )
3629 {
3630 }
3631
3632 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003634 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003635 }
3636
3637 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003639 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003640 return *this;
3641 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003642 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3643 {
3644 buffer = buffer_;
3645 return *this;
3646 }
3647
3648 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3649 {
3650 offset = offset_;
3651 return *this;
3652 }
3653
3654 DescriptorBufferInfo& setRange( DeviceSize range_ )
3655 {
3656 range = range_;
3657 return *this;
3658 }
3659
3660 operator const VkDescriptorBufferInfo&() const
3661 {
3662 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3663 }
3664
3665 bool operator==( DescriptorBufferInfo const& rhs ) const
3666 {
3667 return ( buffer == rhs.buffer )
3668 && ( offset == rhs.offset )
3669 && ( range == rhs.range );
3670 }
3671
3672 bool operator!=( DescriptorBufferInfo const& rhs ) const
3673 {
3674 return !operator==( rhs );
3675 }
3676
3677 Buffer buffer;
3678 DeviceSize offset;
3679 DeviceSize range;
3680 };
3681 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3682
3683 struct SubresourceLayout
3684 {
3685 operator const VkSubresourceLayout&() const
3686 {
3687 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3688 }
3689
3690 bool operator==( SubresourceLayout const& rhs ) const
3691 {
3692 return ( offset == rhs.offset )
3693 && ( size == rhs.size )
3694 && ( rowPitch == rhs.rowPitch )
3695 && ( arrayPitch == rhs.arrayPitch )
3696 && ( depthPitch == rhs.depthPitch );
3697 }
3698
3699 bool operator!=( SubresourceLayout const& rhs ) const
3700 {
3701 return !operator==( rhs );
3702 }
3703
3704 DeviceSize offset;
3705 DeviceSize size;
3706 DeviceSize rowPitch;
3707 DeviceSize arrayPitch;
3708 DeviceSize depthPitch;
3709 };
3710 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3711
3712 struct BufferCopy
3713 {
3714 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3715 : srcOffset( srcOffset_ )
3716 , dstOffset( dstOffset_ )
3717 , size( size_ )
3718 {
3719 }
3720
3721 BufferCopy( VkBufferCopy const & rhs )
3722 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003723 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003724 }
3725
3726 BufferCopy& operator=( VkBufferCopy const & rhs )
3727 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003728 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003729 return *this;
3730 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003731 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3732 {
3733 srcOffset = srcOffset_;
3734 return *this;
3735 }
3736
3737 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3738 {
3739 dstOffset = dstOffset_;
3740 return *this;
3741 }
3742
3743 BufferCopy& setSize( DeviceSize size_ )
3744 {
3745 size = size_;
3746 return *this;
3747 }
3748
3749 operator const VkBufferCopy&() const
3750 {
3751 return *reinterpret_cast<const VkBufferCopy*>(this);
3752 }
3753
3754 bool operator==( BufferCopy const& rhs ) const
3755 {
3756 return ( srcOffset == rhs.srcOffset )
3757 && ( dstOffset == rhs.dstOffset )
3758 && ( size == rhs.size );
3759 }
3760
3761 bool operator!=( BufferCopy const& rhs ) const
3762 {
3763 return !operator==( rhs );
3764 }
3765
3766 DeviceSize srcOffset;
3767 DeviceSize dstOffset;
3768 DeviceSize size;
3769 };
3770 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
3771
3772 struct SpecializationMapEntry
3773 {
3774 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
3775 : constantID( constantID_ )
3776 , offset( offset_ )
3777 , size( size_ )
3778 {
3779 }
3780
3781 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
3782 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003783 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003784 }
3785
3786 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
3787 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003788 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003789 return *this;
3790 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003791 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
3792 {
3793 constantID = constantID_;
3794 return *this;
3795 }
3796
3797 SpecializationMapEntry& setOffset( uint32_t offset_ )
3798 {
3799 offset = offset_;
3800 return *this;
3801 }
3802
3803 SpecializationMapEntry& setSize( size_t size_ )
3804 {
3805 size = size_;
3806 return *this;
3807 }
3808
3809 operator const VkSpecializationMapEntry&() const
3810 {
3811 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
3812 }
3813
3814 bool operator==( SpecializationMapEntry const& rhs ) const
3815 {
3816 return ( constantID == rhs.constantID )
3817 && ( offset == rhs.offset )
3818 && ( size == rhs.size );
3819 }
3820
3821 bool operator!=( SpecializationMapEntry const& rhs ) const
3822 {
3823 return !operator==( rhs );
3824 }
3825
3826 uint32_t constantID;
3827 uint32_t offset;
3828 size_t size;
3829 };
3830 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
3831
3832 struct SpecializationInfo
3833 {
3834 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
3835 : mapEntryCount( mapEntryCount_ )
3836 , pMapEntries( pMapEntries_ )
3837 , dataSize( dataSize_ )
3838 , pData( pData_ )
3839 {
3840 }
3841
3842 SpecializationInfo( VkSpecializationInfo const & rhs )
3843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003844 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003845 }
3846
3847 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
3848 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003849 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003850 return *this;
3851 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003852 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
3853 {
3854 mapEntryCount = mapEntryCount_;
3855 return *this;
3856 }
3857
3858 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
3859 {
3860 pMapEntries = pMapEntries_;
3861 return *this;
3862 }
3863
3864 SpecializationInfo& setDataSize( size_t dataSize_ )
3865 {
3866 dataSize = dataSize_;
3867 return *this;
3868 }
3869
3870 SpecializationInfo& setPData( const void* pData_ )
3871 {
3872 pData = pData_;
3873 return *this;
3874 }
3875
3876 operator const VkSpecializationInfo&() const
3877 {
3878 return *reinterpret_cast<const VkSpecializationInfo*>(this);
3879 }
3880
3881 bool operator==( SpecializationInfo const& rhs ) const
3882 {
3883 return ( mapEntryCount == rhs.mapEntryCount )
3884 && ( pMapEntries == rhs.pMapEntries )
3885 && ( dataSize == rhs.dataSize )
3886 && ( pData == rhs.pData );
3887 }
3888
3889 bool operator!=( SpecializationInfo const& rhs ) const
3890 {
3891 return !operator==( rhs );
3892 }
3893
3894 uint32_t mapEntryCount;
3895 const SpecializationMapEntry* pMapEntries;
3896 size_t dataSize;
3897 const void* pData;
3898 };
3899 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
3900
3901 union ClearColorValue
3902 {
3903 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
3904 {
3905 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3906 }
3907
3908 ClearColorValue( const std::array<int32_t,4>& int32_ )
3909 {
3910 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3911 }
3912
3913 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
3914 {
3915 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3916 }
3917
3918 ClearColorValue& setFloat32( std::array<float,4> float32_ )
3919 {
3920 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3921 return *this;
3922 }
3923
3924 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
3925 {
3926 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3927 return *this;
3928 }
3929
3930 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
3931 {
3932 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3933 return *this;
3934 }
3935
3936 operator VkClearColorValue const& () const
3937 {
3938 return *reinterpret_cast<const VkClearColorValue*>(this);
3939 }
3940
3941 float float32[4];
3942 int32_t int32[4];
3943 uint32_t uint32[4];
3944 };
3945
3946 struct ClearDepthStencilValue
3947 {
3948 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
3949 : depth( depth_ )
3950 , stencil( stencil_ )
3951 {
3952 }
3953
3954 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
3955 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003956 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003957 }
3958
3959 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
3960 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003961 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003962 return *this;
3963 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003964 ClearDepthStencilValue& setDepth( float depth_ )
3965 {
3966 depth = depth_;
3967 return *this;
3968 }
3969
3970 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
3971 {
3972 stencil = stencil_;
3973 return *this;
3974 }
3975
3976 operator const VkClearDepthStencilValue&() const
3977 {
3978 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
3979 }
3980
3981 bool operator==( ClearDepthStencilValue const& rhs ) const
3982 {
3983 return ( depth == rhs.depth )
3984 && ( stencil == rhs.stencil );
3985 }
3986
3987 bool operator!=( ClearDepthStencilValue const& rhs ) const
3988 {
3989 return !operator==( rhs );
3990 }
3991
3992 float depth;
3993 uint32_t stencil;
3994 };
3995 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
3996
3997 union ClearValue
3998 {
3999 ClearValue( ClearColorValue color_ = ClearColorValue() )
4000 {
4001 color = color_;
4002 }
4003
4004 ClearValue( ClearDepthStencilValue depthStencil_ )
4005 {
4006 depthStencil = depthStencil_;
4007 }
4008
4009 ClearValue& setColor( ClearColorValue color_ )
4010 {
4011 color = color_;
4012 return *this;
4013 }
4014
4015 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4016 {
4017 depthStencil = depthStencil_;
4018 return *this;
4019 }
4020
4021 operator VkClearValue const& () const
4022 {
4023 return *reinterpret_cast<const VkClearValue*>(this);
4024 }
4025
4026#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4027 ClearColorValue color;
4028 ClearDepthStencilValue depthStencil;
4029#else
4030 VkClearColorValue color;
4031 VkClearDepthStencilValue depthStencil;
4032#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4033 };
4034
4035 struct PhysicalDeviceFeatures
4036 {
4037 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 )
4038 : robustBufferAccess( robustBufferAccess_ )
4039 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4040 , imageCubeArray( imageCubeArray_ )
4041 , independentBlend( independentBlend_ )
4042 , geometryShader( geometryShader_ )
4043 , tessellationShader( tessellationShader_ )
4044 , sampleRateShading( sampleRateShading_ )
4045 , dualSrcBlend( dualSrcBlend_ )
4046 , logicOp( logicOp_ )
4047 , multiDrawIndirect( multiDrawIndirect_ )
4048 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4049 , depthClamp( depthClamp_ )
4050 , depthBiasClamp( depthBiasClamp_ )
4051 , fillModeNonSolid( fillModeNonSolid_ )
4052 , depthBounds( depthBounds_ )
4053 , wideLines( wideLines_ )
4054 , largePoints( largePoints_ )
4055 , alphaToOne( alphaToOne_ )
4056 , multiViewport( multiViewport_ )
4057 , samplerAnisotropy( samplerAnisotropy_ )
4058 , textureCompressionETC2( textureCompressionETC2_ )
4059 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4060 , textureCompressionBC( textureCompressionBC_ )
4061 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4062 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4063 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4064 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4065 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4066 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4067 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4068 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4069 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4070 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4071 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4072 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4073 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4074 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4075 , shaderClipDistance( shaderClipDistance_ )
4076 , shaderCullDistance( shaderCullDistance_ )
4077 , shaderFloat64( shaderFloat64_ )
4078 , shaderInt64( shaderInt64_ )
4079 , shaderInt16( shaderInt16_ )
4080 , shaderResourceResidency( shaderResourceResidency_ )
4081 , shaderResourceMinLod( shaderResourceMinLod_ )
4082 , sparseBinding( sparseBinding_ )
4083 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4084 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4085 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4086 , sparseResidency2Samples( sparseResidency2Samples_ )
4087 , sparseResidency4Samples( sparseResidency4Samples_ )
4088 , sparseResidency8Samples( sparseResidency8Samples_ )
4089 , sparseResidency16Samples( sparseResidency16Samples_ )
4090 , sparseResidencyAliased( sparseResidencyAliased_ )
4091 , variableMultisampleRate( variableMultisampleRate_ )
4092 , inheritedQueries( inheritedQueries_ )
4093 {
4094 }
4095
4096 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4097 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004098 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004099 }
4100
4101 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4102 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004103 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004104 return *this;
4105 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004106 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4107 {
4108 robustBufferAccess = robustBufferAccess_;
4109 return *this;
4110 }
4111
4112 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4113 {
4114 fullDrawIndexUint32 = fullDrawIndexUint32_;
4115 return *this;
4116 }
4117
4118 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4119 {
4120 imageCubeArray = imageCubeArray_;
4121 return *this;
4122 }
4123
4124 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4125 {
4126 independentBlend = independentBlend_;
4127 return *this;
4128 }
4129
4130 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4131 {
4132 geometryShader = geometryShader_;
4133 return *this;
4134 }
4135
4136 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4137 {
4138 tessellationShader = tessellationShader_;
4139 return *this;
4140 }
4141
4142 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4143 {
4144 sampleRateShading = sampleRateShading_;
4145 return *this;
4146 }
4147
4148 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4149 {
4150 dualSrcBlend = dualSrcBlend_;
4151 return *this;
4152 }
4153
4154 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4155 {
4156 logicOp = logicOp_;
4157 return *this;
4158 }
4159
4160 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4161 {
4162 multiDrawIndirect = multiDrawIndirect_;
4163 return *this;
4164 }
4165
4166 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4167 {
4168 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4169 return *this;
4170 }
4171
4172 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4173 {
4174 depthClamp = depthClamp_;
4175 return *this;
4176 }
4177
4178 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4179 {
4180 depthBiasClamp = depthBiasClamp_;
4181 return *this;
4182 }
4183
4184 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4185 {
4186 fillModeNonSolid = fillModeNonSolid_;
4187 return *this;
4188 }
4189
4190 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4191 {
4192 depthBounds = depthBounds_;
4193 return *this;
4194 }
4195
4196 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4197 {
4198 wideLines = wideLines_;
4199 return *this;
4200 }
4201
4202 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4203 {
4204 largePoints = largePoints_;
4205 return *this;
4206 }
4207
4208 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4209 {
4210 alphaToOne = alphaToOne_;
4211 return *this;
4212 }
4213
4214 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4215 {
4216 multiViewport = multiViewport_;
4217 return *this;
4218 }
4219
4220 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4221 {
4222 samplerAnisotropy = samplerAnisotropy_;
4223 return *this;
4224 }
4225
4226 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4227 {
4228 textureCompressionETC2 = textureCompressionETC2_;
4229 return *this;
4230 }
4231
4232 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4233 {
4234 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4235 return *this;
4236 }
4237
4238 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4239 {
4240 textureCompressionBC = textureCompressionBC_;
4241 return *this;
4242 }
4243
4244 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4245 {
4246 occlusionQueryPrecise = occlusionQueryPrecise_;
4247 return *this;
4248 }
4249
4250 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4251 {
4252 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4253 return *this;
4254 }
4255
4256 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4257 {
4258 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4259 return *this;
4260 }
4261
4262 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4263 {
4264 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4265 return *this;
4266 }
4267
4268 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4269 {
4270 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4271 return *this;
4272 }
4273
4274 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4275 {
4276 shaderImageGatherExtended = shaderImageGatherExtended_;
4277 return *this;
4278 }
4279
4280 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4281 {
4282 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4283 return *this;
4284 }
4285
4286 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4287 {
4288 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4289 return *this;
4290 }
4291
4292 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4293 {
4294 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4295 return *this;
4296 }
4297
4298 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4299 {
4300 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4301 return *this;
4302 }
4303
4304 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4305 {
4306 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4307 return *this;
4308 }
4309
4310 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4311 {
4312 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4313 return *this;
4314 }
4315
4316 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4317 {
4318 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4319 return *this;
4320 }
4321
4322 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4323 {
4324 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4325 return *this;
4326 }
4327
4328 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4329 {
4330 shaderClipDistance = shaderClipDistance_;
4331 return *this;
4332 }
4333
4334 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4335 {
4336 shaderCullDistance = shaderCullDistance_;
4337 return *this;
4338 }
4339
4340 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4341 {
4342 shaderFloat64 = shaderFloat64_;
4343 return *this;
4344 }
4345
4346 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4347 {
4348 shaderInt64 = shaderInt64_;
4349 return *this;
4350 }
4351
4352 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4353 {
4354 shaderInt16 = shaderInt16_;
4355 return *this;
4356 }
4357
4358 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4359 {
4360 shaderResourceResidency = shaderResourceResidency_;
4361 return *this;
4362 }
4363
4364 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4365 {
4366 shaderResourceMinLod = shaderResourceMinLod_;
4367 return *this;
4368 }
4369
4370 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4371 {
4372 sparseBinding = sparseBinding_;
4373 return *this;
4374 }
4375
4376 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4377 {
4378 sparseResidencyBuffer = sparseResidencyBuffer_;
4379 return *this;
4380 }
4381
4382 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4383 {
4384 sparseResidencyImage2D = sparseResidencyImage2D_;
4385 return *this;
4386 }
4387
4388 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4389 {
4390 sparseResidencyImage3D = sparseResidencyImage3D_;
4391 return *this;
4392 }
4393
4394 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4395 {
4396 sparseResidency2Samples = sparseResidency2Samples_;
4397 return *this;
4398 }
4399
4400 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4401 {
4402 sparseResidency4Samples = sparseResidency4Samples_;
4403 return *this;
4404 }
4405
4406 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4407 {
4408 sparseResidency8Samples = sparseResidency8Samples_;
4409 return *this;
4410 }
4411
4412 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4413 {
4414 sparseResidency16Samples = sparseResidency16Samples_;
4415 return *this;
4416 }
4417
4418 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4419 {
4420 sparseResidencyAliased = sparseResidencyAliased_;
4421 return *this;
4422 }
4423
4424 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4425 {
4426 variableMultisampleRate = variableMultisampleRate_;
4427 return *this;
4428 }
4429
4430 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4431 {
4432 inheritedQueries = inheritedQueries_;
4433 return *this;
4434 }
4435
4436 operator const VkPhysicalDeviceFeatures&() const
4437 {
4438 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4439 }
4440
4441 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4442 {
4443 return ( robustBufferAccess == rhs.robustBufferAccess )
4444 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4445 && ( imageCubeArray == rhs.imageCubeArray )
4446 && ( independentBlend == rhs.independentBlend )
4447 && ( geometryShader == rhs.geometryShader )
4448 && ( tessellationShader == rhs.tessellationShader )
4449 && ( sampleRateShading == rhs.sampleRateShading )
4450 && ( dualSrcBlend == rhs.dualSrcBlend )
4451 && ( logicOp == rhs.logicOp )
4452 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4453 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4454 && ( depthClamp == rhs.depthClamp )
4455 && ( depthBiasClamp == rhs.depthBiasClamp )
4456 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4457 && ( depthBounds == rhs.depthBounds )
4458 && ( wideLines == rhs.wideLines )
4459 && ( largePoints == rhs.largePoints )
4460 && ( alphaToOne == rhs.alphaToOne )
4461 && ( multiViewport == rhs.multiViewport )
4462 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4463 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4464 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4465 && ( textureCompressionBC == rhs.textureCompressionBC )
4466 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4467 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4468 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4469 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4470 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4471 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4472 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4473 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4474 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4475 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4476 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4477 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4478 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4479 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4480 && ( shaderClipDistance == rhs.shaderClipDistance )
4481 && ( shaderCullDistance == rhs.shaderCullDistance )
4482 && ( shaderFloat64 == rhs.shaderFloat64 )
4483 && ( shaderInt64 == rhs.shaderInt64 )
4484 && ( shaderInt16 == rhs.shaderInt16 )
4485 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4486 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4487 && ( sparseBinding == rhs.sparseBinding )
4488 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4489 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4490 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4491 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4492 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4493 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4494 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4495 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4496 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4497 && ( inheritedQueries == rhs.inheritedQueries );
4498 }
4499
4500 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4501 {
4502 return !operator==( rhs );
4503 }
4504
4505 Bool32 robustBufferAccess;
4506 Bool32 fullDrawIndexUint32;
4507 Bool32 imageCubeArray;
4508 Bool32 independentBlend;
4509 Bool32 geometryShader;
4510 Bool32 tessellationShader;
4511 Bool32 sampleRateShading;
4512 Bool32 dualSrcBlend;
4513 Bool32 logicOp;
4514 Bool32 multiDrawIndirect;
4515 Bool32 drawIndirectFirstInstance;
4516 Bool32 depthClamp;
4517 Bool32 depthBiasClamp;
4518 Bool32 fillModeNonSolid;
4519 Bool32 depthBounds;
4520 Bool32 wideLines;
4521 Bool32 largePoints;
4522 Bool32 alphaToOne;
4523 Bool32 multiViewport;
4524 Bool32 samplerAnisotropy;
4525 Bool32 textureCompressionETC2;
4526 Bool32 textureCompressionASTC_LDR;
4527 Bool32 textureCompressionBC;
4528 Bool32 occlusionQueryPrecise;
4529 Bool32 pipelineStatisticsQuery;
4530 Bool32 vertexPipelineStoresAndAtomics;
4531 Bool32 fragmentStoresAndAtomics;
4532 Bool32 shaderTessellationAndGeometryPointSize;
4533 Bool32 shaderImageGatherExtended;
4534 Bool32 shaderStorageImageExtendedFormats;
4535 Bool32 shaderStorageImageMultisample;
4536 Bool32 shaderStorageImageReadWithoutFormat;
4537 Bool32 shaderStorageImageWriteWithoutFormat;
4538 Bool32 shaderUniformBufferArrayDynamicIndexing;
4539 Bool32 shaderSampledImageArrayDynamicIndexing;
4540 Bool32 shaderStorageBufferArrayDynamicIndexing;
4541 Bool32 shaderStorageImageArrayDynamicIndexing;
4542 Bool32 shaderClipDistance;
4543 Bool32 shaderCullDistance;
4544 Bool32 shaderFloat64;
4545 Bool32 shaderInt64;
4546 Bool32 shaderInt16;
4547 Bool32 shaderResourceResidency;
4548 Bool32 shaderResourceMinLod;
4549 Bool32 sparseBinding;
4550 Bool32 sparseResidencyBuffer;
4551 Bool32 sparseResidencyImage2D;
4552 Bool32 sparseResidencyImage3D;
4553 Bool32 sparseResidency2Samples;
4554 Bool32 sparseResidency4Samples;
4555 Bool32 sparseResidency8Samples;
4556 Bool32 sparseResidency16Samples;
4557 Bool32 sparseResidencyAliased;
4558 Bool32 variableMultisampleRate;
4559 Bool32 inheritedQueries;
4560 };
4561 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4562
4563 struct PhysicalDeviceSparseProperties
4564 {
4565 operator const VkPhysicalDeviceSparseProperties&() const
4566 {
4567 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4568 }
4569
4570 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4571 {
4572 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4573 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4574 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4575 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4576 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4577 }
4578
4579 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4580 {
4581 return !operator==( rhs );
4582 }
4583
4584 Bool32 residencyStandard2DBlockShape;
4585 Bool32 residencyStandard2DMultisampleBlockShape;
4586 Bool32 residencyStandard3DBlockShape;
4587 Bool32 residencyAlignedMipSize;
4588 Bool32 residencyNonResidentStrict;
4589 };
4590 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4591
4592 struct DrawIndirectCommand
4593 {
4594 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4595 : vertexCount( vertexCount_ )
4596 , instanceCount( instanceCount_ )
4597 , firstVertex( firstVertex_ )
4598 , firstInstance( firstInstance_ )
4599 {
4600 }
4601
4602 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004604 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004605 }
4606
4607 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4608 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004609 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004610 return *this;
4611 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004612 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4613 {
4614 vertexCount = vertexCount_;
4615 return *this;
4616 }
4617
4618 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4619 {
4620 instanceCount = instanceCount_;
4621 return *this;
4622 }
4623
4624 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4625 {
4626 firstVertex = firstVertex_;
4627 return *this;
4628 }
4629
4630 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4631 {
4632 firstInstance = firstInstance_;
4633 return *this;
4634 }
4635
4636 operator const VkDrawIndirectCommand&() const
4637 {
4638 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4639 }
4640
4641 bool operator==( DrawIndirectCommand const& rhs ) const
4642 {
4643 return ( vertexCount == rhs.vertexCount )
4644 && ( instanceCount == rhs.instanceCount )
4645 && ( firstVertex == rhs.firstVertex )
4646 && ( firstInstance == rhs.firstInstance );
4647 }
4648
4649 bool operator!=( DrawIndirectCommand const& rhs ) const
4650 {
4651 return !operator==( rhs );
4652 }
4653
4654 uint32_t vertexCount;
4655 uint32_t instanceCount;
4656 uint32_t firstVertex;
4657 uint32_t firstInstance;
4658 };
4659 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4660
4661 struct DrawIndexedIndirectCommand
4662 {
4663 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4664 : indexCount( indexCount_ )
4665 , instanceCount( instanceCount_ )
4666 , firstIndex( firstIndex_ )
4667 , vertexOffset( vertexOffset_ )
4668 , firstInstance( firstInstance_ )
4669 {
4670 }
4671
4672 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004674 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004675 }
4676
4677 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004679 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004680 return *this;
4681 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004682 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4683 {
4684 indexCount = indexCount_;
4685 return *this;
4686 }
4687
4688 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4689 {
4690 instanceCount = instanceCount_;
4691 return *this;
4692 }
4693
4694 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4695 {
4696 firstIndex = firstIndex_;
4697 return *this;
4698 }
4699
4700 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4701 {
4702 vertexOffset = vertexOffset_;
4703 return *this;
4704 }
4705
4706 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4707 {
4708 firstInstance = firstInstance_;
4709 return *this;
4710 }
4711
4712 operator const VkDrawIndexedIndirectCommand&() const
4713 {
4714 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4715 }
4716
4717 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4718 {
4719 return ( indexCount == rhs.indexCount )
4720 && ( instanceCount == rhs.instanceCount )
4721 && ( firstIndex == rhs.firstIndex )
4722 && ( vertexOffset == rhs.vertexOffset )
4723 && ( firstInstance == rhs.firstInstance );
4724 }
4725
4726 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4727 {
4728 return !operator==( rhs );
4729 }
4730
4731 uint32_t indexCount;
4732 uint32_t instanceCount;
4733 uint32_t firstIndex;
4734 int32_t vertexOffset;
4735 uint32_t firstInstance;
4736 };
4737 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4738
4739 struct DispatchIndirectCommand
4740 {
4741 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4742 : x( x_ )
4743 , y( y_ )
4744 , z( z_ )
4745 {
4746 }
4747
4748 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4749 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004750 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004751 }
4752
4753 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4754 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004755 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004756 return *this;
4757 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004758 DispatchIndirectCommand& setX( uint32_t x_ )
4759 {
4760 x = x_;
4761 return *this;
4762 }
4763
4764 DispatchIndirectCommand& setY( uint32_t y_ )
4765 {
4766 y = y_;
4767 return *this;
4768 }
4769
4770 DispatchIndirectCommand& setZ( uint32_t z_ )
4771 {
4772 z = z_;
4773 return *this;
4774 }
4775
4776 operator const VkDispatchIndirectCommand&() const
4777 {
4778 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
4779 }
4780
4781 bool operator==( DispatchIndirectCommand const& rhs ) const
4782 {
4783 return ( x == rhs.x )
4784 && ( y == rhs.y )
4785 && ( z == rhs.z );
4786 }
4787
4788 bool operator!=( DispatchIndirectCommand const& rhs ) const
4789 {
4790 return !operator==( rhs );
4791 }
4792
4793 uint32_t x;
4794 uint32_t y;
4795 uint32_t z;
4796 };
4797 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
4798
4799 struct DisplayPlanePropertiesKHR
4800 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004801 operator const VkDisplayPlanePropertiesKHR&() const
4802 {
4803 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
4804 }
4805
4806 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
4807 {
4808 return ( currentDisplay == rhs.currentDisplay )
4809 && ( currentStackIndex == rhs.currentStackIndex );
4810 }
4811
4812 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
4813 {
4814 return !operator==( rhs );
4815 }
4816
4817 DisplayKHR currentDisplay;
4818 uint32_t currentStackIndex;
4819 };
4820 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
4821
4822 struct DisplayModeParametersKHR
4823 {
4824 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
4825 : visibleRegion( visibleRegion_ )
4826 , refreshRate( refreshRate_ )
4827 {
4828 }
4829
4830 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
4831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004832 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004833 }
4834
4835 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
4836 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004837 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004838 return *this;
4839 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004840 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
4841 {
4842 visibleRegion = visibleRegion_;
4843 return *this;
4844 }
4845
4846 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
4847 {
4848 refreshRate = refreshRate_;
4849 return *this;
4850 }
4851
4852 operator const VkDisplayModeParametersKHR&() const
4853 {
4854 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
4855 }
4856
4857 bool operator==( DisplayModeParametersKHR const& rhs ) const
4858 {
4859 return ( visibleRegion == rhs.visibleRegion )
4860 && ( refreshRate == rhs.refreshRate );
4861 }
4862
4863 bool operator!=( DisplayModeParametersKHR const& rhs ) const
4864 {
4865 return !operator==( rhs );
4866 }
4867
4868 Extent2D visibleRegion;
4869 uint32_t refreshRate;
4870 };
4871 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
4872
4873 struct DisplayModePropertiesKHR
4874 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004875 operator const VkDisplayModePropertiesKHR&() const
4876 {
4877 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
4878 }
4879
4880 bool operator==( DisplayModePropertiesKHR const& rhs ) const
4881 {
4882 return ( displayMode == rhs.displayMode )
4883 && ( parameters == rhs.parameters );
4884 }
4885
4886 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
4887 {
4888 return !operator==( rhs );
4889 }
4890
4891 DisplayModeKHR displayMode;
4892 DisplayModeParametersKHR parameters;
4893 };
4894 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
4895
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004896 struct RectLayerKHR
4897 {
4898 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
4899 : offset( offset_ )
4900 , extent( extent_ )
4901 , layer( layer_ )
4902 {
4903 }
4904
4905 RectLayerKHR( VkRectLayerKHR const & rhs )
4906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004907 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004908 }
4909
4910 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
4911 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004912 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004913 return *this;
4914 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004915 RectLayerKHR& setOffset( Offset2D offset_ )
4916 {
4917 offset = offset_;
4918 return *this;
4919 }
4920
4921 RectLayerKHR& setExtent( Extent2D extent_ )
4922 {
4923 extent = extent_;
4924 return *this;
4925 }
4926
4927 RectLayerKHR& setLayer( uint32_t layer_ )
4928 {
4929 layer = layer_;
4930 return *this;
4931 }
4932
4933 operator const VkRectLayerKHR&() const
4934 {
4935 return *reinterpret_cast<const VkRectLayerKHR*>(this);
4936 }
4937
4938 bool operator==( RectLayerKHR const& rhs ) const
4939 {
4940 return ( offset == rhs.offset )
4941 && ( extent == rhs.extent )
4942 && ( layer == rhs.layer );
4943 }
4944
4945 bool operator!=( RectLayerKHR const& rhs ) const
4946 {
4947 return !operator==( rhs );
4948 }
4949
4950 Offset2D offset;
4951 Extent2D extent;
4952 uint32_t layer;
4953 };
4954 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
4955
4956 struct PresentRegionKHR
4957 {
4958 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
4959 : rectangleCount( rectangleCount_ )
4960 , pRectangles( pRectangles_ )
4961 {
4962 }
4963
4964 PresentRegionKHR( VkPresentRegionKHR const & rhs )
4965 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004966 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004967 }
4968
4969 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
4970 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004971 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004972 return *this;
4973 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004974 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
4975 {
4976 rectangleCount = rectangleCount_;
4977 return *this;
4978 }
4979
4980 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
4981 {
4982 pRectangles = pRectangles_;
4983 return *this;
4984 }
4985
4986 operator const VkPresentRegionKHR&() const
4987 {
4988 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
4989 }
4990
4991 bool operator==( PresentRegionKHR const& rhs ) const
4992 {
4993 return ( rectangleCount == rhs.rectangleCount )
4994 && ( pRectangles == rhs.pRectangles );
4995 }
4996
4997 bool operator!=( PresentRegionKHR const& rhs ) const
4998 {
4999 return !operator==( rhs );
5000 }
5001
5002 uint32_t rectangleCount;
5003 const RectLayerKHR* pRectangles;
5004 };
5005 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5006
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005007 struct XYColorEXT
5008 {
5009 XYColorEXT( float x_ = 0, float y_ = 0 )
5010 : x( x_ )
5011 , y( y_ )
5012 {
5013 }
5014
5015 XYColorEXT( VkXYColorEXT const & rhs )
5016 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005017 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005018 }
5019
5020 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005022 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005023 return *this;
5024 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005025 XYColorEXT& setX( float x_ )
5026 {
5027 x = x_;
5028 return *this;
5029 }
5030
5031 XYColorEXT& setY( float y_ )
5032 {
5033 y = y_;
5034 return *this;
5035 }
5036
5037 operator const VkXYColorEXT&() const
5038 {
5039 return *reinterpret_cast<const VkXYColorEXT*>(this);
5040 }
5041
5042 bool operator==( XYColorEXT const& rhs ) const
5043 {
5044 return ( x == rhs.x )
5045 && ( y == rhs.y );
5046 }
5047
5048 bool operator!=( XYColorEXT const& rhs ) const
5049 {
5050 return !operator==( rhs );
5051 }
5052
5053 float x;
5054 float y;
5055 };
5056 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5057
5058 struct RefreshCycleDurationGOOGLE
5059 {
5060 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5061 : refreshDuration( refreshDuration_ )
5062 {
5063 }
5064
5065 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005067 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005068 }
5069
5070 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5071 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005072 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005073 return *this;
5074 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005075 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5076 {
5077 refreshDuration = refreshDuration_;
5078 return *this;
5079 }
5080
5081 operator const VkRefreshCycleDurationGOOGLE&() const
5082 {
5083 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5084 }
5085
5086 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5087 {
5088 return ( refreshDuration == rhs.refreshDuration );
5089 }
5090
5091 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5092 {
5093 return !operator==( rhs );
5094 }
5095
5096 uint64_t refreshDuration;
5097 };
5098 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5099
5100 struct PastPresentationTimingGOOGLE
5101 {
5102 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5103 : presentID( presentID_ )
5104 , desiredPresentTime( desiredPresentTime_ )
5105 , actualPresentTime( actualPresentTime_ )
5106 , earliestPresentTime( earliestPresentTime_ )
5107 , presentMargin( presentMargin_ )
5108 {
5109 }
5110
5111 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5112 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005113 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005114 }
5115
5116 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5117 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005118 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005119 return *this;
5120 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005121 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5122 {
5123 presentID = presentID_;
5124 return *this;
5125 }
5126
5127 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5128 {
5129 desiredPresentTime = desiredPresentTime_;
5130 return *this;
5131 }
5132
5133 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5134 {
5135 actualPresentTime = actualPresentTime_;
5136 return *this;
5137 }
5138
5139 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5140 {
5141 earliestPresentTime = earliestPresentTime_;
5142 return *this;
5143 }
5144
5145 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5146 {
5147 presentMargin = presentMargin_;
5148 return *this;
5149 }
5150
5151 operator const VkPastPresentationTimingGOOGLE&() const
5152 {
5153 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5154 }
5155
5156 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5157 {
5158 return ( presentID == rhs.presentID )
5159 && ( desiredPresentTime == rhs.desiredPresentTime )
5160 && ( actualPresentTime == rhs.actualPresentTime )
5161 && ( earliestPresentTime == rhs.earliestPresentTime )
5162 && ( presentMargin == rhs.presentMargin );
5163 }
5164
5165 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5166 {
5167 return !operator==( rhs );
5168 }
5169
5170 uint32_t presentID;
5171 uint64_t desiredPresentTime;
5172 uint64_t actualPresentTime;
5173 uint64_t earliestPresentTime;
5174 uint64_t presentMargin;
5175 };
5176 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5177
5178 struct PresentTimeGOOGLE
5179 {
5180 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5181 : presentID( presentID_ )
5182 , desiredPresentTime( desiredPresentTime_ )
5183 {
5184 }
5185
5186 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5187 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005188 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005189 }
5190
5191 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005193 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005194 return *this;
5195 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005196 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5197 {
5198 presentID = presentID_;
5199 return *this;
5200 }
5201
5202 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5203 {
5204 desiredPresentTime = desiredPresentTime_;
5205 return *this;
5206 }
5207
5208 operator const VkPresentTimeGOOGLE&() const
5209 {
5210 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5211 }
5212
5213 bool operator==( PresentTimeGOOGLE const& rhs ) const
5214 {
5215 return ( presentID == rhs.presentID )
5216 && ( desiredPresentTime == rhs.desiredPresentTime );
5217 }
5218
5219 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5220 {
5221 return !operator==( rhs );
5222 }
5223
5224 uint32_t presentID;
5225 uint64_t desiredPresentTime;
5226 };
5227 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5228
Mark Young0f183a82017-02-28 09:58:04 -07005229 struct ViewportWScalingNV
5230 {
5231 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5232 : xcoeff( xcoeff_ )
5233 , ycoeff( ycoeff_ )
5234 {
5235 }
5236
5237 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5238 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005239 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005240 }
5241
5242 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5243 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005244 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005245 return *this;
5246 }
Mark Young0f183a82017-02-28 09:58:04 -07005247 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5248 {
5249 xcoeff = xcoeff_;
5250 return *this;
5251 }
5252
5253 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5254 {
5255 ycoeff = ycoeff_;
5256 return *this;
5257 }
5258
5259 operator const VkViewportWScalingNV&() const
5260 {
5261 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5262 }
5263
5264 bool operator==( ViewportWScalingNV const& rhs ) const
5265 {
5266 return ( xcoeff == rhs.xcoeff )
5267 && ( ycoeff == rhs.ycoeff );
5268 }
5269
5270 bool operator!=( ViewportWScalingNV const& rhs ) const
5271 {
5272 return !operator==( rhs );
5273 }
5274
5275 float xcoeff;
5276 float ycoeff;
5277 };
5278 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5279
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005280 enum class ImageLayout
5281 {
5282 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5283 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5284 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5285 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5286 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5287 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5288 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5289 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5290 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005291 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
5292 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005293 };
5294
5295 struct DescriptorImageInfo
5296 {
5297 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5298 : sampler( sampler_ )
5299 , imageView( imageView_ )
5300 , imageLayout( imageLayout_ )
5301 {
5302 }
5303
5304 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5305 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005306 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005307 }
5308
5309 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5310 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005311 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005312 return *this;
5313 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005314 DescriptorImageInfo& setSampler( Sampler sampler_ )
5315 {
5316 sampler = sampler_;
5317 return *this;
5318 }
5319
5320 DescriptorImageInfo& setImageView( ImageView imageView_ )
5321 {
5322 imageView = imageView_;
5323 return *this;
5324 }
5325
5326 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5327 {
5328 imageLayout = imageLayout_;
5329 return *this;
5330 }
5331
5332 operator const VkDescriptorImageInfo&() const
5333 {
5334 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5335 }
5336
5337 bool operator==( DescriptorImageInfo const& rhs ) const
5338 {
5339 return ( sampler == rhs.sampler )
5340 && ( imageView == rhs.imageView )
5341 && ( imageLayout == rhs.imageLayout );
5342 }
5343
5344 bool operator!=( DescriptorImageInfo const& rhs ) const
5345 {
5346 return !operator==( rhs );
5347 }
5348
5349 Sampler sampler;
5350 ImageView imageView;
5351 ImageLayout imageLayout;
5352 };
5353 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5354
5355 struct AttachmentReference
5356 {
5357 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5358 : attachment( attachment_ )
5359 , layout( layout_ )
5360 {
5361 }
5362
5363 AttachmentReference( VkAttachmentReference const & rhs )
5364 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005365 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005366 }
5367
5368 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5369 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005370 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005371 return *this;
5372 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005373 AttachmentReference& setAttachment( uint32_t attachment_ )
5374 {
5375 attachment = attachment_;
5376 return *this;
5377 }
5378
5379 AttachmentReference& setLayout( ImageLayout layout_ )
5380 {
5381 layout = layout_;
5382 return *this;
5383 }
5384
5385 operator const VkAttachmentReference&() const
5386 {
5387 return *reinterpret_cast<const VkAttachmentReference*>(this);
5388 }
5389
5390 bool operator==( AttachmentReference const& rhs ) const
5391 {
5392 return ( attachment == rhs.attachment )
5393 && ( layout == rhs.layout );
5394 }
5395
5396 bool operator!=( AttachmentReference const& rhs ) const
5397 {
5398 return !operator==( rhs );
5399 }
5400
5401 uint32_t attachment;
5402 ImageLayout layout;
5403 };
5404 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5405
5406 enum class AttachmentLoadOp
5407 {
5408 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5409 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5410 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5411 };
5412
5413 enum class AttachmentStoreOp
5414 {
5415 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5416 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5417 };
5418
5419 enum class ImageType
5420 {
5421 e1D = VK_IMAGE_TYPE_1D,
5422 e2D = VK_IMAGE_TYPE_2D,
5423 e3D = VK_IMAGE_TYPE_3D
5424 };
5425
5426 enum class ImageTiling
5427 {
5428 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5429 eLinear = VK_IMAGE_TILING_LINEAR
5430 };
5431
5432 enum class ImageViewType
5433 {
5434 e1D = VK_IMAGE_VIEW_TYPE_1D,
5435 e2D = VK_IMAGE_VIEW_TYPE_2D,
5436 e3D = VK_IMAGE_VIEW_TYPE_3D,
5437 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5438 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5439 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5440 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5441 };
5442
5443 enum class CommandBufferLevel
5444 {
5445 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5446 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5447 };
5448
5449 enum class ComponentSwizzle
5450 {
5451 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5452 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5453 eOne = VK_COMPONENT_SWIZZLE_ONE,
5454 eR = VK_COMPONENT_SWIZZLE_R,
5455 eG = VK_COMPONENT_SWIZZLE_G,
5456 eB = VK_COMPONENT_SWIZZLE_B,
5457 eA = VK_COMPONENT_SWIZZLE_A
5458 };
5459
5460 struct ComponentMapping
5461 {
5462 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5463 : r( r_ )
5464 , g( g_ )
5465 , b( b_ )
5466 , a( a_ )
5467 {
5468 }
5469
5470 ComponentMapping( VkComponentMapping const & rhs )
5471 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005472 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005473 }
5474
5475 ComponentMapping& operator=( VkComponentMapping const & rhs )
5476 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005477 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005478 return *this;
5479 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005480 ComponentMapping& setR( ComponentSwizzle r_ )
5481 {
5482 r = r_;
5483 return *this;
5484 }
5485
5486 ComponentMapping& setG( ComponentSwizzle g_ )
5487 {
5488 g = g_;
5489 return *this;
5490 }
5491
5492 ComponentMapping& setB( ComponentSwizzle b_ )
5493 {
5494 b = b_;
5495 return *this;
5496 }
5497
5498 ComponentMapping& setA( ComponentSwizzle a_ )
5499 {
5500 a = a_;
5501 return *this;
5502 }
5503
5504 operator const VkComponentMapping&() const
5505 {
5506 return *reinterpret_cast<const VkComponentMapping*>(this);
5507 }
5508
5509 bool operator==( ComponentMapping const& rhs ) const
5510 {
5511 return ( r == rhs.r )
5512 && ( g == rhs.g )
5513 && ( b == rhs.b )
5514 && ( a == rhs.a );
5515 }
5516
5517 bool operator!=( ComponentMapping const& rhs ) const
5518 {
5519 return !operator==( rhs );
5520 }
5521
5522 ComponentSwizzle r;
5523 ComponentSwizzle g;
5524 ComponentSwizzle b;
5525 ComponentSwizzle a;
5526 };
5527 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5528
5529 enum class DescriptorType
5530 {
5531 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5532 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5533 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5534 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5535 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5536 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5537 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5538 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5539 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5540 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5541 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5542 };
5543
5544 struct DescriptorPoolSize
5545 {
5546 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5547 : type( type_ )
5548 , descriptorCount( descriptorCount_ )
5549 {
5550 }
5551
5552 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5553 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005554 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005555 }
5556
5557 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5558 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005559 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005560 return *this;
5561 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005562 DescriptorPoolSize& setType( DescriptorType type_ )
5563 {
5564 type = type_;
5565 return *this;
5566 }
5567
5568 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5569 {
5570 descriptorCount = descriptorCount_;
5571 return *this;
5572 }
5573
5574 operator const VkDescriptorPoolSize&() const
5575 {
5576 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5577 }
5578
5579 bool operator==( DescriptorPoolSize const& rhs ) const
5580 {
5581 return ( type == rhs.type )
5582 && ( descriptorCount == rhs.descriptorCount );
5583 }
5584
5585 bool operator!=( DescriptorPoolSize const& rhs ) const
5586 {
5587 return !operator==( rhs );
5588 }
5589
5590 DescriptorType type;
5591 uint32_t descriptorCount;
5592 };
5593 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5594
Mark Young0f183a82017-02-28 09:58:04 -07005595 struct DescriptorUpdateTemplateEntryKHR
5596 {
5597 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 )
5598 : dstBinding( dstBinding_ )
5599 , dstArrayElement( dstArrayElement_ )
5600 , descriptorCount( descriptorCount_ )
5601 , descriptorType( descriptorType_ )
5602 , offset( offset_ )
5603 , stride( stride_ )
5604 {
5605 }
5606
5607 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5608 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005609 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005610 }
5611
5612 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5613 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005614 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005615 return *this;
5616 }
Mark Young0f183a82017-02-28 09:58:04 -07005617 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5618 {
5619 dstBinding = dstBinding_;
5620 return *this;
5621 }
5622
5623 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5624 {
5625 dstArrayElement = dstArrayElement_;
5626 return *this;
5627 }
5628
5629 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5630 {
5631 descriptorCount = descriptorCount_;
5632 return *this;
5633 }
5634
5635 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5636 {
5637 descriptorType = descriptorType_;
5638 return *this;
5639 }
5640
5641 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5642 {
5643 offset = offset_;
5644 return *this;
5645 }
5646
5647 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5648 {
5649 stride = stride_;
5650 return *this;
5651 }
5652
5653 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5654 {
5655 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5656 }
5657
5658 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5659 {
5660 return ( dstBinding == rhs.dstBinding )
5661 && ( dstArrayElement == rhs.dstArrayElement )
5662 && ( descriptorCount == rhs.descriptorCount )
5663 && ( descriptorType == rhs.descriptorType )
5664 && ( offset == rhs.offset )
5665 && ( stride == rhs.stride );
5666 }
5667
5668 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5669 {
5670 return !operator==( rhs );
5671 }
5672
5673 uint32_t dstBinding;
5674 uint32_t dstArrayElement;
5675 uint32_t descriptorCount;
5676 DescriptorType descriptorType;
5677 size_t offset;
5678 size_t stride;
5679 };
5680 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5681
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005682 enum class QueryType
5683 {
5684 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5685 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5686 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5687 };
5688
5689 enum class BorderColor
5690 {
5691 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5692 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5693 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5694 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5695 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5696 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5697 };
5698
5699 enum class PipelineBindPoint
5700 {
5701 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5702 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5703 };
5704
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005705 enum class PipelineCacheHeaderVersion
5706 {
5707 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5708 };
5709
5710 enum class PrimitiveTopology
5711 {
5712 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5713 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5714 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5715 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5716 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5717 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5718 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5719 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5720 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5721 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5722 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5723 };
5724
5725 enum class SharingMode
5726 {
5727 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5728 eConcurrent = VK_SHARING_MODE_CONCURRENT
5729 };
5730
5731 enum class IndexType
5732 {
5733 eUint16 = VK_INDEX_TYPE_UINT16,
5734 eUint32 = VK_INDEX_TYPE_UINT32
5735 };
5736
5737 enum class Filter
5738 {
5739 eNearest = VK_FILTER_NEAREST,
5740 eLinear = VK_FILTER_LINEAR,
5741 eCubicIMG = VK_FILTER_CUBIC_IMG
5742 };
5743
5744 enum class SamplerMipmapMode
5745 {
5746 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5747 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5748 };
5749
5750 enum class SamplerAddressMode
5751 {
5752 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5753 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5754 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5755 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5756 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5757 };
5758
5759 enum class CompareOp
5760 {
5761 eNever = VK_COMPARE_OP_NEVER,
5762 eLess = VK_COMPARE_OP_LESS,
5763 eEqual = VK_COMPARE_OP_EQUAL,
5764 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5765 eGreater = VK_COMPARE_OP_GREATER,
5766 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5767 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5768 eAlways = VK_COMPARE_OP_ALWAYS
5769 };
5770
5771 enum class PolygonMode
5772 {
5773 eFill = VK_POLYGON_MODE_FILL,
5774 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06005775 ePoint = VK_POLYGON_MODE_POINT,
5776 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005777 };
5778
5779 enum class CullModeFlagBits
5780 {
5781 eNone = VK_CULL_MODE_NONE,
5782 eFront = VK_CULL_MODE_FRONT_BIT,
5783 eBack = VK_CULL_MODE_BACK_BIT,
5784 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5785 };
5786
5787 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5788
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005789 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005790 {
5791 return CullModeFlags( bit0 ) | bit1;
5792 }
5793
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005794 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5795 {
5796 return ~( CullModeFlags( bits ) );
5797 }
5798
5799 template <> struct FlagTraits<CullModeFlagBits>
5800 {
5801 enum
5802 {
5803 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5804 };
5805 };
5806
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005807 enum class FrontFace
5808 {
5809 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5810 eClockwise = VK_FRONT_FACE_CLOCKWISE
5811 };
5812
5813 enum class BlendFactor
5814 {
5815 eZero = VK_BLEND_FACTOR_ZERO,
5816 eOne = VK_BLEND_FACTOR_ONE,
5817 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5818 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5819 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5820 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5821 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5822 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5823 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5824 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5825 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5826 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5827 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5828 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5829 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5830 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5831 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5832 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5833 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5834 };
5835
5836 enum class BlendOp
5837 {
5838 eAdd = VK_BLEND_OP_ADD,
5839 eSubtract = VK_BLEND_OP_SUBTRACT,
5840 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5841 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06005842 eMax = VK_BLEND_OP_MAX,
5843 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
5844 eSrcEXT = VK_BLEND_OP_SRC_EXT,
5845 eDstEXT = VK_BLEND_OP_DST_EXT,
5846 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
5847 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
5848 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
5849 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
5850 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
5851 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
5852 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
5853 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
5854 eXorEXT = VK_BLEND_OP_XOR_EXT,
5855 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
5856 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
5857 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
5858 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
5859 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
5860 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
5861 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
5862 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
5863 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
5864 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
5865 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
5866 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
5867 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
5868 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
5869 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
5870 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
5871 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
5872 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
5873 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
5874 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
5875 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
5876 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
5877 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
5878 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
5879 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
5880 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
5881 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
5882 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
5883 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
5884 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
5885 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
5886 eRedEXT = VK_BLEND_OP_RED_EXT,
5887 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
5888 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005889 };
5890
5891 enum class StencilOp
5892 {
5893 eKeep = VK_STENCIL_OP_KEEP,
5894 eZero = VK_STENCIL_OP_ZERO,
5895 eReplace = VK_STENCIL_OP_REPLACE,
5896 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5897 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5898 eInvert = VK_STENCIL_OP_INVERT,
5899 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5900 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5901 };
5902
5903 struct StencilOpState
5904 {
5905 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 )
5906 : failOp( failOp_ )
5907 , passOp( passOp_ )
5908 , depthFailOp( depthFailOp_ )
5909 , compareOp( compareOp_ )
5910 , compareMask( compareMask_ )
5911 , writeMask( writeMask_ )
5912 , reference( reference_ )
5913 {
5914 }
5915
5916 StencilOpState( VkStencilOpState const & rhs )
5917 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005918 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005919 }
5920
5921 StencilOpState& operator=( VkStencilOpState const & rhs )
5922 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005923 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005924 return *this;
5925 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005926 StencilOpState& setFailOp( StencilOp failOp_ )
5927 {
5928 failOp = failOp_;
5929 return *this;
5930 }
5931
5932 StencilOpState& setPassOp( StencilOp passOp_ )
5933 {
5934 passOp = passOp_;
5935 return *this;
5936 }
5937
5938 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5939 {
5940 depthFailOp = depthFailOp_;
5941 return *this;
5942 }
5943
5944 StencilOpState& setCompareOp( CompareOp compareOp_ )
5945 {
5946 compareOp = compareOp_;
5947 return *this;
5948 }
5949
5950 StencilOpState& setCompareMask( uint32_t compareMask_ )
5951 {
5952 compareMask = compareMask_;
5953 return *this;
5954 }
5955
5956 StencilOpState& setWriteMask( uint32_t writeMask_ )
5957 {
5958 writeMask = writeMask_;
5959 return *this;
5960 }
5961
5962 StencilOpState& setReference( uint32_t reference_ )
5963 {
5964 reference = reference_;
5965 return *this;
5966 }
5967
5968 operator const VkStencilOpState&() const
5969 {
5970 return *reinterpret_cast<const VkStencilOpState*>(this);
5971 }
5972
5973 bool operator==( StencilOpState const& rhs ) const
5974 {
5975 return ( failOp == rhs.failOp )
5976 && ( passOp == rhs.passOp )
5977 && ( depthFailOp == rhs.depthFailOp )
5978 && ( compareOp == rhs.compareOp )
5979 && ( compareMask == rhs.compareMask )
5980 && ( writeMask == rhs.writeMask )
5981 && ( reference == rhs.reference );
5982 }
5983
5984 bool operator!=( StencilOpState const& rhs ) const
5985 {
5986 return !operator==( rhs );
5987 }
5988
5989 StencilOp failOp;
5990 StencilOp passOp;
5991 StencilOp depthFailOp;
5992 CompareOp compareOp;
5993 uint32_t compareMask;
5994 uint32_t writeMask;
5995 uint32_t reference;
5996 };
5997 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5998
5999 enum class LogicOp
6000 {
6001 eClear = VK_LOGIC_OP_CLEAR,
6002 eAnd = VK_LOGIC_OP_AND,
6003 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6004 eCopy = VK_LOGIC_OP_COPY,
6005 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6006 eNoOp = VK_LOGIC_OP_NO_OP,
6007 eXor = VK_LOGIC_OP_XOR,
6008 eOr = VK_LOGIC_OP_OR,
6009 eNor = VK_LOGIC_OP_NOR,
6010 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6011 eInvert = VK_LOGIC_OP_INVERT,
6012 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6013 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6014 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6015 eNand = VK_LOGIC_OP_NAND,
6016 eSet = VK_LOGIC_OP_SET
6017 };
6018
6019 enum class InternalAllocationType
6020 {
6021 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6022 };
6023
6024 enum class SystemAllocationScope
6025 {
6026 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6027 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6028 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6029 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6030 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6031 };
6032
6033 enum class PhysicalDeviceType
6034 {
6035 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6036 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6037 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6038 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6039 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6040 };
6041
6042 enum class VertexInputRate
6043 {
6044 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6045 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6046 };
6047
6048 struct VertexInputBindingDescription
6049 {
6050 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6051 : binding( binding_ )
6052 , stride( stride_ )
6053 , inputRate( inputRate_ )
6054 {
6055 }
6056
6057 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6058 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006059 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006060 }
6061
6062 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6063 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006064 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006065 return *this;
6066 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006067 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6068 {
6069 binding = binding_;
6070 return *this;
6071 }
6072
6073 VertexInputBindingDescription& setStride( uint32_t stride_ )
6074 {
6075 stride = stride_;
6076 return *this;
6077 }
6078
6079 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6080 {
6081 inputRate = inputRate_;
6082 return *this;
6083 }
6084
6085 operator const VkVertexInputBindingDescription&() const
6086 {
6087 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6088 }
6089
6090 bool operator==( VertexInputBindingDescription const& rhs ) const
6091 {
6092 return ( binding == rhs.binding )
6093 && ( stride == rhs.stride )
6094 && ( inputRate == rhs.inputRate );
6095 }
6096
6097 bool operator!=( VertexInputBindingDescription const& rhs ) const
6098 {
6099 return !operator==( rhs );
6100 }
6101
6102 uint32_t binding;
6103 uint32_t stride;
6104 VertexInputRate inputRate;
6105 };
6106 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6107
6108 enum class Format
6109 {
6110 eUndefined = VK_FORMAT_UNDEFINED,
6111 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6112 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6113 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6114 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6115 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6116 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6117 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6118 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6119 eR8Unorm = VK_FORMAT_R8_UNORM,
6120 eR8Snorm = VK_FORMAT_R8_SNORM,
6121 eR8Uscaled = VK_FORMAT_R8_USCALED,
6122 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6123 eR8Uint = VK_FORMAT_R8_UINT,
6124 eR8Sint = VK_FORMAT_R8_SINT,
6125 eR8Srgb = VK_FORMAT_R8_SRGB,
6126 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6127 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6128 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6129 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6130 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6131 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6132 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6133 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6134 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6135 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6136 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6137 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6138 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6139 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6140 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6141 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6142 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6143 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6144 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6145 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6146 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6147 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6148 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6149 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6150 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6151 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6152 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6153 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6154 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6155 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6156 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6157 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6158 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6159 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6160 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6161 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6162 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6163 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6164 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6165 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6166 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6167 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6168 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6169 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6170 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6171 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6172 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6173 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6174 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6175 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6176 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6177 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6178 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6179 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6180 eR16Unorm = VK_FORMAT_R16_UNORM,
6181 eR16Snorm = VK_FORMAT_R16_SNORM,
6182 eR16Uscaled = VK_FORMAT_R16_USCALED,
6183 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6184 eR16Uint = VK_FORMAT_R16_UINT,
6185 eR16Sint = VK_FORMAT_R16_SINT,
6186 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6187 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6188 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6189 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6190 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6191 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6192 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6193 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6194 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6195 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6196 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6197 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6198 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6199 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6200 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6201 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6202 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6203 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6204 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6205 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6206 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6207 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6208 eR32Uint = VK_FORMAT_R32_UINT,
6209 eR32Sint = VK_FORMAT_R32_SINT,
6210 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6211 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6212 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6213 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6214 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6215 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6216 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6217 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6218 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6219 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6220 eR64Uint = VK_FORMAT_R64_UINT,
6221 eR64Sint = VK_FORMAT_R64_SINT,
6222 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6223 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6224 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6225 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6226 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6227 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6228 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6229 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6230 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6231 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6232 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6233 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6234 eD16Unorm = VK_FORMAT_D16_UNORM,
6235 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6236 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6237 eS8Uint = VK_FORMAT_S8_UINT,
6238 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6239 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6240 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6241 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6242 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6243 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6244 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6245 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6246 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6247 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6248 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6249 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6250 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6251 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6252 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6253 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6254 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6255 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6256 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6257 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6258 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6259 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6260 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6261 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6262 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6263 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6264 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6265 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6266 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6267 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6268 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6269 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6270 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6271 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6272 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6273 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6274 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6275 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6276 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6277 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6278 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6279 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6280 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6281 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6282 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6283 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6284 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6285 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6286 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6287 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6288 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6289 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6290 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6291 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6292 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6293 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006294 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6295 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6296 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6297 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6298 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6299 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6300 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6301 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6302 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006303 };
6304
6305 struct VertexInputAttributeDescription
6306 {
6307 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6308 : location( location_ )
6309 , binding( binding_ )
6310 , format( format_ )
6311 , offset( offset_ )
6312 {
6313 }
6314
6315 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6316 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006317 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006318 }
6319
6320 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6321 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006322 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006323 return *this;
6324 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006325 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6326 {
6327 location = location_;
6328 return *this;
6329 }
6330
6331 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6332 {
6333 binding = binding_;
6334 return *this;
6335 }
6336
6337 VertexInputAttributeDescription& setFormat( Format format_ )
6338 {
6339 format = format_;
6340 return *this;
6341 }
6342
6343 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6344 {
6345 offset = offset_;
6346 return *this;
6347 }
6348
6349 operator const VkVertexInputAttributeDescription&() const
6350 {
6351 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6352 }
6353
6354 bool operator==( VertexInputAttributeDescription const& rhs ) const
6355 {
6356 return ( location == rhs.location )
6357 && ( binding == rhs.binding )
6358 && ( format == rhs.format )
6359 && ( offset == rhs.offset );
6360 }
6361
6362 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6363 {
6364 return !operator==( rhs );
6365 }
6366
6367 uint32_t location;
6368 uint32_t binding;
6369 Format format;
6370 uint32_t offset;
6371 };
6372 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6373
6374 enum class StructureType
6375 {
6376 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6377 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6378 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6379 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6380 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6381 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6382 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6383 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6384 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6385 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6386 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6387 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6388 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6389 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6390 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6391 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6392 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6393 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6394 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6395 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6396 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6397 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6398 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6399 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6400 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6401 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6402 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6403 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6404 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6405 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6406 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6407 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6408 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6409 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6410 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6411 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6412 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6413 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6414 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6415 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6416 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6417 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6418 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6419 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6420 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6421 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6422 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6423 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6424 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6425 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6426 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6427 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6428 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6429 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6430 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6431 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6432 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6433 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6434 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6435 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6436 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6437 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6438 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6439 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6440 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6441 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6442 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006443 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006444 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006445 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6446 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6447 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006448 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6449 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6450 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6451 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006452 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006453 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6454 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6455 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6456 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6457 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6458 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6459 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6460 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6461 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006462 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6463 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6464 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6465 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6466 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6467 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6468 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6469 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6470 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6471 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6472 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6473 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6474 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006475 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006476 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006477 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6478 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006479 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6480 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6481 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6482 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6483 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6484 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6485 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6486 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6487 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6488 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6489 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6490 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6491 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6492 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6493 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6494 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6495 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6496 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6497 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6498 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6499 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6500 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6501 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6502 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6503 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006504 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006505 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006506 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006507 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006508 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6509 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6510 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6511 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6512 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006513 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006514 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006515 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6516 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6517 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6518 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006519 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006520 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006521 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6522 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6523 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6524 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006525 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006526 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006527 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6528 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6529 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6530 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6531 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6532 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6533 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6534 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006535 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6536 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6537 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006538 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006539 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006540 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006541 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6542 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006543 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6544 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006545 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6546 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6547 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6548 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6549 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006550 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6551 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6552 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6553 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
6554 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006555 };
6556
6557 struct ApplicationInfo
6558 {
6559 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6560 : sType( StructureType::eApplicationInfo )
6561 , pNext( nullptr )
6562 , pApplicationName( pApplicationName_ )
6563 , applicationVersion( applicationVersion_ )
6564 , pEngineName( pEngineName_ )
6565 , engineVersion( engineVersion_ )
6566 , apiVersion( apiVersion_ )
6567 {
6568 }
6569
6570 ApplicationInfo( VkApplicationInfo const & rhs )
6571 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006572 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006573 }
6574
6575 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6576 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006577 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006578 return *this;
6579 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006580 ApplicationInfo& setPNext( const void* pNext_ )
6581 {
6582 pNext = pNext_;
6583 return *this;
6584 }
6585
6586 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6587 {
6588 pApplicationName = pApplicationName_;
6589 return *this;
6590 }
6591
6592 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6593 {
6594 applicationVersion = applicationVersion_;
6595 return *this;
6596 }
6597
6598 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6599 {
6600 pEngineName = pEngineName_;
6601 return *this;
6602 }
6603
6604 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6605 {
6606 engineVersion = engineVersion_;
6607 return *this;
6608 }
6609
6610 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6611 {
6612 apiVersion = apiVersion_;
6613 return *this;
6614 }
6615
6616 operator const VkApplicationInfo&() const
6617 {
6618 return *reinterpret_cast<const VkApplicationInfo*>(this);
6619 }
6620
6621 bool operator==( ApplicationInfo const& rhs ) const
6622 {
6623 return ( sType == rhs.sType )
6624 && ( pNext == rhs.pNext )
6625 && ( pApplicationName == rhs.pApplicationName )
6626 && ( applicationVersion == rhs.applicationVersion )
6627 && ( pEngineName == rhs.pEngineName )
6628 && ( engineVersion == rhs.engineVersion )
6629 && ( apiVersion == rhs.apiVersion );
6630 }
6631
6632 bool operator!=( ApplicationInfo const& rhs ) const
6633 {
6634 return !operator==( rhs );
6635 }
6636
6637 private:
6638 StructureType sType;
6639
6640 public:
6641 const void* pNext;
6642 const char* pApplicationName;
6643 uint32_t applicationVersion;
6644 const char* pEngineName;
6645 uint32_t engineVersion;
6646 uint32_t apiVersion;
6647 };
6648 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6649
6650 struct DeviceQueueCreateInfo
6651 {
6652 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6653 : sType( StructureType::eDeviceQueueCreateInfo )
6654 , pNext( nullptr )
6655 , flags( flags_ )
6656 , queueFamilyIndex( queueFamilyIndex_ )
6657 , queueCount( queueCount_ )
6658 , pQueuePriorities( pQueuePriorities_ )
6659 {
6660 }
6661
6662 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006664 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006665 }
6666
6667 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006669 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006670 return *this;
6671 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006672 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6673 {
6674 pNext = pNext_;
6675 return *this;
6676 }
6677
6678 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6679 {
6680 flags = flags_;
6681 return *this;
6682 }
6683
6684 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6685 {
6686 queueFamilyIndex = queueFamilyIndex_;
6687 return *this;
6688 }
6689
6690 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6691 {
6692 queueCount = queueCount_;
6693 return *this;
6694 }
6695
6696 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6697 {
6698 pQueuePriorities = pQueuePriorities_;
6699 return *this;
6700 }
6701
6702 operator const VkDeviceQueueCreateInfo&() const
6703 {
6704 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6705 }
6706
6707 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6708 {
6709 return ( sType == rhs.sType )
6710 && ( pNext == rhs.pNext )
6711 && ( flags == rhs.flags )
6712 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6713 && ( queueCount == rhs.queueCount )
6714 && ( pQueuePriorities == rhs.pQueuePriorities );
6715 }
6716
6717 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6718 {
6719 return !operator==( rhs );
6720 }
6721
6722 private:
6723 StructureType sType;
6724
6725 public:
6726 const void* pNext;
6727 DeviceQueueCreateFlags flags;
6728 uint32_t queueFamilyIndex;
6729 uint32_t queueCount;
6730 const float* pQueuePriorities;
6731 };
6732 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6733
6734 struct DeviceCreateInfo
6735 {
6736 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 )
6737 : sType( StructureType::eDeviceCreateInfo )
6738 , pNext( nullptr )
6739 , flags( flags_ )
6740 , queueCreateInfoCount( queueCreateInfoCount_ )
6741 , pQueueCreateInfos( pQueueCreateInfos_ )
6742 , enabledLayerCount( enabledLayerCount_ )
6743 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6744 , enabledExtensionCount( enabledExtensionCount_ )
6745 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6746 , pEnabledFeatures( pEnabledFeatures_ )
6747 {
6748 }
6749
6750 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6751 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006752 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006753 }
6754
6755 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6756 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006757 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006758 return *this;
6759 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006760 DeviceCreateInfo& setPNext( const void* pNext_ )
6761 {
6762 pNext = pNext_;
6763 return *this;
6764 }
6765
6766 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6767 {
6768 flags = flags_;
6769 return *this;
6770 }
6771
6772 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6773 {
6774 queueCreateInfoCount = queueCreateInfoCount_;
6775 return *this;
6776 }
6777
6778 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6779 {
6780 pQueueCreateInfos = pQueueCreateInfos_;
6781 return *this;
6782 }
6783
6784 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6785 {
6786 enabledLayerCount = enabledLayerCount_;
6787 return *this;
6788 }
6789
6790 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6791 {
6792 ppEnabledLayerNames = ppEnabledLayerNames_;
6793 return *this;
6794 }
6795
6796 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6797 {
6798 enabledExtensionCount = enabledExtensionCount_;
6799 return *this;
6800 }
6801
6802 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6803 {
6804 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6805 return *this;
6806 }
6807
6808 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6809 {
6810 pEnabledFeatures = pEnabledFeatures_;
6811 return *this;
6812 }
6813
6814 operator const VkDeviceCreateInfo&() const
6815 {
6816 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6817 }
6818
6819 bool operator==( DeviceCreateInfo const& rhs ) const
6820 {
6821 return ( sType == rhs.sType )
6822 && ( pNext == rhs.pNext )
6823 && ( flags == rhs.flags )
6824 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6825 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6826 && ( enabledLayerCount == rhs.enabledLayerCount )
6827 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6828 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6829 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6830 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6831 }
6832
6833 bool operator!=( DeviceCreateInfo const& rhs ) const
6834 {
6835 return !operator==( rhs );
6836 }
6837
6838 private:
6839 StructureType sType;
6840
6841 public:
6842 const void* pNext;
6843 DeviceCreateFlags flags;
6844 uint32_t queueCreateInfoCount;
6845 const DeviceQueueCreateInfo* pQueueCreateInfos;
6846 uint32_t enabledLayerCount;
6847 const char* const* ppEnabledLayerNames;
6848 uint32_t enabledExtensionCount;
6849 const char* const* ppEnabledExtensionNames;
6850 const PhysicalDeviceFeatures* pEnabledFeatures;
6851 };
6852 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6853
6854 struct InstanceCreateInfo
6855 {
6856 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 )
6857 : sType( StructureType::eInstanceCreateInfo )
6858 , pNext( nullptr )
6859 , flags( flags_ )
6860 , pApplicationInfo( pApplicationInfo_ )
6861 , enabledLayerCount( enabledLayerCount_ )
6862 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6863 , enabledExtensionCount( enabledExtensionCount_ )
6864 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6865 {
6866 }
6867
6868 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006870 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006871 }
6872
6873 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6874 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006875 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006876 return *this;
6877 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006878 InstanceCreateInfo& setPNext( const void* pNext_ )
6879 {
6880 pNext = pNext_;
6881 return *this;
6882 }
6883
6884 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6885 {
6886 flags = flags_;
6887 return *this;
6888 }
6889
6890 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6891 {
6892 pApplicationInfo = pApplicationInfo_;
6893 return *this;
6894 }
6895
6896 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6897 {
6898 enabledLayerCount = enabledLayerCount_;
6899 return *this;
6900 }
6901
6902 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6903 {
6904 ppEnabledLayerNames = ppEnabledLayerNames_;
6905 return *this;
6906 }
6907
6908 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6909 {
6910 enabledExtensionCount = enabledExtensionCount_;
6911 return *this;
6912 }
6913
6914 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6915 {
6916 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6917 return *this;
6918 }
6919
6920 operator const VkInstanceCreateInfo&() const
6921 {
6922 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6923 }
6924
6925 bool operator==( InstanceCreateInfo const& rhs ) const
6926 {
6927 return ( sType == rhs.sType )
6928 && ( pNext == rhs.pNext )
6929 && ( flags == rhs.flags )
6930 && ( pApplicationInfo == rhs.pApplicationInfo )
6931 && ( enabledLayerCount == rhs.enabledLayerCount )
6932 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6933 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6934 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6935 }
6936
6937 bool operator!=( InstanceCreateInfo const& rhs ) const
6938 {
6939 return !operator==( rhs );
6940 }
6941
6942 private:
6943 StructureType sType;
6944
6945 public:
6946 const void* pNext;
6947 InstanceCreateFlags flags;
6948 const ApplicationInfo* pApplicationInfo;
6949 uint32_t enabledLayerCount;
6950 const char* const* ppEnabledLayerNames;
6951 uint32_t enabledExtensionCount;
6952 const char* const* ppEnabledExtensionNames;
6953 };
6954 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6955
6956 struct MemoryAllocateInfo
6957 {
6958 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6959 : sType( StructureType::eMemoryAllocateInfo )
6960 , pNext( nullptr )
6961 , allocationSize( allocationSize_ )
6962 , memoryTypeIndex( memoryTypeIndex_ )
6963 {
6964 }
6965
6966 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6967 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006968 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006969 }
6970
6971 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6972 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006973 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006974 return *this;
6975 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006976 MemoryAllocateInfo& setPNext( const void* pNext_ )
6977 {
6978 pNext = pNext_;
6979 return *this;
6980 }
6981
6982 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6983 {
6984 allocationSize = allocationSize_;
6985 return *this;
6986 }
6987
6988 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6989 {
6990 memoryTypeIndex = memoryTypeIndex_;
6991 return *this;
6992 }
6993
6994 operator const VkMemoryAllocateInfo&() const
6995 {
6996 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6997 }
6998
6999 bool operator==( MemoryAllocateInfo const& rhs ) const
7000 {
7001 return ( sType == rhs.sType )
7002 && ( pNext == rhs.pNext )
7003 && ( allocationSize == rhs.allocationSize )
7004 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7005 }
7006
7007 bool operator!=( MemoryAllocateInfo const& rhs ) const
7008 {
7009 return !operator==( rhs );
7010 }
7011
7012 private:
7013 StructureType sType;
7014
7015 public:
7016 const void* pNext;
7017 DeviceSize allocationSize;
7018 uint32_t memoryTypeIndex;
7019 };
7020 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7021
7022 struct MappedMemoryRange
7023 {
7024 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7025 : sType( StructureType::eMappedMemoryRange )
7026 , pNext( nullptr )
7027 , memory( memory_ )
7028 , offset( offset_ )
7029 , size( size_ )
7030 {
7031 }
7032
7033 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7034 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007035 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007036 }
7037
7038 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7039 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007040 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007041 return *this;
7042 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007043 MappedMemoryRange& setPNext( const void* pNext_ )
7044 {
7045 pNext = pNext_;
7046 return *this;
7047 }
7048
7049 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7050 {
7051 memory = memory_;
7052 return *this;
7053 }
7054
7055 MappedMemoryRange& setOffset( DeviceSize offset_ )
7056 {
7057 offset = offset_;
7058 return *this;
7059 }
7060
7061 MappedMemoryRange& setSize( DeviceSize size_ )
7062 {
7063 size = size_;
7064 return *this;
7065 }
7066
7067 operator const VkMappedMemoryRange&() const
7068 {
7069 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7070 }
7071
7072 bool operator==( MappedMemoryRange const& rhs ) const
7073 {
7074 return ( sType == rhs.sType )
7075 && ( pNext == rhs.pNext )
7076 && ( memory == rhs.memory )
7077 && ( offset == rhs.offset )
7078 && ( size == rhs.size );
7079 }
7080
7081 bool operator!=( MappedMemoryRange const& rhs ) const
7082 {
7083 return !operator==( rhs );
7084 }
7085
7086 private:
7087 StructureType sType;
7088
7089 public:
7090 const void* pNext;
7091 DeviceMemory memory;
7092 DeviceSize offset;
7093 DeviceSize size;
7094 };
7095 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7096
7097 struct WriteDescriptorSet
7098 {
7099 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 )
7100 : sType( StructureType::eWriteDescriptorSet )
7101 , pNext( nullptr )
7102 , dstSet( dstSet_ )
7103 , dstBinding( dstBinding_ )
7104 , dstArrayElement( dstArrayElement_ )
7105 , descriptorCount( descriptorCount_ )
7106 , descriptorType( descriptorType_ )
7107 , pImageInfo( pImageInfo_ )
7108 , pBufferInfo( pBufferInfo_ )
7109 , pTexelBufferView( pTexelBufferView_ )
7110 {
7111 }
7112
7113 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7114 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007115 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007116 }
7117
7118 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7119 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007120 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007121 return *this;
7122 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007123 WriteDescriptorSet& setPNext( const void* pNext_ )
7124 {
7125 pNext = pNext_;
7126 return *this;
7127 }
7128
7129 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7130 {
7131 dstSet = dstSet_;
7132 return *this;
7133 }
7134
7135 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7136 {
7137 dstBinding = dstBinding_;
7138 return *this;
7139 }
7140
7141 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7142 {
7143 dstArrayElement = dstArrayElement_;
7144 return *this;
7145 }
7146
7147 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7148 {
7149 descriptorCount = descriptorCount_;
7150 return *this;
7151 }
7152
7153 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7154 {
7155 descriptorType = descriptorType_;
7156 return *this;
7157 }
7158
7159 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7160 {
7161 pImageInfo = pImageInfo_;
7162 return *this;
7163 }
7164
7165 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7166 {
7167 pBufferInfo = pBufferInfo_;
7168 return *this;
7169 }
7170
7171 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7172 {
7173 pTexelBufferView = pTexelBufferView_;
7174 return *this;
7175 }
7176
7177 operator const VkWriteDescriptorSet&() const
7178 {
7179 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7180 }
7181
7182 bool operator==( WriteDescriptorSet const& rhs ) const
7183 {
7184 return ( sType == rhs.sType )
7185 && ( pNext == rhs.pNext )
7186 && ( dstSet == rhs.dstSet )
7187 && ( dstBinding == rhs.dstBinding )
7188 && ( dstArrayElement == rhs.dstArrayElement )
7189 && ( descriptorCount == rhs.descriptorCount )
7190 && ( descriptorType == rhs.descriptorType )
7191 && ( pImageInfo == rhs.pImageInfo )
7192 && ( pBufferInfo == rhs.pBufferInfo )
7193 && ( pTexelBufferView == rhs.pTexelBufferView );
7194 }
7195
7196 bool operator!=( WriteDescriptorSet const& rhs ) const
7197 {
7198 return !operator==( rhs );
7199 }
7200
7201 private:
7202 StructureType sType;
7203
7204 public:
7205 const void* pNext;
7206 DescriptorSet dstSet;
7207 uint32_t dstBinding;
7208 uint32_t dstArrayElement;
7209 uint32_t descriptorCount;
7210 DescriptorType descriptorType;
7211 const DescriptorImageInfo* pImageInfo;
7212 const DescriptorBufferInfo* pBufferInfo;
7213 const BufferView* pTexelBufferView;
7214 };
7215 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7216
7217 struct CopyDescriptorSet
7218 {
7219 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 )
7220 : sType( StructureType::eCopyDescriptorSet )
7221 , pNext( nullptr )
7222 , srcSet( srcSet_ )
7223 , srcBinding( srcBinding_ )
7224 , srcArrayElement( srcArrayElement_ )
7225 , dstSet( dstSet_ )
7226 , dstBinding( dstBinding_ )
7227 , dstArrayElement( dstArrayElement_ )
7228 , descriptorCount( descriptorCount_ )
7229 {
7230 }
7231
7232 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7233 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007234 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007235 }
7236
7237 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7238 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007239 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007240 return *this;
7241 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007242 CopyDescriptorSet& setPNext( const void* pNext_ )
7243 {
7244 pNext = pNext_;
7245 return *this;
7246 }
7247
7248 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7249 {
7250 srcSet = srcSet_;
7251 return *this;
7252 }
7253
7254 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7255 {
7256 srcBinding = srcBinding_;
7257 return *this;
7258 }
7259
7260 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7261 {
7262 srcArrayElement = srcArrayElement_;
7263 return *this;
7264 }
7265
7266 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7267 {
7268 dstSet = dstSet_;
7269 return *this;
7270 }
7271
7272 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7273 {
7274 dstBinding = dstBinding_;
7275 return *this;
7276 }
7277
7278 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7279 {
7280 dstArrayElement = dstArrayElement_;
7281 return *this;
7282 }
7283
7284 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7285 {
7286 descriptorCount = descriptorCount_;
7287 return *this;
7288 }
7289
7290 operator const VkCopyDescriptorSet&() const
7291 {
7292 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7293 }
7294
7295 bool operator==( CopyDescriptorSet const& rhs ) const
7296 {
7297 return ( sType == rhs.sType )
7298 && ( pNext == rhs.pNext )
7299 && ( srcSet == rhs.srcSet )
7300 && ( srcBinding == rhs.srcBinding )
7301 && ( srcArrayElement == rhs.srcArrayElement )
7302 && ( dstSet == rhs.dstSet )
7303 && ( dstBinding == rhs.dstBinding )
7304 && ( dstArrayElement == rhs.dstArrayElement )
7305 && ( descriptorCount == rhs.descriptorCount );
7306 }
7307
7308 bool operator!=( CopyDescriptorSet const& rhs ) const
7309 {
7310 return !operator==( rhs );
7311 }
7312
7313 private:
7314 StructureType sType;
7315
7316 public:
7317 const void* pNext;
7318 DescriptorSet srcSet;
7319 uint32_t srcBinding;
7320 uint32_t srcArrayElement;
7321 DescriptorSet dstSet;
7322 uint32_t dstBinding;
7323 uint32_t dstArrayElement;
7324 uint32_t descriptorCount;
7325 };
7326 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7327
7328 struct BufferViewCreateInfo
7329 {
7330 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7331 : sType( StructureType::eBufferViewCreateInfo )
7332 , pNext( nullptr )
7333 , flags( flags_ )
7334 , buffer( buffer_ )
7335 , format( format_ )
7336 , offset( offset_ )
7337 , range( range_ )
7338 {
7339 }
7340
7341 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7342 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007343 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007344 }
7345
7346 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7347 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007348 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007349 return *this;
7350 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007351 BufferViewCreateInfo& setPNext( const void* pNext_ )
7352 {
7353 pNext = pNext_;
7354 return *this;
7355 }
7356
7357 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7358 {
7359 flags = flags_;
7360 return *this;
7361 }
7362
7363 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7364 {
7365 buffer = buffer_;
7366 return *this;
7367 }
7368
7369 BufferViewCreateInfo& setFormat( Format format_ )
7370 {
7371 format = format_;
7372 return *this;
7373 }
7374
7375 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7376 {
7377 offset = offset_;
7378 return *this;
7379 }
7380
7381 BufferViewCreateInfo& setRange( DeviceSize range_ )
7382 {
7383 range = range_;
7384 return *this;
7385 }
7386
7387 operator const VkBufferViewCreateInfo&() const
7388 {
7389 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7390 }
7391
7392 bool operator==( BufferViewCreateInfo const& rhs ) const
7393 {
7394 return ( sType == rhs.sType )
7395 && ( pNext == rhs.pNext )
7396 && ( flags == rhs.flags )
7397 && ( buffer == rhs.buffer )
7398 && ( format == rhs.format )
7399 && ( offset == rhs.offset )
7400 && ( range == rhs.range );
7401 }
7402
7403 bool operator!=( BufferViewCreateInfo const& rhs ) const
7404 {
7405 return !operator==( rhs );
7406 }
7407
7408 private:
7409 StructureType sType;
7410
7411 public:
7412 const void* pNext;
7413 BufferViewCreateFlags flags;
7414 Buffer buffer;
7415 Format format;
7416 DeviceSize offset;
7417 DeviceSize range;
7418 };
7419 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7420
7421 struct ShaderModuleCreateInfo
7422 {
7423 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7424 : sType( StructureType::eShaderModuleCreateInfo )
7425 , pNext( nullptr )
7426 , flags( flags_ )
7427 , codeSize( codeSize_ )
7428 , pCode( pCode_ )
7429 {
7430 }
7431
7432 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7433 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007434 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007435 }
7436
7437 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7438 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007439 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007440 return *this;
7441 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007442 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7443 {
7444 pNext = pNext_;
7445 return *this;
7446 }
7447
7448 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7449 {
7450 flags = flags_;
7451 return *this;
7452 }
7453
7454 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7455 {
7456 codeSize = codeSize_;
7457 return *this;
7458 }
7459
7460 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7461 {
7462 pCode = pCode_;
7463 return *this;
7464 }
7465
7466 operator const VkShaderModuleCreateInfo&() const
7467 {
7468 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7469 }
7470
7471 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7472 {
7473 return ( sType == rhs.sType )
7474 && ( pNext == rhs.pNext )
7475 && ( flags == rhs.flags )
7476 && ( codeSize == rhs.codeSize )
7477 && ( pCode == rhs.pCode );
7478 }
7479
7480 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7481 {
7482 return !operator==( rhs );
7483 }
7484
7485 private:
7486 StructureType sType;
7487
7488 public:
7489 const void* pNext;
7490 ShaderModuleCreateFlags flags;
7491 size_t codeSize;
7492 const uint32_t* pCode;
7493 };
7494 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7495
7496 struct DescriptorSetAllocateInfo
7497 {
7498 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7499 : sType( StructureType::eDescriptorSetAllocateInfo )
7500 , pNext( nullptr )
7501 , descriptorPool( descriptorPool_ )
7502 , descriptorSetCount( descriptorSetCount_ )
7503 , pSetLayouts( pSetLayouts_ )
7504 {
7505 }
7506
7507 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7508 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007509 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007510 }
7511
7512 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7513 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007514 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007515 return *this;
7516 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007517 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7518 {
7519 pNext = pNext_;
7520 return *this;
7521 }
7522
7523 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7524 {
7525 descriptorPool = descriptorPool_;
7526 return *this;
7527 }
7528
7529 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7530 {
7531 descriptorSetCount = descriptorSetCount_;
7532 return *this;
7533 }
7534
7535 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7536 {
7537 pSetLayouts = pSetLayouts_;
7538 return *this;
7539 }
7540
7541 operator const VkDescriptorSetAllocateInfo&() const
7542 {
7543 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7544 }
7545
7546 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7547 {
7548 return ( sType == rhs.sType )
7549 && ( pNext == rhs.pNext )
7550 && ( descriptorPool == rhs.descriptorPool )
7551 && ( descriptorSetCount == rhs.descriptorSetCount )
7552 && ( pSetLayouts == rhs.pSetLayouts );
7553 }
7554
7555 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7556 {
7557 return !operator==( rhs );
7558 }
7559
7560 private:
7561 StructureType sType;
7562
7563 public:
7564 const void* pNext;
7565 DescriptorPool descriptorPool;
7566 uint32_t descriptorSetCount;
7567 const DescriptorSetLayout* pSetLayouts;
7568 };
7569 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7570
7571 struct PipelineVertexInputStateCreateInfo
7572 {
7573 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7574 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7575 , pNext( nullptr )
7576 , flags( flags_ )
7577 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7578 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7579 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7580 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7581 {
7582 }
7583
7584 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7585 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007586 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007587 }
7588
7589 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007591 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007592 return *this;
7593 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007594 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7595 {
7596 pNext = pNext_;
7597 return *this;
7598 }
7599
7600 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7601 {
7602 flags = flags_;
7603 return *this;
7604 }
7605
7606 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7607 {
7608 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7609 return *this;
7610 }
7611
7612 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7613 {
7614 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7615 return *this;
7616 }
7617
7618 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7619 {
7620 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7621 return *this;
7622 }
7623
7624 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7625 {
7626 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7627 return *this;
7628 }
7629
7630 operator const VkPipelineVertexInputStateCreateInfo&() const
7631 {
7632 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7633 }
7634
7635 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7636 {
7637 return ( sType == rhs.sType )
7638 && ( pNext == rhs.pNext )
7639 && ( flags == rhs.flags )
7640 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7641 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7642 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7643 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7644 }
7645
7646 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7647 {
7648 return !operator==( rhs );
7649 }
7650
7651 private:
7652 StructureType sType;
7653
7654 public:
7655 const void* pNext;
7656 PipelineVertexInputStateCreateFlags flags;
7657 uint32_t vertexBindingDescriptionCount;
7658 const VertexInputBindingDescription* pVertexBindingDescriptions;
7659 uint32_t vertexAttributeDescriptionCount;
7660 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7661 };
7662 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7663
7664 struct PipelineInputAssemblyStateCreateInfo
7665 {
7666 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7667 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7668 , pNext( nullptr )
7669 , flags( flags_ )
7670 , topology( topology_ )
7671 , primitiveRestartEnable( primitiveRestartEnable_ )
7672 {
7673 }
7674
7675 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7676 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007677 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007678 }
7679
7680 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7681 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007682 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007683 return *this;
7684 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007685 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7686 {
7687 pNext = pNext_;
7688 return *this;
7689 }
7690
7691 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7692 {
7693 flags = flags_;
7694 return *this;
7695 }
7696
7697 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7698 {
7699 topology = topology_;
7700 return *this;
7701 }
7702
7703 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7704 {
7705 primitiveRestartEnable = primitiveRestartEnable_;
7706 return *this;
7707 }
7708
7709 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7710 {
7711 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7712 }
7713
7714 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7715 {
7716 return ( sType == rhs.sType )
7717 && ( pNext == rhs.pNext )
7718 && ( flags == rhs.flags )
7719 && ( topology == rhs.topology )
7720 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7721 }
7722
7723 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7724 {
7725 return !operator==( rhs );
7726 }
7727
7728 private:
7729 StructureType sType;
7730
7731 public:
7732 const void* pNext;
7733 PipelineInputAssemblyStateCreateFlags flags;
7734 PrimitiveTopology topology;
7735 Bool32 primitiveRestartEnable;
7736 };
7737 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7738
7739 struct PipelineTessellationStateCreateInfo
7740 {
7741 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7742 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7743 , pNext( nullptr )
7744 , flags( flags_ )
7745 , patchControlPoints( patchControlPoints_ )
7746 {
7747 }
7748
7749 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7750 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007751 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007752 }
7753
7754 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7755 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007756 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007757 return *this;
7758 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007759 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7760 {
7761 pNext = pNext_;
7762 return *this;
7763 }
7764
7765 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7766 {
7767 flags = flags_;
7768 return *this;
7769 }
7770
7771 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7772 {
7773 patchControlPoints = patchControlPoints_;
7774 return *this;
7775 }
7776
7777 operator const VkPipelineTessellationStateCreateInfo&() const
7778 {
7779 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7780 }
7781
7782 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7783 {
7784 return ( sType == rhs.sType )
7785 && ( pNext == rhs.pNext )
7786 && ( flags == rhs.flags )
7787 && ( patchControlPoints == rhs.patchControlPoints );
7788 }
7789
7790 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7791 {
7792 return !operator==( rhs );
7793 }
7794
7795 private:
7796 StructureType sType;
7797
7798 public:
7799 const void* pNext;
7800 PipelineTessellationStateCreateFlags flags;
7801 uint32_t patchControlPoints;
7802 };
7803 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7804
7805 struct PipelineViewportStateCreateInfo
7806 {
7807 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7808 : sType( StructureType::ePipelineViewportStateCreateInfo )
7809 , pNext( nullptr )
7810 , flags( flags_ )
7811 , viewportCount( viewportCount_ )
7812 , pViewports( pViewports_ )
7813 , scissorCount( scissorCount_ )
7814 , pScissors( pScissors_ )
7815 {
7816 }
7817
7818 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7819 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007820 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007821 }
7822
7823 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7824 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007825 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007826 return *this;
7827 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007828 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7829 {
7830 pNext = pNext_;
7831 return *this;
7832 }
7833
7834 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7835 {
7836 flags = flags_;
7837 return *this;
7838 }
7839
7840 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7841 {
7842 viewportCount = viewportCount_;
7843 return *this;
7844 }
7845
7846 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7847 {
7848 pViewports = pViewports_;
7849 return *this;
7850 }
7851
7852 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7853 {
7854 scissorCount = scissorCount_;
7855 return *this;
7856 }
7857
7858 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7859 {
7860 pScissors = pScissors_;
7861 return *this;
7862 }
7863
7864 operator const VkPipelineViewportStateCreateInfo&() const
7865 {
7866 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7867 }
7868
7869 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7870 {
7871 return ( sType == rhs.sType )
7872 && ( pNext == rhs.pNext )
7873 && ( flags == rhs.flags )
7874 && ( viewportCount == rhs.viewportCount )
7875 && ( pViewports == rhs.pViewports )
7876 && ( scissorCount == rhs.scissorCount )
7877 && ( pScissors == rhs.pScissors );
7878 }
7879
7880 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7881 {
7882 return !operator==( rhs );
7883 }
7884
7885 private:
7886 StructureType sType;
7887
7888 public:
7889 const void* pNext;
7890 PipelineViewportStateCreateFlags flags;
7891 uint32_t viewportCount;
7892 const Viewport* pViewports;
7893 uint32_t scissorCount;
7894 const Rect2D* pScissors;
7895 };
7896 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7897
7898 struct PipelineRasterizationStateCreateInfo
7899 {
7900 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 )
7901 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7902 , pNext( nullptr )
7903 , flags( flags_ )
7904 , depthClampEnable( depthClampEnable_ )
7905 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7906 , polygonMode( polygonMode_ )
7907 , cullMode( cullMode_ )
7908 , frontFace( frontFace_ )
7909 , depthBiasEnable( depthBiasEnable_ )
7910 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7911 , depthBiasClamp( depthBiasClamp_ )
7912 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7913 , lineWidth( lineWidth_ )
7914 {
7915 }
7916
7917 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7918 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007919 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007920 }
7921
7922 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7923 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007924 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007925 return *this;
7926 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007927 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7928 {
7929 pNext = pNext_;
7930 return *this;
7931 }
7932
7933 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7934 {
7935 flags = flags_;
7936 return *this;
7937 }
7938
7939 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7940 {
7941 depthClampEnable = depthClampEnable_;
7942 return *this;
7943 }
7944
7945 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7946 {
7947 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7948 return *this;
7949 }
7950
7951 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7952 {
7953 polygonMode = polygonMode_;
7954 return *this;
7955 }
7956
7957 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7958 {
7959 cullMode = cullMode_;
7960 return *this;
7961 }
7962
7963 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7964 {
7965 frontFace = frontFace_;
7966 return *this;
7967 }
7968
7969 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7970 {
7971 depthBiasEnable = depthBiasEnable_;
7972 return *this;
7973 }
7974
7975 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7976 {
7977 depthBiasConstantFactor = depthBiasConstantFactor_;
7978 return *this;
7979 }
7980
7981 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7982 {
7983 depthBiasClamp = depthBiasClamp_;
7984 return *this;
7985 }
7986
7987 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7988 {
7989 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7990 return *this;
7991 }
7992
7993 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7994 {
7995 lineWidth = lineWidth_;
7996 return *this;
7997 }
7998
7999 operator const VkPipelineRasterizationStateCreateInfo&() const
8000 {
8001 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8002 }
8003
8004 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8005 {
8006 return ( sType == rhs.sType )
8007 && ( pNext == rhs.pNext )
8008 && ( flags == rhs.flags )
8009 && ( depthClampEnable == rhs.depthClampEnable )
8010 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8011 && ( polygonMode == rhs.polygonMode )
8012 && ( cullMode == rhs.cullMode )
8013 && ( frontFace == rhs.frontFace )
8014 && ( depthBiasEnable == rhs.depthBiasEnable )
8015 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8016 && ( depthBiasClamp == rhs.depthBiasClamp )
8017 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8018 && ( lineWidth == rhs.lineWidth );
8019 }
8020
8021 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8022 {
8023 return !operator==( rhs );
8024 }
8025
8026 private:
8027 StructureType sType;
8028
8029 public:
8030 const void* pNext;
8031 PipelineRasterizationStateCreateFlags flags;
8032 Bool32 depthClampEnable;
8033 Bool32 rasterizerDiscardEnable;
8034 PolygonMode polygonMode;
8035 CullModeFlags cullMode;
8036 FrontFace frontFace;
8037 Bool32 depthBiasEnable;
8038 float depthBiasConstantFactor;
8039 float depthBiasClamp;
8040 float depthBiasSlopeFactor;
8041 float lineWidth;
8042 };
8043 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8044
8045 struct PipelineDepthStencilStateCreateInfo
8046 {
8047 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 )
8048 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8049 , pNext( nullptr )
8050 , flags( flags_ )
8051 , depthTestEnable( depthTestEnable_ )
8052 , depthWriteEnable( depthWriteEnable_ )
8053 , depthCompareOp( depthCompareOp_ )
8054 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8055 , stencilTestEnable( stencilTestEnable_ )
8056 , front( front_ )
8057 , back( back_ )
8058 , minDepthBounds( minDepthBounds_ )
8059 , maxDepthBounds( maxDepthBounds_ )
8060 {
8061 }
8062
8063 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8064 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008065 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008066 }
8067
8068 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8069 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008070 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008071 return *this;
8072 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008073 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8074 {
8075 pNext = pNext_;
8076 return *this;
8077 }
8078
8079 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8080 {
8081 flags = flags_;
8082 return *this;
8083 }
8084
8085 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8086 {
8087 depthTestEnable = depthTestEnable_;
8088 return *this;
8089 }
8090
8091 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8092 {
8093 depthWriteEnable = depthWriteEnable_;
8094 return *this;
8095 }
8096
8097 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8098 {
8099 depthCompareOp = depthCompareOp_;
8100 return *this;
8101 }
8102
8103 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8104 {
8105 depthBoundsTestEnable = depthBoundsTestEnable_;
8106 return *this;
8107 }
8108
8109 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8110 {
8111 stencilTestEnable = stencilTestEnable_;
8112 return *this;
8113 }
8114
8115 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8116 {
8117 front = front_;
8118 return *this;
8119 }
8120
8121 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8122 {
8123 back = back_;
8124 return *this;
8125 }
8126
8127 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8128 {
8129 minDepthBounds = minDepthBounds_;
8130 return *this;
8131 }
8132
8133 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8134 {
8135 maxDepthBounds = maxDepthBounds_;
8136 return *this;
8137 }
8138
8139 operator const VkPipelineDepthStencilStateCreateInfo&() const
8140 {
8141 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8142 }
8143
8144 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8145 {
8146 return ( sType == rhs.sType )
8147 && ( pNext == rhs.pNext )
8148 && ( flags == rhs.flags )
8149 && ( depthTestEnable == rhs.depthTestEnable )
8150 && ( depthWriteEnable == rhs.depthWriteEnable )
8151 && ( depthCompareOp == rhs.depthCompareOp )
8152 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8153 && ( stencilTestEnable == rhs.stencilTestEnable )
8154 && ( front == rhs.front )
8155 && ( back == rhs.back )
8156 && ( minDepthBounds == rhs.minDepthBounds )
8157 && ( maxDepthBounds == rhs.maxDepthBounds );
8158 }
8159
8160 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8161 {
8162 return !operator==( rhs );
8163 }
8164
8165 private:
8166 StructureType sType;
8167
8168 public:
8169 const void* pNext;
8170 PipelineDepthStencilStateCreateFlags flags;
8171 Bool32 depthTestEnable;
8172 Bool32 depthWriteEnable;
8173 CompareOp depthCompareOp;
8174 Bool32 depthBoundsTestEnable;
8175 Bool32 stencilTestEnable;
8176 StencilOpState front;
8177 StencilOpState back;
8178 float minDepthBounds;
8179 float maxDepthBounds;
8180 };
8181 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8182
8183 struct PipelineCacheCreateInfo
8184 {
8185 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8186 : sType( StructureType::ePipelineCacheCreateInfo )
8187 , pNext( nullptr )
8188 , flags( flags_ )
8189 , initialDataSize( initialDataSize_ )
8190 , pInitialData( pInitialData_ )
8191 {
8192 }
8193
8194 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8195 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008196 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008197 }
8198
8199 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8200 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008201 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008202 return *this;
8203 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008204 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8205 {
8206 pNext = pNext_;
8207 return *this;
8208 }
8209
8210 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8211 {
8212 flags = flags_;
8213 return *this;
8214 }
8215
8216 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8217 {
8218 initialDataSize = initialDataSize_;
8219 return *this;
8220 }
8221
8222 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8223 {
8224 pInitialData = pInitialData_;
8225 return *this;
8226 }
8227
8228 operator const VkPipelineCacheCreateInfo&() const
8229 {
8230 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8231 }
8232
8233 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8234 {
8235 return ( sType == rhs.sType )
8236 && ( pNext == rhs.pNext )
8237 && ( flags == rhs.flags )
8238 && ( initialDataSize == rhs.initialDataSize )
8239 && ( pInitialData == rhs.pInitialData );
8240 }
8241
8242 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8243 {
8244 return !operator==( rhs );
8245 }
8246
8247 private:
8248 StructureType sType;
8249
8250 public:
8251 const void* pNext;
8252 PipelineCacheCreateFlags flags;
8253 size_t initialDataSize;
8254 const void* pInitialData;
8255 };
8256 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8257
8258 struct SamplerCreateInfo
8259 {
8260 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 )
8261 : sType( StructureType::eSamplerCreateInfo )
8262 , pNext( nullptr )
8263 , flags( flags_ )
8264 , magFilter( magFilter_ )
8265 , minFilter( minFilter_ )
8266 , mipmapMode( mipmapMode_ )
8267 , addressModeU( addressModeU_ )
8268 , addressModeV( addressModeV_ )
8269 , addressModeW( addressModeW_ )
8270 , mipLodBias( mipLodBias_ )
8271 , anisotropyEnable( anisotropyEnable_ )
8272 , maxAnisotropy( maxAnisotropy_ )
8273 , compareEnable( compareEnable_ )
8274 , compareOp( compareOp_ )
8275 , minLod( minLod_ )
8276 , maxLod( maxLod_ )
8277 , borderColor( borderColor_ )
8278 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8279 {
8280 }
8281
8282 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8283 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008284 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008285 }
8286
8287 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8288 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008289 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008290 return *this;
8291 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008292 SamplerCreateInfo& setPNext( const void* pNext_ )
8293 {
8294 pNext = pNext_;
8295 return *this;
8296 }
8297
8298 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8299 {
8300 flags = flags_;
8301 return *this;
8302 }
8303
8304 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8305 {
8306 magFilter = magFilter_;
8307 return *this;
8308 }
8309
8310 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8311 {
8312 minFilter = minFilter_;
8313 return *this;
8314 }
8315
8316 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8317 {
8318 mipmapMode = mipmapMode_;
8319 return *this;
8320 }
8321
8322 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8323 {
8324 addressModeU = addressModeU_;
8325 return *this;
8326 }
8327
8328 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8329 {
8330 addressModeV = addressModeV_;
8331 return *this;
8332 }
8333
8334 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8335 {
8336 addressModeW = addressModeW_;
8337 return *this;
8338 }
8339
8340 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8341 {
8342 mipLodBias = mipLodBias_;
8343 return *this;
8344 }
8345
8346 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8347 {
8348 anisotropyEnable = anisotropyEnable_;
8349 return *this;
8350 }
8351
8352 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8353 {
8354 maxAnisotropy = maxAnisotropy_;
8355 return *this;
8356 }
8357
8358 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8359 {
8360 compareEnable = compareEnable_;
8361 return *this;
8362 }
8363
8364 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8365 {
8366 compareOp = compareOp_;
8367 return *this;
8368 }
8369
8370 SamplerCreateInfo& setMinLod( float minLod_ )
8371 {
8372 minLod = minLod_;
8373 return *this;
8374 }
8375
8376 SamplerCreateInfo& setMaxLod( float maxLod_ )
8377 {
8378 maxLod = maxLod_;
8379 return *this;
8380 }
8381
8382 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8383 {
8384 borderColor = borderColor_;
8385 return *this;
8386 }
8387
8388 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8389 {
8390 unnormalizedCoordinates = unnormalizedCoordinates_;
8391 return *this;
8392 }
8393
8394 operator const VkSamplerCreateInfo&() const
8395 {
8396 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8397 }
8398
8399 bool operator==( SamplerCreateInfo const& rhs ) const
8400 {
8401 return ( sType == rhs.sType )
8402 && ( pNext == rhs.pNext )
8403 && ( flags == rhs.flags )
8404 && ( magFilter == rhs.magFilter )
8405 && ( minFilter == rhs.minFilter )
8406 && ( mipmapMode == rhs.mipmapMode )
8407 && ( addressModeU == rhs.addressModeU )
8408 && ( addressModeV == rhs.addressModeV )
8409 && ( addressModeW == rhs.addressModeW )
8410 && ( mipLodBias == rhs.mipLodBias )
8411 && ( anisotropyEnable == rhs.anisotropyEnable )
8412 && ( maxAnisotropy == rhs.maxAnisotropy )
8413 && ( compareEnable == rhs.compareEnable )
8414 && ( compareOp == rhs.compareOp )
8415 && ( minLod == rhs.minLod )
8416 && ( maxLod == rhs.maxLod )
8417 && ( borderColor == rhs.borderColor )
8418 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8419 }
8420
8421 bool operator!=( SamplerCreateInfo const& rhs ) const
8422 {
8423 return !operator==( rhs );
8424 }
8425
8426 private:
8427 StructureType sType;
8428
8429 public:
8430 const void* pNext;
8431 SamplerCreateFlags flags;
8432 Filter magFilter;
8433 Filter minFilter;
8434 SamplerMipmapMode mipmapMode;
8435 SamplerAddressMode addressModeU;
8436 SamplerAddressMode addressModeV;
8437 SamplerAddressMode addressModeW;
8438 float mipLodBias;
8439 Bool32 anisotropyEnable;
8440 float maxAnisotropy;
8441 Bool32 compareEnable;
8442 CompareOp compareOp;
8443 float minLod;
8444 float maxLod;
8445 BorderColor borderColor;
8446 Bool32 unnormalizedCoordinates;
8447 };
8448 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8449
8450 struct CommandBufferAllocateInfo
8451 {
8452 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8453 : sType( StructureType::eCommandBufferAllocateInfo )
8454 , pNext( nullptr )
8455 , commandPool( commandPool_ )
8456 , level( level_ )
8457 , commandBufferCount( commandBufferCount_ )
8458 {
8459 }
8460
8461 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008463 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008464 }
8465
8466 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8467 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008468 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008469 return *this;
8470 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008471 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8472 {
8473 pNext = pNext_;
8474 return *this;
8475 }
8476
8477 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8478 {
8479 commandPool = commandPool_;
8480 return *this;
8481 }
8482
8483 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8484 {
8485 level = level_;
8486 return *this;
8487 }
8488
8489 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8490 {
8491 commandBufferCount = commandBufferCount_;
8492 return *this;
8493 }
8494
8495 operator const VkCommandBufferAllocateInfo&() const
8496 {
8497 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8498 }
8499
8500 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8501 {
8502 return ( sType == rhs.sType )
8503 && ( pNext == rhs.pNext )
8504 && ( commandPool == rhs.commandPool )
8505 && ( level == rhs.level )
8506 && ( commandBufferCount == rhs.commandBufferCount );
8507 }
8508
8509 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8510 {
8511 return !operator==( rhs );
8512 }
8513
8514 private:
8515 StructureType sType;
8516
8517 public:
8518 const void* pNext;
8519 CommandPool commandPool;
8520 CommandBufferLevel level;
8521 uint32_t commandBufferCount;
8522 };
8523 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8524
8525 struct RenderPassBeginInfo
8526 {
8527 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8528 : sType( StructureType::eRenderPassBeginInfo )
8529 , pNext( nullptr )
8530 , renderPass( renderPass_ )
8531 , framebuffer( framebuffer_ )
8532 , renderArea( renderArea_ )
8533 , clearValueCount( clearValueCount_ )
8534 , pClearValues( pClearValues_ )
8535 {
8536 }
8537
8538 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8539 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008540 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008541 }
8542
8543 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8544 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008545 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008546 return *this;
8547 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008548 RenderPassBeginInfo& setPNext( const void* pNext_ )
8549 {
8550 pNext = pNext_;
8551 return *this;
8552 }
8553
8554 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8555 {
8556 renderPass = renderPass_;
8557 return *this;
8558 }
8559
8560 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8561 {
8562 framebuffer = framebuffer_;
8563 return *this;
8564 }
8565
8566 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8567 {
8568 renderArea = renderArea_;
8569 return *this;
8570 }
8571
8572 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8573 {
8574 clearValueCount = clearValueCount_;
8575 return *this;
8576 }
8577
8578 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8579 {
8580 pClearValues = pClearValues_;
8581 return *this;
8582 }
8583
8584 operator const VkRenderPassBeginInfo&() const
8585 {
8586 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8587 }
8588
8589 bool operator==( RenderPassBeginInfo const& rhs ) const
8590 {
8591 return ( sType == rhs.sType )
8592 && ( pNext == rhs.pNext )
8593 && ( renderPass == rhs.renderPass )
8594 && ( framebuffer == rhs.framebuffer )
8595 && ( renderArea == rhs.renderArea )
8596 && ( clearValueCount == rhs.clearValueCount )
8597 && ( pClearValues == rhs.pClearValues );
8598 }
8599
8600 bool operator!=( RenderPassBeginInfo const& rhs ) const
8601 {
8602 return !operator==( rhs );
8603 }
8604
8605 private:
8606 StructureType sType;
8607
8608 public:
8609 const void* pNext;
8610 RenderPass renderPass;
8611 Framebuffer framebuffer;
8612 Rect2D renderArea;
8613 uint32_t clearValueCount;
8614 const ClearValue* pClearValues;
8615 };
8616 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8617
8618 struct EventCreateInfo
8619 {
8620 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8621 : sType( StructureType::eEventCreateInfo )
8622 , pNext( nullptr )
8623 , flags( flags_ )
8624 {
8625 }
8626
8627 EventCreateInfo( VkEventCreateInfo const & rhs )
8628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008629 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008630 }
8631
8632 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008634 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008635 return *this;
8636 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008637 EventCreateInfo& setPNext( const void* pNext_ )
8638 {
8639 pNext = pNext_;
8640 return *this;
8641 }
8642
8643 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8644 {
8645 flags = flags_;
8646 return *this;
8647 }
8648
8649 operator const VkEventCreateInfo&() const
8650 {
8651 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8652 }
8653
8654 bool operator==( EventCreateInfo const& rhs ) const
8655 {
8656 return ( sType == rhs.sType )
8657 && ( pNext == rhs.pNext )
8658 && ( flags == rhs.flags );
8659 }
8660
8661 bool operator!=( EventCreateInfo const& rhs ) const
8662 {
8663 return !operator==( rhs );
8664 }
8665
8666 private:
8667 StructureType sType;
8668
8669 public:
8670 const void* pNext;
8671 EventCreateFlags flags;
8672 };
8673 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8674
8675 struct SemaphoreCreateInfo
8676 {
8677 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8678 : sType( StructureType::eSemaphoreCreateInfo )
8679 , pNext( nullptr )
8680 , flags( flags_ )
8681 {
8682 }
8683
8684 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8685 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008686 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008687 }
8688
8689 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8690 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008691 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008692 return *this;
8693 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008694 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8695 {
8696 pNext = pNext_;
8697 return *this;
8698 }
8699
8700 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8701 {
8702 flags = flags_;
8703 return *this;
8704 }
8705
8706 operator const VkSemaphoreCreateInfo&() const
8707 {
8708 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8709 }
8710
8711 bool operator==( SemaphoreCreateInfo const& rhs ) const
8712 {
8713 return ( sType == rhs.sType )
8714 && ( pNext == rhs.pNext )
8715 && ( flags == rhs.flags );
8716 }
8717
8718 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8719 {
8720 return !operator==( rhs );
8721 }
8722
8723 private:
8724 StructureType sType;
8725
8726 public:
8727 const void* pNext;
8728 SemaphoreCreateFlags flags;
8729 };
8730 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8731
8732 struct FramebufferCreateInfo
8733 {
8734 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 )
8735 : sType( StructureType::eFramebufferCreateInfo )
8736 , pNext( nullptr )
8737 , flags( flags_ )
8738 , renderPass( renderPass_ )
8739 , attachmentCount( attachmentCount_ )
8740 , pAttachments( pAttachments_ )
8741 , width( width_ )
8742 , height( height_ )
8743 , layers( layers_ )
8744 {
8745 }
8746
8747 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8748 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008749 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008750 }
8751
8752 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008754 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008755 return *this;
8756 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008757 FramebufferCreateInfo& setPNext( const void* pNext_ )
8758 {
8759 pNext = pNext_;
8760 return *this;
8761 }
8762
8763 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8764 {
8765 flags = flags_;
8766 return *this;
8767 }
8768
8769 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8770 {
8771 renderPass = renderPass_;
8772 return *this;
8773 }
8774
8775 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8776 {
8777 attachmentCount = attachmentCount_;
8778 return *this;
8779 }
8780
8781 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8782 {
8783 pAttachments = pAttachments_;
8784 return *this;
8785 }
8786
8787 FramebufferCreateInfo& setWidth( uint32_t width_ )
8788 {
8789 width = width_;
8790 return *this;
8791 }
8792
8793 FramebufferCreateInfo& setHeight( uint32_t height_ )
8794 {
8795 height = height_;
8796 return *this;
8797 }
8798
8799 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8800 {
8801 layers = layers_;
8802 return *this;
8803 }
8804
8805 operator const VkFramebufferCreateInfo&() const
8806 {
8807 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8808 }
8809
8810 bool operator==( FramebufferCreateInfo const& rhs ) const
8811 {
8812 return ( sType == rhs.sType )
8813 && ( pNext == rhs.pNext )
8814 && ( flags == rhs.flags )
8815 && ( renderPass == rhs.renderPass )
8816 && ( attachmentCount == rhs.attachmentCount )
8817 && ( pAttachments == rhs.pAttachments )
8818 && ( width == rhs.width )
8819 && ( height == rhs.height )
8820 && ( layers == rhs.layers );
8821 }
8822
8823 bool operator!=( FramebufferCreateInfo const& rhs ) const
8824 {
8825 return !operator==( rhs );
8826 }
8827
8828 private:
8829 StructureType sType;
8830
8831 public:
8832 const void* pNext;
8833 FramebufferCreateFlags flags;
8834 RenderPass renderPass;
8835 uint32_t attachmentCount;
8836 const ImageView* pAttachments;
8837 uint32_t width;
8838 uint32_t height;
8839 uint32_t layers;
8840 };
8841 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8842
8843 struct DisplayModeCreateInfoKHR
8844 {
8845 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8846 : sType( StructureType::eDisplayModeCreateInfoKHR )
8847 , pNext( nullptr )
8848 , flags( flags_ )
8849 , parameters( parameters_ )
8850 {
8851 }
8852
8853 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8854 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008855 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008856 }
8857
8858 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8859 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008860 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008861 return *this;
8862 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008863 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8864 {
8865 pNext = pNext_;
8866 return *this;
8867 }
8868
8869 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8870 {
8871 flags = flags_;
8872 return *this;
8873 }
8874
8875 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8876 {
8877 parameters = parameters_;
8878 return *this;
8879 }
8880
8881 operator const VkDisplayModeCreateInfoKHR&() const
8882 {
8883 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8884 }
8885
8886 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8887 {
8888 return ( sType == rhs.sType )
8889 && ( pNext == rhs.pNext )
8890 && ( flags == rhs.flags )
8891 && ( parameters == rhs.parameters );
8892 }
8893
8894 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8895 {
8896 return !operator==( rhs );
8897 }
8898
8899 private:
8900 StructureType sType;
8901
8902 public:
8903 const void* pNext;
8904 DisplayModeCreateFlagsKHR flags;
8905 DisplayModeParametersKHR parameters;
8906 };
8907 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8908
8909 struct DisplayPresentInfoKHR
8910 {
8911 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8912 : sType( StructureType::eDisplayPresentInfoKHR )
8913 , pNext( nullptr )
8914 , srcRect( srcRect_ )
8915 , dstRect( dstRect_ )
8916 , persistent( persistent_ )
8917 {
8918 }
8919
8920 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008922 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008923 }
8924
8925 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008927 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008928 return *this;
8929 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008930 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8931 {
8932 pNext = pNext_;
8933 return *this;
8934 }
8935
8936 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8937 {
8938 srcRect = srcRect_;
8939 return *this;
8940 }
8941
8942 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8943 {
8944 dstRect = dstRect_;
8945 return *this;
8946 }
8947
8948 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8949 {
8950 persistent = persistent_;
8951 return *this;
8952 }
8953
8954 operator const VkDisplayPresentInfoKHR&() const
8955 {
8956 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8957 }
8958
8959 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8960 {
8961 return ( sType == rhs.sType )
8962 && ( pNext == rhs.pNext )
8963 && ( srcRect == rhs.srcRect )
8964 && ( dstRect == rhs.dstRect )
8965 && ( persistent == rhs.persistent );
8966 }
8967
8968 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8969 {
8970 return !operator==( rhs );
8971 }
8972
8973 private:
8974 StructureType sType;
8975
8976 public:
8977 const void* pNext;
8978 Rect2D srcRect;
8979 Rect2D dstRect;
8980 Bool32 persistent;
8981 };
8982 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8983
8984#ifdef VK_USE_PLATFORM_ANDROID_KHR
8985 struct AndroidSurfaceCreateInfoKHR
8986 {
8987 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8988 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8989 , pNext( nullptr )
8990 , flags( flags_ )
8991 , window( window_ )
8992 {
8993 }
8994
8995 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8996 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008997 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008998 }
8999
9000 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9001 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009002 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009003 return *this;
9004 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009005 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9006 {
9007 pNext = pNext_;
9008 return *this;
9009 }
9010
9011 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9012 {
9013 flags = flags_;
9014 return *this;
9015 }
9016
9017 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9018 {
9019 window = window_;
9020 return *this;
9021 }
9022
9023 operator const VkAndroidSurfaceCreateInfoKHR&() const
9024 {
9025 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9026 }
9027
9028 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9029 {
9030 return ( sType == rhs.sType )
9031 && ( pNext == rhs.pNext )
9032 && ( flags == rhs.flags )
9033 && ( window == rhs.window );
9034 }
9035
9036 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9037 {
9038 return !operator==( rhs );
9039 }
9040
9041 private:
9042 StructureType sType;
9043
9044 public:
9045 const void* pNext;
9046 AndroidSurfaceCreateFlagsKHR flags;
9047 ANativeWindow* window;
9048 };
9049 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9050#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9051
9052#ifdef VK_USE_PLATFORM_MIR_KHR
9053 struct MirSurfaceCreateInfoKHR
9054 {
9055 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9056 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9057 , pNext( nullptr )
9058 , flags( flags_ )
9059 , connection( connection_ )
9060 , mirSurface( mirSurface_ )
9061 {
9062 }
9063
9064 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009066 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009067 }
9068
9069 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009071 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009072 return *this;
9073 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009074 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9075 {
9076 pNext = pNext_;
9077 return *this;
9078 }
9079
9080 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9081 {
9082 flags = flags_;
9083 return *this;
9084 }
9085
9086 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9087 {
9088 connection = connection_;
9089 return *this;
9090 }
9091
9092 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9093 {
9094 mirSurface = mirSurface_;
9095 return *this;
9096 }
9097
9098 operator const VkMirSurfaceCreateInfoKHR&() const
9099 {
9100 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9101 }
9102
9103 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9104 {
9105 return ( sType == rhs.sType )
9106 && ( pNext == rhs.pNext )
9107 && ( flags == rhs.flags )
9108 && ( connection == rhs.connection )
9109 && ( mirSurface == rhs.mirSurface );
9110 }
9111
9112 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9113 {
9114 return !operator==( rhs );
9115 }
9116
9117 private:
9118 StructureType sType;
9119
9120 public:
9121 const void* pNext;
9122 MirSurfaceCreateFlagsKHR flags;
9123 MirConnection* connection;
9124 MirSurface* mirSurface;
9125 };
9126 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9127#endif /*VK_USE_PLATFORM_MIR_KHR*/
9128
Mark Young39389872017-01-19 21:10:49 -07009129#ifdef VK_USE_PLATFORM_VI_NN
9130 struct ViSurfaceCreateInfoNN
9131 {
9132 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9133 : sType( StructureType::eViSurfaceCreateInfoNN )
9134 , pNext( nullptr )
9135 , flags( flags_ )
9136 , window( window_ )
9137 {
9138 }
9139
9140 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9141 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009142 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009143 }
9144
9145 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9146 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009147 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009148 return *this;
9149 }
Mark Young39389872017-01-19 21:10:49 -07009150 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9151 {
9152 pNext = pNext_;
9153 return *this;
9154 }
9155
9156 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9157 {
9158 flags = flags_;
9159 return *this;
9160 }
9161
9162 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9163 {
9164 window = window_;
9165 return *this;
9166 }
9167
9168 operator const VkViSurfaceCreateInfoNN&() const
9169 {
9170 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9171 }
9172
9173 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9174 {
9175 return ( sType == rhs.sType )
9176 && ( pNext == rhs.pNext )
9177 && ( flags == rhs.flags )
9178 && ( window == rhs.window );
9179 }
9180
9181 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9182 {
9183 return !operator==( rhs );
9184 }
9185
9186 private:
9187 StructureType sType;
9188
9189 public:
9190 const void* pNext;
9191 ViSurfaceCreateFlagsNN flags;
9192 void* window;
9193 };
9194 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9195#endif /*VK_USE_PLATFORM_VI_NN*/
9196
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009197#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9198 struct WaylandSurfaceCreateInfoKHR
9199 {
9200 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9201 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9202 , pNext( nullptr )
9203 , flags( flags_ )
9204 , display( display_ )
9205 , surface( surface_ )
9206 {
9207 }
9208
9209 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9210 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009211 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009212 }
9213
9214 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9215 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009216 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009217 return *this;
9218 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009219 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9220 {
9221 pNext = pNext_;
9222 return *this;
9223 }
9224
9225 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9226 {
9227 flags = flags_;
9228 return *this;
9229 }
9230
9231 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9232 {
9233 display = display_;
9234 return *this;
9235 }
9236
9237 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9238 {
9239 surface = surface_;
9240 return *this;
9241 }
9242
9243 operator const VkWaylandSurfaceCreateInfoKHR&() const
9244 {
9245 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9246 }
9247
9248 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9249 {
9250 return ( sType == rhs.sType )
9251 && ( pNext == rhs.pNext )
9252 && ( flags == rhs.flags )
9253 && ( display == rhs.display )
9254 && ( surface == rhs.surface );
9255 }
9256
9257 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9258 {
9259 return !operator==( rhs );
9260 }
9261
9262 private:
9263 StructureType sType;
9264
9265 public:
9266 const void* pNext;
9267 WaylandSurfaceCreateFlagsKHR flags;
9268 struct wl_display* display;
9269 struct wl_surface* surface;
9270 };
9271 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9272#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9273
9274#ifdef VK_USE_PLATFORM_WIN32_KHR
9275 struct Win32SurfaceCreateInfoKHR
9276 {
9277 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9278 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9279 , pNext( nullptr )
9280 , flags( flags_ )
9281 , hinstance( hinstance_ )
9282 , hwnd( hwnd_ )
9283 {
9284 }
9285
9286 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9287 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009288 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009289 }
9290
9291 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9292 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009293 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009294 return *this;
9295 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009296 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9297 {
9298 pNext = pNext_;
9299 return *this;
9300 }
9301
9302 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9303 {
9304 flags = flags_;
9305 return *this;
9306 }
9307
9308 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9309 {
9310 hinstance = hinstance_;
9311 return *this;
9312 }
9313
9314 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9315 {
9316 hwnd = hwnd_;
9317 return *this;
9318 }
9319
9320 operator const VkWin32SurfaceCreateInfoKHR&() const
9321 {
9322 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9323 }
9324
9325 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9326 {
9327 return ( sType == rhs.sType )
9328 && ( pNext == rhs.pNext )
9329 && ( flags == rhs.flags )
9330 && ( hinstance == rhs.hinstance )
9331 && ( hwnd == rhs.hwnd );
9332 }
9333
9334 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9335 {
9336 return !operator==( rhs );
9337 }
9338
9339 private:
9340 StructureType sType;
9341
9342 public:
9343 const void* pNext;
9344 Win32SurfaceCreateFlagsKHR flags;
9345 HINSTANCE hinstance;
9346 HWND hwnd;
9347 };
9348 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9349#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9350
9351#ifdef VK_USE_PLATFORM_XLIB_KHR
9352 struct XlibSurfaceCreateInfoKHR
9353 {
9354 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9355 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9356 , pNext( nullptr )
9357 , flags( flags_ )
9358 , dpy( dpy_ )
9359 , window( window_ )
9360 {
9361 }
9362
9363 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9364 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009365 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009366 }
9367
9368 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9369 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009370 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009371 return *this;
9372 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009373 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9374 {
9375 pNext = pNext_;
9376 return *this;
9377 }
9378
9379 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9380 {
9381 flags = flags_;
9382 return *this;
9383 }
9384
9385 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9386 {
9387 dpy = dpy_;
9388 return *this;
9389 }
9390
9391 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9392 {
9393 window = window_;
9394 return *this;
9395 }
9396
9397 operator const VkXlibSurfaceCreateInfoKHR&() const
9398 {
9399 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9400 }
9401
9402 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9403 {
9404 return ( sType == rhs.sType )
9405 && ( pNext == rhs.pNext )
9406 && ( flags == rhs.flags )
9407 && ( dpy == rhs.dpy )
9408 && ( window == rhs.window );
9409 }
9410
9411 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9412 {
9413 return !operator==( rhs );
9414 }
9415
9416 private:
9417 StructureType sType;
9418
9419 public:
9420 const void* pNext;
9421 XlibSurfaceCreateFlagsKHR flags;
9422 Display* dpy;
9423 Window window;
9424 };
9425 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9426#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9427
9428#ifdef VK_USE_PLATFORM_XCB_KHR
9429 struct XcbSurfaceCreateInfoKHR
9430 {
9431 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9432 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9433 , pNext( nullptr )
9434 , flags( flags_ )
9435 , connection( connection_ )
9436 , window( window_ )
9437 {
9438 }
9439
9440 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9441 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009442 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009443 }
9444
9445 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009447 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009448 return *this;
9449 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009450 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9451 {
9452 pNext = pNext_;
9453 return *this;
9454 }
9455
9456 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9457 {
9458 flags = flags_;
9459 return *this;
9460 }
9461
9462 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9463 {
9464 connection = connection_;
9465 return *this;
9466 }
9467
9468 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9469 {
9470 window = window_;
9471 return *this;
9472 }
9473
9474 operator const VkXcbSurfaceCreateInfoKHR&() const
9475 {
9476 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9477 }
9478
9479 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9480 {
9481 return ( sType == rhs.sType )
9482 && ( pNext == rhs.pNext )
9483 && ( flags == rhs.flags )
9484 && ( connection == rhs.connection )
9485 && ( window == rhs.window );
9486 }
9487
9488 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9489 {
9490 return !operator==( rhs );
9491 }
9492
9493 private:
9494 StructureType sType;
9495
9496 public:
9497 const void* pNext;
9498 XcbSurfaceCreateFlagsKHR flags;
9499 xcb_connection_t* connection;
9500 xcb_window_t window;
9501 };
9502 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9503#endif /*VK_USE_PLATFORM_XCB_KHR*/
9504
9505 struct DebugMarkerMarkerInfoEXT
9506 {
9507 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9508 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9509 , pNext( nullptr )
9510 , pMarkerName( pMarkerName_ )
9511 {
9512 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9513 }
9514
9515 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9516 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009517 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009518 }
9519
9520 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9521 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009522 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009523 return *this;
9524 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009525 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9526 {
9527 pNext = pNext_;
9528 return *this;
9529 }
9530
9531 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9532 {
9533 pMarkerName = pMarkerName_;
9534 return *this;
9535 }
9536
9537 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9538 {
9539 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9540 return *this;
9541 }
9542
9543 operator const VkDebugMarkerMarkerInfoEXT&() const
9544 {
9545 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9546 }
9547
9548 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9549 {
9550 return ( sType == rhs.sType )
9551 && ( pNext == rhs.pNext )
9552 && ( pMarkerName == rhs.pMarkerName )
9553 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9554 }
9555
9556 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9557 {
9558 return !operator==( rhs );
9559 }
9560
9561 private:
9562 StructureType sType;
9563
9564 public:
9565 const void* pNext;
9566 const char* pMarkerName;
9567 float color[4];
9568 };
9569 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9570
9571 struct DedicatedAllocationImageCreateInfoNV
9572 {
9573 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9574 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9575 , pNext( nullptr )
9576 , dedicatedAllocation( dedicatedAllocation_ )
9577 {
9578 }
9579
9580 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9581 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009582 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009583 }
9584
9585 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9586 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009587 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009588 return *this;
9589 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009590 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9591 {
9592 pNext = pNext_;
9593 return *this;
9594 }
9595
9596 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9597 {
9598 dedicatedAllocation = dedicatedAllocation_;
9599 return *this;
9600 }
9601
9602 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9603 {
9604 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9605 }
9606
9607 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9608 {
9609 return ( sType == rhs.sType )
9610 && ( pNext == rhs.pNext )
9611 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9612 }
9613
9614 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9615 {
9616 return !operator==( rhs );
9617 }
9618
9619 private:
9620 StructureType sType;
9621
9622 public:
9623 const void* pNext;
9624 Bool32 dedicatedAllocation;
9625 };
9626 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9627
9628 struct DedicatedAllocationBufferCreateInfoNV
9629 {
9630 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9631 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9632 , pNext( nullptr )
9633 , dedicatedAllocation( dedicatedAllocation_ )
9634 {
9635 }
9636
9637 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009639 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009640 }
9641
9642 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9643 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009644 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009645 return *this;
9646 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009647 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9648 {
9649 pNext = pNext_;
9650 return *this;
9651 }
9652
9653 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9654 {
9655 dedicatedAllocation = dedicatedAllocation_;
9656 return *this;
9657 }
9658
9659 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9660 {
9661 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9662 }
9663
9664 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9665 {
9666 return ( sType == rhs.sType )
9667 && ( pNext == rhs.pNext )
9668 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9669 }
9670
9671 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9672 {
9673 return !operator==( rhs );
9674 }
9675
9676 private:
9677 StructureType sType;
9678
9679 public:
9680 const void* pNext;
9681 Bool32 dedicatedAllocation;
9682 };
9683 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9684
9685 struct DedicatedAllocationMemoryAllocateInfoNV
9686 {
9687 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9688 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9689 , pNext( nullptr )
9690 , image( image_ )
9691 , buffer( buffer_ )
9692 {
9693 }
9694
9695 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9696 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009697 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009698 }
9699
9700 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9701 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009702 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009703 return *this;
9704 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009705 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9706 {
9707 pNext = pNext_;
9708 return *this;
9709 }
9710
9711 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9712 {
9713 image = image_;
9714 return *this;
9715 }
9716
9717 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9718 {
9719 buffer = buffer_;
9720 return *this;
9721 }
9722
9723 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9724 {
9725 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9726 }
9727
9728 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9729 {
9730 return ( sType == rhs.sType )
9731 && ( pNext == rhs.pNext )
9732 && ( image == rhs.image )
9733 && ( buffer == rhs.buffer );
9734 }
9735
9736 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9737 {
9738 return !operator==( rhs );
9739 }
9740
9741 private:
9742 StructureType sType;
9743
9744 public:
9745 const void* pNext;
9746 Image image;
9747 Buffer buffer;
9748 };
9749 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9750
Lenny Komow6501c122016-08-31 15:03:49 -06009751#ifdef VK_USE_PLATFORM_WIN32_KHR
9752 struct ExportMemoryWin32HandleInfoNV
9753 {
9754 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9755 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9756 , pNext( nullptr )
9757 , pAttributes( pAttributes_ )
9758 , dwAccess( dwAccess_ )
9759 {
9760 }
9761
9762 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9763 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009764 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009765 }
9766
9767 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9768 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009769 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009770 return *this;
9771 }
Lenny Komow6501c122016-08-31 15:03:49 -06009772 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9773 {
9774 pNext = pNext_;
9775 return *this;
9776 }
9777
9778 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9779 {
9780 pAttributes = pAttributes_;
9781 return *this;
9782 }
9783
9784 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9785 {
9786 dwAccess = dwAccess_;
9787 return *this;
9788 }
9789
9790 operator const VkExportMemoryWin32HandleInfoNV&() const
9791 {
9792 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9793 }
9794
9795 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9796 {
9797 return ( sType == rhs.sType )
9798 && ( pNext == rhs.pNext )
9799 && ( pAttributes == rhs.pAttributes )
9800 && ( dwAccess == rhs.dwAccess );
9801 }
9802
9803 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9804 {
9805 return !operator==( rhs );
9806 }
9807
9808 private:
9809 StructureType sType;
9810
9811 public:
9812 const void* pNext;
9813 const SECURITY_ATTRIBUTES* pAttributes;
9814 DWORD dwAccess;
9815 };
9816 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9817#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9818
9819#ifdef VK_USE_PLATFORM_WIN32_KHR
9820 struct Win32KeyedMutexAcquireReleaseInfoNV
9821 {
9822 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 )
9823 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9824 , pNext( nullptr )
9825 , acquireCount( acquireCount_ )
9826 , pAcquireSyncs( pAcquireSyncs_ )
9827 , pAcquireKeys( pAcquireKeys_ )
9828 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9829 , releaseCount( releaseCount_ )
9830 , pReleaseSyncs( pReleaseSyncs_ )
9831 , pReleaseKeys( pReleaseKeys_ )
9832 {
9833 }
9834
9835 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9836 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009837 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009838 }
9839
9840 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9841 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009842 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009843 return *this;
9844 }
Lenny Komow6501c122016-08-31 15:03:49 -06009845 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9846 {
9847 pNext = pNext_;
9848 return *this;
9849 }
9850
9851 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9852 {
9853 acquireCount = acquireCount_;
9854 return *this;
9855 }
9856
9857 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9858 {
9859 pAcquireSyncs = pAcquireSyncs_;
9860 return *this;
9861 }
9862
9863 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9864 {
9865 pAcquireKeys = pAcquireKeys_;
9866 return *this;
9867 }
9868
9869 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9870 {
9871 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9872 return *this;
9873 }
9874
9875 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9876 {
9877 releaseCount = releaseCount_;
9878 return *this;
9879 }
9880
9881 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9882 {
9883 pReleaseSyncs = pReleaseSyncs_;
9884 return *this;
9885 }
9886
9887 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9888 {
9889 pReleaseKeys = pReleaseKeys_;
9890 return *this;
9891 }
9892
9893 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9894 {
9895 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9896 }
9897
9898 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9899 {
9900 return ( sType == rhs.sType )
9901 && ( pNext == rhs.pNext )
9902 && ( acquireCount == rhs.acquireCount )
9903 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9904 && ( pAcquireKeys == rhs.pAcquireKeys )
9905 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9906 && ( releaseCount == rhs.releaseCount )
9907 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9908 && ( pReleaseKeys == rhs.pReleaseKeys );
9909 }
9910
9911 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9912 {
9913 return !operator==( rhs );
9914 }
9915
9916 private:
9917 StructureType sType;
9918
9919 public:
9920 const void* pNext;
9921 uint32_t acquireCount;
9922 const DeviceMemory* pAcquireSyncs;
9923 const uint64_t* pAcquireKeys;
9924 const uint32_t* pAcquireTimeoutMilliseconds;
9925 uint32_t releaseCount;
9926 const DeviceMemory* pReleaseSyncs;
9927 const uint64_t* pReleaseKeys;
9928 };
9929 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9930#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9931
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009932 struct DeviceGeneratedCommandsFeaturesNVX
9933 {
9934 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9935 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9936 , pNext( nullptr )
9937 , computeBindingPointSupport( computeBindingPointSupport_ )
9938 {
9939 }
9940
9941 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9942 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009943 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009944 }
9945
9946 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9947 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009948 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009949 return *this;
9950 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009951 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9952 {
9953 pNext = pNext_;
9954 return *this;
9955 }
9956
9957 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9958 {
9959 computeBindingPointSupport = computeBindingPointSupport_;
9960 return *this;
9961 }
9962
9963 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9964 {
9965 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9966 }
9967
9968 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9969 {
9970 return ( sType == rhs.sType )
9971 && ( pNext == rhs.pNext )
9972 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9973 }
9974
9975 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9976 {
9977 return !operator==( rhs );
9978 }
9979
9980 private:
9981 StructureType sType;
9982
9983 public:
9984 const void* pNext;
9985 Bool32 computeBindingPointSupport;
9986 };
9987 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9988
9989 struct DeviceGeneratedCommandsLimitsNVX
9990 {
9991 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9992 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9993 , pNext( nullptr )
9994 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9995 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9996 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9997 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9998 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9999 {
10000 }
10001
10002 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10003 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010004 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010005 }
10006
10007 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10008 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010009 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010010 return *this;
10011 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010012 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10013 {
10014 pNext = pNext_;
10015 return *this;
10016 }
10017
10018 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10019 {
10020 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10021 return *this;
10022 }
10023
10024 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10025 {
10026 maxObjectEntryCounts = maxObjectEntryCounts_;
10027 return *this;
10028 }
10029
10030 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10031 {
10032 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10033 return *this;
10034 }
10035
10036 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10037 {
10038 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10039 return *this;
10040 }
10041
10042 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10043 {
10044 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10045 return *this;
10046 }
10047
10048 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10049 {
10050 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10051 }
10052
10053 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10054 {
10055 return ( sType == rhs.sType )
10056 && ( pNext == rhs.pNext )
10057 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10058 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10059 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10060 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10061 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10062 }
10063
10064 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10065 {
10066 return !operator==( rhs );
10067 }
10068
10069 private:
10070 StructureType sType;
10071
10072 public:
10073 const void* pNext;
10074 uint32_t maxIndirectCommandsLayoutTokenCount;
10075 uint32_t maxObjectEntryCounts;
10076 uint32_t minSequenceCountBufferOffsetAlignment;
10077 uint32_t minSequenceIndexBufferOffsetAlignment;
10078 uint32_t minCommandsTokenBufferOffsetAlignment;
10079 };
10080 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10081
10082 struct CmdReserveSpaceForCommandsInfoNVX
10083 {
10084 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10085 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10086 , pNext( nullptr )
10087 , objectTable( objectTable_ )
10088 , indirectCommandsLayout( indirectCommandsLayout_ )
10089 , maxSequencesCount( maxSequencesCount_ )
10090 {
10091 }
10092
10093 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10094 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010095 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010096 }
10097
10098 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10099 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010100 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010101 return *this;
10102 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010103 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10104 {
10105 pNext = pNext_;
10106 return *this;
10107 }
10108
10109 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10110 {
10111 objectTable = objectTable_;
10112 return *this;
10113 }
10114
10115 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10116 {
10117 indirectCommandsLayout = indirectCommandsLayout_;
10118 return *this;
10119 }
10120
10121 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10122 {
10123 maxSequencesCount = maxSequencesCount_;
10124 return *this;
10125 }
10126
10127 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10128 {
10129 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10130 }
10131
10132 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10133 {
10134 return ( sType == rhs.sType )
10135 && ( pNext == rhs.pNext )
10136 && ( objectTable == rhs.objectTable )
10137 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10138 && ( maxSequencesCount == rhs.maxSequencesCount );
10139 }
10140
10141 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10142 {
10143 return !operator==( rhs );
10144 }
10145
10146 private:
10147 StructureType sType;
10148
10149 public:
10150 const void* pNext;
10151 ObjectTableNVX objectTable;
10152 IndirectCommandsLayoutNVX indirectCommandsLayout;
10153 uint32_t maxSequencesCount;
10154 };
10155 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10156
Mark Young39389872017-01-19 21:10:49 -070010157 struct PhysicalDeviceFeatures2KHR
10158 {
10159 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10160 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10161 , pNext( nullptr )
10162 , features( features_ )
10163 {
10164 }
10165
10166 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10167 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010168 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010169 }
10170
10171 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10172 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010173 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010174 return *this;
10175 }
Mark Young39389872017-01-19 21:10:49 -070010176 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10177 {
10178 pNext = pNext_;
10179 return *this;
10180 }
10181
10182 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10183 {
10184 features = features_;
10185 return *this;
10186 }
10187
10188 operator const VkPhysicalDeviceFeatures2KHR&() const
10189 {
10190 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10191 }
10192
10193 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10194 {
10195 return ( sType == rhs.sType )
10196 && ( pNext == rhs.pNext )
10197 && ( features == rhs.features );
10198 }
10199
10200 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10201 {
10202 return !operator==( rhs );
10203 }
10204
10205 private:
10206 StructureType sType;
10207
10208 public:
10209 void* pNext;
10210 PhysicalDeviceFeatures features;
10211 };
10212 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10213
Mark Young0f183a82017-02-28 09:58:04 -070010214 struct PhysicalDevicePushDescriptorPropertiesKHR
10215 {
10216 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10217 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10218 , pNext( nullptr )
10219 , maxPushDescriptors( maxPushDescriptors_ )
10220 {
10221 }
10222
10223 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10224 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010225 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010226 }
10227
10228 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10229 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010230 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010231 return *this;
10232 }
Mark Young0f183a82017-02-28 09:58:04 -070010233 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10234 {
10235 pNext = pNext_;
10236 return *this;
10237 }
10238
10239 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10240 {
10241 maxPushDescriptors = maxPushDescriptors_;
10242 return *this;
10243 }
10244
10245 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10246 {
10247 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10248 }
10249
10250 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10251 {
10252 return ( sType == rhs.sType )
10253 && ( pNext == rhs.pNext )
10254 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10255 }
10256
10257 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10258 {
10259 return !operator==( rhs );
10260 }
10261
10262 private:
10263 StructureType sType;
10264
10265 public:
10266 void* pNext;
10267 uint32_t maxPushDescriptors;
10268 };
10269 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10270
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010271 struct PresentRegionsKHR
10272 {
10273 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10274 : sType( StructureType::ePresentRegionsKHR )
10275 , pNext( nullptr )
10276 , swapchainCount( swapchainCount_ )
10277 , pRegions( pRegions_ )
10278 {
10279 }
10280
10281 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10282 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010283 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010284 }
10285
10286 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10287 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010288 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010289 return *this;
10290 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010291 PresentRegionsKHR& setPNext( const void* pNext_ )
10292 {
10293 pNext = pNext_;
10294 return *this;
10295 }
10296
10297 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10298 {
10299 swapchainCount = swapchainCount_;
10300 return *this;
10301 }
10302
10303 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10304 {
10305 pRegions = pRegions_;
10306 return *this;
10307 }
10308
10309 operator const VkPresentRegionsKHR&() const
10310 {
10311 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10312 }
10313
10314 bool operator==( PresentRegionsKHR const& rhs ) const
10315 {
10316 return ( sType == rhs.sType )
10317 && ( pNext == rhs.pNext )
10318 && ( swapchainCount == rhs.swapchainCount )
10319 && ( pRegions == rhs.pRegions );
10320 }
10321
10322 bool operator!=( PresentRegionsKHR const& rhs ) const
10323 {
10324 return !operator==( rhs );
10325 }
10326
10327 private:
10328 StructureType sType;
10329
10330 public:
10331 const void* pNext;
10332 uint32_t swapchainCount;
10333 const PresentRegionKHR* pRegions;
10334 };
10335 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10336
Mark Youngabc2d6e2017-07-07 07:59:56 -060010337 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010338 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010339 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
10340 : sType( StructureType::ePhysicalDeviceVariablePointerFeaturesKHR )
10341 , pNext( nullptr )
10342 , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
10343 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010344 {
Mark Young0f183a82017-02-28 09:58:04 -070010345 }
10346
Mark Youngabc2d6e2017-07-07 07:59:56 -060010347 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10348 {
10349 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10350 }
10351
10352 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10353 {
10354 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10355 return *this;
10356 }
10357 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10358 {
10359 pNext = pNext_;
10360 return *this;
10361 }
10362
10363 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10364 {
10365 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10366 return *this;
10367 }
10368
10369 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10370 {
10371 variablePointers = variablePointers_;
10372 return *this;
10373 }
10374
10375 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10376 {
10377 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10378 }
10379
10380 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10381 {
10382 return ( sType == rhs.sType )
10383 && ( pNext == rhs.pNext )
10384 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10385 && ( variablePointers == rhs.variablePointers );
10386 }
10387
10388 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10389 {
10390 return !operator==( rhs );
10391 }
10392
10393 private:
10394 StructureType sType;
10395
10396 public:
10397 void* pNext;
10398 Bool32 variablePointersStorageBuffer;
10399 Bool32 variablePointers;
10400 };
10401 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10402
10403 struct PhysicalDeviceIDPropertiesKHR
10404 {
10405 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10406 {
10407 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10408 }
10409
10410 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010411 {
10412 return ( sType == rhs.sType )
10413 && ( pNext == rhs.pNext )
10414 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10415 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010416 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10417 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010418 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10419 }
10420
Mark Youngabc2d6e2017-07-07 07:59:56 -060010421 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010422 {
10423 return !operator==( rhs );
10424 }
10425
10426 private:
10427 StructureType sType;
10428
10429 public:
10430 void* pNext;
10431 uint8_t deviceUUID[VK_UUID_SIZE];
10432 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010433 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10434 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010435 Bool32 deviceLUIDValid;
10436 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010437 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010438
Mark Youngabc2d6e2017-07-07 07:59:56 -060010439#ifdef VK_USE_PLATFORM_WIN32_KHR
10440 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010441 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010442 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10443 : sType( StructureType::eExportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010444 , pNext( nullptr )
10445 , pAttributes( pAttributes_ )
10446 , dwAccess( dwAccess_ )
10447 , name( name_ )
10448 {
10449 }
10450
Mark Youngabc2d6e2017-07-07 07:59:56 -060010451 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010452 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010453 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010454 }
10455
Mark Youngabc2d6e2017-07-07 07:59:56 -060010456 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010457 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010458 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010459 return *this;
10460 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010461 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010462 {
10463 pNext = pNext_;
10464 return *this;
10465 }
10466
Mark Youngabc2d6e2017-07-07 07:59:56 -060010467 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010468 {
10469 pAttributes = pAttributes_;
10470 return *this;
10471 }
10472
Mark Youngabc2d6e2017-07-07 07:59:56 -060010473 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010474 {
10475 dwAccess = dwAccess_;
10476 return *this;
10477 }
10478
Mark Youngabc2d6e2017-07-07 07:59:56 -060010479 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010480 {
10481 name = name_;
10482 return *this;
10483 }
10484
Mark Youngabc2d6e2017-07-07 07:59:56 -060010485 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010486 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010487 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010488 }
10489
Mark Youngabc2d6e2017-07-07 07:59:56 -060010490 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010491 {
10492 return ( sType == rhs.sType )
10493 && ( pNext == rhs.pNext )
10494 && ( pAttributes == rhs.pAttributes )
10495 && ( dwAccess == rhs.dwAccess )
10496 && ( name == rhs.name );
10497 }
10498
Mark Youngabc2d6e2017-07-07 07:59:56 -060010499 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010500 {
10501 return !operator==( rhs );
10502 }
10503
10504 private:
10505 StructureType sType;
10506
10507 public:
10508 const void* pNext;
10509 const SECURITY_ATTRIBUTES* pAttributes;
10510 DWORD dwAccess;
10511 LPCWSTR name;
10512 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010513 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10514#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010515
10516#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010517 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010518 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010519 operator const VkMemoryWin32HandlePropertiesKHR&() const
10520 {
10521 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10522 }
10523
10524 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10525 {
10526 return ( sType == rhs.sType )
10527 && ( pNext == rhs.pNext )
10528 && ( memoryTypeBits == rhs.memoryTypeBits );
10529 }
10530
10531 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10532 {
10533 return !operator==( rhs );
10534 }
10535
10536 private:
10537 StructureType sType;
10538
10539 public:
10540 void* pNext;
10541 uint32_t memoryTypeBits;
10542 };
10543 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10544#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10545
10546 struct MemoryFdPropertiesKHR
10547 {
10548 operator const VkMemoryFdPropertiesKHR&() const
10549 {
10550 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10551 }
10552
10553 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10554 {
10555 return ( sType == rhs.sType )
10556 && ( pNext == rhs.pNext )
10557 && ( memoryTypeBits == rhs.memoryTypeBits );
10558 }
10559
10560 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10561 {
10562 return !operator==( rhs );
10563 }
10564
10565 private:
10566 StructureType sType;
10567
10568 public:
10569 void* pNext;
10570 uint32_t memoryTypeBits;
10571 };
10572 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10573
10574#ifdef VK_USE_PLATFORM_WIN32_KHR
10575 struct Win32KeyedMutexAcquireReleaseInfoKHR
10576 {
10577 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 )
10578 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010579 , pNext( nullptr )
10580 , acquireCount( acquireCount_ )
10581 , pAcquireSyncs( pAcquireSyncs_ )
10582 , pAcquireKeys( pAcquireKeys_ )
10583 , pAcquireTimeouts( pAcquireTimeouts_ )
10584 , releaseCount( releaseCount_ )
10585 , pReleaseSyncs( pReleaseSyncs_ )
10586 , pReleaseKeys( pReleaseKeys_ )
10587 {
10588 }
10589
Mark Youngabc2d6e2017-07-07 07:59:56 -060010590 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010591 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010592 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010593 }
10594
Mark Youngabc2d6e2017-07-07 07:59:56 -060010595 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010596 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010597 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010598 return *this;
10599 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010600 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010601 {
10602 pNext = pNext_;
10603 return *this;
10604 }
10605
Mark Youngabc2d6e2017-07-07 07:59:56 -060010606 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010607 {
10608 acquireCount = acquireCount_;
10609 return *this;
10610 }
10611
Mark Youngabc2d6e2017-07-07 07:59:56 -060010612 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010613 {
10614 pAcquireSyncs = pAcquireSyncs_;
10615 return *this;
10616 }
10617
Mark Youngabc2d6e2017-07-07 07:59:56 -060010618 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010619 {
10620 pAcquireKeys = pAcquireKeys_;
10621 return *this;
10622 }
10623
Mark Youngabc2d6e2017-07-07 07:59:56 -060010624 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070010625 {
10626 pAcquireTimeouts = pAcquireTimeouts_;
10627 return *this;
10628 }
10629
Mark Youngabc2d6e2017-07-07 07:59:56 -060010630 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010631 {
10632 releaseCount = releaseCount_;
10633 return *this;
10634 }
10635
Mark Youngabc2d6e2017-07-07 07:59:56 -060010636 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010637 {
10638 pReleaseSyncs = pReleaseSyncs_;
10639 return *this;
10640 }
10641
Mark Youngabc2d6e2017-07-07 07:59:56 -060010642 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010643 {
10644 pReleaseKeys = pReleaseKeys_;
10645 return *this;
10646 }
10647
Mark Youngabc2d6e2017-07-07 07:59:56 -060010648 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010649 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010650 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010651 }
10652
Mark Youngabc2d6e2017-07-07 07:59:56 -060010653 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010654 {
10655 return ( sType == rhs.sType )
10656 && ( pNext == rhs.pNext )
10657 && ( acquireCount == rhs.acquireCount )
10658 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10659 && ( pAcquireKeys == rhs.pAcquireKeys )
10660 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10661 && ( releaseCount == rhs.releaseCount )
10662 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10663 && ( pReleaseKeys == rhs.pReleaseKeys );
10664 }
10665
Mark Youngabc2d6e2017-07-07 07:59:56 -060010666 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010667 {
10668 return !operator==( rhs );
10669 }
10670
10671 private:
10672 StructureType sType;
10673
10674 public:
10675 const void* pNext;
10676 uint32_t acquireCount;
10677 const DeviceMemory* pAcquireSyncs;
10678 const uint64_t* pAcquireKeys;
10679 const uint32_t* pAcquireTimeouts;
10680 uint32_t releaseCount;
10681 const DeviceMemory* pReleaseSyncs;
10682 const uint64_t* pReleaseKeys;
10683 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010684 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010685#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10686
Mark Youngabc2d6e2017-07-07 07:59:56 -060010687#ifdef VK_USE_PLATFORM_WIN32_KHR
10688 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010689 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010690 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10691 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010692 , pNext( nullptr )
10693 , pAttributes( pAttributes_ )
10694 , dwAccess( dwAccess_ )
10695 , name( name_ )
10696 {
10697 }
10698
Mark Youngabc2d6e2017-07-07 07:59:56 -060010699 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010700 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010701 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010702 }
10703
Mark Youngabc2d6e2017-07-07 07:59:56 -060010704 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010705 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010706 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010707 return *this;
10708 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010709 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010710 {
10711 pNext = pNext_;
10712 return *this;
10713 }
10714
Mark Youngabc2d6e2017-07-07 07:59:56 -060010715 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010716 {
10717 pAttributes = pAttributes_;
10718 return *this;
10719 }
10720
Mark Youngabc2d6e2017-07-07 07:59:56 -060010721 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010722 {
10723 dwAccess = dwAccess_;
10724 return *this;
10725 }
10726
Mark Youngabc2d6e2017-07-07 07:59:56 -060010727 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010728 {
10729 name = name_;
10730 return *this;
10731 }
10732
Mark Youngabc2d6e2017-07-07 07:59:56 -060010733 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010734 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010735 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010736 }
10737
Mark Youngabc2d6e2017-07-07 07:59:56 -060010738 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010739 {
10740 return ( sType == rhs.sType )
10741 && ( pNext == rhs.pNext )
10742 && ( pAttributes == rhs.pAttributes )
10743 && ( dwAccess == rhs.dwAccess )
10744 && ( name == rhs.name );
10745 }
10746
Mark Youngabc2d6e2017-07-07 07:59:56 -060010747 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010748 {
10749 return !operator==( rhs );
10750 }
10751
10752 private:
10753 StructureType sType;
10754
10755 public:
10756 const void* pNext;
10757 const SECURITY_ATTRIBUTES* pAttributes;
10758 DWORD dwAccess;
10759 LPCWSTR name;
10760 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010761 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10762#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010763
Mark Youngabc2d6e2017-07-07 07:59:56 -060010764#ifdef VK_USE_PLATFORM_WIN32_KHR
10765 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010766 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010767 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10768 : sType( StructureType::eD3D12FenceSubmitInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010769 , pNext( nullptr )
10770 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10771 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10772 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10773 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10774 {
10775 }
10776
Mark Youngabc2d6e2017-07-07 07:59:56 -060010777 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010778 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010779 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010780 }
10781
Mark Youngabc2d6e2017-07-07 07:59:56 -060010782 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010783 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010784 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010785 return *this;
10786 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010787 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010788 {
10789 pNext = pNext_;
10790 return *this;
10791 }
10792
Mark Youngabc2d6e2017-07-07 07:59:56 -060010793 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010794 {
10795 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10796 return *this;
10797 }
10798
Mark Youngabc2d6e2017-07-07 07:59:56 -060010799 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070010800 {
10801 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10802 return *this;
10803 }
10804
Mark Youngabc2d6e2017-07-07 07:59:56 -060010805 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010806 {
10807 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10808 return *this;
10809 }
10810
Mark Youngabc2d6e2017-07-07 07:59:56 -060010811 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070010812 {
10813 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10814 return *this;
10815 }
10816
Mark Youngabc2d6e2017-07-07 07:59:56 -060010817 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010818 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010819 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010820 }
10821
Mark Youngabc2d6e2017-07-07 07:59:56 -060010822 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010823 {
10824 return ( sType == rhs.sType )
10825 && ( pNext == rhs.pNext )
10826 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10827 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10828 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10829 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10830 }
10831
Mark Youngabc2d6e2017-07-07 07:59:56 -060010832 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010833 {
10834 return !operator==( rhs );
10835 }
10836
10837 private:
10838 StructureType sType;
10839
10840 public:
10841 const void* pNext;
10842 uint32_t waitSemaphoreValuesCount;
10843 const uint64_t* pWaitSemaphoreValues;
10844 uint32_t signalSemaphoreValuesCount;
10845 const uint64_t* pSignalSemaphoreValues;
10846 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010847 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
10848#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10849
10850#ifdef VK_USE_PLATFORM_WIN32_KHR
10851 struct ExportFenceWin32HandleInfoKHR
10852 {
10853 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10854 : sType( StructureType::eExportFenceWin32HandleInfoKHR )
10855 , pNext( nullptr )
10856 , pAttributes( pAttributes_ )
10857 , dwAccess( dwAccess_ )
10858 , name( name_ )
10859 {
10860 }
10861
10862 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
10863 {
10864 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
10865 }
10866
10867 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
10868 {
10869 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
10870 return *this;
10871 }
10872 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
10873 {
10874 pNext = pNext_;
10875 return *this;
10876 }
10877
10878 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10879 {
10880 pAttributes = pAttributes_;
10881 return *this;
10882 }
10883
10884 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
10885 {
10886 dwAccess = dwAccess_;
10887 return *this;
10888 }
10889
10890 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
10891 {
10892 name = name_;
10893 return *this;
10894 }
10895
10896 operator const VkExportFenceWin32HandleInfoKHR&() const
10897 {
10898 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
10899 }
10900
10901 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
10902 {
10903 return ( sType == rhs.sType )
10904 && ( pNext == rhs.pNext )
10905 && ( pAttributes == rhs.pAttributes )
10906 && ( dwAccess == rhs.dwAccess )
10907 && ( name == rhs.name );
10908 }
10909
10910 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
10911 {
10912 return !operator==( rhs );
10913 }
10914
10915 private:
10916 StructureType sType;
10917
10918 public:
10919 const void* pNext;
10920 const SECURITY_ATTRIBUTES* pAttributes;
10921 DWORD dwAccess;
10922 LPCWSTR name;
10923 };
10924 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10925#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010926
10927 struct PhysicalDeviceMultiviewFeaturesKHX
10928 {
10929 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10930 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10931 , pNext( nullptr )
10932 , multiview( multiview_ )
10933 , multiviewGeometryShader( multiviewGeometryShader_ )
10934 , multiviewTessellationShader( multiviewTessellationShader_ )
10935 {
10936 }
10937
10938 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10939 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010940 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010941 }
10942
10943 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10944 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010945 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010946 return *this;
10947 }
Mark Young0f183a82017-02-28 09:58:04 -070010948 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10949 {
10950 pNext = pNext_;
10951 return *this;
10952 }
10953
10954 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10955 {
10956 multiview = multiview_;
10957 return *this;
10958 }
10959
10960 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10961 {
10962 multiviewGeometryShader = multiviewGeometryShader_;
10963 return *this;
10964 }
10965
10966 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10967 {
10968 multiviewTessellationShader = multiviewTessellationShader_;
10969 return *this;
10970 }
10971
10972 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10973 {
10974 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10975 }
10976
10977 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10978 {
10979 return ( sType == rhs.sType )
10980 && ( pNext == rhs.pNext )
10981 && ( multiview == rhs.multiview )
10982 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10983 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10984 }
10985
10986 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10987 {
10988 return !operator==( rhs );
10989 }
10990
10991 private:
10992 StructureType sType;
10993
10994 public:
10995 void* pNext;
10996 Bool32 multiview;
10997 Bool32 multiviewGeometryShader;
10998 Bool32 multiviewTessellationShader;
10999 };
11000 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11001
11002 struct PhysicalDeviceMultiviewPropertiesKHX
11003 {
11004 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11005 {
11006 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11007 }
11008
11009 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11010 {
11011 return ( sType == rhs.sType )
11012 && ( pNext == rhs.pNext )
11013 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11014 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11015 }
11016
11017 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11018 {
11019 return !operator==( rhs );
11020 }
11021
11022 private:
11023 StructureType sType;
11024
11025 public:
11026 void* pNext;
11027 uint32_t maxMultiviewViewCount;
11028 uint32_t maxMultiviewInstanceIndex;
11029 };
11030 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11031
11032 struct RenderPassMultiviewCreateInfoKHX
11033 {
11034 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 )
11035 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
11036 , pNext( nullptr )
11037 , subpassCount( subpassCount_ )
11038 , pViewMasks( pViewMasks_ )
11039 , dependencyCount( dependencyCount_ )
11040 , pViewOffsets( pViewOffsets_ )
11041 , correlationMaskCount( correlationMaskCount_ )
11042 , pCorrelationMasks( pCorrelationMasks_ )
11043 {
11044 }
11045
11046 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11047 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011048 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011049 }
11050
11051 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011053 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011054 return *this;
11055 }
Mark Young0f183a82017-02-28 09:58:04 -070011056 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11057 {
11058 pNext = pNext_;
11059 return *this;
11060 }
11061
11062 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11063 {
11064 subpassCount = subpassCount_;
11065 return *this;
11066 }
11067
11068 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11069 {
11070 pViewMasks = pViewMasks_;
11071 return *this;
11072 }
11073
11074 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11075 {
11076 dependencyCount = dependencyCount_;
11077 return *this;
11078 }
11079
11080 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11081 {
11082 pViewOffsets = pViewOffsets_;
11083 return *this;
11084 }
11085
11086 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11087 {
11088 correlationMaskCount = correlationMaskCount_;
11089 return *this;
11090 }
11091
11092 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11093 {
11094 pCorrelationMasks = pCorrelationMasks_;
11095 return *this;
11096 }
11097
11098 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11099 {
11100 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11101 }
11102
11103 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11104 {
11105 return ( sType == rhs.sType )
11106 && ( pNext == rhs.pNext )
11107 && ( subpassCount == rhs.subpassCount )
11108 && ( pViewMasks == rhs.pViewMasks )
11109 && ( dependencyCount == rhs.dependencyCount )
11110 && ( pViewOffsets == rhs.pViewOffsets )
11111 && ( correlationMaskCount == rhs.correlationMaskCount )
11112 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11113 }
11114
11115 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11116 {
11117 return !operator==( rhs );
11118 }
11119
11120 private:
11121 StructureType sType;
11122
11123 public:
11124 const void* pNext;
11125 uint32_t subpassCount;
11126 const uint32_t* pViewMasks;
11127 uint32_t dependencyCount;
11128 const int32_t* pViewOffsets;
11129 uint32_t correlationMaskCount;
11130 const uint32_t* pCorrelationMasks;
11131 };
11132 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11133
11134 struct BindBufferMemoryInfoKHX
11135 {
11136 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
11137 : sType( StructureType::eBindBufferMemoryInfoKHX )
11138 , pNext( nullptr )
11139 , buffer( buffer_ )
11140 , memory( memory_ )
11141 , memoryOffset( memoryOffset_ )
11142 , deviceIndexCount( deviceIndexCount_ )
11143 , pDeviceIndices( pDeviceIndices_ )
11144 {
11145 }
11146
11147 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
11148 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011149 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011150 }
11151
11152 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
11153 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011154 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011155 return *this;
11156 }
Mark Young0f183a82017-02-28 09:58:04 -070011157 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
11158 {
11159 pNext = pNext_;
11160 return *this;
11161 }
11162
11163 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
11164 {
11165 buffer = buffer_;
11166 return *this;
11167 }
11168
11169 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11170 {
11171 memory = memory_;
11172 return *this;
11173 }
11174
11175 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11176 {
11177 memoryOffset = memoryOffset_;
11178 return *this;
11179 }
11180
11181 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11182 {
11183 deviceIndexCount = deviceIndexCount_;
11184 return *this;
11185 }
11186
11187 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11188 {
11189 pDeviceIndices = pDeviceIndices_;
11190 return *this;
11191 }
11192
11193 operator const VkBindBufferMemoryInfoKHX&() const
11194 {
11195 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
11196 }
11197
11198 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
11199 {
11200 return ( sType == rhs.sType )
11201 && ( pNext == rhs.pNext )
11202 && ( buffer == rhs.buffer )
11203 && ( memory == rhs.memory )
11204 && ( memoryOffset == rhs.memoryOffset )
11205 && ( deviceIndexCount == rhs.deviceIndexCount )
11206 && ( pDeviceIndices == rhs.pDeviceIndices );
11207 }
11208
11209 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
11210 {
11211 return !operator==( rhs );
11212 }
11213
11214 private:
11215 StructureType sType;
11216
11217 public:
11218 const void* pNext;
11219 Buffer buffer;
11220 DeviceMemory memory;
11221 DeviceSize memoryOffset;
11222 uint32_t deviceIndexCount;
11223 const uint32_t* pDeviceIndices;
11224 };
11225 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
11226
11227 struct BindImageMemoryInfoKHX
11228 {
11229 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 )
11230 : sType( StructureType::eBindImageMemoryInfoKHX )
11231 , pNext( nullptr )
11232 , image( image_ )
11233 , memory( memory_ )
11234 , memoryOffset( memoryOffset_ )
11235 , deviceIndexCount( deviceIndexCount_ )
11236 , pDeviceIndices( pDeviceIndices_ )
11237 , SFRRectCount( SFRRectCount_ )
11238 , pSFRRects( pSFRRects_ )
11239 {
11240 }
11241
11242 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
11243 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011244 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011245 }
11246
11247 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
11248 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011249 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011250 return *this;
11251 }
Mark Young0f183a82017-02-28 09:58:04 -070011252 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
11253 {
11254 pNext = pNext_;
11255 return *this;
11256 }
11257
11258 BindImageMemoryInfoKHX& setImage( Image image_ )
11259 {
11260 image = image_;
11261 return *this;
11262 }
11263
11264 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11265 {
11266 memory = memory_;
11267 return *this;
11268 }
11269
11270 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11271 {
11272 memoryOffset = memoryOffset_;
11273 return *this;
11274 }
11275
11276 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11277 {
11278 deviceIndexCount = deviceIndexCount_;
11279 return *this;
11280 }
11281
11282 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11283 {
11284 pDeviceIndices = pDeviceIndices_;
11285 return *this;
11286 }
11287
11288 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11289 {
11290 SFRRectCount = SFRRectCount_;
11291 return *this;
11292 }
11293
11294 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11295 {
11296 pSFRRects = pSFRRects_;
11297 return *this;
11298 }
11299
11300 operator const VkBindImageMemoryInfoKHX&() const
11301 {
11302 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11303 }
11304
11305 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11306 {
11307 return ( sType == rhs.sType )
11308 && ( pNext == rhs.pNext )
11309 && ( image == rhs.image )
11310 && ( memory == rhs.memory )
11311 && ( memoryOffset == rhs.memoryOffset )
11312 && ( deviceIndexCount == rhs.deviceIndexCount )
11313 && ( pDeviceIndices == rhs.pDeviceIndices )
11314 && ( SFRRectCount == rhs.SFRRectCount )
11315 && ( pSFRRects == rhs.pSFRRects );
11316 }
11317
11318 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11319 {
11320 return !operator==( rhs );
11321 }
11322
11323 private:
11324 StructureType sType;
11325
11326 public:
11327 const void* pNext;
11328 Image image;
11329 DeviceMemory memory;
11330 DeviceSize memoryOffset;
11331 uint32_t deviceIndexCount;
11332 const uint32_t* pDeviceIndices;
11333 uint32_t SFRRectCount;
11334 const Rect2D* pSFRRects;
11335 };
11336 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11337
11338 struct DeviceGroupRenderPassBeginInfoKHX
11339 {
11340 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11341 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11342 , pNext( nullptr )
11343 , deviceMask( deviceMask_ )
11344 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11345 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11346 {
11347 }
11348
11349 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11350 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011351 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011352 }
11353
11354 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11355 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011356 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011357 return *this;
11358 }
Mark Young0f183a82017-02-28 09:58:04 -070011359 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11360 {
11361 pNext = pNext_;
11362 return *this;
11363 }
11364
11365 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11366 {
11367 deviceMask = deviceMask_;
11368 return *this;
11369 }
11370
11371 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11372 {
11373 deviceRenderAreaCount = deviceRenderAreaCount_;
11374 return *this;
11375 }
11376
11377 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11378 {
11379 pDeviceRenderAreas = pDeviceRenderAreas_;
11380 return *this;
11381 }
11382
11383 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11384 {
11385 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11386 }
11387
11388 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11389 {
11390 return ( sType == rhs.sType )
11391 && ( pNext == rhs.pNext )
11392 && ( deviceMask == rhs.deviceMask )
11393 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11394 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11395 }
11396
11397 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11398 {
11399 return !operator==( rhs );
11400 }
11401
11402 private:
11403 StructureType sType;
11404
11405 public:
11406 const void* pNext;
11407 uint32_t deviceMask;
11408 uint32_t deviceRenderAreaCount;
11409 const Rect2D* pDeviceRenderAreas;
11410 };
11411 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11412
11413 struct DeviceGroupCommandBufferBeginInfoKHX
11414 {
11415 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11416 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11417 , pNext( nullptr )
11418 , deviceMask( deviceMask_ )
11419 {
11420 }
11421
11422 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011424 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011425 }
11426
11427 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011429 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011430 return *this;
11431 }
Mark Young0f183a82017-02-28 09:58:04 -070011432 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11433 {
11434 pNext = pNext_;
11435 return *this;
11436 }
11437
11438 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11439 {
11440 deviceMask = deviceMask_;
11441 return *this;
11442 }
11443
11444 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11445 {
11446 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11447 }
11448
11449 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11450 {
11451 return ( sType == rhs.sType )
11452 && ( pNext == rhs.pNext )
11453 && ( deviceMask == rhs.deviceMask );
11454 }
11455
11456 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11457 {
11458 return !operator==( rhs );
11459 }
11460
11461 private:
11462 StructureType sType;
11463
11464 public:
11465 const void* pNext;
11466 uint32_t deviceMask;
11467 };
11468 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11469
11470 struct DeviceGroupSubmitInfoKHX
11471 {
11472 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 )
11473 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11474 , pNext( nullptr )
11475 , waitSemaphoreCount( waitSemaphoreCount_ )
11476 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11477 , commandBufferCount( commandBufferCount_ )
11478 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11479 , signalSemaphoreCount( signalSemaphoreCount_ )
11480 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11481 {
11482 }
11483
11484 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11485 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011486 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011487 }
11488
11489 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11490 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011491 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011492 return *this;
11493 }
Mark Young0f183a82017-02-28 09:58:04 -070011494 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11495 {
11496 pNext = pNext_;
11497 return *this;
11498 }
11499
11500 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11501 {
11502 waitSemaphoreCount = waitSemaphoreCount_;
11503 return *this;
11504 }
11505
11506 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11507 {
11508 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11509 return *this;
11510 }
11511
11512 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11513 {
11514 commandBufferCount = commandBufferCount_;
11515 return *this;
11516 }
11517
11518 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11519 {
11520 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11521 return *this;
11522 }
11523
11524 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11525 {
11526 signalSemaphoreCount = signalSemaphoreCount_;
11527 return *this;
11528 }
11529
11530 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11531 {
11532 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11533 return *this;
11534 }
11535
11536 operator const VkDeviceGroupSubmitInfoKHX&() const
11537 {
11538 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11539 }
11540
11541 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11542 {
11543 return ( sType == rhs.sType )
11544 && ( pNext == rhs.pNext )
11545 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11546 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11547 && ( commandBufferCount == rhs.commandBufferCount )
11548 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11549 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11550 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11551 }
11552
11553 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11554 {
11555 return !operator==( rhs );
11556 }
11557
11558 private:
11559 StructureType sType;
11560
11561 public:
11562 const void* pNext;
11563 uint32_t waitSemaphoreCount;
11564 const uint32_t* pWaitSemaphoreDeviceIndices;
11565 uint32_t commandBufferCount;
11566 const uint32_t* pCommandBufferDeviceMasks;
11567 uint32_t signalSemaphoreCount;
11568 const uint32_t* pSignalSemaphoreDeviceIndices;
11569 };
11570 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11571
11572 struct DeviceGroupBindSparseInfoKHX
11573 {
11574 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11575 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11576 , pNext( nullptr )
11577 , resourceDeviceIndex( resourceDeviceIndex_ )
11578 , memoryDeviceIndex( memoryDeviceIndex_ )
11579 {
11580 }
11581
11582 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11583 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011584 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011585 }
11586
11587 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11588 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011589 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011590 return *this;
11591 }
Mark Young0f183a82017-02-28 09:58:04 -070011592 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11593 {
11594 pNext = pNext_;
11595 return *this;
11596 }
11597
11598 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11599 {
11600 resourceDeviceIndex = resourceDeviceIndex_;
11601 return *this;
11602 }
11603
11604 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11605 {
11606 memoryDeviceIndex = memoryDeviceIndex_;
11607 return *this;
11608 }
11609
11610 operator const VkDeviceGroupBindSparseInfoKHX&() const
11611 {
11612 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11613 }
11614
11615 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11616 {
11617 return ( sType == rhs.sType )
11618 && ( pNext == rhs.pNext )
11619 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11620 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11621 }
11622
11623 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11624 {
11625 return !operator==( rhs );
11626 }
11627
11628 private:
11629 StructureType sType;
11630
11631 public:
11632 const void* pNext;
11633 uint32_t resourceDeviceIndex;
11634 uint32_t memoryDeviceIndex;
11635 };
11636 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11637
11638 struct ImageSwapchainCreateInfoKHX
11639 {
11640 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11641 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11642 , pNext( nullptr )
11643 , swapchain( swapchain_ )
11644 {
11645 }
11646
11647 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11648 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011649 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011650 }
11651
11652 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11653 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011654 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011655 return *this;
11656 }
Mark Young0f183a82017-02-28 09:58:04 -070011657 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11658 {
11659 pNext = pNext_;
11660 return *this;
11661 }
11662
11663 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11664 {
11665 swapchain = swapchain_;
11666 return *this;
11667 }
11668
11669 operator const VkImageSwapchainCreateInfoKHX&() const
11670 {
11671 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11672 }
11673
11674 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11675 {
11676 return ( sType == rhs.sType )
11677 && ( pNext == rhs.pNext )
11678 && ( swapchain == rhs.swapchain );
11679 }
11680
11681 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11682 {
11683 return !operator==( rhs );
11684 }
11685
11686 private:
11687 StructureType sType;
11688
11689 public:
11690 const void* pNext;
11691 SwapchainKHR swapchain;
11692 };
11693 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11694
11695 struct BindImageMemorySwapchainInfoKHX
11696 {
11697 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11698 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11699 , pNext( nullptr )
11700 , swapchain( swapchain_ )
11701 , imageIndex( imageIndex_ )
11702 {
11703 }
11704
11705 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11706 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011707 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011708 }
11709
11710 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11711 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011712 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011713 return *this;
11714 }
Mark Young0f183a82017-02-28 09:58:04 -070011715 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11716 {
11717 pNext = pNext_;
11718 return *this;
11719 }
11720
11721 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11722 {
11723 swapchain = swapchain_;
11724 return *this;
11725 }
11726
11727 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11728 {
11729 imageIndex = imageIndex_;
11730 return *this;
11731 }
11732
11733 operator const VkBindImageMemorySwapchainInfoKHX&() const
11734 {
11735 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11736 }
11737
11738 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11739 {
11740 return ( sType == rhs.sType )
11741 && ( pNext == rhs.pNext )
11742 && ( swapchain == rhs.swapchain )
11743 && ( imageIndex == rhs.imageIndex );
11744 }
11745
11746 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11747 {
11748 return !operator==( rhs );
11749 }
11750
11751 private:
11752 StructureType sType;
11753
11754 public:
11755 const void* pNext;
11756 SwapchainKHR swapchain;
11757 uint32_t imageIndex;
11758 };
11759 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11760
11761 struct AcquireNextImageInfoKHX
11762 {
11763 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11764 : sType( StructureType::eAcquireNextImageInfoKHX )
11765 , pNext( nullptr )
11766 , swapchain( swapchain_ )
11767 , timeout( timeout_ )
11768 , semaphore( semaphore_ )
11769 , fence( fence_ )
11770 , deviceMask( deviceMask_ )
11771 {
11772 }
11773
11774 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11775 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011776 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011777 }
11778
11779 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11780 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011781 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011782 return *this;
11783 }
Mark Young0f183a82017-02-28 09:58:04 -070011784 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11785 {
11786 pNext = pNext_;
11787 return *this;
11788 }
11789
11790 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11791 {
11792 swapchain = swapchain_;
11793 return *this;
11794 }
11795
11796 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11797 {
11798 timeout = timeout_;
11799 return *this;
11800 }
11801
11802 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11803 {
11804 semaphore = semaphore_;
11805 return *this;
11806 }
11807
11808 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11809 {
11810 fence = fence_;
11811 return *this;
11812 }
11813
11814 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11815 {
11816 deviceMask = deviceMask_;
11817 return *this;
11818 }
11819
11820 operator const VkAcquireNextImageInfoKHX&() const
11821 {
11822 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11823 }
11824
11825 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11826 {
11827 return ( sType == rhs.sType )
11828 && ( pNext == rhs.pNext )
11829 && ( swapchain == rhs.swapchain )
11830 && ( timeout == rhs.timeout )
11831 && ( semaphore == rhs.semaphore )
11832 && ( fence == rhs.fence )
11833 && ( deviceMask == rhs.deviceMask );
11834 }
11835
11836 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11837 {
11838 return !operator==( rhs );
11839 }
11840
11841 private:
11842 StructureType sType;
11843
11844 public:
11845 const void* pNext;
11846 SwapchainKHR swapchain;
11847 uint64_t timeout;
11848 Semaphore semaphore;
11849 Fence fence;
11850 uint32_t deviceMask;
11851 };
11852 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11853
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011854 struct HdrMetadataEXT
11855 {
11856 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 )
11857 : sType( StructureType::eHdrMetadataEXT )
11858 , pNext( nullptr )
11859 , displayPrimaryRed( displayPrimaryRed_ )
11860 , displayPrimaryGreen( displayPrimaryGreen_ )
11861 , displayPrimaryBlue( displayPrimaryBlue_ )
11862 , whitePoint( whitePoint_ )
11863 , maxLuminance( maxLuminance_ )
11864 , minLuminance( minLuminance_ )
11865 , maxContentLightLevel( maxContentLightLevel_ )
11866 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11867 {
11868 }
11869
11870 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11871 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011872 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011873 }
11874
11875 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11876 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011877 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011878 return *this;
11879 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011880 HdrMetadataEXT& setPNext( const void* pNext_ )
11881 {
11882 pNext = pNext_;
11883 return *this;
11884 }
11885
11886 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11887 {
11888 displayPrimaryRed = displayPrimaryRed_;
11889 return *this;
11890 }
11891
11892 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11893 {
11894 displayPrimaryGreen = displayPrimaryGreen_;
11895 return *this;
11896 }
11897
11898 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11899 {
11900 displayPrimaryBlue = displayPrimaryBlue_;
11901 return *this;
11902 }
11903
11904 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11905 {
11906 whitePoint = whitePoint_;
11907 return *this;
11908 }
11909
11910 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11911 {
11912 maxLuminance = maxLuminance_;
11913 return *this;
11914 }
11915
11916 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11917 {
11918 minLuminance = minLuminance_;
11919 return *this;
11920 }
11921
11922 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11923 {
11924 maxContentLightLevel = maxContentLightLevel_;
11925 return *this;
11926 }
11927
11928 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11929 {
11930 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11931 return *this;
11932 }
11933
11934 operator const VkHdrMetadataEXT&() const
11935 {
11936 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11937 }
11938
11939 bool operator==( HdrMetadataEXT const& rhs ) const
11940 {
11941 return ( sType == rhs.sType )
11942 && ( pNext == rhs.pNext )
11943 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11944 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11945 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11946 && ( whitePoint == rhs.whitePoint )
11947 && ( maxLuminance == rhs.maxLuminance )
11948 && ( minLuminance == rhs.minLuminance )
11949 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11950 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11951 }
11952
11953 bool operator!=( HdrMetadataEXT const& rhs ) const
11954 {
11955 return !operator==( rhs );
11956 }
11957
11958 private:
11959 StructureType sType;
11960
11961 public:
11962 const void* pNext;
11963 XYColorEXT displayPrimaryRed;
11964 XYColorEXT displayPrimaryGreen;
11965 XYColorEXT displayPrimaryBlue;
11966 XYColorEXT whitePoint;
11967 float maxLuminance;
11968 float minLuminance;
11969 float maxContentLightLevel;
11970 float maxFrameAverageLightLevel;
11971 };
11972 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11973
11974 struct PresentTimesInfoGOOGLE
11975 {
11976 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11977 : sType( StructureType::ePresentTimesInfoGOOGLE )
11978 , pNext( nullptr )
11979 , swapchainCount( swapchainCount_ )
11980 , pTimes( pTimes_ )
11981 {
11982 }
11983
11984 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011986 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011987 }
11988
11989 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11990 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011991 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011992 return *this;
11993 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011994 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11995 {
11996 pNext = pNext_;
11997 return *this;
11998 }
11999
12000 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12001 {
12002 swapchainCount = swapchainCount_;
12003 return *this;
12004 }
12005
12006 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12007 {
12008 pTimes = pTimes_;
12009 return *this;
12010 }
12011
12012 operator const VkPresentTimesInfoGOOGLE&() const
12013 {
12014 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12015 }
12016
12017 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12018 {
12019 return ( sType == rhs.sType )
12020 && ( pNext == rhs.pNext )
12021 && ( swapchainCount == rhs.swapchainCount )
12022 && ( pTimes == rhs.pTimes );
12023 }
12024
12025 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12026 {
12027 return !operator==( rhs );
12028 }
12029
12030 private:
12031 StructureType sType;
12032
12033 public:
12034 const void* pNext;
12035 uint32_t swapchainCount;
12036 const PresentTimeGOOGLE* pTimes;
12037 };
12038 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12039
Mark Young0f183a82017-02-28 09:58:04 -070012040#ifdef VK_USE_PLATFORM_IOS_MVK
12041 struct IOSSurfaceCreateInfoMVK
12042 {
12043 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12044 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
12045 , pNext( nullptr )
12046 , flags( flags_ )
12047 , pView( pView_ )
12048 {
12049 }
12050
12051 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012053 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012054 }
12055
12056 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012058 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012059 return *this;
12060 }
Mark Young0f183a82017-02-28 09:58:04 -070012061 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12062 {
12063 pNext = pNext_;
12064 return *this;
12065 }
12066
12067 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12068 {
12069 flags = flags_;
12070 return *this;
12071 }
12072
12073 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12074 {
12075 pView = pView_;
12076 return *this;
12077 }
12078
12079 operator const VkIOSSurfaceCreateInfoMVK&() const
12080 {
12081 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12082 }
12083
12084 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12085 {
12086 return ( sType == rhs.sType )
12087 && ( pNext == rhs.pNext )
12088 && ( flags == rhs.flags )
12089 && ( pView == rhs.pView );
12090 }
12091
12092 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12093 {
12094 return !operator==( rhs );
12095 }
12096
12097 private:
12098 StructureType sType;
12099
12100 public:
12101 const void* pNext;
12102 IOSSurfaceCreateFlagsMVK flags;
12103 const void* pView;
12104 };
12105 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12106#endif /*VK_USE_PLATFORM_IOS_MVK*/
12107
12108#ifdef VK_USE_PLATFORM_MACOS_MVK
12109 struct MacOSSurfaceCreateInfoMVK
12110 {
12111 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12112 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
12113 , pNext( nullptr )
12114 , flags( flags_ )
12115 , pView( pView_ )
12116 {
12117 }
12118
12119 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012121 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012122 }
12123
12124 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012126 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012127 return *this;
12128 }
Mark Young0f183a82017-02-28 09:58:04 -070012129 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12130 {
12131 pNext = pNext_;
12132 return *this;
12133 }
12134
12135 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12136 {
12137 flags = flags_;
12138 return *this;
12139 }
12140
12141 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12142 {
12143 pView = pView_;
12144 return *this;
12145 }
12146
12147 operator const VkMacOSSurfaceCreateInfoMVK&() const
12148 {
12149 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12150 }
12151
12152 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12153 {
12154 return ( sType == rhs.sType )
12155 && ( pNext == rhs.pNext )
12156 && ( flags == rhs.flags )
12157 && ( pView == rhs.pView );
12158 }
12159
12160 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12161 {
12162 return !operator==( rhs );
12163 }
12164
12165 private:
12166 StructureType sType;
12167
12168 public:
12169 const void* pNext;
12170 MacOSSurfaceCreateFlagsMVK flags;
12171 const void* pView;
12172 };
12173 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12174#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12175
12176 struct PipelineViewportWScalingStateCreateInfoNV
12177 {
12178 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12179 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12180 , pNext( nullptr )
12181 , viewportWScalingEnable( viewportWScalingEnable_ )
12182 , viewportCount( viewportCount_ )
12183 , pViewportWScalings( pViewportWScalings_ )
12184 {
12185 }
12186
12187 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12188 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012189 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012190 }
12191
12192 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12193 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012194 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012195 return *this;
12196 }
Mark Young0f183a82017-02-28 09:58:04 -070012197 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12198 {
12199 pNext = pNext_;
12200 return *this;
12201 }
12202
12203 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12204 {
12205 viewportWScalingEnable = viewportWScalingEnable_;
12206 return *this;
12207 }
12208
12209 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12210 {
12211 viewportCount = viewportCount_;
12212 return *this;
12213 }
12214
12215 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12216 {
12217 pViewportWScalings = pViewportWScalings_;
12218 return *this;
12219 }
12220
12221 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12222 {
12223 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12224 }
12225
12226 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12227 {
12228 return ( sType == rhs.sType )
12229 && ( pNext == rhs.pNext )
12230 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12231 && ( viewportCount == rhs.viewportCount )
12232 && ( pViewportWScalings == rhs.pViewportWScalings );
12233 }
12234
12235 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12236 {
12237 return !operator==( rhs );
12238 }
12239
12240 private:
12241 StructureType sType;
12242
12243 public:
12244 const void* pNext;
12245 Bool32 viewportWScalingEnable;
12246 uint32_t viewportCount;
12247 const ViewportWScalingNV* pViewportWScalings;
12248 };
12249 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12250
12251 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12252 {
12253 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12254 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12255 , pNext( nullptr )
12256 , maxDiscardRectangles( maxDiscardRectangles_ )
12257 {
12258 }
12259
12260 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12261 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012262 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012263 }
12264
12265 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012267 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012268 return *this;
12269 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012270 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012271 {
12272 pNext = pNext_;
12273 return *this;
12274 }
12275
12276 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12277 {
12278 maxDiscardRectangles = maxDiscardRectangles_;
12279 return *this;
12280 }
12281
12282 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12283 {
12284 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12285 }
12286
12287 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12288 {
12289 return ( sType == rhs.sType )
12290 && ( pNext == rhs.pNext )
12291 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12292 }
12293
12294 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12295 {
12296 return !operator==( rhs );
12297 }
12298
12299 private:
12300 StructureType sType;
12301
12302 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012303 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012304 uint32_t maxDiscardRectangles;
12305 };
12306 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12307
12308 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12309 {
12310 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12311 {
12312 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12313 }
12314
12315 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12316 {
12317 return ( sType == rhs.sType )
12318 && ( pNext == rhs.pNext )
12319 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12320 }
12321
12322 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12323 {
12324 return !operator==( rhs );
12325 }
12326
12327 private:
12328 StructureType sType;
12329
12330 public:
12331 void* pNext;
12332 Bool32 perViewPositionAllComponents;
12333 };
12334 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12335
Mark Lobodzinski54385432017-05-15 10:27:52 -060012336 struct PhysicalDeviceSurfaceInfo2KHR
12337 {
12338 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12339 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12340 , pNext( nullptr )
12341 , surface( surface_ )
12342 {
12343 }
12344
12345 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12346 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012347 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012348 }
12349
12350 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12351 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012352 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012353 return *this;
12354 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012355 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12356 {
12357 pNext = pNext_;
12358 return *this;
12359 }
12360
12361 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12362 {
12363 surface = surface_;
12364 return *this;
12365 }
12366
12367 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12368 {
12369 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12370 }
12371
12372 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12373 {
12374 return ( sType == rhs.sType )
12375 && ( pNext == rhs.pNext )
12376 && ( surface == rhs.surface );
12377 }
12378
12379 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12380 {
12381 return !operator==( rhs );
12382 }
12383
12384 private:
12385 StructureType sType;
12386
12387 public:
12388 const void* pNext;
12389 SurfaceKHR surface;
12390 };
12391 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12392
Mark Youngabc2d6e2017-07-07 07:59:56 -060012393 struct PhysicalDevice16BitStorageFeaturesKHR
12394 {
12395 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
12396 : sType( StructureType::ePhysicalDevice16BitStorageFeaturesKHR )
12397 , pNext( nullptr )
12398 , storageBuffer16BitAccess( storageBuffer16BitAccess_ )
12399 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12400 , storagePushConstant16( storagePushConstant16_ )
12401 , storageInputOutput16( storageInputOutput16_ )
12402 {
12403 }
12404
12405 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12406 {
12407 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12408 }
12409
12410 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12411 {
12412 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12413 return *this;
12414 }
12415 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12416 {
12417 pNext = pNext_;
12418 return *this;
12419 }
12420
12421 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12422 {
12423 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12424 return *this;
12425 }
12426
12427 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12428 {
12429 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12430 return *this;
12431 }
12432
12433 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12434 {
12435 storagePushConstant16 = storagePushConstant16_;
12436 return *this;
12437 }
12438
12439 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12440 {
12441 storageInputOutput16 = storageInputOutput16_;
12442 return *this;
12443 }
12444
12445 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12446 {
12447 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12448 }
12449
12450 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12451 {
12452 return ( sType == rhs.sType )
12453 && ( pNext == rhs.pNext )
12454 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12455 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12456 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12457 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12458 }
12459
12460 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12461 {
12462 return !operator==( rhs );
12463 }
12464
12465 private:
12466 StructureType sType;
12467
12468 public:
12469 void* pNext;
12470 Bool32 storageBuffer16BitAccess;
12471 Bool32 uniformAndStorageBuffer16BitAccess;
12472 Bool32 storagePushConstant16;
12473 Bool32 storageInputOutput16;
12474 };
12475 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12476
12477 struct BufferMemoryRequirementsInfo2KHR
12478 {
12479 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
12480 : sType( StructureType::eBufferMemoryRequirementsInfo2KHR )
12481 , pNext( nullptr )
12482 , buffer( buffer_ )
12483 {
12484 }
12485
12486 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12487 {
12488 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12489 }
12490
12491 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12492 {
12493 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12494 return *this;
12495 }
12496 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12497 {
12498 pNext = pNext_;
12499 return *this;
12500 }
12501
12502 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12503 {
12504 buffer = buffer_;
12505 return *this;
12506 }
12507
12508 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12509 {
12510 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12511 }
12512
12513 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12514 {
12515 return ( sType == rhs.sType )
12516 && ( pNext == rhs.pNext )
12517 && ( buffer == rhs.buffer );
12518 }
12519
12520 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12521 {
12522 return !operator==( rhs );
12523 }
12524
12525 private:
12526 StructureType sType;
12527
12528 public:
12529 const void* pNext;
12530 Buffer buffer;
12531 };
12532 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12533
12534 struct ImageMemoryRequirementsInfo2KHR
12535 {
12536 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
12537 : sType( StructureType::eImageMemoryRequirementsInfo2KHR )
12538 , pNext( nullptr )
12539 , image( image_ )
12540 {
12541 }
12542
12543 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
12544 {
12545 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12546 }
12547
12548 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
12549 {
12550 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12551 return *this;
12552 }
12553 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12554 {
12555 pNext = pNext_;
12556 return *this;
12557 }
12558
12559 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
12560 {
12561 image = image_;
12562 return *this;
12563 }
12564
12565 operator const VkImageMemoryRequirementsInfo2KHR&() const
12566 {
12567 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
12568 }
12569
12570 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12571 {
12572 return ( sType == rhs.sType )
12573 && ( pNext == rhs.pNext )
12574 && ( image == rhs.image );
12575 }
12576
12577 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12578 {
12579 return !operator==( rhs );
12580 }
12581
12582 private:
12583 StructureType sType;
12584
12585 public:
12586 const void* pNext;
12587 Image image;
12588 };
12589 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12590
12591 struct ImageSparseMemoryRequirementsInfo2KHR
12592 {
12593 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
12594 : sType( StructureType::eImageSparseMemoryRequirementsInfo2KHR )
12595 , pNext( nullptr )
12596 , image( image_ )
12597 {
12598 }
12599
12600 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12601 {
12602 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12603 }
12604
12605 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12606 {
12607 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12608 return *this;
12609 }
12610 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12611 {
12612 pNext = pNext_;
12613 return *this;
12614 }
12615
12616 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
12617 {
12618 image = image_;
12619 return *this;
12620 }
12621
12622 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
12623 {
12624 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
12625 }
12626
12627 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12628 {
12629 return ( sType == rhs.sType )
12630 && ( pNext == rhs.pNext )
12631 && ( image == rhs.image );
12632 }
12633
12634 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12635 {
12636 return !operator==( rhs );
12637 }
12638
12639 private:
12640 StructureType sType;
12641
12642 public:
12643 const void* pNext;
12644 Image image;
12645 };
12646 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12647
12648 struct MemoryRequirements2KHR
12649 {
12650 operator const VkMemoryRequirements2KHR&() const
12651 {
12652 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
12653 }
12654
12655 bool operator==( MemoryRequirements2KHR const& rhs ) const
12656 {
12657 return ( sType == rhs.sType )
12658 && ( pNext == rhs.pNext )
12659 && ( memoryRequirements == rhs.memoryRequirements );
12660 }
12661
12662 bool operator!=( MemoryRequirements2KHR const& rhs ) const
12663 {
12664 return !operator==( rhs );
12665 }
12666
12667 private:
12668 StructureType sType;
12669
12670 public:
12671 void* pNext;
12672 MemoryRequirements memoryRequirements;
12673 };
12674 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
12675
12676 struct MemoryDedicatedRequirementsKHR
12677 {
12678 operator const VkMemoryDedicatedRequirementsKHR&() const
12679 {
12680 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
12681 }
12682
12683 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
12684 {
12685 return ( sType == rhs.sType )
12686 && ( pNext == rhs.pNext )
12687 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
12688 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
12689 }
12690
12691 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
12692 {
12693 return !operator==( rhs );
12694 }
12695
12696 private:
12697 StructureType sType;
12698
12699 public:
12700 void* pNext;
12701 Bool32 prefersDedicatedAllocation;
12702 Bool32 requiresDedicatedAllocation;
12703 };
12704 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
12705
12706 struct MemoryDedicatedAllocateInfoKHR
12707 {
12708 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
12709 : sType( StructureType::eMemoryDedicatedAllocateInfoKHR )
12710 , pNext( nullptr )
12711 , image( image_ )
12712 , buffer( buffer_ )
12713 {
12714 }
12715
12716 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
12717 {
12718 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
12719 }
12720
12721 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
12722 {
12723 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
12724 return *this;
12725 }
12726 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
12727 {
12728 pNext = pNext_;
12729 return *this;
12730 }
12731
12732 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
12733 {
12734 image = image_;
12735 return *this;
12736 }
12737
12738 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
12739 {
12740 buffer = buffer_;
12741 return *this;
12742 }
12743
12744 operator const VkMemoryDedicatedAllocateInfoKHR&() const
12745 {
12746 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
12747 }
12748
12749 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
12750 {
12751 return ( sType == rhs.sType )
12752 && ( pNext == rhs.pNext )
12753 && ( image == rhs.image )
12754 && ( buffer == rhs.buffer );
12755 }
12756
12757 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
12758 {
12759 return !operator==( rhs );
12760 }
12761
12762 private:
12763 StructureType sType;
12764
12765 public:
12766 const void* pNext;
12767 Image image;
12768 Buffer buffer;
12769 };
12770 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
12771
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012772 struct TextureLODGatherFormatPropertiesAMD
12773 {
12774 operator const VkTextureLODGatherFormatPropertiesAMD&() const
12775 {
12776 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
12777 }
12778
12779 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12780 {
12781 return ( sType == rhs.sType )
12782 && ( pNext == rhs.pNext )
12783 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
12784 }
12785
12786 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12787 {
12788 return !operator==( rhs );
12789 }
12790
12791 private:
12792 StructureType sType;
12793
12794 public:
12795 void* pNext;
12796 Bool32 supportsTextureGatherLODBiasAMD;
12797 };
12798 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
12799
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060012800 struct PipelineCoverageToColorStateCreateInfoNV
12801 {
12802 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
12803 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
12804 , pNext( nullptr )
12805 , flags( flags_ )
12806 , coverageToColorEnable( coverageToColorEnable_ )
12807 , coverageToColorLocation( coverageToColorLocation_ )
12808 {
12809 }
12810
12811 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
12812 {
12813 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
12814 }
12815
12816 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
12817 {
12818 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
12819 return *this;
12820 }
12821 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
12822 {
12823 pNext = pNext_;
12824 return *this;
12825 }
12826
12827 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
12828 {
12829 flags = flags_;
12830 return *this;
12831 }
12832
12833 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
12834 {
12835 coverageToColorEnable = coverageToColorEnable_;
12836 return *this;
12837 }
12838
12839 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
12840 {
12841 coverageToColorLocation = coverageToColorLocation_;
12842 return *this;
12843 }
12844
12845 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
12846 {
12847 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
12848 }
12849
12850 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
12851 {
12852 return ( sType == rhs.sType )
12853 && ( pNext == rhs.pNext )
12854 && ( flags == rhs.flags )
12855 && ( coverageToColorEnable == rhs.coverageToColorEnable )
12856 && ( coverageToColorLocation == rhs.coverageToColorLocation );
12857 }
12858
12859 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
12860 {
12861 return !operator==( rhs );
12862 }
12863
12864 private:
12865 StructureType sType;
12866
12867 public:
12868 const void* pNext;
12869 PipelineCoverageToColorStateCreateFlagsNV flags;
12870 Bool32 coverageToColorEnable;
12871 uint32_t coverageToColorLocation;
12872 };
12873 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
12874
12875 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
12876 {
12877 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
12878 {
12879 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
12880 }
12881
12882 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
12883 {
12884 return ( sType == rhs.sType )
12885 && ( pNext == rhs.pNext )
12886 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
12887 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
12888 }
12889
12890 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
12891 {
12892 return !operator==( rhs );
12893 }
12894
12895 private:
12896 StructureType sType;
12897
12898 public:
12899 void* pNext;
12900 Bool32 filterMinmaxSingleComponentFormats;
12901 Bool32 filterMinmaxImageComponentMapping;
12902 };
12903 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
12904
12905 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
12906 {
12907 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
12908 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
12909 , pNext( nullptr )
12910 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
12911 {
12912 }
12913
12914 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
12915 {
12916 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
12917 }
12918
12919 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
12920 {
12921 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
12922 return *this;
12923 }
12924 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
12925 {
12926 pNext = pNext_;
12927 return *this;
12928 }
12929
12930 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
12931 {
12932 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
12933 return *this;
12934 }
12935
12936 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
12937 {
12938 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
12939 }
12940
12941 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
12942 {
12943 return ( sType == rhs.sType )
12944 && ( pNext == rhs.pNext )
12945 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
12946 }
12947
12948 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
12949 {
12950 return !operator==( rhs );
12951 }
12952
12953 private:
12954 StructureType sType;
12955
12956 public:
12957 void* pNext;
12958 Bool32 advancedBlendCoherentOperations;
12959 };
12960 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
12961
12962 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
12963 {
12964 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
12965 {
12966 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
12967 }
12968
12969 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
12970 {
12971 return ( sType == rhs.sType )
12972 && ( pNext == rhs.pNext )
12973 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
12974 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
12975 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
12976 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
12977 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
12978 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
12979 }
12980
12981 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
12982 {
12983 return !operator==( rhs );
12984 }
12985
12986 private:
12987 StructureType sType;
12988
12989 public:
12990 void* pNext;
12991 uint32_t advancedBlendMaxColorAttachments;
12992 Bool32 advancedBlendIndependentBlend;
12993 Bool32 advancedBlendNonPremultipliedSrcColor;
12994 Bool32 advancedBlendNonPremultipliedDstColor;
12995 Bool32 advancedBlendCorrelatedOverlap;
12996 Bool32 advancedBlendAllOperations;
12997 };
12998 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
12999
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013000 enum class SubpassContents
13001 {
13002 eInline = VK_SUBPASS_CONTENTS_INLINE,
13003 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13004 };
13005
13006 struct PresentInfoKHR
13007 {
13008 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 )
13009 : sType( StructureType::ePresentInfoKHR )
13010 , pNext( nullptr )
13011 , waitSemaphoreCount( waitSemaphoreCount_ )
13012 , pWaitSemaphores( pWaitSemaphores_ )
13013 , swapchainCount( swapchainCount_ )
13014 , pSwapchains( pSwapchains_ )
13015 , pImageIndices( pImageIndices_ )
13016 , pResults( pResults_ )
13017 {
13018 }
13019
13020 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013022 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013023 }
13024
13025 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13026 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013027 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013028 return *this;
13029 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013030 PresentInfoKHR& setPNext( const void* pNext_ )
13031 {
13032 pNext = pNext_;
13033 return *this;
13034 }
13035
13036 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13037 {
13038 waitSemaphoreCount = waitSemaphoreCount_;
13039 return *this;
13040 }
13041
13042 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13043 {
13044 pWaitSemaphores = pWaitSemaphores_;
13045 return *this;
13046 }
13047
13048 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
13049 {
13050 swapchainCount = swapchainCount_;
13051 return *this;
13052 }
13053
13054 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
13055 {
13056 pSwapchains = pSwapchains_;
13057 return *this;
13058 }
13059
13060 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
13061 {
13062 pImageIndices = pImageIndices_;
13063 return *this;
13064 }
13065
13066 PresentInfoKHR& setPResults( Result* pResults_ )
13067 {
13068 pResults = pResults_;
13069 return *this;
13070 }
13071
13072 operator const VkPresentInfoKHR&() const
13073 {
13074 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
13075 }
13076
13077 bool operator==( PresentInfoKHR const& rhs ) const
13078 {
13079 return ( sType == rhs.sType )
13080 && ( pNext == rhs.pNext )
13081 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13082 && ( pWaitSemaphores == rhs.pWaitSemaphores )
13083 && ( swapchainCount == rhs.swapchainCount )
13084 && ( pSwapchains == rhs.pSwapchains )
13085 && ( pImageIndices == rhs.pImageIndices )
13086 && ( pResults == rhs.pResults );
13087 }
13088
13089 bool operator!=( PresentInfoKHR const& rhs ) const
13090 {
13091 return !operator==( rhs );
13092 }
13093
13094 private:
13095 StructureType sType;
13096
13097 public:
13098 const void* pNext;
13099 uint32_t waitSemaphoreCount;
13100 const Semaphore* pWaitSemaphores;
13101 uint32_t swapchainCount;
13102 const SwapchainKHR* pSwapchains;
13103 const uint32_t* pImageIndices;
13104 Result* pResults;
13105 };
13106 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
13107
13108 enum class DynamicState
13109 {
13110 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
13111 eScissor = VK_DYNAMIC_STATE_SCISSOR,
13112 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
13113 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
13114 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
13115 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
13116 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
13117 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070013118 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
13119 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
13120 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013121 };
13122
13123 struct PipelineDynamicStateCreateInfo
13124 {
13125 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
13126 : sType( StructureType::ePipelineDynamicStateCreateInfo )
13127 , pNext( nullptr )
13128 , flags( flags_ )
13129 , dynamicStateCount( dynamicStateCount_ )
13130 , pDynamicStates( pDynamicStates_ )
13131 {
13132 }
13133
13134 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
13135 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013136 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013137 }
13138
13139 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
13140 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013141 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013142 return *this;
13143 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013144 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
13145 {
13146 pNext = pNext_;
13147 return *this;
13148 }
13149
13150 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
13151 {
13152 flags = flags_;
13153 return *this;
13154 }
13155
13156 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
13157 {
13158 dynamicStateCount = dynamicStateCount_;
13159 return *this;
13160 }
13161
13162 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
13163 {
13164 pDynamicStates = pDynamicStates_;
13165 return *this;
13166 }
13167
13168 operator const VkPipelineDynamicStateCreateInfo&() const
13169 {
13170 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
13171 }
13172
13173 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
13174 {
13175 return ( sType == rhs.sType )
13176 && ( pNext == rhs.pNext )
13177 && ( flags == rhs.flags )
13178 && ( dynamicStateCount == rhs.dynamicStateCount )
13179 && ( pDynamicStates == rhs.pDynamicStates );
13180 }
13181
13182 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
13183 {
13184 return !operator==( rhs );
13185 }
13186
13187 private:
13188 StructureType sType;
13189
13190 public:
13191 const void* pNext;
13192 PipelineDynamicStateCreateFlags flags;
13193 uint32_t dynamicStateCount;
13194 const DynamicState* pDynamicStates;
13195 };
13196 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
13197
Mark Young0f183a82017-02-28 09:58:04 -070013198 enum class DescriptorUpdateTemplateTypeKHR
13199 {
13200 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
13201 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
13202 };
13203
13204 struct DescriptorUpdateTemplateCreateInfoKHR
13205 {
13206 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 )
13207 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
13208 , pNext( nullptr )
13209 , flags( flags_ )
13210 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
13211 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
13212 , templateType( templateType_ )
13213 , descriptorSetLayout( descriptorSetLayout_ )
13214 , pipelineBindPoint( pipelineBindPoint_ )
13215 , pipelineLayout( pipelineLayout_ )
13216 , set( set_ )
13217 {
13218 }
13219
13220 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
13221 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013222 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070013223 }
13224
13225 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
13226 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013227 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070013228 return *this;
13229 }
Mark Young0f183a82017-02-28 09:58:04 -070013230 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
13231 {
13232 pNext = pNext_;
13233 return *this;
13234 }
13235
13236 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
13237 {
13238 flags = flags_;
13239 return *this;
13240 }
13241
13242 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
13243 {
13244 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
13245 return *this;
13246 }
13247
13248 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
13249 {
13250 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
13251 return *this;
13252 }
13253
13254 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
13255 {
13256 templateType = templateType_;
13257 return *this;
13258 }
13259
13260 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
13261 {
13262 descriptorSetLayout = descriptorSetLayout_;
13263 return *this;
13264 }
13265
13266 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
13267 {
13268 pipelineBindPoint = pipelineBindPoint_;
13269 return *this;
13270 }
13271
13272 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
13273 {
13274 pipelineLayout = pipelineLayout_;
13275 return *this;
13276 }
13277
13278 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
13279 {
13280 set = set_;
13281 return *this;
13282 }
13283
13284 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
13285 {
13286 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
13287 }
13288
13289 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
13290 {
13291 return ( sType == rhs.sType )
13292 && ( pNext == rhs.pNext )
13293 && ( flags == rhs.flags )
13294 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
13295 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
13296 && ( templateType == rhs.templateType )
13297 && ( descriptorSetLayout == rhs.descriptorSetLayout )
13298 && ( pipelineBindPoint == rhs.pipelineBindPoint )
13299 && ( pipelineLayout == rhs.pipelineLayout )
13300 && ( set == rhs.set );
13301 }
13302
13303 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
13304 {
13305 return !operator==( rhs );
13306 }
13307
13308 private:
13309 StructureType sType;
13310
13311 public:
13312 void* pNext;
13313 DescriptorUpdateTemplateCreateFlagsKHR flags;
13314 uint32_t descriptorUpdateEntryCount;
13315 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
13316 DescriptorUpdateTemplateTypeKHR templateType;
13317 DescriptorSetLayout descriptorSetLayout;
13318 PipelineBindPoint pipelineBindPoint;
13319 PipelineLayout pipelineLayout;
13320 uint32_t set;
13321 };
13322 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
13323
Mark Lobodzinski54385432017-05-15 10:27:52 -060013324 enum class ObjectType
13325 {
13326 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
13327 eInstance = VK_OBJECT_TYPE_INSTANCE,
13328 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
13329 eDevice = VK_OBJECT_TYPE_DEVICE,
13330 eQueue = VK_OBJECT_TYPE_QUEUE,
13331 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
13332 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
13333 eFence = VK_OBJECT_TYPE_FENCE,
13334 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
13335 eBuffer = VK_OBJECT_TYPE_BUFFER,
13336 eImage = VK_OBJECT_TYPE_IMAGE,
13337 eEvent = VK_OBJECT_TYPE_EVENT,
13338 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
13339 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
13340 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
13341 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
13342 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
13343 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
13344 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
13345 ePipeline = VK_OBJECT_TYPE_PIPELINE,
13346 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
13347 eSampler = VK_OBJECT_TYPE_SAMPLER,
13348 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
13349 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
13350 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
13351 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
13352 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
13353 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
13354 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
13355 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
13356 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
13357 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
13358 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
13359 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX
13360 };
13361
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013362 enum class QueueFlagBits
13363 {
13364 eGraphics = VK_QUEUE_GRAPHICS_BIT,
13365 eCompute = VK_QUEUE_COMPUTE_BIT,
13366 eTransfer = VK_QUEUE_TRANSFER_BIT,
13367 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
13368 };
13369
13370 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
13371
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013372 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013373 {
13374 return QueueFlags( bit0 ) | bit1;
13375 }
13376
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013377 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
13378 {
13379 return ~( QueueFlags( bits ) );
13380 }
13381
13382 template <> struct FlagTraits<QueueFlagBits>
13383 {
13384 enum
13385 {
13386 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
13387 };
13388 };
13389
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013390 struct QueueFamilyProperties
13391 {
13392 operator const VkQueueFamilyProperties&() const
13393 {
13394 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
13395 }
13396
13397 bool operator==( QueueFamilyProperties const& rhs ) const
13398 {
13399 return ( queueFlags == rhs.queueFlags )
13400 && ( queueCount == rhs.queueCount )
13401 && ( timestampValidBits == rhs.timestampValidBits )
13402 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
13403 }
13404
13405 bool operator!=( QueueFamilyProperties const& rhs ) const
13406 {
13407 return !operator==( rhs );
13408 }
13409
13410 QueueFlags queueFlags;
13411 uint32_t queueCount;
13412 uint32_t timestampValidBits;
13413 Extent3D minImageTransferGranularity;
13414 };
13415 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
13416
Mark Young39389872017-01-19 21:10:49 -070013417 struct QueueFamilyProperties2KHR
13418 {
13419 operator const VkQueueFamilyProperties2KHR&() const
13420 {
13421 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
13422 }
13423
13424 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
13425 {
13426 return ( sType == rhs.sType )
13427 && ( pNext == rhs.pNext )
13428 && ( queueFamilyProperties == rhs.queueFamilyProperties );
13429 }
13430
13431 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
13432 {
13433 return !operator==( rhs );
13434 }
13435
13436 private:
13437 StructureType sType;
13438
13439 public:
13440 void* pNext;
13441 QueueFamilyProperties queueFamilyProperties;
13442 };
13443 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
13444
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013445 enum class MemoryPropertyFlagBits
13446 {
13447 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
13448 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
13449 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
13450 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
13451 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
13452 };
13453
13454 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
13455
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013456 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013457 {
13458 return MemoryPropertyFlags( bit0 ) | bit1;
13459 }
13460
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013461 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
13462 {
13463 return ~( MemoryPropertyFlags( bits ) );
13464 }
13465
13466 template <> struct FlagTraits<MemoryPropertyFlagBits>
13467 {
13468 enum
13469 {
13470 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
13471 };
13472 };
13473
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013474 struct MemoryType
13475 {
13476 operator const VkMemoryType&() const
13477 {
13478 return *reinterpret_cast<const VkMemoryType*>(this);
13479 }
13480
13481 bool operator==( MemoryType const& rhs ) const
13482 {
13483 return ( propertyFlags == rhs.propertyFlags )
13484 && ( heapIndex == rhs.heapIndex );
13485 }
13486
13487 bool operator!=( MemoryType const& rhs ) const
13488 {
13489 return !operator==( rhs );
13490 }
13491
13492 MemoryPropertyFlags propertyFlags;
13493 uint32_t heapIndex;
13494 };
13495 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
13496
13497 enum class MemoryHeapFlagBits
13498 {
Mark Young0f183a82017-02-28 09:58:04 -070013499 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
13500 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013501 };
13502
13503 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
13504
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013505 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013506 {
13507 return MemoryHeapFlags( bit0 ) | bit1;
13508 }
13509
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013510 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
13511 {
13512 return ~( MemoryHeapFlags( bits ) );
13513 }
13514
13515 template <> struct FlagTraits<MemoryHeapFlagBits>
13516 {
13517 enum
13518 {
Mark Young0f183a82017-02-28 09:58:04 -070013519 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013520 };
13521 };
13522
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013523 struct MemoryHeap
13524 {
13525 operator const VkMemoryHeap&() const
13526 {
13527 return *reinterpret_cast<const VkMemoryHeap*>(this);
13528 }
13529
13530 bool operator==( MemoryHeap const& rhs ) const
13531 {
13532 return ( size == rhs.size )
13533 && ( flags == rhs.flags );
13534 }
13535
13536 bool operator!=( MemoryHeap const& rhs ) const
13537 {
13538 return !operator==( rhs );
13539 }
13540
13541 DeviceSize size;
13542 MemoryHeapFlags flags;
13543 };
13544 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
13545
13546 struct PhysicalDeviceMemoryProperties
13547 {
13548 operator const VkPhysicalDeviceMemoryProperties&() const
13549 {
13550 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
13551 }
13552
13553 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
13554 {
13555 return ( memoryTypeCount == rhs.memoryTypeCount )
13556 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
13557 && ( memoryHeapCount == rhs.memoryHeapCount )
13558 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
13559 }
13560
13561 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
13562 {
13563 return !operator==( rhs );
13564 }
13565
13566 uint32_t memoryTypeCount;
13567 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
13568 uint32_t memoryHeapCount;
13569 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
13570 };
13571 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
13572
Mark Young39389872017-01-19 21:10:49 -070013573 struct PhysicalDeviceMemoryProperties2KHR
13574 {
13575 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
13576 {
13577 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
13578 }
13579
13580 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13581 {
13582 return ( sType == rhs.sType )
13583 && ( pNext == rhs.pNext )
13584 && ( memoryProperties == rhs.memoryProperties );
13585 }
13586
13587 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13588 {
13589 return !operator==( rhs );
13590 }
13591
13592 private:
13593 StructureType sType;
13594
13595 public:
13596 void* pNext;
13597 PhysicalDeviceMemoryProperties memoryProperties;
13598 };
13599 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
13600
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013601 enum class AccessFlagBits
13602 {
13603 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
13604 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
13605 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
13606 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
13607 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
13608 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
13609 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
13610 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
13611 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
13612 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
13613 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
13614 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
13615 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
13616 eHostRead = VK_ACCESS_HOST_READ_BIT,
13617 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
13618 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013619 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
13620 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013621 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
13622 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013623 };
13624
13625 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
13626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013627 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013628 {
13629 return AccessFlags( bit0 ) | bit1;
13630 }
13631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013632 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
13633 {
13634 return ~( AccessFlags( bits ) );
13635 }
13636
13637 template <> struct FlagTraits<AccessFlagBits>
13638 {
13639 enum
13640 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013641 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 -070013642 };
13643 };
13644
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013645 struct MemoryBarrier
13646 {
13647 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
13648 : sType( StructureType::eMemoryBarrier )
13649 , pNext( nullptr )
13650 , srcAccessMask( srcAccessMask_ )
13651 , dstAccessMask( dstAccessMask_ )
13652 {
13653 }
13654
13655 MemoryBarrier( VkMemoryBarrier const & rhs )
13656 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013657 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013658 }
13659
13660 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
13661 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013662 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013663 return *this;
13664 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013665 MemoryBarrier& setPNext( const void* pNext_ )
13666 {
13667 pNext = pNext_;
13668 return *this;
13669 }
13670
13671 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
13672 {
13673 srcAccessMask = srcAccessMask_;
13674 return *this;
13675 }
13676
13677 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
13678 {
13679 dstAccessMask = dstAccessMask_;
13680 return *this;
13681 }
13682
13683 operator const VkMemoryBarrier&() const
13684 {
13685 return *reinterpret_cast<const VkMemoryBarrier*>(this);
13686 }
13687
13688 bool operator==( MemoryBarrier const& rhs ) const
13689 {
13690 return ( sType == rhs.sType )
13691 && ( pNext == rhs.pNext )
13692 && ( srcAccessMask == rhs.srcAccessMask )
13693 && ( dstAccessMask == rhs.dstAccessMask );
13694 }
13695
13696 bool operator!=( MemoryBarrier const& rhs ) const
13697 {
13698 return !operator==( rhs );
13699 }
13700
13701 private:
13702 StructureType sType;
13703
13704 public:
13705 const void* pNext;
13706 AccessFlags srcAccessMask;
13707 AccessFlags dstAccessMask;
13708 };
13709 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
13710
13711 struct BufferMemoryBarrier
13712 {
13713 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
13714 : sType( StructureType::eBufferMemoryBarrier )
13715 , pNext( nullptr )
13716 , srcAccessMask( srcAccessMask_ )
13717 , dstAccessMask( dstAccessMask_ )
13718 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
13719 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
13720 , buffer( buffer_ )
13721 , offset( offset_ )
13722 , size( size_ )
13723 {
13724 }
13725
13726 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
13727 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013728 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013729 }
13730
13731 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
13732 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013733 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013734 return *this;
13735 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013736 BufferMemoryBarrier& setPNext( const void* pNext_ )
13737 {
13738 pNext = pNext_;
13739 return *this;
13740 }
13741
13742 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
13743 {
13744 srcAccessMask = srcAccessMask_;
13745 return *this;
13746 }
13747
13748 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
13749 {
13750 dstAccessMask = dstAccessMask_;
13751 return *this;
13752 }
13753
13754 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
13755 {
13756 srcQueueFamilyIndex = srcQueueFamilyIndex_;
13757 return *this;
13758 }
13759
13760 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
13761 {
13762 dstQueueFamilyIndex = dstQueueFamilyIndex_;
13763 return *this;
13764 }
13765
13766 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
13767 {
13768 buffer = buffer_;
13769 return *this;
13770 }
13771
13772 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
13773 {
13774 offset = offset_;
13775 return *this;
13776 }
13777
13778 BufferMemoryBarrier& setSize( DeviceSize size_ )
13779 {
13780 size = size_;
13781 return *this;
13782 }
13783
13784 operator const VkBufferMemoryBarrier&() const
13785 {
13786 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
13787 }
13788
13789 bool operator==( BufferMemoryBarrier const& rhs ) const
13790 {
13791 return ( sType == rhs.sType )
13792 && ( pNext == rhs.pNext )
13793 && ( srcAccessMask == rhs.srcAccessMask )
13794 && ( dstAccessMask == rhs.dstAccessMask )
13795 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
13796 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
13797 && ( buffer == rhs.buffer )
13798 && ( offset == rhs.offset )
13799 && ( size == rhs.size );
13800 }
13801
13802 bool operator!=( BufferMemoryBarrier const& rhs ) const
13803 {
13804 return !operator==( rhs );
13805 }
13806
13807 private:
13808 StructureType sType;
13809
13810 public:
13811 const void* pNext;
13812 AccessFlags srcAccessMask;
13813 AccessFlags dstAccessMask;
13814 uint32_t srcQueueFamilyIndex;
13815 uint32_t dstQueueFamilyIndex;
13816 Buffer buffer;
13817 DeviceSize offset;
13818 DeviceSize size;
13819 };
13820 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
13821
13822 enum class BufferUsageFlagBits
13823 {
13824 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
13825 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
13826 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
13827 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
13828 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
13829 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
13830 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
13831 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
13832 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
13833 };
13834
13835 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
13836
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013837 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013838 {
13839 return BufferUsageFlags( bit0 ) | bit1;
13840 }
13841
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013842 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
13843 {
13844 return ~( BufferUsageFlags( bits ) );
13845 }
13846
13847 template <> struct FlagTraits<BufferUsageFlagBits>
13848 {
13849 enum
13850 {
13851 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)
13852 };
13853 };
13854
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013855 enum class BufferCreateFlagBits
13856 {
13857 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
13858 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
13859 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
13860 };
13861
13862 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
13863
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013864 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013865 {
13866 return BufferCreateFlags( bit0 ) | bit1;
13867 }
13868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013869 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
13870 {
13871 return ~( BufferCreateFlags( bits ) );
13872 }
13873
13874 template <> struct FlagTraits<BufferCreateFlagBits>
13875 {
13876 enum
13877 {
13878 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
13879 };
13880 };
13881
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013882 struct BufferCreateInfo
13883 {
13884 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
13885 : sType( StructureType::eBufferCreateInfo )
13886 , pNext( nullptr )
13887 , flags( flags_ )
13888 , size( size_ )
13889 , usage( usage_ )
13890 , sharingMode( sharingMode_ )
13891 , queueFamilyIndexCount( queueFamilyIndexCount_ )
13892 , pQueueFamilyIndices( pQueueFamilyIndices_ )
13893 {
13894 }
13895
13896 BufferCreateInfo( VkBufferCreateInfo const & rhs )
13897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013898 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013899 }
13900
13901 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
13902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013903 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013904 return *this;
13905 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013906 BufferCreateInfo& setPNext( const void* pNext_ )
13907 {
13908 pNext = pNext_;
13909 return *this;
13910 }
13911
13912 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
13913 {
13914 flags = flags_;
13915 return *this;
13916 }
13917
13918 BufferCreateInfo& setSize( DeviceSize size_ )
13919 {
13920 size = size_;
13921 return *this;
13922 }
13923
13924 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
13925 {
13926 usage = usage_;
13927 return *this;
13928 }
13929
13930 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
13931 {
13932 sharingMode = sharingMode_;
13933 return *this;
13934 }
13935
13936 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
13937 {
13938 queueFamilyIndexCount = queueFamilyIndexCount_;
13939 return *this;
13940 }
13941
13942 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
13943 {
13944 pQueueFamilyIndices = pQueueFamilyIndices_;
13945 return *this;
13946 }
13947
13948 operator const VkBufferCreateInfo&() const
13949 {
13950 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
13951 }
13952
13953 bool operator==( BufferCreateInfo const& rhs ) const
13954 {
13955 return ( sType == rhs.sType )
13956 && ( pNext == rhs.pNext )
13957 && ( flags == rhs.flags )
13958 && ( size == rhs.size )
13959 && ( usage == rhs.usage )
13960 && ( sharingMode == rhs.sharingMode )
13961 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
13962 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
13963 }
13964
13965 bool operator!=( BufferCreateInfo const& rhs ) const
13966 {
13967 return !operator==( rhs );
13968 }
13969
13970 private:
13971 StructureType sType;
13972
13973 public:
13974 const void* pNext;
13975 BufferCreateFlags flags;
13976 DeviceSize size;
13977 BufferUsageFlags usage;
13978 SharingMode sharingMode;
13979 uint32_t queueFamilyIndexCount;
13980 const uint32_t* pQueueFamilyIndices;
13981 };
13982 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
13983
13984 enum class ShaderStageFlagBits
13985 {
13986 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
13987 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
13988 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
13989 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
13990 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
13991 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
13992 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
13993 eAll = VK_SHADER_STAGE_ALL
13994 };
13995
13996 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
13997
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013998 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013999 {
14000 return ShaderStageFlags( bit0 ) | bit1;
14001 }
14002
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014003 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14004 {
14005 return ~( ShaderStageFlags( bits ) );
14006 }
14007
14008 template <> struct FlagTraits<ShaderStageFlagBits>
14009 {
14010 enum
14011 {
14012 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)
14013 };
14014 };
14015
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014016 struct DescriptorSetLayoutBinding
14017 {
14018 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14019 : binding( binding_ )
14020 , descriptorType( descriptorType_ )
14021 , descriptorCount( descriptorCount_ )
14022 , stageFlags( stageFlags_ )
14023 , pImmutableSamplers( pImmutableSamplers_ )
14024 {
14025 }
14026
14027 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14028 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014029 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014030 }
14031
14032 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14033 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014034 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014035 return *this;
14036 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014037 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14038 {
14039 binding = binding_;
14040 return *this;
14041 }
14042
14043 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
14044 {
14045 descriptorType = descriptorType_;
14046 return *this;
14047 }
14048
14049 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
14050 {
14051 descriptorCount = descriptorCount_;
14052 return *this;
14053 }
14054
14055 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
14056 {
14057 stageFlags = stageFlags_;
14058 return *this;
14059 }
14060
14061 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
14062 {
14063 pImmutableSamplers = pImmutableSamplers_;
14064 return *this;
14065 }
14066
14067 operator const VkDescriptorSetLayoutBinding&() const
14068 {
14069 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
14070 }
14071
14072 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
14073 {
14074 return ( binding == rhs.binding )
14075 && ( descriptorType == rhs.descriptorType )
14076 && ( descriptorCount == rhs.descriptorCount )
14077 && ( stageFlags == rhs.stageFlags )
14078 && ( pImmutableSamplers == rhs.pImmutableSamplers );
14079 }
14080
14081 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
14082 {
14083 return !operator==( rhs );
14084 }
14085
14086 uint32_t binding;
14087 DescriptorType descriptorType;
14088 uint32_t descriptorCount;
14089 ShaderStageFlags stageFlags;
14090 const Sampler* pImmutableSamplers;
14091 };
14092 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
14093
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014094 struct PipelineShaderStageCreateInfo
14095 {
14096 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
14097 : sType( StructureType::ePipelineShaderStageCreateInfo )
14098 , pNext( nullptr )
14099 , flags( flags_ )
14100 , stage( stage_ )
14101 , module( module_ )
14102 , pName( pName_ )
14103 , pSpecializationInfo( pSpecializationInfo_ )
14104 {
14105 }
14106
14107 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
14108 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014109 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014110 }
14111
14112 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
14113 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014114 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014115 return *this;
14116 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014117 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
14118 {
14119 pNext = pNext_;
14120 return *this;
14121 }
14122
14123 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
14124 {
14125 flags = flags_;
14126 return *this;
14127 }
14128
14129 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
14130 {
14131 stage = stage_;
14132 return *this;
14133 }
14134
14135 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
14136 {
14137 module = module_;
14138 return *this;
14139 }
14140
14141 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
14142 {
14143 pName = pName_;
14144 return *this;
14145 }
14146
14147 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
14148 {
14149 pSpecializationInfo = pSpecializationInfo_;
14150 return *this;
14151 }
14152
14153 operator const VkPipelineShaderStageCreateInfo&() const
14154 {
14155 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
14156 }
14157
14158 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
14159 {
14160 return ( sType == rhs.sType )
14161 && ( pNext == rhs.pNext )
14162 && ( flags == rhs.flags )
14163 && ( stage == rhs.stage )
14164 && ( module == rhs.module )
14165 && ( pName == rhs.pName )
14166 && ( pSpecializationInfo == rhs.pSpecializationInfo );
14167 }
14168
14169 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
14170 {
14171 return !operator==( rhs );
14172 }
14173
14174 private:
14175 StructureType sType;
14176
14177 public:
14178 const void* pNext;
14179 PipelineShaderStageCreateFlags flags;
14180 ShaderStageFlagBits stage;
14181 ShaderModule module;
14182 const char* pName;
14183 const SpecializationInfo* pSpecializationInfo;
14184 };
14185 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
14186
14187 struct PushConstantRange
14188 {
14189 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
14190 : stageFlags( stageFlags_ )
14191 , offset( offset_ )
14192 , size( size_ )
14193 {
14194 }
14195
14196 PushConstantRange( VkPushConstantRange const & rhs )
14197 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014198 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014199 }
14200
14201 PushConstantRange& operator=( VkPushConstantRange const & rhs )
14202 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014203 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014204 return *this;
14205 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014206 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
14207 {
14208 stageFlags = stageFlags_;
14209 return *this;
14210 }
14211
14212 PushConstantRange& setOffset( uint32_t offset_ )
14213 {
14214 offset = offset_;
14215 return *this;
14216 }
14217
14218 PushConstantRange& setSize( uint32_t size_ )
14219 {
14220 size = size_;
14221 return *this;
14222 }
14223
14224 operator const VkPushConstantRange&() const
14225 {
14226 return *reinterpret_cast<const VkPushConstantRange*>(this);
14227 }
14228
14229 bool operator==( PushConstantRange const& rhs ) const
14230 {
14231 return ( stageFlags == rhs.stageFlags )
14232 && ( offset == rhs.offset )
14233 && ( size == rhs.size );
14234 }
14235
14236 bool operator!=( PushConstantRange const& rhs ) const
14237 {
14238 return !operator==( rhs );
14239 }
14240
14241 ShaderStageFlags stageFlags;
14242 uint32_t offset;
14243 uint32_t size;
14244 };
14245 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
14246
14247 struct PipelineLayoutCreateInfo
14248 {
14249 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
14250 : sType( StructureType::ePipelineLayoutCreateInfo )
14251 , pNext( nullptr )
14252 , flags( flags_ )
14253 , setLayoutCount( setLayoutCount_ )
14254 , pSetLayouts( pSetLayouts_ )
14255 , pushConstantRangeCount( pushConstantRangeCount_ )
14256 , pPushConstantRanges( pPushConstantRanges_ )
14257 {
14258 }
14259
14260 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
14261 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014262 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014263 }
14264
14265 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
14266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014267 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014268 return *this;
14269 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014270 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
14271 {
14272 pNext = pNext_;
14273 return *this;
14274 }
14275
14276 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
14277 {
14278 flags = flags_;
14279 return *this;
14280 }
14281
14282 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
14283 {
14284 setLayoutCount = setLayoutCount_;
14285 return *this;
14286 }
14287
14288 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
14289 {
14290 pSetLayouts = pSetLayouts_;
14291 return *this;
14292 }
14293
14294 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
14295 {
14296 pushConstantRangeCount = pushConstantRangeCount_;
14297 return *this;
14298 }
14299
14300 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
14301 {
14302 pPushConstantRanges = pPushConstantRanges_;
14303 return *this;
14304 }
14305
14306 operator const VkPipelineLayoutCreateInfo&() const
14307 {
14308 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
14309 }
14310
14311 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
14312 {
14313 return ( sType == rhs.sType )
14314 && ( pNext == rhs.pNext )
14315 && ( flags == rhs.flags )
14316 && ( setLayoutCount == rhs.setLayoutCount )
14317 && ( pSetLayouts == rhs.pSetLayouts )
14318 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
14319 && ( pPushConstantRanges == rhs.pPushConstantRanges );
14320 }
14321
14322 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
14323 {
14324 return !operator==( rhs );
14325 }
14326
14327 private:
14328 StructureType sType;
14329
14330 public:
14331 const void* pNext;
14332 PipelineLayoutCreateFlags flags;
14333 uint32_t setLayoutCount;
14334 const DescriptorSetLayout* pSetLayouts;
14335 uint32_t pushConstantRangeCount;
14336 const PushConstantRange* pPushConstantRanges;
14337 };
14338 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
14339
14340 enum class ImageUsageFlagBits
14341 {
14342 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
14343 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
14344 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
14345 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
14346 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
14347 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
14348 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
14349 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
14350 };
14351
14352 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
14353
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014354 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014355 {
14356 return ImageUsageFlags( bit0 ) | bit1;
14357 }
14358
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014359 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
14360 {
14361 return ~( ImageUsageFlags( bits ) );
14362 }
14363
14364 template <> struct FlagTraits<ImageUsageFlagBits>
14365 {
14366 enum
14367 {
14368 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)
14369 };
14370 };
14371
Mark Lobodzinski54385432017-05-15 10:27:52 -060014372 struct SharedPresentSurfaceCapabilitiesKHR
14373 {
14374 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
14375 {
14376 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
14377 }
14378
14379 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
14380 {
14381 return ( sType == rhs.sType )
14382 && ( pNext == rhs.pNext )
14383 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
14384 }
14385
14386 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
14387 {
14388 return !operator==( rhs );
14389 }
14390
14391 private:
14392 StructureType sType;
14393
14394 public:
14395 void* pNext;
14396 ImageUsageFlags sharedPresentSupportedUsageFlags;
14397 };
14398 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
14399
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014400 enum class ImageCreateFlagBits
14401 {
14402 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
14403 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
14404 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
14405 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070014406 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070014407 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070014408 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014409 };
14410
14411 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
14412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014413 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014414 {
14415 return ImageCreateFlags( bit0 ) | bit1;
14416 }
14417
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014418 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
14419 {
14420 return ~( ImageCreateFlags( bits ) );
14421 }
14422
14423 template <> struct FlagTraits<ImageCreateFlagBits>
14424 {
14425 enum
14426 {
Mark Young0f183a82017-02-28 09:58:04 -070014427 allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eBindSfrKHX) | VkFlags(ImageCreateFlagBits::e2DArrayCompatibleKHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014428 };
14429 };
14430
Mark Young39389872017-01-19 21:10:49 -070014431 struct PhysicalDeviceImageFormatInfo2KHR
14432 {
14433 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
14434 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
14435 , pNext( nullptr )
14436 , format( format_ )
14437 , type( type_ )
14438 , tiling( tiling_ )
14439 , usage( usage_ )
14440 , flags( flags_ )
14441 {
14442 }
14443
14444 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
14445 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014446 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070014447 }
14448
14449 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
14450 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014451 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070014452 return *this;
14453 }
Mark Young39389872017-01-19 21:10:49 -070014454 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
14455 {
14456 pNext = pNext_;
14457 return *this;
14458 }
14459
14460 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
14461 {
14462 format = format_;
14463 return *this;
14464 }
14465
14466 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
14467 {
14468 type = type_;
14469 return *this;
14470 }
14471
14472 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
14473 {
14474 tiling = tiling_;
14475 return *this;
14476 }
14477
14478 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
14479 {
14480 usage = usage_;
14481 return *this;
14482 }
14483
14484 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
14485 {
14486 flags = flags_;
14487 return *this;
14488 }
14489
14490 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
14491 {
14492 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
14493 }
14494
14495 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
14496 {
14497 return ( sType == rhs.sType )
14498 && ( pNext == rhs.pNext )
14499 && ( format == rhs.format )
14500 && ( type == rhs.type )
14501 && ( tiling == rhs.tiling )
14502 && ( usage == rhs.usage )
14503 && ( flags == rhs.flags );
14504 }
14505
14506 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
14507 {
14508 return !operator==( rhs );
14509 }
14510
14511 private:
14512 StructureType sType;
14513
14514 public:
14515 const void* pNext;
14516 Format format;
14517 ImageType type;
14518 ImageTiling tiling;
14519 ImageUsageFlags usage;
14520 ImageCreateFlags flags;
14521 };
14522 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
14523
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014524 enum class PipelineCreateFlagBits
14525 {
14526 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
14527 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070014528 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
14529 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
14530 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014531 };
14532
14533 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
14534
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014535 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014536 {
14537 return PipelineCreateFlags( bit0 ) | bit1;
14538 }
14539
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014540 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
14541 {
14542 return ~( PipelineCreateFlags( bits ) );
14543 }
14544
14545 template <> struct FlagTraits<PipelineCreateFlagBits>
14546 {
14547 enum
14548 {
Mark Young0f183a82017-02-28 09:58:04 -070014549 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014550 };
14551 };
14552
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014553 struct ComputePipelineCreateInfo
14554 {
14555 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
14556 : sType( StructureType::eComputePipelineCreateInfo )
14557 , pNext( nullptr )
14558 , flags( flags_ )
14559 , stage( stage_ )
14560 , layout( layout_ )
14561 , basePipelineHandle( basePipelineHandle_ )
14562 , basePipelineIndex( basePipelineIndex_ )
14563 {
14564 }
14565
14566 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
14567 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014568 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014569 }
14570
14571 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
14572 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014573 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014574 return *this;
14575 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014576 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
14577 {
14578 pNext = pNext_;
14579 return *this;
14580 }
14581
14582 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
14583 {
14584 flags = flags_;
14585 return *this;
14586 }
14587
14588 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
14589 {
14590 stage = stage_;
14591 return *this;
14592 }
14593
14594 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
14595 {
14596 layout = layout_;
14597 return *this;
14598 }
14599
14600 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
14601 {
14602 basePipelineHandle = basePipelineHandle_;
14603 return *this;
14604 }
14605
14606 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
14607 {
14608 basePipelineIndex = basePipelineIndex_;
14609 return *this;
14610 }
14611
14612 operator const VkComputePipelineCreateInfo&() const
14613 {
14614 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
14615 }
14616
14617 bool operator==( ComputePipelineCreateInfo const& rhs ) const
14618 {
14619 return ( sType == rhs.sType )
14620 && ( pNext == rhs.pNext )
14621 && ( flags == rhs.flags )
14622 && ( stage == rhs.stage )
14623 && ( layout == rhs.layout )
14624 && ( basePipelineHandle == rhs.basePipelineHandle )
14625 && ( basePipelineIndex == rhs.basePipelineIndex );
14626 }
14627
14628 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
14629 {
14630 return !operator==( rhs );
14631 }
14632
14633 private:
14634 StructureType sType;
14635
14636 public:
14637 const void* pNext;
14638 PipelineCreateFlags flags;
14639 PipelineShaderStageCreateInfo stage;
14640 PipelineLayout layout;
14641 Pipeline basePipelineHandle;
14642 int32_t basePipelineIndex;
14643 };
14644 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
14645
14646 enum class ColorComponentFlagBits
14647 {
14648 eR = VK_COLOR_COMPONENT_R_BIT,
14649 eG = VK_COLOR_COMPONENT_G_BIT,
14650 eB = VK_COLOR_COMPONENT_B_BIT,
14651 eA = VK_COLOR_COMPONENT_A_BIT
14652 };
14653
14654 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
14655
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014656 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014657 {
14658 return ColorComponentFlags( bit0 ) | bit1;
14659 }
14660
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014661 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
14662 {
14663 return ~( ColorComponentFlags( bits ) );
14664 }
14665
14666 template <> struct FlagTraits<ColorComponentFlagBits>
14667 {
14668 enum
14669 {
14670 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
14671 };
14672 };
14673
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014674 struct PipelineColorBlendAttachmentState
14675 {
14676 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() )
14677 : blendEnable( blendEnable_ )
14678 , srcColorBlendFactor( srcColorBlendFactor_ )
14679 , dstColorBlendFactor( dstColorBlendFactor_ )
14680 , colorBlendOp( colorBlendOp_ )
14681 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
14682 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
14683 , alphaBlendOp( alphaBlendOp_ )
14684 , colorWriteMask( colorWriteMask_ )
14685 {
14686 }
14687
14688 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
14689 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014690 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014691 }
14692
14693 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
14694 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014695 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014696 return *this;
14697 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014698 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
14699 {
14700 blendEnable = blendEnable_;
14701 return *this;
14702 }
14703
14704 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
14705 {
14706 srcColorBlendFactor = srcColorBlendFactor_;
14707 return *this;
14708 }
14709
14710 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
14711 {
14712 dstColorBlendFactor = dstColorBlendFactor_;
14713 return *this;
14714 }
14715
14716 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
14717 {
14718 colorBlendOp = colorBlendOp_;
14719 return *this;
14720 }
14721
14722 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
14723 {
14724 srcAlphaBlendFactor = srcAlphaBlendFactor_;
14725 return *this;
14726 }
14727
14728 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
14729 {
14730 dstAlphaBlendFactor = dstAlphaBlendFactor_;
14731 return *this;
14732 }
14733
14734 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
14735 {
14736 alphaBlendOp = alphaBlendOp_;
14737 return *this;
14738 }
14739
14740 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
14741 {
14742 colorWriteMask = colorWriteMask_;
14743 return *this;
14744 }
14745
14746 operator const VkPipelineColorBlendAttachmentState&() const
14747 {
14748 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
14749 }
14750
14751 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
14752 {
14753 return ( blendEnable == rhs.blendEnable )
14754 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
14755 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
14756 && ( colorBlendOp == rhs.colorBlendOp )
14757 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
14758 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
14759 && ( alphaBlendOp == rhs.alphaBlendOp )
14760 && ( colorWriteMask == rhs.colorWriteMask );
14761 }
14762
14763 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
14764 {
14765 return !operator==( rhs );
14766 }
14767
14768 Bool32 blendEnable;
14769 BlendFactor srcColorBlendFactor;
14770 BlendFactor dstColorBlendFactor;
14771 BlendOp colorBlendOp;
14772 BlendFactor srcAlphaBlendFactor;
14773 BlendFactor dstAlphaBlendFactor;
14774 BlendOp alphaBlendOp;
14775 ColorComponentFlags colorWriteMask;
14776 };
14777 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
14778
14779 struct PipelineColorBlendStateCreateInfo
14780 {
14781 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 } } )
14782 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
14783 , pNext( nullptr )
14784 , flags( flags_ )
14785 , logicOpEnable( logicOpEnable_ )
14786 , logicOp( logicOp_ )
14787 , attachmentCount( attachmentCount_ )
14788 , pAttachments( pAttachments_ )
14789 {
14790 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14791 }
14792
14793 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
14794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014795 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014796 }
14797
14798 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
14799 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014800 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014801 return *this;
14802 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014803 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
14804 {
14805 pNext = pNext_;
14806 return *this;
14807 }
14808
14809 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
14810 {
14811 flags = flags_;
14812 return *this;
14813 }
14814
14815 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
14816 {
14817 logicOpEnable = logicOpEnable_;
14818 return *this;
14819 }
14820
14821 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
14822 {
14823 logicOp = logicOp_;
14824 return *this;
14825 }
14826
14827 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
14828 {
14829 attachmentCount = attachmentCount_;
14830 return *this;
14831 }
14832
14833 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
14834 {
14835 pAttachments = pAttachments_;
14836 return *this;
14837 }
14838
14839 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
14840 {
14841 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14842 return *this;
14843 }
14844
14845 operator const VkPipelineColorBlendStateCreateInfo&() const
14846 {
14847 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
14848 }
14849
14850 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
14851 {
14852 return ( sType == rhs.sType )
14853 && ( pNext == rhs.pNext )
14854 && ( flags == rhs.flags )
14855 && ( logicOpEnable == rhs.logicOpEnable )
14856 && ( logicOp == rhs.logicOp )
14857 && ( attachmentCount == rhs.attachmentCount )
14858 && ( pAttachments == rhs.pAttachments )
14859 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
14860 }
14861
14862 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
14863 {
14864 return !operator==( rhs );
14865 }
14866
14867 private:
14868 StructureType sType;
14869
14870 public:
14871 const void* pNext;
14872 PipelineColorBlendStateCreateFlags flags;
14873 Bool32 logicOpEnable;
14874 LogicOp logicOp;
14875 uint32_t attachmentCount;
14876 const PipelineColorBlendAttachmentState* pAttachments;
14877 float blendConstants[4];
14878 };
14879 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
14880
14881 enum class FenceCreateFlagBits
14882 {
14883 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
14884 };
14885
14886 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
14887
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014888 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014889 {
14890 return FenceCreateFlags( bit0 ) | bit1;
14891 }
14892
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014893 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
14894 {
14895 return ~( FenceCreateFlags( bits ) );
14896 }
14897
14898 template <> struct FlagTraits<FenceCreateFlagBits>
14899 {
14900 enum
14901 {
14902 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
14903 };
14904 };
14905
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014906 struct FenceCreateInfo
14907 {
14908 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
14909 : sType( StructureType::eFenceCreateInfo )
14910 , pNext( nullptr )
14911 , flags( flags_ )
14912 {
14913 }
14914
14915 FenceCreateInfo( VkFenceCreateInfo const & rhs )
14916 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014917 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014918 }
14919
14920 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
14921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014922 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014923 return *this;
14924 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014925 FenceCreateInfo& setPNext( const void* pNext_ )
14926 {
14927 pNext = pNext_;
14928 return *this;
14929 }
14930
14931 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
14932 {
14933 flags = flags_;
14934 return *this;
14935 }
14936
14937 operator const VkFenceCreateInfo&() const
14938 {
14939 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
14940 }
14941
14942 bool operator==( FenceCreateInfo const& rhs ) const
14943 {
14944 return ( sType == rhs.sType )
14945 && ( pNext == rhs.pNext )
14946 && ( flags == rhs.flags );
14947 }
14948
14949 bool operator!=( FenceCreateInfo const& rhs ) const
14950 {
14951 return !operator==( rhs );
14952 }
14953
14954 private:
14955 StructureType sType;
14956
14957 public:
14958 const void* pNext;
14959 FenceCreateFlags flags;
14960 };
14961 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
14962
14963 enum class FormatFeatureFlagBits
14964 {
14965 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
14966 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
14967 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
14968 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
14969 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
14970 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
14971 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
14972 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
14973 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
14974 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
14975 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
14976 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
14977 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070014978 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
14979 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014980 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
14981 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014982 };
14983
14984 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
14985
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014986 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014987 {
14988 return FormatFeatureFlags( bit0 ) | bit1;
14989 }
14990
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014991 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
14992 {
14993 return ~( FormatFeatureFlags( bits ) );
14994 }
14995
14996 template <> struct FlagTraits<FormatFeatureFlagBits>
14997 {
14998 enum
14999 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015000 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 -070015001 };
15002 };
15003
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015004 struct FormatProperties
15005 {
15006 operator const VkFormatProperties&() const
15007 {
15008 return *reinterpret_cast<const VkFormatProperties*>(this);
15009 }
15010
15011 bool operator==( FormatProperties const& rhs ) const
15012 {
15013 return ( linearTilingFeatures == rhs.linearTilingFeatures )
15014 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
15015 && ( bufferFeatures == rhs.bufferFeatures );
15016 }
15017
15018 bool operator!=( FormatProperties const& rhs ) const
15019 {
15020 return !operator==( rhs );
15021 }
15022
15023 FormatFeatureFlags linearTilingFeatures;
15024 FormatFeatureFlags optimalTilingFeatures;
15025 FormatFeatureFlags bufferFeatures;
15026 };
15027 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
15028
Mark Young39389872017-01-19 21:10:49 -070015029 struct FormatProperties2KHR
15030 {
15031 operator const VkFormatProperties2KHR&() const
15032 {
15033 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
15034 }
15035
15036 bool operator==( FormatProperties2KHR const& rhs ) const
15037 {
15038 return ( sType == rhs.sType )
15039 && ( pNext == rhs.pNext )
15040 && ( formatProperties == rhs.formatProperties );
15041 }
15042
15043 bool operator!=( FormatProperties2KHR const& rhs ) const
15044 {
15045 return !operator==( rhs );
15046 }
15047
15048 private:
15049 StructureType sType;
15050
15051 public:
15052 void* pNext;
15053 FormatProperties formatProperties;
15054 };
15055 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
15056
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015057 enum class QueryControlFlagBits
15058 {
15059 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
15060 };
15061
15062 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
15063
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015064 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015065 {
15066 return QueryControlFlags( bit0 ) | bit1;
15067 }
15068
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015069 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
15070 {
15071 return ~( QueryControlFlags( bits ) );
15072 }
15073
15074 template <> struct FlagTraits<QueryControlFlagBits>
15075 {
15076 enum
15077 {
15078 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
15079 };
15080 };
15081
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015082 enum class QueryResultFlagBits
15083 {
15084 e64 = VK_QUERY_RESULT_64_BIT,
15085 eWait = VK_QUERY_RESULT_WAIT_BIT,
15086 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
15087 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
15088 };
15089
15090 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
15091
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015092 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015093 {
15094 return QueryResultFlags( bit0 ) | bit1;
15095 }
15096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015097 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
15098 {
15099 return ~( QueryResultFlags( bits ) );
15100 }
15101
15102 template <> struct FlagTraits<QueryResultFlagBits>
15103 {
15104 enum
15105 {
15106 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
15107 };
15108 };
15109
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015110 enum class CommandBufferUsageFlagBits
15111 {
15112 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
15113 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
15114 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
15115 };
15116
15117 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
15118
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015119 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015120 {
15121 return CommandBufferUsageFlags( bit0 ) | bit1;
15122 }
15123
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015124 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
15125 {
15126 return ~( CommandBufferUsageFlags( bits ) );
15127 }
15128
15129 template <> struct FlagTraits<CommandBufferUsageFlagBits>
15130 {
15131 enum
15132 {
15133 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
15134 };
15135 };
15136
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015137 enum class QueryPipelineStatisticFlagBits
15138 {
15139 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
15140 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
15141 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
15142 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
15143 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
15144 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
15145 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
15146 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
15147 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
15148 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
15149 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
15150 };
15151
15152 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
15153
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015154 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015155 {
15156 return QueryPipelineStatisticFlags( bit0 ) | bit1;
15157 }
15158
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015159 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
15160 {
15161 return ~( QueryPipelineStatisticFlags( bits ) );
15162 }
15163
15164 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
15165 {
15166 enum
15167 {
15168 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)
15169 };
15170 };
15171
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015172 struct CommandBufferInheritanceInfo
15173 {
15174 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
15175 : sType( StructureType::eCommandBufferInheritanceInfo )
15176 , pNext( nullptr )
15177 , renderPass( renderPass_ )
15178 , subpass( subpass_ )
15179 , framebuffer( framebuffer_ )
15180 , occlusionQueryEnable( occlusionQueryEnable_ )
15181 , queryFlags( queryFlags_ )
15182 , pipelineStatistics( pipelineStatistics_ )
15183 {
15184 }
15185
15186 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
15187 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015188 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015189 }
15190
15191 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
15192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015193 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015194 return *this;
15195 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015196 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
15197 {
15198 pNext = pNext_;
15199 return *this;
15200 }
15201
15202 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
15203 {
15204 renderPass = renderPass_;
15205 return *this;
15206 }
15207
15208 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
15209 {
15210 subpass = subpass_;
15211 return *this;
15212 }
15213
15214 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
15215 {
15216 framebuffer = framebuffer_;
15217 return *this;
15218 }
15219
15220 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
15221 {
15222 occlusionQueryEnable = occlusionQueryEnable_;
15223 return *this;
15224 }
15225
15226 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
15227 {
15228 queryFlags = queryFlags_;
15229 return *this;
15230 }
15231
15232 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
15233 {
15234 pipelineStatistics = pipelineStatistics_;
15235 return *this;
15236 }
15237
15238 operator const VkCommandBufferInheritanceInfo&() const
15239 {
15240 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
15241 }
15242
15243 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
15244 {
15245 return ( sType == rhs.sType )
15246 && ( pNext == rhs.pNext )
15247 && ( renderPass == rhs.renderPass )
15248 && ( subpass == rhs.subpass )
15249 && ( framebuffer == rhs.framebuffer )
15250 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
15251 && ( queryFlags == rhs.queryFlags )
15252 && ( pipelineStatistics == rhs.pipelineStatistics );
15253 }
15254
15255 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
15256 {
15257 return !operator==( rhs );
15258 }
15259
15260 private:
15261 StructureType sType;
15262
15263 public:
15264 const void* pNext;
15265 RenderPass renderPass;
15266 uint32_t subpass;
15267 Framebuffer framebuffer;
15268 Bool32 occlusionQueryEnable;
15269 QueryControlFlags queryFlags;
15270 QueryPipelineStatisticFlags pipelineStatistics;
15271 };
15272 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
15273
15274 struct CommandBufferBeginInfo
15275 {
15276 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
15277 : sType( StructureType::eCommandBufferBeginInfo )
15278 , pNext( nullptr )
15279 , flags( flags_ )
15280 , pInheritanceInfo( pInheritanceInfo_ )
15281 {
15282 }
15283
15284 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
15285 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015286 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015287 }
15288
15289 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
15290 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015291 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015292 return *this;
15293 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015294 CommandBufferBeginInfo& setPNext( const void* pNext_ )
15295 {
15296 pNext = pNext_;
15297 return *this;
15298 }
15299
15300 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
15301 {
15302 flags = flags_;
15303 return *this;
15304 }
15305
15306 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
15307 {
15308 pInheritanceInfo = pInheritanceInfo_;
15309 return *this;
15310 }
15311
15312 operator const VkCommandBufferBeginInfo&() const
15313 {
15314 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
15315 }
15316
15317 bool operator==( CommandBufferBeginInfo const& rhs ) const
15318 {
15319 return ( sType == rhs.sType )
15320 && ( pNext == rhs.pNext )
15321 && ( flags == rhs.flags )
15322 && ( pInheritanceInfo == rhs.pInheritanceInfo );
15323 }
15324
15325 bool operator!=( CommandBufferBeginInfo const& rhs ) const
15326 {
15327 return !operator==( rhs );
15328 }
15329
15330 private:
15331 StructureType sType;
15332
15333 public:
15334 const void* pNext;
15335 CommandBufferUsageFlags flags;
15336 const CommandBufferInheritanceInfo* pInheritanceInfo;
15337 };
15338 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
15339
15340 struct QueryPoolCreateInfo
15341 {
15342 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
15343 : sType( StructureType::eQueryPoolCreateInfo )
15344 , pNext( nullptr )
15345 , flags( flags_ )
15346 , queryType( queryType_ )
15347 , queryCount( queryCount_ )
15348 , pipelineStatistics( pipelineStatistics_ )
15349 {
15350 }
15351
15352 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
15353 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015354 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015355 }
15356
15357 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
15358 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015359 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015360 return *this;
15361 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015362 QueryPoolCreateInfo& setPNext( const void* pNext_ )
15363 {
15364 pNext = pNext_;
15365 return *this;
15366 }
15367
15368 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
15369 {
15370 flags = flags_;
15371 return *this;
15372 }
15373
15374 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
15375 {
15376 queryType = queryType_;
15377 return *this;
15378 }
15379
15380 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
15381 {
15382 queryCount = queryCount_;
15383 return *this;
15384 }
15385
15386 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
15387 {
15388 pipelineStatistics = pipelineStatistics_;
15389 return *this;
15390 }
15391
15392 operator const VkQueryPoolCreateInfo&() const
15393 {
15394 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
15395 }
15396
15397 bool operator==( QueryPoolCreateInfo const& rhs ) const
15398 {
15399 return ( sType == rhs.sType )
15400 && ( pNext == rhs.pNext )
15401 && ( flags == rhs.flags )
15402 && ( queryType == rhs.queryType )
15403 && ( queryCount == rhs.queryCount )
15404 && ( pipelineStatistics == rhs.pipelineStatistics );
15405 }
15406
15407 bool operator!=( QueryPoolCreateInfo const& rhs ) const
15408 {
15409 return !operator==( rhs );
15410 }
15411
15412 private:
15413 StructureType sType;
15414
15415 public:
15416 const void* pNext;
15417 QueryPoolCreateFlags flags;
15418 QueryType queryType;
15419 uint32_t queryCount;
15420 QueryPipelineStatisticFlags pipelineStatistics;
15421 };
15422 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
15423
15424 enum class ImageAspectFlagBits
15425 {
15426 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
15427 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
15428 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
15429 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
15430 };
15431
15432 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
15433
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015434 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015435 {
15436 return ImageAspectFlags( bit0 ) | bit1;
15437 }
15438
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015439 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
15440 {
15441 return ~( ImageAspectFlags( bits ) );
15442 }
15443
15444 template <> struct FlagTraits<ImageAspectFlagBits>
15445 {
15446 enum
15447 {
15448 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
15449 };
15450 };
15451
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015452 struct ImageSubresource
15453 {
15454 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
15455 : aspectMask( aspectMask_ )
15456 , mipLevel( mipLevel_ )
15457 , arrayLayer( arrayLayer_ )
15458 {
15459 }
15460
15461 ImageSubresource( VkImageSubresource const & rhs )
15462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015463 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015464 }
15465
15466 ImageSubresource& operator=( VkImageSubresource const & rhs )
15467 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015468 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015469 return *this;
15470 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015471 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
15472 {
15473 aspectMask = aspectMask_;
15474 return *this;
15475 }
15476
15477 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
15478 {
15479 mipLevel = mipLevel_;
15480 return *this;
15481 }
15482
15483 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
15484 {
15485 arrayLayer = arrayLayer_;
15486 return *this;
15487 }
15488
15489 operator const VkImageSubresource&() const
15490 {
15491 return *reinterpret_cast<const VkImageSubresource*>(this);
15492 }
15493
15494 bool operator==( ImageSubresource const& rhs ) const
15495 {
15496 return ( aspectMask == rhs.aspectMask )
15497 && ( mipLevel == rhs.mipLevel )
15498 && ( arrayLayer == rhs.arrayLayer );
15499 }
15500
15501 bool operator!=( ImageSubresource const& rhs ) const
15502 {
15503 return !operator==( rhs );
15504 }
15505
15506 ImageAspectFlags aspectMask;
15507 uint32_t mipLevel;
15508 uint32_t arrayLayer;
15509 };
15510 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
15511
15512 struct ImageSubresourceLayers
15513 {
15514 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
15515 : aspectMask( aspectMask_ )
15516 , mipLevel( mipLevel_ )
15517 , baseArrayLayer( baseArrayLayer_ )
15518 , layerCount( layerCount_ )
15519 {
15520 }
15521
15522 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
15523 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015524 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015525 }
15526
15527 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
15528 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015529 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015530 return *this;
15531 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015532 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
15533 {
15534 aspectMask = aspectMask_;
15535 return *this;
15536 }
15537
15538 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
15539 {
15540 mipLevel = mipLevel_;
15541 return *this;
15542 }
15543
15544 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15545 {
15546 baseArrayLayer = baseArrayLayer_;
15547 return *this;
15548 }
15549
15550 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
15551 {
15552 layerCount = layerCount_;
15553 return *this;
15554 }
15555
15556 operator const VkImageSubresourceLayers&() const
15557 {
15558 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
15559 }
15560
15561 bool operator==( ImageSubresourceLayers const& rhs ) const
15562 {
15563 return ( aspectMask == rhs.aspectMask )
15564 && ( mipLevel == rhs.mipLevel )
15565 && ( baseArrayLayer == rhs.baseArrayLayer )
15566 && ( layerCount == rhs.layerCount );
15567 }
15568
15569 bool operator!=( ImageSubresourceLayers const& rhs ) const
15570 {
15571 return !operator==( rhs );
15572 }
15573
15574 ImageAspectFlags aspectMask;
15575 uint32_t mipLevel;
15576 uint32_t baseArrayLayer;
15577 uint32_t layerCount;
15578 };
15579 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
15580
15581 struct ImageSubresourceRange
15582 {
15583 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
15584 : aspectMask( aspectMask_ )
15585 , baseMipLevel( baseMipLevel_ )
15586 , levelCount( levelCount_ )
15587 , baseArrayLayer( baseArrayLayer_ )
15588 , layerCount( layerCount_ )
15589 {
15590 }
15591
15592 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
15593 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015594 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015595 }
15596
15597 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
15598 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015599 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015600 return *this;
15601 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015602 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
15603 {
15604 aspectMask = aspectMask_;
15605 return *this;
15606 }
15607
15608 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
15609 {
15610 baseMipLevel = baseMipLevel_;
15611 return *this;
15612 }
15613
15614 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
15615 {
15616 levelCount = levelCount_;
15617 return *this;
15618 }
15619
15620 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15621 {
15622 baseArrayLayer = baseArrayLayer_;
15623 return *this;
15624 }
15625
15626 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
15627 {
15628 layerCount = layerCount_;
15629 return *this;
15630 }
15631
15632 operator const VkImageSubresourceRange&() const
15633 {
15634 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
15635 }
15636
15637 bool operator==( ImageSubresourceRange const& rhs ) const
15638 {
15639 return ( aspectMask == rhs.aspectMask )
15640 && ( baseMipLevel == rhs.baseMipLevel )
15641 && ( levelCount == rhs.levelCount )
15642 && ( baseArrayLayer == rhs.baseArrayLayer )
15643 && ( layerCount == rhs.layerCount );
15644 }
15645
15646 bool operator!=( ImageSubresourceRange const& rhs ) const
15647 {
15648 return !operator==( rhs );
15649 }
15650
15651 ImageAspectFlags aspectMask;
15652 uint32_t baseMipLevel;
15653 uint32_t levelCount;
15654 uint32_t baseArrayLayer;
15655 uint32_t layerCount;
15656 };
15657 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
15658
15659 struct ImageMemoryBarrier
15660 {
15661 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() )
15662 : sType( StructureType::eImageMemoryBarrier )
15663 , pNext( nullptr )
15664 , srcAccessMask( srcAccessMask_ )
15665 , dstAccessMask( dstAccessMask_ )
15666 , oldLayout( oldLayout_ )
15667 , newLayout( newLayout_ )
15668 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
15669 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
15670 , image( image_ )
15671 , subresourceRange( subresourceRange_ )
15672 {
15673 }
15674
15675 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
15676 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015677 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015678 }
15679
15680 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
15681 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015682 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015683 return *this;
15684 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015685 ImageMemoryBarrier& setPNext( const void* pNext_ )
15686 {
15687 pNext = pNext_;
15688 return *this;
15689 }
15690
15691 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
15692 {
15693 srcAccessMask = srcAccessMask_;
15694 return *this;
15695 }
15696
15697 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
15698 {
15699 dstAccessMask = dstAccessMask_;
15700 return *this;
15701 }
15702
15703 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
15704 {
15705 oldLayout = oldLayout_;
15706 return *this;
15707 }
15708
15709 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
15710 {
15711 newLayout = newLayout_;
15712 return *this;
15713 }
15714
15715 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
15716 {
15717 srcQueueFamilyIndex = srcQueueFamilyIndex_;
15718 return *this;
15719 }
15720
15721 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
15722 {
15723 dstQueueFamilyIndex = dstQueueFamilyIndex_;
15724 return *this;
15725 }
15726
15727 ImageMemoryBarrier& setImage( Image image_ )
15728 {
15729 image = image_;
15730 return *this;
15731 }
15732
15733 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15734 {
15735 subresourceRange = subresourceRange_;
15736 return *this;
15737 }
15738
15739 operator const VkImageMemoryBarrier&() const
15740 {
15741 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
15742 }
15743
15744 bool operator==( ImageMemoryBarrier const& rhs ) const
15745 {
15746 return ( sType == rhs.sType )
15747 && ( pNext == rhs.pNext )
15748 && ( srcAccessMask == rhs.srcAccessMask )
15749 && ( dstAccessMask == rhs.dstAccessMask )
15750 && ( oldLayout == rhs.oldLayout )
15751 && ( newLayout == rhs.newLayout )
15752 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
15753 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
15754 && ( image == rhs.image )
15755 && ( subresourceRange == rhs.subresourceRange );
15756 }
15757
15758 bool operator!=( ImageMemoryBarrier const& rhs ) const
15759 {
15760 return !operator==( rhs );
15761 }
15762
15763 private:
15764 StructureType sType;
15765
15766 public:
15767 const void* pNext;
15768 AccessFlags srcAccessMask;
15769 AccessFlags dstAccessMask;
15770 ImageLayout oldLayout;
15771 ImageLayout newLayout;
15772 uint32_t srcQueueFamilyIndex;
15773 uint32_t dstQueueFamilyIndex;
15774 Image image;
15775 ImageSubresourceRange subresourceRange;
15776 };
15777 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
15778
15779 struct ImageViewCreateInfo
15780 {
15781 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
15782 : sType( StructureType::eImageViewCreateInfo )
15783 , pNext( nullptr )
15784 , flags( flags_ )
15785 , image( image_ )
15786 , viewType( viewType_ )
15787 , format( format_ )
15788 , components( components_ )
15789 , subresourceRange( subresourceRange_ )
15790 {
15791 }
15792
15793 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
15794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015795 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015796 }
15797
15798 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
15799 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015800 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015801 return *this;
15802 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015803 ImageViewCreateInfo& setPNext( const void* pNext_ )
15804 {
15805 pNext = pNext_;
15806 return *this;
15807 }
15808
15809 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
15810 {
15811 flags = flags_;
15812 return *this;
15813 }
15814
15815 ImageViewCreateInfo& setImage( Image image_ )
15816 {
15817 image = image_;
15818 return *this;
15819 }
15820
15821 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
15822 {
15823 viewType = viewType_;
15824 return *this;
15825 }
15826
15827 ImageViewCreateInfo& setFormat( Format format_ )
15828 {
15829 format = format_;
15830 return *this;
15831 }
15832
15833 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
15834 {
15835 components = components_;
15836 return *this;
15837 }
15838
15839 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15840 {
15841 subresourceRange = subresourceRange_;
15842 return *this;
15843 }
15844
15845 operator const VkImageViewCreateInfo&() const
15846 {
15847 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
15848 }
15849
15850 bool operator==( ImageViewCreateInfo const& rhs ) const
15851 {
15852 return ( sType == rhs.sType )
15853 && ( pNext == rhs.pNext )
15854 && ( flags == rhs.flags )
15855 && ( image == rhs.image )
15856 && ( viewType == rhs.viewType )
15857 && ( format == rhs.format )
15858 && ( components == rhs.components )
15859 && ( subresourceRange == rhs.subresourceRange );
15860 }
15861
15862 bool operator!=( ImageViewCreateInfo const& rhs ) const
15863 {
15864 return !operator==( rhs );
15865 }
15866
15867 private:
15868 StructureType sType;
15869
15870 public:
15871 const void* pNext;
15872 ImageViewCreateFlags flags;
15873 Image image;
15874 ImageViewType viewType;
15875 Format format;
15876 ComponentMapping components;
15877 ImageSubresourceRange subresourceRange;
15878 };
15879 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
15880
15881 struct ImageCopy
15882 {
15883 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15884 : srcSubresource( srcSubresource_ )
15885 , srcOffset( srcOffset_ )
15886 , dstSubresource( dstSubresource_ )
15887 , dstOffset( dstOffset_ )
15888 , extent( extent_ )
15889 {
15890 }
15891
15892 ImageCopy( VkImageCopy const & rhs )
15893 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015894 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015895 }
15896
15897 ImageCopy& operator=( VkImageCopy const & rhs )
15898 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015899 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015900 return *this;
15901 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015902 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15903 {
15904 srcSubresource = srcSubresource_;
15905 return *this;
15906 }
15907
15908 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
15909 {
15910 srcOffset = srcOffset_;
15911 return *this;
15912 }
15913
15914 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15915 {
15916 dstSubresource = dstSubresource_;
15917 return *this;
15918 }
15919
15920 ImageCopy& setDstOffset( Offset3D dstOffset_ )
15921 {
15922 dstOffset = dstOffset_;
15923 return *this;
15924 }
15925
15926 ImageCopy& setExtent( Extent3D extent_ )
15927 {
15928 extent = extent_;
15929 return *this;
15930 }
15931
15932 operator const VkImageCopy&() const
15933 {
15934 return *reinterpret_cast<const VkImageCopy*>(this);
15935 }
15936
15937 bool operator==( ImageCopy const& rhs ) const
15938 {
15939 return ( srcSubresource == rhs.srcSubresource )
15940 && ( srcOffset == rhs.srcOffset )
15941 && ( dstSubresource == rhs.dstSubresource )
15942 && ( dstOffset == rhs.dstOffset )
15943 && ( extent == rhs.extent );
15944 }
15945
15946 bool operator!=( ImageCopy const& rhs ) const
15947 {
15948 return !operator==( rhs );
15949 }
15950
15951 ImageSubresourceLayers srcSubresource;
15952 Offset3D srcOffset;
15953 ImageSubresourceLayers dstSubresource;
15954 Offset3D dstOffset;
15955 Extent3D extent;
15956 };
15957 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
15958
15959 struct ImageBlit
15960 {
15961 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
15962 : srcSubresource( srcSubresource_ )
15963 , dstSubresource( dstSubresource_ )
15964 {
15965 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15966 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15967 }
15968
15969 ImageBlit( VkImageBlit const & rhs )
15970 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015971 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015972 }
15973
15974 ImageBlit& operator=( VkImageBlit const & rhs )
15975 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015976 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015977 return *this;
15978 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015979 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15980 {
15981 srcSubresource = srcSubresource_;
15982 return *this;
15983 }
15984
15985 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
15986 {
15987 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15988 return *this;
15989 }
15990
15991 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15992 {
15993 dstSubresource = dstSubresource_;
15994 return *this;
15995 }
15996
15997 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
15998 {
15999 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16000 return *this;
16001 }
16002
16003 operator const VkImageBlit&() const
16004 {
16005 return *reinterpret_cast<const VkImageBlit*>(this);
16006 }
16007
16008 bool operator==( ImageBlit const& rhs ) const
16009 {
16010 return ( srcSubresource == rhs.srcSubresource )
16011 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
16012 && ( dstSubresource == rhs.dstSubresource )
16013 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
16014 }
16015
16016 bool operator!=( ImageBlit const& rhs ) const
16017 {
16018 return !operator==( rhs );
16019 }
16020
16021 ImageSubresourceLayers srcSubresource;
16022 Offset3D srcOffsets[2];
16023 ImageSubresourceLayers dstSubresource;
16024 Offset3D dstOffsets[2];
16025 };
16026 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
16027
16028 struct BufferImageCopy
16029 {
16030 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
16031 : bufferOffset( bufferOffset_ )
16032 , bufferRowLength( bufferRowLength_ )
16033 , bufferImageHeight( bufferImageHeight_ )
16034 , imageSubresource( imageSubresource_ )
16035 , imageOffset( imageOffset_ )
16036 , imageExtent( imageExtent_ )
16037 {
16038 }
16039
16040 BufferImageCopy( VkBufferImageCopy const & rhs )
16041 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016042 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016043 }
16044
16045 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
16046 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016047 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016048 return *this;
16049 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016050 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
16051 {
16052 bufferOffset = bufferOffset_;
16053 return *this;
16054 }
16055
16056 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
16057 {
16058 bufferRowLength = bufferRowLength_;
16059 return *this;
16060 }
16061
16062 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
16063 {
16064 bufferImageHeight = bufferImageHeight_;
16065 return *this;
16066 }
16067
16068 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
16069 {
16070 imageSubresource = imageSubresource_;
16071 return *this;
16072 }
16073
16074 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
16075 {
16076 imageOffset = imageOffset_;
16077 return *this;
16078 }
16079
16080 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
16081 {
16082 imageExtent = imageExtent_;
16083 return *this;
16084 }
16085
16086 operator const VkBufferImageCopy&() const
16087 {
16088 return *reinterpret_cast<const VkBufferImageCopy*>(this);
16089 }
16090
16091 bool operator==( BufferImageCopy const& rhs ) const
16092 {
16093 return ( bufferOffset == rhs.bufferOffset )
16094 && ( bufferRowLength == rhs.bufferRowLength )
16095 && ( bufferImageHeight == rhs.bufferImageHeight )
16096 && ( imageSubresource == rhs.imageSubresource )
16097 && ( imageOffset == rhs.imageOffset )
16098 && ( imageExtent == rhs.imageExtent );
16099 }
16100
16101 bool operator!=( BufferImageCopy const& rhs ) const
16102 {
16103 return !operator==( rhs );
16104 }
16105
16106 DeviceSize bufferOffset;
16107 uint32_t bufferRowLength;
16108 uint32_t bufferImageHeight;
16109 ImageSubresourceLayers imageSubresource;
16110 Offset3D imageOffset;
16111 Extent3D imageExtent;
16112 };
16113 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
16114
16115 struct ImageResolve
16116 {
16117 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16118 : srcSubresource( srcSubresource_ )
16119 , srcOffset( srcOffset_ )
16120 , dstSubresource( dstSubresource_ )
16121 , dstOffset( dstOffset_ )
16122 , extent( extent_ )
16123 {
16124 }
16125
16126 ImageResolve( VkImageResolve const & rhs )
16127 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016128 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016129 }
16130
16131 ImageResolve& operator=( VkImageResolve const & rhs )
16132 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016133 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016134 return *this;
16135 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016136 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16137 {
16138 srcSubresource = srcSubresource_;
16139 return *this;
16140 }
16141
16142 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
16143 {
16144 srcOffset = srcOffset_;
16145 return *this;
16146 }
16147
16148 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16149 {
16150 dstSubresource = dstSubresource_;
16151 return *this;
16152 }
16153
16154 ImageResolve& setDstOffset( Offset3D dstOffset_ )
16155 {
16156 dstOffset = dstOffset_;
16157 return *this;
16158 }
16159
16160 ImageResolve& setExtent( Extent3D extent_ )
16161 {
16162 extent = extent_;
16163 return *this;
16164 }
16165
16166 operator const VkImageResolve&() const
16167 {
16168 return *reinterpret_cast<const VkImageResolve*>(this);
16169 }
16170
16171 bool operator==( ImageResolve const& rhs ) const
16172 {
16173 return ( srcSubresource == rhs.srcSubresource )
16174 && ( srcOffset == rhs.srcOffset )
16175 && ( dstSubresource == rhs.dstSubresource )
16176 && ( dstOffset == rhs.dstOffset )
16177 && ( extent == rhs.extent );
16178 }
16179
16180 bool operator!=( ImageResolve const& rhs ) const
16181 {
16182 return !operator==( rhs );
16183 }
16184
16185 ImageSubresourceLayers srcSubresource;
16186 Offset3D srcOffset;
16187 ImageSubresourceLayers dstSubresource;
16188 Offset3D dstOffset;
16189 Extent3D extent;
16190 };
16191 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
16192
16193 struct ClearAttachment
16194 {
16195 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
16196 : aspectMask( aspectMask_ )
16197 , colorAttachment( colorAttachment_ )
16198 , clearValue( clearValue_ )
16199 {
16200 }
16201
16202 ClearAttachment( VkClearAttachment const & rhs )
16203 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016204 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016205 }
16206
16207 ClearAttachment& operator=( VkClearAttachment const & rhs )
16208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016209 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016210 return *this;
16211 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016212 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
16213 {
16214 aspectMask = aspectMask_;
16215 return *this;
16216 }
16217
16218 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
16219 {
16220 colorAttachment = colorAttachment_;
16221 return *this;
16222 }
16223
16224 ClearAttachment& setClearValue( ClearValue clearValue_ )
16225 {
16226 clearValue = clearValue_;
16227 return *this;
16228 }
16229
16230 operator const VkClearAttachment&() const
16231 {
16232 return *reinterpret_cast<const VkClearAttachment*>(this);
16233 }
16234
16235 ImageAspectFlags aspectMask;
16236 uint32_t colorAttachment;
16237 ClearValue clearValue;
16238 };
16239 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
16240
16241 enum class SparseImageFormatFlagBits
16242 {
16243 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
16244 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
16245 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
16246 };
16247
16248 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
16249
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016250 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016251 {
16252 return SparseImageFormatFlags( bit0 ) | bit1;
16253 }
16254
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016255 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
16256 {
16257 return ~( SparseImageFormatFlags( bits ) );
16258 }
16259
16260 template <> struct FlagTraits<SparseImageFormatFlagBits>
16261 {
16262 enum
16263 {
16264 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
16265 };
16266 };
16267
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016268 struct SparseImageFormatProperties
16269 {
16270 operator const VkSparseImageFormatProperties&() const
16271 {
16272 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
16273 }
16274
16275 bool operator==( SparseImageFormatProperties const& rhs ) const
16276 {
16277 return ( aspectMask == rhs.aspectMask )
16278 && ( imageGranularity == rhs.imageGranularity )
16279 && ( flags == rhs.flags );
16280 }
16281
16282 bool operator!=( SparseImageFormatProperties const& rhs ) const
16283 {
16284 return !operator==( rhs );
16285 }
16286
16287 ImageAspectFlags aspectMask;
16288 Extent3D imageGranularity;
16289 SparseImageFormatFlags flags;
16290 };
16291 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
16292
16293 struct SparseImageMemoryRequirements
16294 {
16295 operator const VkSparseImageMemoryRequirements&() const
16296 {
16297 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
16298 }
16299
16300 bool operator==( SparseImageMemoryRequirements const& rhs ) const
16301 {
16302 return ( formatProperties == rhs.formatProperties )
16303 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
16304 && ( imageMipTailSize == rhs.imageMipTailSize )
16305 && ( imageMipTailOffset == rhs.imageMipTailOffset )
16306 && ( imageMipTailStride == rhs.imageMipTailStride );
16307 }
16308
16309 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
16310 {
16311 return !operator==( rhs );
16312 }
16313
16314 SparseImageFormatProperties formatProperties;
16315 uint32_t imageMipTailFirstLod;
16316 DeviceSize imageMipTailSize;
16317 DeviceSize imageMipTailOffset;
16318 DeviceSize imageMipTailStride;
16319 };
16320 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
16321
Mark Young39389872017-01-19 21:10:49 -070016322 struct SparseImageFormatProperties2KHR
16323 {
16324 operator const VkSparseImageFormatProperties2KHR&() const
16325 {
16326 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
16327 }
16328
16329 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
16330 {
16331 return ( sType == rhs.sType )
16332 && ( pNext == rhs.pNext )
16333 && ( properties == rhs.properties );
16334 }
16335
16336 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
16337 {
16338 return !operator==( rhs );
16339 }
16340
16341 private:
16342 StructureType sType;
16343
16344 public:
16345 void* pNext;
16346 SparseImageFormatProperties properties;
16347 };
16348 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16349
Mark Youngabc2d6e2017-07-07 07:59:56 -060016350 struct SparseImageMemoryRequirements2KHR
16351 {
16352 operator const VkSparseImageMemoryRequirements2KHR&() const
16353 {
16354 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
16355 }
16356
16357 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
16358 {
16359 return ( sType == rhs.sType )
16360 && ( pNext == rhs.pNext )
16361 && ( memoryRequirements == rhs.memoryRequirements );
16362 }
16363
16364 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
16365 {
16366 return !operator==( rhs );
16367 }
16368
16369 private:
16370 StructureType sType;
16371
16372 public:
16373 void* pNext;
16374 SparseImageMemoryRequirements memoryRequirements;
16375 };
16376 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
16377
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016378 enum class SparseMemoryBindFlagBits
16379 {
16380 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
16381 };
16382
16383 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
16384
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016385 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016386 {
16387 return SparseMemoryBindFlags( bit0 ) | bit1;
16388 }
16389
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016390 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
16391 {
16392 return ~( SparseMemoryBindFlags( bits ) );
16393 }
16394
16395 template <> struct FlagTraits<SparseMemoryBindFlagBits>
16396 {
16397 enum
16398 {
16399 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
16400 };
16401 };
16402
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016403 struct SparseMemoryBind
16404 {
16405 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
16406 : resourceOffset( resourceOffset_ )
16407 , size( size_ )
16408 , memory( memory_ )
16409 , memoryOffset( memoryOffset_ )
16410 , flags( flags_ )
16411 {
16412 }
16413
16414 SparseMemoryBind( VkSparseMemoryBind const & rhs )
16415 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016416 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016417 }
16418
16419 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
16420 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016421 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016422 return *this;
16423 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016424 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
16425 {
16426 resourceOffset = resourceOffset_;
16427 return *this;
16428 }
16429
16430 SparseMemoryBind& setSize( DeviceSize size_ )
16431 {
16432 size = size_;
16433 return *this;
16434 }
16435
16436 SparseMemoryBind& setMemory( DeviceMemory memory_ )
16437 {
16438 memory = memory_;
16439 return *this;
16440 }
16441
16442 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
16443 {
16444 memoryOffset = memoryOffset_;
16445 return *this;
16446 }
16447
16448 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
16449 {
16450 flags = flags_;
16451 return *this;
16452 }
16453
16454 operator const VkSparseMemoryBind&() const
16455 {
16456 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
16457 }
16458
16459 bool operator==( SparseMemoryBind const& rhs ) const
16460 {
16461 return ( resourceOffset == rhs.resourceOffset )
16462 && ( size == rhs.size )
16463 && ( memory == rhs.memory )
16464 && ( memoryOffset == rhs.memoryOffset )
16465 && ( flags == rhs.flags );
16466 }
16467
16468 bool operator!=( SparseMemoryBind const& rhs ) const
16469 {
16470 return !operator==( rhs );
16471 }
16472
16473 DeviceSize resourceOffset;
16474 DeviceSize size;
16475 DeviceMemory memory;
16476 DeviceSize memoryOffset;
16477 SparseMemoryBindFlags flags;
16478 };
16479 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
16480
16481 struct SparseImageMemoryBind
16482 {
16483 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
16484 : subresource( subresource_ )
16485 , offset( offset_ )
16486 , extent( extent_ )
16487 , memory( memory_ )
16488 , memoryOffset( memoryOffset_ )
16489 , flags( flags_ )
16490 {
16491 }
16492
16493 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
16494 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016495 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016496 }
16497
16498 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
16499 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016500 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016501 return *this;
16502 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016503 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
16504 {
16505 subresource = subresource_;
16506 return *this;
16507 }
16508
16509 SparseImageMemoryBind& setOffset( Offset3D offset_ )
16510 {
16511 offset = offset_;
16512 return *this;
16513 }
16514
16515 SparseImageMemoryBind& setExtent( Extent3D extent_ )
16516 {
16517 extent = extent_;
16518 return *this;
16519 }
16520
16521 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
16522 {
16523 memory = memory_;
16524 return *this;
16525 }
16526
16527 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
16528 {
16529 memoryOffset = memoryOffset_;
16530 return *this;
16531 }
16532
16533 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
16534 {
16535 flags = flags_;
16536 return *this;
16537 }
16538
16539 operator const VkSparseImageMemoryBind&() const
16540 {
16541 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
16542 }
16543
16544 bool operator==( SparseImageMemoryBind const& rhs ) const
16545 {
16546 return ( subresource == rhs.subresource )
16547 && ( offset == rhs.offset )
16548 && ( extent == rhs.extent )
16549 && ( memory == rhs.memory )
16550 && ( memoryOffset == rhs.memoryOffset )
16551 && ( flags == rhs.flags );
16552 }
16553
16554 bool operator!=( SparseImageMemoryBind const& rhs ) const
16555 {
16556 return !operator==( rhs );
16557 }
16558
16559 ImageSubresource subresource;
16560 Offset3D offset;
16561 Extent3D extent;
16562 DeviceMemory memory;
16563 DeviceSize memoryOffset;
16564 SparseMemoryBindFlags flags;
16565 };
16566 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
16567
16568 struct SparseBufferMemoryBindInfo
16569 {
16570 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
16571 : buffer( buffer_ )
16572 , bindCount( bindCount_ )
16573 , pBinds( pBinds_ )
16574 {
16575 }
16576
16577 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
16578 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016579 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016580 }
16581
16582 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
16583 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016584 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016585 return *this;
16586 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016587 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
16588 {
16589 buffer = buffer_;
16590 return *this;
16591 }
16592
16593 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16594 {
16595 bindCount = bindCount_;
16596 return *this;
16597 }
16598
16599 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
16600 {
16601 pBinds = pBinds_;
16602 return *this;
16603 }
16604
16605 operator const VkSparseBufferMemoryBindInfo&() const
16606 {
16607 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
16608 }
16609
16610 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
16611 {
16612 return ( buffer == rhs.buffer )
16613 && ( bindCount == rhs.bindCount )
16614 && ( pBinds == rhs.pBinds );
16615 }
16616
16617 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
16618 {
16619 return !operator==( rhs );
16620 }
16621
16622 Buffer buffer;
16623 uint32_t bindCount;
16624 const SparseMemoryBind* pBinds;
16625 };
16626 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
16627
16628 struct SparseImageOpaqueMemoryBindInfo
16629 {
16630 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
16631 : image( image_ )
16632 , bindCount( bindCount_ )
16633 , pBinds( pBinds_ )
16634 {
16635 }
16636
16637 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
16638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016639 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016640 }
16641
16642 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
16643 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016644 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016645 return *this;
16646 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016647 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
16648 {
16649 image = image_;
16650 return *this;
16651 }
16652
16653 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16654 {
16655 bindCount = bindCount_;
16656 return *this;
16657 }
16658
16659 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
16660 {
16661 pBinds = pBinds_;
16662 return *this;
16663 }
16664
16665 operator const VkSparseImageOpaqueMemoryBindInfo&() const
16666 {
16667 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
16668 }
16669
16670 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
16671 {
16672 return ( image == rhs.image )
16673 && ( bindCount == rhs.bindCount )
16674 && ( pBinds == rhs.pBinds );
16675 }
16676
16677 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
16678 {
16679 return !operator==( rhs );
16680 }
16681
16682 Image image;
16683 uint32_t bindCount;
16684 const SparseMemoryBind* pBinds;
16685 };
16686 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
16687
16688 struct SparseImageMemoryBindInfo
16689 {
16690 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
16691 : image( image_ )
16692 , bindCount( bindCount_ )
16693 , pBinds( pBinds_ )
16694 {
16695 }
16696
16697 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
16698 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016699 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016700 }
16701
16702 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
16703 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016704 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016705 return *this;
16706 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016707 SparseImageMemoryBindInfo& setImage( Image image_ )
16708 {
16709 image = image_;
16710 return *this;
16711 }
16712
16713 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16714 {
16715 bindCount = bindCount_;
16716 return *this;
16717 }
16718
16719 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
16720 {
16721 pBinds = pBinds_;
16722 return *this;
16723 }
16724
16725 operator const VkSparseImageMemoryBindInfo&() const
16726 {
16727 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
16728 }
16729
16730 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
16731 {
16732 return ( image == rhs.image )
16733 && ( bindCount == rhs.bindCount )
16734 && ( pBinds == rhs.pBinds );
16735 }
16736
16737 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
16738 {
16739 return !operator==( rhs );
16740 }
16741
16742 Image image;
16743 uint32_t bindCount;
16744 const SparseImageMemoryBind* pBinds;
16745 };
16746 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
16747
16748 struct BindSparseInfo
16749 {
16750 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 )
16751 : sType( StructureType::eBindSparseInfo )
16752 , pNext( nullptr )
16753 , waitSemaphoreCount( waitSemaphoreCount_ )
16754 , pWaitSemaphores( pWaitSemaphores_ )
16755 , bufferBindCount( bufferBindCount_ )
16756 , pBufferBinds( pBufferBinds_ )
16757 , imageOpaqueBindCount( imageOpaqueBindCount_ )
16758 , pImageOpaqueBinds( pImageOpaqueBinds_ )
16759 , imageBindCount( imageBindCount_ )
16760 , pImageBinds( pImageBinds_ )
16761 , signalSemaphoreCount( signalSemaphoreCount_ )
16762 , pSignalSemaphores( pSignalSemaphores_ )
16763 {
16764 }
16765
16766 BindSparseInfo( VkBindSparseInfo const & rhs )
16767 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016768 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016769 }
16770
16771 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
16772 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016773 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016774 return *this;
16775 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016776 BindSparseInfo& setPNext( const void* pNext_ )
16777 {
16778 pNext = pNext_;
16779 return *this;
16780 }
16781
16782 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
16783 {
16784 waitSemaphoreCount = waitSemaphoreCount_;
16785 return *this;
16786 }
16787
16788 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
16789 {
16790 pWaitSemaphores = pWaitSemaphores_;
16791 return *this;
16792 }
16793
16794 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
16795 {
16796 bufferBindCount = bufferBindCount_;
16797 return *this;
16798 }
16799
16800 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
16801 {
16802 pBufferBinds = pBufferBinds_;
16803 return *this;
16804 }
16805
16806 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
16807 {
16808 imageOpaqueBindCount = imageOpaqueBindCount_;
16809 return *this;
16810 }
16811
16812 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
16813 {
16814 pImageOpaqueBinds = pImageOpaqueBinds_;
16815 return *this;
16816 }
16817
16818 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
16819 {
16820 imageBindCount = imageBindCount_;
16821 return *this;
16822 }
16823
16824 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
16825 {
16826 pImageBinds = pImageBinds_;
16827 return *this;
16828 }
16829
16830 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
16831 {
16832 signalSemaphoreCount = signalSemaphoreCount_;
16833 return *this;
16834 }
16835
16836 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
16837 {
16838 pSignalSemaphores = pSignalSemaphores_;
16839 return *this;
16840 }
16841
16842 operator const VkBindSparseInfo&() const
16843 {
16844 return *reinterpret_cast<const VkBindSparseInfo*>(this);
16845 }
16846
16847 bool operator==( BindSparseInfo const& rhs ) const
16848 {
16849 return ( sType == rhs.sType )
16850 && ( pNext == rhs.pNext )
16851 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
16852 && ( pWaitSemaphores == rhs.pWaitSemaphores )
16853 && ( bufferBindCount == rhs.bufferBindCount )
16854 && ( pBufferBinds == rhs.pBufferBinds )
16855 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
16856 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
16857 && ( imageBindCount == rhs.imageBindCount )
16858 && ( pImageBinds == rhs.pImageBinds )
16859 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
16860 && ( pSignalSemaphores == rhs.pSignalSemaphores );
16861 }
16862
16863 bool operator!=( BindSparseInfo const& rhs ) const
16864 {
16865 return !operator==( rhs );
16866 }
16867
16868 private:
16869 StructureType sType;
16870
16871 public:
16872 const void* pNext;
16873 uint32_t waitSemaphoreCount;
16874 const Semaphore* pWaitSemaphores;
16875 uint32_t bufferBindCount;
16876 const SparseBufferMemoryBindInfo* pBufferBinds;
16877 uint32_t imageOpaqueBindCount;
16878 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
16879 uint32_t imageBindCount;
16880 const SparseImageMemoryBindInfo* pImageBinds;
16881 uint32_t signalSemaphoreCount;
16882 const Semaphore* pSignalSemaphores;
16883 };
16884 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
16885
16886 enum class PipelineStageFlagBits
16887 {
16888 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
16889 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
16890 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
16891 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
16892 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
16893 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
16894 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
16895 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
16896 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
16897 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
16898 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
16899 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
16900 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
16901 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
16902 eHost = VK_PIPELINE_STAGE_HOST_BIT,
16903 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016904 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
16905 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016906 };
16907
16908 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
16909
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016910 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016911 {
16912 return PipelineStageFlags( bit0 ) | bit1;
16913 }
16914
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016915 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
16916 {
16917 return ~( PipelineStageFlags( bits ) );
16918 }
16919
16920 template <> struct FlagTraits<PipelineStageFlagBits>
16921 {
16922 enum
16923 {
16924 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)
16925 };
16926 };
16927
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016928 enum class CommandPoolCreateFlagBits
16929 {
16930 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
16931 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
16932 };
16933
16934 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
16935
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016936 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016937 {
16938 return CommandPoolCreateFlags( bit0 ) | bit1;
16939 }
16940
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016941 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
16942 {
16943 return ~( CommandPoolCreateFlags( bits ) );
16944 }
16945
16946 template <> struct FlagTraits<CommandPoolCreateFlagBits>
16947 {
16948 enum
16949 {
16950 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
16951 };
16952 };
16953
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016954 struct CommandPoolCreateInfo
16955 {
16956 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
16957 : sType( StructureType::eCommandPoolCreateInfo )
16958 , pNext( nullptr )
16959 , flags( flags_ )
16960 , queueFamilyIndex( queueFamilyIndex_ )
16961 {
16962 }
16963
16964 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
16965 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016966 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016967 }
16968
16969 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
16970 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016971 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016972 return *this;
16973 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016974 CommandPoolCreateInfo& setPNext( const void* pNext_ )
16975 {
16976 pNext = pNext_;
16977 return *this;
16978 }
16979
16980 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
16981 {
16982 flags = flags_;
16983 return *this;
16984 }
16985
16986 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
16987 {
16988 queueFamilyIndex = queueFamilyIndex_;
16989 return *this;
16990 }
16991
16992 operator const VkCommandPoolCreateInfo&() const
16993 {
16994 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
16995 }
16996
16997 bool operator==( CommandPoolCreateInfo const& rhs ) const
16998 {
16999 return ( sType == rhs.sType )
17000 && ( pNext == rhs.pNext )
17001 && ( flags == rhs.flags )
17002 && ( queueFamilyIndex == rhs.queueFamilyIndex );
17003 }
17004
17005 bool operator!=( CommandPoolCreateInfo const& rhs ) const
17006 {
17007 return !operator==( rhs );
17008 }
17009
17010 private:
17011 StructureType sType;
17012
17013 public:
17014 const void* pNext;
17015 CommandPoolCreateFlags flags;
17016 uint32_t queueFamilyIndex;
17017 };
17018 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
17019
17020 enum class CommandPoolResetFlagBits
17021 {
17022 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
17023 };
17024
17025 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
17026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017027 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017028 {
17029 return CommandPoolResetFlags( bit0 ) | bit1;
17030 }
17031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017032 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
17033 {
17034 return ~( CommandPoolResetFlags( bits ) );
17035 }
17036
17037 template <> struct FlagTraits<CommandPoolResetFlagBits>
17038 {
17039 enum
17040 {
17041 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
17042 };
17043 };
17044
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017045 enum class CommandBufferResetFlagBits
17046 {
17047 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
17048 };
17049
17050 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
17051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017052 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017053 {
17054 return CommandBufferResetFlags( bit0 ) | bit1;
17055 }
17056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017057 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
17058 {
17059 return ~( CommandBufferResetFlags( bits ) );
17060 }
17061
17062 template <> struct FlagTraits<CommandBufferResetFlagBits>
17063 {
17064 enum
17065 {
17066 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
17067 };
17068 };
17069
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017070 enum class SampleCountFlagBits
17071 {
17072 e1 = VK_SAMPLE_COUNT_1_BIT,
17073 e2 = VK_SAMPLE_COUNT_2_BIT,
17074 e4 = VK_SAMPLE_COUNT_4_BIT,
17075 e8 = VK_SAMPLE_COUNT_8_BIT,
17076 e16 = VK_SAMPLE_COUNT_16_BIT,
17077 e32 = VK_SAMPLE_COUNT_32_BIT,
17078 e64 = VK_SAMPLE_COUNT_64_BIT
17079 };
17080
17081 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
17082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017083 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017084 {
17085 return SampleCountFlags( bit0 ) | bit1;
17086 }
17087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017088 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
17089 {
17090 return ~( SampleCountFlags( bits ) );
17091 }
17092
17093 template <> struct FlagTraits<SampleCountFlagBits>
17094 {
17095 enum
17096 {
17097 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
17098 };
17099 };
17100
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017101 struct ImageFormatProperties
17102 {
17103 operator const VkImageFormatProperties&() const
17104 {
17105 return *reinterpret_cast<const VkImageFormatProperties*>(this);
17106 }
17107
17108 bool operator==( ImageFormatProperties const& rhs ) const
17109 {
17110 return ( maxExtent == rhs.maxExtent )
17111 && ( maxMipLevels == rhs.maxMipLevels )
17112 && ( maxArrayLayers == rhs.maxArrayLayers )
17113 && ( sampleCounts == rhs.sampleCounts )
17114 && ( maxResourceSize == rhs.maxResourceSize );
17115 }
17116
17117 bool operator!=( ImageFormatProperties const& rhs ) const
17118 {
17119 return !operator==( rhs );
17120 }
17121
17122 Extent3D maxExtent;
17123 uint32_t maxMipLevels;
17124 uint32_t maxArrayLayers;
17125 SampleCountFlags sampleCounts;
17126 DeviceSize maxResourceSize;
17127 };
17128 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
17129
17130 struct ImageCreateInfo
17131 {
17132 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 )
17133 : sType( StructureType::eImageCreateInfo )
17134 , pNext( nullptr )
17135 , flags( flags_ )
17136 , imageType( imageType_ )
17137 , format( format_ )
17138 , extent( extent_ )
17139 , mipLevels( mipLevels_ )
17140 , arrayLayers( arrayLayers_ )
17141 , samples( samples_ )
17142 , tiling( tiling_ )
17143 , usage( usage_ )
17144 , sharingMode( sharingMode_ )
17145 , queueFamilyIndexCount( queueFamilyIndexCount_ )
17146 , pQueueFamilyIndices( pQueueFamilyIndices_ )
17147 , initialLayout( initialLayout_ )
17148 {
17149 }
17150
17151 ImageCreateInfo( VkImageCreateInfo const & rhs )
17152 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017153 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017154 }
17155
17156 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
17157 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017158 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017159 return *this;
17160 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017161 ImageCreateInfo& setPNext( const void* pNext_ )
17162 {
17163 pNext = pNext_;
17164 return *this;
17165 }
17166
17167 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
17168 {
17169 flags = flags_;
17170 return *this;
17171 }
17172
17173 ImageCreateInfo& setImageType( ImageType imageType_ )
17174 {
17175 imageType = imageType_;
17176 return *this;
17177 }
17178
17179 ImageCreateInfo& setFormat( Format format_ )
17180 {
17181 format = format_;
17182 return *this;
17183 }
17184
17185 ImageCreateInfo& setExtent( Extent3D extent_ )
17186 {
17187 extent = extent_;
17188 return *this;
17189 }
17190
17191 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
17192 {
17193 mipLevels = mipLevels_;
17194 return *this;
17195 }
17196
17197 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
17198 {
17199 arrayLayers = arrayLayers_;
17200 return *this;
17201 }
17202
17203 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
17204 {
17205 samples = samples_;
17206 return *this;
17207 }
17208
17209 ImageCreateInfo& setTiling( ImageTiling tiling_ )
17210 {
17211 tiling = tiling_;
17212 return *this;
17213 }
17214
17215 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
17216 {
17217 usage = usage_;
17218 return *this;
17219 }
17220
17221 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
17222 {
17223 sharingMode = sharingMode_;
17224 return *this;
17225 }
17226
17227 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
17228 {
17229 queueFamilyIndexCount = queueFamilyIndexCount_;
17230 return *this;
17231 }
17232
17233 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
17234 {
17235 pQueueFamilyIndices = pQueueFamilyIndices_;
17236 return *this;
17237 }
17238
17239 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
17240 {
17241 initialLayout = initialLayout_;
17242 return *this;
17243 }
17244
17245 operator const VkImageCreateInfo&() const
17246 {
17247 return *reinterpret_cast<const VkImageCreateInfo*>(this);
17248 }
17249
17250 bool operator==( ImageCreateInfo const& rhs ) const
17251 {
17252 return ( sType == rhs.sType )
17253 && ( pNext == rhs.pNext )
17254 && ( flags == rhs.flags )
17255 && ( imageType == rhs.imageType )
17256 && ( format == rhs.format )
17257 && ( extent == rhs.extent )
17258 && ( mipLevels == rhs.mipLevels )
17259 && ( arrayLayers == rhs.arrayLayers )
17260 && ( samples == rhs.samples )
17261 && ( tiling == rhs.tiling )
17262 && ( usage == rhs.usage )
17263 && ( sharingMode == rhs.sharingMode )
17264 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
17265 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
17266 && ( initialLayout == rhs.initialLayout );
17267 }
17268
17269 bool operator!=( ImageCreateInfo const& rhs ) const
17270 {
17271 return !operator==( rhs );
17272 }
17273
17274 private:
17275 StructureType sType;
17276
17277 public:
17278 const void* pNext;
17279 ImageCreateFlags flags;
17280 ImageType imageType;
17281 Format format;
17282 Extent3D extent;
17283 uint32_t mipLevels;
17284 uint32_t arrayLayers;
17285 SampleCountFlagBits samples;
17286 ImageTiling tiling;
17287 ImageUsageFlags usage;
17288 SharingMode sharingMode;
17289 uint32_t queueFamilyIndexCount;
17290 const uint32_t* pQueueFamilyIndices;
17291 ImageLayout initialLayout;
17292 };
17293 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
17294
17295 struct PipelineMultisampleStateCreateInfo
17296 {
17297 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
17298 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
17299 , pNext( nullptr )
17300 , flags( flags_ )
17301 , rasterizationSamples( rasterizationSamples_ )
17302 , sampleShadingEnable( sampleShadingEnable_ )
17303 , minSampleShading( minSampleShading_ )
17304 , pSampleMask( pSampleMask_ )
17305 , alphaToCoverageEnable( alphaToCoverageEnable_ )
17306 , alphaToOneEnable( alphaToOneEnable_ )
17307 {
17308 }
17309
17310 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
17311 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017312 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017313 }
17314
17315 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
17316 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017317 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017318 return *this;
17319 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017320 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
17321 {
17322 pNext = pNext_;
17323 return *this;
17324 }
17325
17326 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
17327 {
17328 flags = flags_;
17329 return *this;
17330 }
17331
17332 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
17333 {
17334 rasterizationSamples = rasterizationSamples_;
17335 return *this;
17336 }
17337
17338 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
17339 {
17340 sampleShadingEnable = sampleShadingEnable_;
17341 return *this;
17342 }
17343
17344 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
17345 {
17346 minSampleShading = minSampleShading_;
17347 return *this;
17348 }
17349
17350 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
17351 {
17352 pSampleMask = pSampleMask_;
17353 return *this;
17354 }
17355
17356 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
17357 {
17358 alphaToCoverageEnable = alphaToCoverageEnable_;
17359 return *this;
17360 }
17361
17362 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
17363 {
17364 alphaToOneEnable = alphaToOneEnable_;
17365 return *this;
17366 }
17367
17368 operator const VkPipelineMultisampleStateCreateInfo&() const
17369 {
17370 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
17371 }
17372
17373 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
17374 {
17375 return ( sType == rhs.sType )
17376 && ( pNext == rhs.pNext )
17377 && ( flags == rhs.flags )
17378 && ( rasterizationSamples == rhs.rasterizationSamples )
17379 && ( sampleShadingEnable == rhs.sampleShadingEnable )
17380 && ( minSampleShading == rhs.minSampleShading )
17381 && ( pSampleMask == rhs.pSampleMask )
17382 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
17383 && ( alphaToOneEnable == rhs.alphaToOneEnable );
17384 }
17385
17386 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
17387 {
17388 return !operator==( rhs );
17389 }
17390
17391 private:
17392 StructureType sType;
17393
17394 public:
17395 const void* pNext;
17396 PipelineMultisampleStateCreateFlags flags;
17397 SampleCountFlagBits rasterizationSamples;
17398 Bool32 sampleShadingEnable;
17399 float minSampleShading;
17400 const SampleMask* pSampleMask;
17401 Bool32 alphaToCoverageEnable;
17402 Bool32 alphaToOneEnable;
17403 };
17404 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
17405
17406 struct GraphicsPipelineCreateInfo
17407 {
17408 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 )
17409 : sType( StructureType::eGraphicsPipelineCreateInfo )
17410 , pNext( nullptr )
17411 , flags( flags_ )
17412 , stageCount( stageCount_ )
17413 , pStages( pStages_ )
17414 , pVertexInputState( pVertexInputState_ )
17415 , pInputAssemblyState( pInputAssemblyState_ )
17416 , pTessellationState( pTessellationState_ )
17417 , pViewportState( pViewportState_ )
17418 , pRasterizationState( pRasterizationState_ )
17419 , pMultisampleState( pMultisampleState_ )
17420 , pDepthStencilState( pDepthStencilState_ )
17421 , pColorBlendState( pColorBlendState_ )
17422 , pDynamicState( pDynamicState_ )
17423 , layout( layout_ )
17424 , renderPass( renderPass_ )
17425 , subpass( subpass_ )
17426 , basePipelineHandle( basePipelineHandle_ )
17427 , basePipelineIndex( basePipelineIndex_ )
17428 {
17429 }
17430
17431 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
17432 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017433 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017434 }
17435
17436 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
17437 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017438 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017439 return *this;
17440 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017441 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
17442 {
17443 pNext = pNext_;
17444 return *this;
17445 }
17446
17447 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
17448 {
17449 flags = flags_;
17450 return *this;
17451 }
17452
17453 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
17454 {
17455 stageCount = stageCount_;
17456 return *this;
17457 }
17458
17459 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
17460 {
17461 pStages = pStages_;
17462 return *this;
17463 }
17464
17465 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
17466 {
17467 pVertexInputState = pVertexInputState_;
17468 return *this;
17469 }
17470
17471 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
17472 {
17473 pInputAssemblyState = pInputAssemblyState_;
17474 return *this;
17475 }
17476
17477 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
17478 {
17479 pTessellationState = pTessellationState_;
17480 return *this;
17481 }
17482
17483 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
17484 {
17485 pViewportState = pViewportState_;
17486 return *this;
17487 }
17488
17489 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
17490 {
17491 pRasterizationState = pRasterizationState_;
17492 return *this;
17493 }
17494
17495 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
17496 {
17497 pMultisampleState = pMultisampleState_;
17498 return *this;
17499 }
17500
17501 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
17502 {
17503 pDepthStencilState = pDepthStencilState_;
17504 return *this;
17505 }
17506
17507 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
17508 {
17509 pColorBlendState = pColorBlendState_;
17510 return *this;
17511 }
17512
17513 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
17514 {
17515 pDynamicState = pDynamicState_;
17516 return *this;
17517 }
17518
17519 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
17520 {
17521 layout = layout_;
17522 return *this;
17523 }
17524
17525 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
17526 {
17527 renderPass = renderPass_;
17528 return *this;
17529 }
17530
17531 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
17532 {
17533 subpass = subpass_;
17534 return *this;
17535 }
17536
17537 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
17538 {
17539 basePipelineHandle = basePipelineHandle_;
17540 return *this;
17541 }
17542
17543 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
17544 {
17545 basePipelineIndex = basePipelineIndex_;
17546 return *this;
17547 }
17548
17549 operator const VkGraphicsPipelineCreateInfo&() const
17550 {
17551 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
17552 }
17553
17554 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
17555 {
17556 return ( sType == rhs.sType )
17557 && ( pNext == rhs.pNext )
17558 && ( flags == rhs.flags )
17559 && ( stageCount == rhs.stageCount )
17560 && ( pStages == rhs.pStages )
17561 && ( pVertexInputState == rhs.pVertexInputState )
17562 && ( pInputAssemblyState == rhs.pInputAssemblyState )
17563 && ( pTessellationState == rhs.pTessellationState )
17564 && ( pViewportState == rhs.pViewportState )
17565 && ( pRasterizationState == rhs.pRasterizationState )
17566 && ( pMultisampleState == rhs.pMultisampleState )
17567 && ( pDepthStencilState == rhs.pDepthStencilState )
17568 && ( pColorBlendState == rhs.pColorBlendState )
17569 && ( pDynamicState == rhs.pDynamicState )
17570 && ( layout == rhs.layout )
17571 && ( renderPass == rhs.renderPass )
17572 && ( subpass == rhs.subpass )
17573 && ( basePipelineHandle == rhs.basePipelineHandle )
17574 && ( basePipelineIndex == rhs.basePipelineIndex );
17575 }
17576
17577 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
17578 {
17579 return !operator==( rhs );
17580 }
17581
17582 private:
17583 StructureType sType;
17584
17585 public:
17586 const void* pNext;
17587 PipelineCreateFlags flags;
17588 uint32_t stageCount;
17589 const PipelineShaderStageCreateInfo* pStages;
17590 const PipelineVertexInputStateCreateInfo* pVertexInputState;
17591 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
17592 const PipelineTessellationStateCreateInfo* pTessellationState;
17593 const PipelineViewportStateCreateInfo* pViewportState;
17594 const PipelineRasterizationStateCreateInfo* pRasterizationState;
17595 const PipelineMultisampleStateCreateInfo* pMultisampleState;
17596 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
17597 const PipelineColorBlendStateCreateInfo* pColorBlendState;
17598 const PipelineDynamicStateCreateInfo* pDynamicState;
17599 PipelineLayout layout;
17600 RenderPass renderPass;
17601 uint32_t subpass;
17602 Pipeline basePipelineHandle;
17603 int32_t basePipelineIndex;
17604 };
17605 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
17606
17607 struct PhysicalDeviceLimits
17608 {
17609 operator const VkPhysicalDeviceLimits&() const
17610 {
17611 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
17612 }
17613
17614 bool operator==( PhysicalDeviceLimits const& rhs ) const
17615 {
17616 return ( maxImageDimension1D == rhs.maxImageDimension1D )
17617 && ( maxImageDimension2D == rhs.maxImageDimension2D )
17618 && ( maxImageDimension3D == rhs.maxImageDimension3D )
17619 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
17620 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17621 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
17622 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
17623 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
17624 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
17625 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
17626 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
17627 && ( bufferImageGranularity == rhs.bufferImageGranularity )
17628 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
17629 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
17630 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
17631 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
17632 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
17633 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
17634 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
17635 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
17636 && ( maxPerStageResources == rhs.maxPerStageResources )
17637 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
17638 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
17639 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
17640 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
17641 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
17642 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
17643 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
17644 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
17645 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
17646 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
17647 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
17648 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
17649 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
17650 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
17651 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
17652 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
17653 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
17654 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
17655 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
17656 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
17657 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
17658 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
17659 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
17660 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
17661 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
17662 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
17663 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
17664 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
17665 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
17666 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
17667 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
17668 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
17669 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
17670 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
17671 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
17672 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
17673 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
17674 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
17675 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
17676 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
17677 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
17678 && ( maxViewports == rhs.maxViewports )
17679 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
17680 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
17681 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
17682 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
17683 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
17684 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
17685 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
17686 && ( minTexelOffset == rhs.minTexelOffset )
17687 && ( maxTexelOffset == rhs.maxTexelOffset )
17688 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
17689 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
17690 && ( minInterpolationOffset == rhs.minInterpolationOffset )
17691 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
17692 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
17693 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
17694 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
17695 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
17696 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
17697 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
17698 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
17699 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
17700 && ( maxColorAttachments == rhs.maxColorAttachments )
17701 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
17702 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
17703 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
17704 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
17705 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
17706 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
17707 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
17708 && ( timestampPeriod == rhs.timestampPeriod )
17709 && ( maxClipDistances == rhs.maxClipDistances )
17710 && ( maxCullDistances == rhs.maxCullDistances )
17711 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
17712 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
17713 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
17714 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
17715 && ( pointSizeGranularity == rhs.pointSizeGranularity )
17716 && ( lineWidthGranularity == rhs.lineWidthGranularity )
17717 && ( strictLines == rhs.strictLines )
17718 && ( standardSampleLocations == rhs.standardSampleLocations )
17719 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
17720 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
17721 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
17722 }
17723
17724 bool operator!=( PhysicalDeviceLimits const& rhs ) const
17725 {
17726 return !operator==( rhs );
17727 }
17728
17729 uint32_t maxImageDimension1D;
17730 uint32_t maxImageDimension2D;
17731 uint32_t maxImageDimension3D;
17732 uint32_t maxImageDimensionCube;
17733 uint32_t maxImageArrayLayers;
17734 uint32_t maxTexelBufferElements;
17735 uint32_t maxUniformBufferRange;
17736 uint32_t maxStorageBufferRange;
17737 uint32_t maxPushConstantsSize;
17738 uint32_t maxMemoryAllocationCount;
17739 uint32_t maxSamplerAllocationCount;
17740 DeviceSize bufferImageGranularity;
17741 DeviceSize sparseAddressSpaceSize;
17742 uint32_t maxBoundDescriptorSets;
17743 uint32_t maxPerStageDescriptorSamplers;
17744 uint32_t maxPerStageDescriptorUniformBuffers;
17745 uint32_t maxPerStageDescriptorStorageBuffers;
17746 uint32_t maxPerStageDescriptorSampledImages;
17747 uint32_t maxPerStageDescriptorStorageImages;
17748 uint32_t maxPerStageDescriptorInputAttachments;
17749 uint32_t maxPerStageResources;
17750 uint32_t maxDescriptorSetSamplers;
17751 uint32_t maxDescriptorSetUniformBuffers;
17752 uint32_t maxDescriptorSetUniformBuffersDynamic;
17753 uint32_t maxDescriptorSetStorageBuffers;
17754 uint32_t maxDescriptorSetStorageBuffersDynamic;
17755 uint32_t maxDescriptorSetSampledImages;
17756 uint32_t maxDescriptorSetStorageImages;
17757 uint32_t maxDescriptorSetInputAttachments;
17758 uint32_t maxVertexInputAttributes;
17759 uint32_t maxVertexInputBindings;
17760 uint32_t maxVertexInputAttributeOffset;
17761 uint32_t maxVertexInputBindingStride;
17762 uint32_t maxVertexOutputComponents;
17763 uint32_t maxTessellationGenerationLevel;
17764 uint32_t maxTessellationPatchSize;
17765 uint32_t maxTessellationControlPerVertexInputComponents;
17766 uint32_t maxTessellationControlPerVertexOutputComponents;
17767 uint32_t maxTessellationControlPerPatchOutputComponents;
17768 uint32_t maxTessellationControlTotalOutputComponents;
17769 uint32_t maxTessellationEvaluationInputComponents;
17770 uint32_t maxTessellationEvaluationOutputComponents;
17771 uint32_t maxGeometryShaderInvocations;
17772 uint32_t maxGeometryInputComponents;
17773 uint32_t maxGeometryOutputComponents;
17774 uint32_t maxGeometryOutputVertices;
17775 uint32_t maxGeometryTotalOutputComponents;
17776 uint32_t maxFragmentInputComponents;
17777 uint32_t maxFragmentOutputAttachments;
17778 uint32_t maxFragmentDualSrcAttachments;
17779 uint32_t maxFragmentCombinedOutputResources;
17780 uint32_t maxComputeSharedMemorySize;
17781 uint32_t maxComputeWorkGroupCount[3];
17782 uint32_t maxComputeWorkGroupInvocations;
17783 uint32_t maxComputeWorkGroupSize[3];
17784 uint32_t subPixelPrecisionBits;
17785 uint32_t subTexelPrecisionBits;
17786 uint32_t mipmapPrecisionBits;
17787 uint32_t maxDrawIndexedIndexValue;
17788 uint32_t maxDrawIndirectCount;
17789 float maxSamplerLodBias;
17790 float maxSamplerAnisotropy;
17791 uint32_t maxViewports;
17792 uint32_t maxViewportDimensions[2];
17793 float viewportBoundsRange[2];
17794 uint32_t viewportSubPixelBits;
17795 size_t minMemoryMapAlignment;
17796 DeviceSize minTexelBufferOffsetAlignment;
17797 DeviceSize minUniformBufferOffsetAlignment;
17798 DeviceSize minStorageBufferOffsetAlignment;
17799 int32_t minTexelOffset;
17800 uint32_t maxTexelOffset;
17801 int32_t minTexelGatherOffset;
17802 uint32_t maxTexelGatherOffset;
17803 float minInterpolationOffset;
17804 float maxInterpolationOffset;
17805 uint32_t subPixelInterpolationOffsetBits;
17806 uint32_t maxFramebufferWidth;
17807 uint32_t maxFramebufferHeight;
17808 uint32_t maxFramebufferLayers;
17809 SampleCountFlags framebufferColorSampleCounts;
17810 SampleCountFlags framebufferDepthSampleCounts;
17811 SampleCountFlags framebufferStencilSampleCounts;
17812 SampleCountFlags framebufferNoAttachmentsSampleCounts;
17813 uint32_t maxColorAttachments;
17814 SampleCountFlags sampledImageColorSampleCounts;
17815 SampleCountFlags sampledImageIntegerSampleCounts;
17816 SampleCountFlags sampledImageDepthSampleCounts;
17817 SampleCountFlags sampledImageStencilSampleCounts;
17818 SampleCountFlags storageImageSampleCounts;
17819 uint32_t maxSampleMaskWords;
17820 Bool32 timestampComputeAndGraphics;
17821 float timestampPeriod;
17822 uint32_t maxClipDistances;
17823 uint32_t maxCullDistances;
17824 uint32_t maxCombinedClipAndCullDistances;
17825 uint32_t discreteQueuePriorities;
17826 float pointSizeRange[2];
17827 float lineWidthRange[2];
17828 float pointSizeGranularity;
17829 float lineWidthGranularity;
17830 Bool32 strictLines;
17831 Bool32 standardSampleLocations;
17832 DeviceSize optimalBufferCopyOffsetAlignment;
17833 DeviceSize optimalBufferCopyRowPitchAlignment;
17834 DeviceSize nonCoherentAtomSize;
17835 };
17836 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
17837
17838 struct PhysicalDeviceProperties
17839 {
17840 operator const VkPhysicalDeviceProperties&() const
17841 {
17842 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
17843 }
17844
17845 bool operator==( PhysicalDeviceProperties const& rhs ) const
17846 {
17847 return ( apiVersion == rhs.apiVersion )
17848 && ( driverVersion == rhs.driverVersion )
17849 && ( vendorID == rhs.vendorID )
17850 && ( deviceID == rhs.deviceID )
17851 && ( deviceType == rhs.deviceType )
17852 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
17853 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
17854 && ( limits == rhs.limits )
17855 && ( sparseProperties == rhs.sparseProperties );
17856 }
17857
17858 bool operator!=( PhysicalDeviceProperties const& rhs ) const
17859 {
17860 return !operator==( rhs );
17861 }
17862
17863 uint32_t apiVersion;
17864 uint32_t driverVersion;
17865 uint32_t vendorID;
17866 uint32_t deviceID;
17867 PhysicalDeviceType deviceType;
17868 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
17869 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
17870 PhysicalDeviceLimits limits;
17871 PhysicalDeviceSparseProperties sparseProperties;
17872 };
17873 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
17874
Mark Young39389872017-01-19 21:10:49 -070017875 struct PhysicalDeviceProperties2KHR
17876 {
17877 operator const VkPhysicalDeviceProperties2KHR&() const
17878 {
17879 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
17880 }
17881
17882 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
17883 {
17884 return ( sType == rhs.sType )
17885 && ( pNext == rhs.pNext )
17886 && ( properties == rhs.properties );
17887 }
17888
17889 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
17890 {
17891 return !operator==( rhs );
17892 }
17893
17894 private:
17895 StructureType sType;
17896
17897 public:
17898 void* pNext;
17899 PhysicalDeviceProperties properties;
17900 };
17901 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
17902
17903 struct ImageFormatProperties2KHR
17904 {
17905 operator const VkImageFormatProperties2KHR&() const
17906 {
17907 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
17908 }
17909
17910 bool operator==( ImageFormatProperties2KHR const& rhs ) const
17911 {
17912 return ( sType == rhs.sType )
17913 && ( pNext == rhs.pNext )
17914 && ( imageFormatProperties == rhs.imageFormatProperties );
17915 }
17916
17917 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
17918 {
17919 return !operator==( rhs );
17920 }
17921
17922 private:
17923 StructureType sType;
17924
17925 public:
17926 void* pNext;
17927 ImageFormatProperties imageFormatProperties;
17928 };
17929 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17930
17931 struct PhysicalDeviceSparseImageFormatInfo2KHR
17932 {
17933 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
17934 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
17935 , pNext( nullptr )
17936 , format( format_ )
17937 , type( type_ )
17938 , samples( samples_ )
17939 , usage( usage_ )
17940 , tiling( tiling_ )
17941 {
17942 }
17943
17944 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17945 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017946 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017947 }
17948
17949 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17950 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017951 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017952 return *this;
17953 }
Mark Young39389872017-01-19 21:10:49 -070017954 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
17955 {
17956 pNext = pNext_;
17957 return *this;
17958 }
17959
17960 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
17961 {
17962 format = format_;
17963 return *this;
17964 }
17965
17966 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
17967 {
17968 type = type_;
17969 return *this;
17970 }
17971
17972 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
17973 {
17974 samples = samples_;
17975 return *this;
17976 }
17977
17978 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
17979 {
17980 usage = usage_;
17981 return *this;
17982 }
17983
17984 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
17985 {
17986 tiling = tiling_;
17987 return *this;
17988 }
17989
17990 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
17991 {
17992 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
17993 }
17994
17995 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17996 {
17997 return ( sType == rhs.sType )
17998 && ( pNext == rhs.pNext )
17999 && ( format == rhs.format )
18000 && ( type == rhs.type )
18001 && ( samples == rhs.samples )
18002 && ( usage == rhs.usage )
18003 && ( tiling == rhs.tiling );
18004 }
18005
18006 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
18007 {
18008 return !operator==( rhs );
18009 }
18010
18011 private:
18012 StructureType sType;
18013
18014 public:
18015 const void* pNext;
18016 Format format;
18017 ImageType type;
18018 SampleCountFlagBits samples;
18019 ImageUsageFlags usage;
18020 ImageTiling tiling;
18021 };
18022 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
18023
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018024 enum class AttachmentDescriptionFlagBits
18025 {
18026 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
18027 };
18028
18029 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
18030
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018031 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018032 {
18033 return AttachmentDescriptionFlags( bit0 ) | bit1;
18034 }
18035
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018036 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
18037 {
18038 return ~( AttachmentDescriptionFlags( bits ) );
18039 }
18040
18041 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
18042 {
18043 enum
18044 {
18045 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
18046 };
18047 };
18048
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018049 struct AttachmentDescription
18050 {
18051 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 )
18052 : flags( flags_ )
18053 , format( format_ )
18054 , samples( samples_ )
18055 , loadOp( loadOp_ )
18056 , storeOp( storeOp_ )
18057 , stencilLoadOp( stencilLoadOp_ )
18058 , stencilStoreOp( stencilStoreOp_ )
18059 , initialLayout( initialLayout_ )
18060 , finalLayout( finalLayout_ )
18061 {
18062 }
18063
18064 AttachmentDescription( VkAttachmentDescription const & rhs )
18065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018066 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018067 }
18068
18069 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
18070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018071 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018072 return *this;
18073 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018074 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
18075 {
18076 flags = flags_;
18077 return *this;
18078 }
18079
18080 AttachmentDescription& setFormat( Format format_ )
18081 {
18082 format = format_;
18083 return *this;
18084 }
18085
18086 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
18087 {
18088 samples = samples_;
18089 return *this;
18090 }
18091
18092 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
18093 {
18094 loadOp = loadOp_;
18095 return *this;
18096 }
18097
18098 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
18099 {
18100 storeOp = storeOp_;
18101 return *this;
18102 }
18103
18104 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
18105 {
18106 stencilLoadOp = stencilLoadOp_;
18107 return *this;
18108 }
18109
18110 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
18111 {
18112 stencilStoreOp = stencilStoreOp_;
18113 return *this;
18114 }
18115
18116 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
18117 {
18118 initialLayout = initialLayout_;
18119 return *this;
18120 }
18121
18122 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
18123 {
18124 finalLayout = finalLayout_;
18125 return *this;
18126 }
18127
18128 operator const VkAttachmentDescription&() const
18129 {
18130 return *reinterpret_cast<const VkAttachmentDescription*>(this);
18131 }
18132
18133 bool operator==( AttachmentDescription const& rhs ) const
18134 {
18135 return ( flags == rhs.flags )
18136 && ( format == rhs.format )
18137 && ( samples == rhs.samples )
18138 && ( loadOp == rhs.loadOp )
18139 && ( storeOp == rhs.storeOp )
18140 && ( stencilLoadOp == rhs.stencilLoadOp )
18141 && ( stencilStoreOp == rhs.stencilStoreOp )
18142 && ( initialLayout == rhs.initialLayout )
18143 && ( finalLayout == rhs.finalLayout );
18144 }
18145
18146 bool operator!=( AttachmentDescription const& rhs ) const
18147 {
18148 return !operator==( rhs );
18149 }
18150
18151 AttachmentDescriptionFlags flags;
18152 Format format;
18153 SampleCountFlagBits samples;
18154 AttachmentLoadOp loadOp;
18155 AttachmentStoreOp storeOp;
18156 AttachmentLoadOp stencilLoadOp;
18157 AttachmentStoreOp stencilStoreOp;
18158 ImageLayout initialLayout;
18159 ImageLayout finalLayout;
18160 };
18161 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
18162
18163 enum class StencilFaceFlagBits
18164 {
18165 eFront = VK_STENCIL_FACE_FRONT_BIT,
18166 eBack = VK_STENCIL_FACE_BACK_BIT,
18167 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
18168 };
18169
18170 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
18171
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018172 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018173 {
18174 return StencilFaceFlags( bit0 ) | bit1;
18175 }
18176
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018177 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
18178 {
18179 return ~( StencilFaceFlags( bits ) );
18180 }
18181
18182 template <> struct FlagTraits<StencilFaceFlagBits>
18183 {
18184 enum
18185 {
18186 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
18187 };
18188 };
18189
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018190 enum class DescriptorPoolCreateFlagBits
18191 {
18192 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
18193 };
18194
18195 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
18196
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018197 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018198 {
18199 return DescriptorPoolCreateFlags( bit0 ) | bit1;
18200 }
18201
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018202 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
18203 {
18204 return ~( DescriptorPoolCreateFlags( bits ) );
18205 }
18206
18207 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
18208 {
18209 enum
18210 {
18211 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
18212 };
18213 };
18214
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018215 struct DescriptorPoolCreateInfo
18216 {
18217 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
18218 : sType( StructureType::eDescriptorPoolCreateInfo )
18219 , pNext( nullptr )
18220 , flags( flags_ )
18221 , maxSets( maxSets_ )
18222 , poolSizeCount( poolSizeCount_ )
18223 , pPoolSizes( pPoolSizes_ )
18224 {
18225 }
18226
18227 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
18228 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018229 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018230 }
18231
18232 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
18233 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018234 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018235 return *this;
18236 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018237 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
18238 {
18239 pNext = pNext_;
18240 return *this;
18241 }
18242
18243 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
18244 {
18245 flags = flags_;
18246 return *this;
18247 }
18248
18249 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
18250 {
18251 maxSets = maxSets_;
18252 return *this;
18253 }
18254
18255 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
18256 {
18257 poolSizeCount = poolSizeCount_;
18258 return *this;
18259 }
18260
18261 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
18262 {
18263 pPoolSizes = pPoolSizes_;
18264 return *this;
18265 }
18266
18267 operator const VkDescriptorPoolCreateInfo&() const
18268 {
18269 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
18270 }
18271
18272 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
18273 {
18274 return ( sType == rhs.sType )
18275 && ( pNext == rhs.pNext )
18276 && ( flags == rhs.flags )
18277 && ( maxSets == rhs.maxSets )
18278 && ( poolSizeCount == rhs.poolSizeCount )
18279 && ( pPoolSizes == rhs.pPoolSizes );
18280 }
18281
18282 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
18283 {
18284 return !operator==( rhs );
18285 }
18286
18287 private:
18288 StructureType sType;
18289
18290 public:
18291 const void* pNext;
18292 DescriptorPoolCreateFlags flags;
18293 uint32_t maxSets;
18294 uint32_t poolSizeCount;
18295 const DescriptorPoolSize* pPoolSizes;
18296 };
18297 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
18298
18299 enum class DependencyFlagBits
18300 {
Mark Young0f183a82017-02-28 09:58:04 -070018301 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
18302 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
18303 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018304 };
18305
18306 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
18307
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018308 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018309 {
18310 return DependencyFlags( bit0 ) | bit1;
18311 }
18312
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018313 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
18314 {
18315 return ~( DependencyFlags( bits ) );
18316 }
18317
18318 template <> struct FlagTraits<DependencyFlagBits>
18319 {
18320 enum
18321 {
Mark Young0f183a82017-02-28 09:58:04 -070018322 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018323 };
18324 };
18325
18326 struct SubpassDependency
18327 {
18328 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
18329 : srcSubpass( srcSubpass_ )
18330 , dstSubpass( dstSubpass_ )
18331 , srcStageMask( srcStageMask_ )
18332 , dstStageMask( dstStageMask_ )
18333 , srcAccessMask( srcAccessMask_ )
18334 , dstAccessMask( dstAccessMask_ )
18335 , dependencyFlags( dependencyFlags_ )
18336 {
18337 }
18338
18339 SubpassDependency( VkSubpassDependency const & rhs )
18340 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018341 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018342 }
18343
18344 SubpassDependency& operator=( VkSubpassDependency const & rhs )
18345 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018346 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018347 return *this;
18348 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018349 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
18350 {
18351 srcSubpass = srcSubpass_;
18352 return *this;
18353 }
18354
18355 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
18356 {
18357 dstSubpass = dstSubpass_;
18358 return *this;
18359 }
18360
18361 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
18362 {
18363 srcStageMask = srcStageMask_;
18364 return *this;
18365 }
18366
18367 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
18368 {
18369 dstStageMask = dstStageMask_;
18370 return *this;
18371 }
18372
18373 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
18374 {
18375 srcAccessMask = srcAccessMask_;
18376 return *this;
18377 }
18378
18379 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
18380 {
18381 dstAccessMask = dstAccessMask_;
18382 return *this;
18383 }
18384
18385 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
18386 {
18387 dependencyFlags = dependencyFlags_;
18388 return *this;
18389 }
18390
18391 operator const VkSubpassDependency&() const
18392 {
18393 return *reinterpret_cast<const VkSubpassDependency*>(this);
18394 }
18395
18396 bool operator==( SubpassDependency const& rhs ) const
18397 {
18398 return ( srcSubpass == rhs.srcSubpass )
18399 && ( dstSubpass == rhs.dstSubpass )
18400 && ( srcStageMask == rhs.srcStageMask )
18401 && ( dstStageMask == rhs.dstStageMask )
18402 && ( srcAccessMask == rhs.srcAccessMask )
18403 && ( dstAccessMask == rhs.dstAccessMask )
18404 && ( dependencyFlags == rhs.dependencyFlags );
18405 }
18406
18407 bool operator!=( SubpassDependency const& rhs ) const
18408 {
18409 return !operator==( rhs );
18410 }
18411
18412 uint32_t srcSubpass;
18413 uint32_t dstSubpass;
18414 PipelineStageFlags srcStageMask;
18415 PipelineStageFlags dstStageMask;
18416 AccessFlags srcAccessMask;
18417 AccessFlags dstAccessMask;
18418 DependencyFlags dependencyFlags;
18419 };
18420 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
18421
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018422 enum class PresentModeKHR
18423 {
18424 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
18425 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
18426 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060018427 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
18428 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
18429 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018430 };
18431
18432 enum class ColorSpaceKHR
18433 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060018434 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
18435 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
18436 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
18437 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
18438 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
18439 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
18440 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
18441 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
18442 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
18443 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
18444 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
18445 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
18446 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060018447 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
18448 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018449 };
18450
18451 struct SurfaceFormatKHR
18452 {
18453 operator const VkSurfaceFormatKHR&() const
18454 {
18455 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
18456 }
18457
18458 bool operator==( SurfaceFormatKHR const& rhs ) const
18459 {
18460 return ( format == rhs.format )
18461 && ( colorSpace == rhs.colorSpace );
18462 }
18463
18464 bool operator!=( SurfaceFormatKHR const& rhs ) const
18465 {
18466 return !operator==( rhs );
18467 }
18468
18469 Format format;
18470 ColorSpaceKHR colorSpace;
18471 };
18472 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
18473
Mark Lobodzinski54385432017-05-15 10:27:52 -060018474 struct SurfaceFormat2KHR
18475 {
18476 operator const VkSurfaceFormat2KHR&() const
18477 {
18478 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
18479 }
18480
18481 bool operator==( SurfaceFormat2KHR const& rhs ) const
18482 {
18483 return ( sType == rhs.sType )
18484 && ( pNext == rhs.pNext )
18485 && ( surfaceFormat == rhs.surfaceFormat );
18486 }
18487
18488 bool operator!=( SurfaceFormat2KHR const& rhs ) const
18489 {
18490 return !operator==( rhs );
18491 }
18492
18493 private:
18494 StructureType sType;
18495
18496 public:
18497 void* pNext;
18498 SurfaceFormatKHR surfaceFormat;
18499 };
18500 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
18501
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018502 enum class DisplayPlaneAlphaFlagBitsKHR
18503 {
18504 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
18505 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
18506 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
18507 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
18508 };
18509
18510 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
18511
18512 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
18513 {
18514 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
18515 }
18516
18517 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
18518 {
18519 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
18520 }
18521
18522 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
18523 {
18524 enum
18525 {
18526 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
18527 };
18528 };
18529
18530 struct DisplayPlaneCapabilitiesKHR
18531 {
18532 operator const VkDisplayPlaneCapabilitiesKHR&() const
18533 {
18534 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
18535 }
18536
18537 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
18538 {
18539 return ( supportedAlpha == rhs.supportedAlpha )
18540 && ( minSrcPosition == rhs.minSrcPosition )
18541 && ( maxSrcPosition == rhs.maxSrcPosition )
18542 && ( minSrcExtent == rhs.minSrcExtent )
18543 && ( maxSrcExtent == rhs.maxSrcExtent )
18544 && ( minDstPosition == rhs.minDstPosition )
18545 && ( maxDstPosition == rhs.maxDstPosition )
18546 && ( minDstExtent == rhs.minDstExtent )
18547 && ( maxDstExtent == rhs.maxDstExtent );
18548 }
18549
18550 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
18551 {
18552 return !operator==( rhs );
18553 }
18554
18555 DisplayPlaneAlphaFlagsKHR supportedAlpha;
18556 Offset2D minSrcPosition;
18557 Offset2D maxSrcPosition;
18558 Extent2D minSrcExtent;
18559 Extent2D maxSrcExtent;
18560 Offset2D minDstPosition;
18561 Offset2D maxDstPosition;
18562 Extent2D minDstExtent;
18563 Extent2D maxDstExtent;
18564 };
18565 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
18566
18567 enum class CompositeAlphaFlagBitsKHR
18568 {
18569 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
18570 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
18571 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
18572 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
18573 };
18574
18575 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
18576
18577 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
18578 {
18579 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
18580 }
18581
18582 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
18583 {
18584 return ~( CompositeAlphaFlagsKHR( bits ) );
18585 }
18586
18587 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
18588 {
18589 enum
18590 {
18591 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
18592 };
18593 };
18594
18595 enum class SurfaceTransformFlagBitsKHR
18596 {
18597 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
18598 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
18599 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
18600 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
18601 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
18602 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
18603 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
18604 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
18605 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
18606 };
18607
18608 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
18609
18610 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
18611 {
18612 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
18613 }
18614
18615 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
18616 {
18617 return ~( SurfaceTransformFlagsKHR( bits ) );
18618 }
18619
18620 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
18621 {
18622 enum
18623 {
18624 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)
18625 };
18626 };
18627
18628 struct DisplayPropertiesKHR
18629 {
18630 operator const VkDisplayPropertiesKHR&() const
18631 {
18632 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
18633 }
18634
18635 bool operator==( DisplayPropertiesKHR const& rhs ) const
18636 {
18637 return ( display == rhs.display )
18638 && ( displayName == rhs.displayName )
18639 && ( physicalDimensions == rhs.physicalDimensions )
18640 && ( physicalResolution == rhs.physicalResolution )
18641 && ( supportedTransforms == rhs.supportedTransforms )
18642 && ( planeReorderPossible == rhs.planeReorderPossible )
18643 && ( persistentContent == rhs.persistentContent );
18644 }
18645
18646 bool operator!=( DisplayPropertiesKHR const& rhs ) const
18647 {
18648 return !operator==( rhs );
18649 }
18650
18651 DisplayKHR display;
18652 const char* displayName;
18653 Extent2D physicalDimensions;
18654 Extent2D physicalResolution;
18655 SurfaceTransformFlagsKHR supportedTransforms;
18656 Bool32 planeReorderPossible;
18657 Bool32 persistentContent;
18658 };
18659 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
18660
18661 struct DisplaySurfaceCreateInfoKHR
18662 {
18663 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() )
18664 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
18665 , pNext( nullptr )
18666 , flags( flags_ )
18667 , displayMode( displayMode_ )
18668 , planeIndex( planeIndex_ )
18669 , planeStackIndex( planeStackIndex_ )
18670 , transform( transform_ )
18671 , globalAlpha( globalAlpha_ )
18672 , alphaMode( alphaMode_ )
18673 , imageExtent( imageExtent_ )
18674 {
18675 }
18676
18677 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
18678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018679 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018680 }
18681
18682 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
18683 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018684 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018685 return *this;
18686 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018687 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
18688 {
18689 pNext = pNext_;
18690 return *this;
18691 }
18692
18693 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
18694 {
18695 flags = flags_;
18696 return *this;
18697 }
18698
18699 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
18700 {
18701 displayMode = displayMode_;
18702 return *this;
18703 }
18704
18705 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
18706 {
18707 planeIndex = planeIndex_;
18708 return *this;
18709 }
18710
18711 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
18712 {
18713 planeStackIndex = planeStackIndex_;
18714 return *this;
18715 }
18716
18717 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
18718 {
18719 transform = transform_;
18720 return *this;
18721 }
18722
18723 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
18724 {
18725 globalAlpha = globalAlpha_;
18726 return *this;
18727 }
18728
18729 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
18730 {
18731 alphaMode = alphaMode_;
18732 return *this;
18733 }
18734
18735 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
18736 {
18737 imageExtent = imageExtent_;
18738 return *this;
18739 }
18740
18741 operator const VkDisplaySurfaceCreateInfoKHR&() const
18742 {
18743 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
18744 }
18745
18746 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
18747 {
18748 return ( sType == rhs.sType )
18749 && ( pNext == rhs.pNext )
18750 && ( flags == rhs.flags )
18751 && ( displayMode == rhs.displayMode )
18752 && ( planeIndex == rhs.planeIndex )
18753 && ( planeStackIndex == rhs.planeStackIndex )
18754 && ( transform == rhs.transform )
18755 && ( globalAlpha == rhs.globalAlpha )
18756 && ( alphaMode == rhs.alphaMode )
18757 && ( imageExtent == rhs.imageExtent );
18758 }
18759
18760 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
18761 {
18762 return !operator==( rhs );
18763 }
18764
18765 private:
18766 StructureType sType;
18767
18768 public:
18769 const void* pNext;
18770 DisplaySurfaceCreateFlagsKHR flags;
18771 DisplayModeKHR displayMode;
18772 uint32_t planeIndex;
18773 uint32_t planeStackIndex;
18774 SurfaceTransformFlagBitsKHR transform;
18775 float globalAlpha;
18776 DisplayPlaneAlphaFlagBitsKHR alphaMode;
18777 Extent2D imageExtent;
18778 };
18779 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
18780
18781 struct SurfaceCapabilitiesKHR
18782 {
18783 operator const VkSurfaceCapabilitiesKHR&() const
18784 {
18785 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
18786 }
18787
18788 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
18789 {
18790 return ( minImageCount == rhs.minImageCount )
18791 && ( maxImageCount == rhs.maxImageCount )
18792 && ( currentExtent == rhs.currentExtent )
18793 && ( minImageExtent == rhs.minImageExtent )
18794 && ( maxImageExtent == rhs.maxImageExtent )
18795 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18796 && ( supportedTransforms == rhs.supportedTransforms )
18797 && ( currentTransform == rhs.currentTransform )
18798 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
18799 && ( supportedUsageFlags == rhs.supportedUsageFlags );
18800 }
18801
18802 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
18803 {
18804 return !operator==( rhs );
18805 }
18806
18807 uint32_t minImageCount;
18808 uint32_t maxImageCount;
18809 Extent2D currentExtent;
18810 Extent2D minImageExtent;
18811 Extent2D maxImageExtent;
18812 uint32_t maxImageArrayLayers;
18813 SurfaceTransformFlagsKHR supportedTransforms;
18814 SurfaceTransformFlagBitsKHR currentTransform;
18815 CompositeAlphaFlagsKHR supportedCompositeAlpha;
18816 ImageUsageFlags supportedUsageFlags;
18817 };
18818 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
18819
Mark Lobodzinski54385432017-05-15 10:27:52 -060018820 struct SurfaceCapabilities2KHR
18821 {
18822 operator const VkSurfaceCapabilities2KHR&() const
18823 {
18824 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
18825 }
18826
18827 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
18828 {
18829 return ( sType == rhs.sType )
18830 && ( pNext == rhs.pNext )
18831 && ( surfaceCapabilities == rhs.surfaceCapabilities );
18832 }
18833
18834 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
18835 {
18836 return !operator==( rhs );
18837 }
18838
18839 private:
18840 StructureType sType;
18841
18842 public:
18843 void* pNext;
18844 SurfaceCapabilitiesKHR surfaceCapabilities;
18845 };
18846 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
18847
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018848 enum class DebugReportFlagBitsEXT
18849 {
18850 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
18851 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
18852 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
18853 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
18854 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
18855 };
18856
18857 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
18858
18859 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
18860 {
18861 return DebugReportFlagsEXT( bit0 ) | bit1;
18862 }
18863
18864 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
18865 {
18866 return ~( DebugReportFlagsEXT( bits ) );
18867 }
18868
18869 template <> struct FlagTraits<DebugReportFlagBitsEXT>
18870 {
18871 enum
18872 {
18873 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
18874 };
18875 };
18876
18877 struct DebugReportCallbackCreateInfoEXT
18878 {
18879 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
18880 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
18881 , pNext( nullptr )
18882 , flags( flags_ )
18883 , pfnCallback( pfnCallback_ )
18884 , pUserData( pUserData_ )
18885 {
18886 }
18887
18888 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
18889 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018890 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018891 }
18892
18893 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
18894 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018895 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018896 return *this;
18897 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018898 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
18899 {
18900 pNext = pNext_;
18901 return *this;
18902 }
18903
18904 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
18905 {
18906 flags = flags_;
18907 return *this;
18908 }
18909
18910 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
18911 {
18912 pfnCallback = pfnCallback_;
18913 return *this;
18914 }
18915
18916 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
18917 {
18918 pUserData = pUserData_;
18919 return *this;
18920 }
18921
18922 operator const VkDebugReportCallbackCreateInfoEXT&() const
18923 {
18924 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
18925 }
18926
18927 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
18928 {
18929 return ( sType == rhs.sType )
18930 && ( pNext == rhs.pNext )
18931 && ( flags == rhs.flags )
18932 && ( pfnCallback == rhs.pfnCallback )
18933 && ( pUserData == rhs.pUserData );
18934 }
18935
18936 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
18937 {
18938 return !operator==( rhs );
18939 }
18940
18941 private:
18942 StructureType sType;
18943
18944 public:
18945 const void* pNext;
18946 DebugReportFlagsEXT flags;
18947 PFN_vkDebugReportCallbackEXT pfnCallback;
18948 void* pUserData;
18949 };
18950 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
18951
18952 enum class DebugReportObjectTypeEXT
18953 {
18954 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
18955 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
18956 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
18957 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
18958 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
18959 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
18960 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
18961 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
18962 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
18963 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
18964 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
18965 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
18966 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
18967 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
18968 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
18969 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
18970 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
18971 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
18972 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
18973 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
18974 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
18975 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
18976 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
18977 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
18978 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
18979 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
18980 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
18981 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018982 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018983 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
18984 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
18985 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060018986 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -060018987 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018988 };
18989
18990 struct DebugMarkerObjectNameInfoEXT
18991 {
18992 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
18993 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
18994 , pNext( nullptr )
18995 , objectType( objectType_ )
18996 , object( object_ )
18997 , pObjectName( pObjectName_ )
18998 {
18999 }
19000
19001 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
19002 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019003 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019004 }
19005
19006 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
19007 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019008 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019009 return *this;
19010 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019011 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
19012 {
19013 pNext = pNext_;
19014 return *this;
19015 }
19016
19017 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
19018 {
19019 objectType = objectType_;
19020 return *this;
19021 }
19022
19023 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
19024 {
19025 object = object_;
19026 return *this;
19027 }
19028
19029 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
19030 {
19031 pObjectName = pObjectName_;
19032 return *this;
19033 }
19034
19035 operator const VkDebugMarkerObjectNameInfoEXT&() const
19036 {
19037 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
19038 }
19039
19040 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
19041 {
19042 return ( sType == rhs.sType )
19043 && ( pNext == rhs.pNext )
19044 && ( objectType == rhs.objectType )
19045 && ( object == rhs.object )
19046 && ( pObjectName == rhs.pObjectName );
19047 }
19048
19049 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
19050 {
19051 return !operator==( rhs );
19052 }
19053
19054 private:
19055 StructureType sType;
19056
19057 public:
19058 const void* pNext;
19059 DebugReportObjectTypeEXT objectType;
19060 uint64_t object;
19061 const char* pObjectName;
19062 };
19063 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
19064
19065 struct DebugMarkerObjectTagInfoEXT
19066 {
19067 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
19068 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
19069 , pNext( nullptr )
19070 , objectType( objectType_ )
19071 , object( object_ )
19072 , tagName( tagName_ )
19073 , tagSize( tagSize_ )
19074 , pTag( pTag_ )
19075 {
19076 }
19077
19078 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
19079 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019080 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019081 }
19082
19083 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
19084 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019085 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019086 return *this;
19087 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019088 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
19089 {
19090 pNext = pNext_;
19091 return *this;
19092 }
19093
19094 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
19095 {
19096 objectType = objectType_;
19097 return *this;
19098 }
19099
19100 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
19101 {
19102 object = object_;
19103 return *this;
19104 }
19105
19106 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
19107 {
19108 tagName = tagName_;
19109 return *this;
19110 }
19111
19112 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
19113 {
19114 tagSize = tagSize_;
19115 return *this;
19116 }
19117
19118 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
19119 {
19120 pTag = pTag_;
19121 return *this;
19122 }
19123
19124 operator const VkDebugMarkerObjectTagInfoEXT&() const
19125 {
19126 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
19127 }
19128
19129 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
19130 {
19131 return ( sType == rhs.sType )
19132 && ( pNext == rhs.pNext )
19133 && ( objectType == rhs.objectType )
19134 && ( object == rhs.object )
19135 && ( tagName == rhs.tagName )
19136 && ( tagSize == rhs.tagSize )
19137 && ( pTag == rhs.pTag );
19138 }
19139
19140 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
19141 {
19142 return !operator==( rhs );
19143 }
19144
19145 private:
19146 StructureType sType;
19147
19148 public:
19149 const void* pNext;
19150 DebugReportObjectTypeEXT objectType;
19151 uint64_t object;
19152 uint64_t tagName;
19153 size_t tagSize;
19154 const void* pTag;
19155 };
19156 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
19157
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019158 enum class RasterizationOrderAMD
19159 {
19160 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
19161 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
19162 };
19163
19164 struct PipelineRasterizationStateRasterizationOrderAMD
19165 {
19166 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
19167 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
19168 , pNext( nullptr )
19169 , rasterizationOrder( rasterizationOrder_ )
19170 {
19171 }
19172
19173 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
19174 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019175 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019176 }
19177
19178 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
19179 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019180 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019181 return *this;
19182 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019183 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
19184 {
19185 pNext = pNext_;
19186 return *this;
19187 }
19188
19189 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
19190 {
19191 rasterizationOrder = rasterizationOrder_;
19192 return *this;
19193 }
19194
19195 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
19196 {
19197 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
19198 }
19199
19200 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
19201 {
19202 return ( sType == rhs.sType )
19203 && ( pNext == rhs.pNext )
19204 && ( rasterizationOrder == rhs.rasterizationOrder );
19205 }
19206
19207 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
19208 {
19209 return !operator==( rhs );
19210 }
19211
19212 private:
19213 StructureType sType;
19214
19215 public:
19216 const void* pNext;
19217 RasterizationOrderAMD rasterizationOrder;
19218 };
19219 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
19220
19221 enum class ExternalMemoryHandleTypeFlagBitsNV
19222 {
19223 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
19224 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
19225 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
19226 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
19227 };
19228
19229 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
19230
19231 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
19232 {
19233 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
19234 }
19235
19236 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
19237 {
19238 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
19239 }
19240
19241 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
19242 {
19243 enum
19244 {
19245 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
19246 };
19247 };
19248
19249 struct ExternalMemoryImageCreateInfoNV
19250 {
19251 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
19252 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
19253 , pNext( nullptr )
19254 , handleTypes( handleTypes_ )
19255 {
19256 }
19257
19258 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
19259 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019260 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019261 }
19262
19263 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
19264 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019265 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019266 return *this;
19267 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019268 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
19269 {
19270 pNext = pNext_;
19271 return *this;
19272 }
19273
19274 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
19275 {
19276 handleTypes = handleTypes_;
19277 return *this;
19278 }
19279
19280 operator const VkExternalMemoryImageCreateInfoNV&() const
19281 {
19282 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
19283 }
19284
19285 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
19286 {
19287 return ( sType == rhs.sType )
19288 && ( pNext == rhs.pNext )
19289 && ( handleTypes == rhs.handleTypes );
19290 }
19291
19292 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
19293 {
19294 return !operator==( rhs );
19295 }
19296
19297 private:
19298 StructureType sType;
19299
19300 public:
19301 const void* pNext;
19302 ExternalMemoryHandleTypeFlagsNV handleTypes;
19303 };
19304 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
19305
19306 struct ExportMemoryAllocateInfoNV
19307 {
19308 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
19309 : sType( StructureType::eExportMemoryAllocateInfoNV )
19310 , pNext( nullptr )
19311 , handleTypes( handleTypes_ )
19312 {
19313 }
19314
19315 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
19316 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019317 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019318 }
19319
19320 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
19321 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019322 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019323 return *this;
19324 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019325 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
19326 {
19327 pNext = pNext_;
19328 return *this;
19329 }
19330
19331 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
19332 {
19333 handleTypes = handleTypes_;
19334 return *this;
19335 }
19336
19337 operator const VkExportMemoryAllocateInfoNV&() const
19338 {
19339 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
19340 }
19341
19342 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
19343 {
19344 return ( sType == rhs.sType )
19345 && ( pNext == rhs.pNext )
19346 && ( handleTypes == rhs.handleTypes );
19347 }
19348
19349 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
19350 {
19351 return !operator==( rhs );
19352 }
19353
19354 private:
19355 StructureType sType;
19356
19357 public:
19358 const void* pNext;
19359 ExternalMemoryHandleTypeFlagsNV handleTypes;
19360 };
19361 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
19362
19363#ifdef VK_USE_PLATFORM_WIN32_KHR
19364 struct ImportMemoryWin32HandleInfoNV
19365 {
19366 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
19367 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
19368 , pNext( nullptr )
19369 , handleType( handleType_ )
19370 , handle( handle_ )
19371 {
19372 }
19373
19374 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
19375 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019376 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019377 }
19378
19379 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
19380 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019381 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019382 return *this;
19383 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019384 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
19385 {
19386 pNext = pNext_;
19387 return *this;
19388 }
19389
19390 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
19391 {
19392 handleType = handleType_;
19393 return *this;
19394 }
19395
19396 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
19397 {
19398 handle = handle_;
19399 return *this;
19400 }
19401
19402 operator const VkImportMemoryWin32HandleInfoNV&() const
19403 {
19404 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
19405 }
19406
19407 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
19408 {
19409 return ( sType == rhs.sType )
19410 && ( pNext == rhs.pNext )
19411 && ( handleType == rhs.handleType )
19412 && ( handle == rhs.handle );
19413 }
19414
19415 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
19416 {
19417 return !operator==( rhs );
19418 }
19419
19420 private:
19421 StructureType sType;
19422
19423 public:
19424 const void* pNext;
19425 ExternalMemoryHandleTypeFlagsNV handleType;
19426 HANDLE handle;
19427 };
19428 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
19429#endif /*VK_USE_PLATFORM_WIN32_KHR*/
19430
19431 enum class ExternalMemoryFeatureFlagBitsNV
19432 {
19433 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
19434 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
19435 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
19436 };
19437
19438 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
19439
19440 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
19441 {
19442 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
19443 }
19444
19445 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
19446 {
19447 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
19448 }
19449
19450 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
19451 {
19452 enum
19453 {
19454 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
19455 };
19456 };
19457
19458 struct ExternalImageFormatPropertiesNV
19459 {
19460 operator const VkExternalImageFormatPropertiesNV&() const
19461 {
19462 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
19463 }
19464
19465 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
19466 {
19467 return ( imageFormatProperties == rhs.imageFormatProperties )
19468 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
19469 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
19470 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
19471 }
19472
19473 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
19474 {
19475 return !operator==( rhs );
19476 }
19477
19478 ImageFormatProperties imageFormatProperties;
19479 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
19480 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
19481 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
19482 };
19483 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
19484
19485 enum class ValidationCheckEXT
19486 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019487 eAll = VK_VALIDATION_CHECK_ALL_EXT,
19488 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019489 };
19490
19491 struct ValidationFlagsEXT
19492 {
19493 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
19494 : sType( StructureType::eValidationFlagsEXT )
19495 , pNext( nullptr )
19496 , disabledValidationCheckCount( disabledValidationCheckCount_ )
19497 , pDisabledValidationChecks( pDisabledValidationChecks_ )
19498 {
19499 }
19500
19501 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
19502 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019503 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019504 }
19505
19506 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
19507 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019508 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019509 return *this;
19510 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019511 ValidationFlagsEXT& setPNext( const void* pNext_ )
19512 {
19513 pNext = pNext_;
19514 return *this;
19515 }
19516
19517 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
19518 {
19519 disabledValidationCheckCount = disabledValidationCheckCount_;
19520 return *this;
19521 }
19522
19523 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
19524 {
19525 pDisabledValidationChecks = pDisabledValidationChecks_;
19526 return *this;
19527 }
19528
19529 operator const VkValidationFlagsEXT&() const
19530 {
19531 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
19532 }
19533
19534 bool operator==( ValidationFlagsEXT const& rhs ) const
19535 {
19536 return ( sType == rhs.sType )
19537 && ( pNext == rhs.pNext )
19538 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
19539 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
19540 }
19541
19542 bool operator!=( ValidationFlagsEXT const& rhs ) const
19543 {
19544 return !operator==( rhs );
19545 }
19546
19547 private:
19548 StructureType sType;
19549
19550 public:
19551 const void* pNext;
19552 uint32_t disabledValidationCheckCount;
19553 ValidationCheckEXT* pDisabledValidationChecks;
19554 };
19555 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
19556
19557 enum class IndirectCommandsLayoutUsageFlagBitsNVX
19558 {
19559 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
19560 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
19561 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
19562 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
19563 };
19564
19565 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
19566
19567 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
19568 {
19569 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
19570 }
19571
19572 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
19573 {
19574 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
19575 }
19576
19577 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
19578 {
19579 enum
19580 {
19581 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
19582 };
19583 };
19584
19585 enum class ObjectEntryUsageFlagBitsNVX
19586 {
19587 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
19588 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
19589 };
19590
19591 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
19592
19593 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
19594 {
19595 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
19596 }
19597
19598 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
19599 {
19600 return ~( ObjectEntryUsageFlagsNVX( bits ) );
19601 }
19602
19603 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
19604 {
19605 enum
19606 {
19607 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
19608 };
19609 };
19610
19611 enum class IndirectCommandsTokenTypeNVX
19612 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019613 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
19614 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
19615 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
19616 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
19617 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
19618 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
19619 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
19620 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019621 };
19622
19623 struct IndirectCommandsTokenNVX
19624 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019625 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019626 : tokenType( tokenType_ )
19627 , buffer( buffer_ )
19628 , offset( offset_ )
19629 {
19630 }
19631
19632 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
19633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019634 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019635 }
19636
19637 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
19638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019639 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019640 return *this;
19641 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019642 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
19643 {
19644 tokenType = tokenType_;
19645 return *this;
19646 }
19647
19648 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
19649 {
19650 buffer = buffer_;
19651 return *this;
19652 }
19653
19654 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
19655 {
19656 offset = offset_;
19657 return *this;
19658 }
19659
19660 operator const VkIndirectCommandsTokenNVX&() const
19661 {
19662 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
19663 }
19664
19665 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
19666 {
19667 return ( tokenType == rhs.tokenType )
19668 && ( buffer == rhs.buffer )
19669 && ( offset == rhs.offset );
19670 }
19671
19672 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
19673 {
19674 return !operator==( rhs );
19675 }
19676
19677 IndirectCommandsTokenTypeNVX tokenType;
19678 Buffer buffer;
19679 DeviceSize offset;
19680 };
19681 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
19682
19683 struct IndirectCommandsLayoutTokenNVX
19684 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019685 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019686 : tokenType( tokenType_ )
19687 , bindingUnit( bindingUnit_ )
19688 , dynamicCount( dynamicCount_ )
19689 , divisor( divisor_ )
19690 {
19691 }
19692
19693 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
19694 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019695 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019696 }
19697
19698 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
19699 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019700 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019701 return *this;
19702 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019703 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
19704 {
19705 tokenType = tokenType_;
19706 return *this;
19707 }
19708
19709 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
19710 {
19711 bindingUnit = bindingUnit_;
19712 return *this;
19713 }
19714
19715 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
19716 {
19717 dynamicCount = dynamicCount_;
19718 return *this;
19719 }
19720
19721 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
19722 {
19723 divisor = divisor_;
19724 return *this;
19725 }
19726
19727 operator const VkIndirectCommandsLayoutTokenNVX&() const
19728 {
19729 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
19730 }
19731
19732 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
19733 {
19734 return ( tokenType == rhs.tokenType )
19735 && ( bindingUnit == rhs.bindingUnit )
19736 && ( dynamicCount == rhs.dynamicCount )
19737 && ( divisor == rhs.divisor );
19738 }
19739
19740 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
19741 {
19742 return !operator==( rhs );
19743 }
19744
19745 IndirectCommandsTokenTypeNVX tokenType;
19746 uint32_t bindingUnit;
19747 uint32_t dynamicCount;
19748 uint32_t divisor;
19749 };
19750 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
19751
19752 struct IndirectCommandsLayoutCreateInfoNVX
19753 {
19754 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
19755 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
19756 , pNext( nullptr )
19757 , pipelineBindPoint( pipelineBindPoint_ )
19758 , flags( flags_ )
19759 , tokenCount( tokenCount_ )
19760 , pTokens( pTokens_ )
19761 {
19762 }
19763
19764 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
19765 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019766 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019767 }
19768
19769 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
19770 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019771 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019772 return *this;
19773 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019774 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
19775 {
19776 pNext = pNext_;
19777 return *this;
19778 }
19779
19780 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
19781 {
19782 pipelineBindPoint = pipelineBindPoint_;
19783 return *this;
19784 }
19785
19786 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
19787 {
19788 flags = flags_;
19789 return *this;
19790 }
19791
19792 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
19793 {
19794 tokenCount = tokenCount_;
19795 return *this;
19796 }
19797
19798 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
19799 {
19800 pTokens = pTokens_;
19801 return *this;
19802 }
19803
19804 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
19805 {
19806 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
19807 }
19808
19809 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
19810 {
19811 return ( sType == rhs.sType )
19812 && ( pNext == rhs.pNext )
19813 && ( pipelineBindPoint == rhs.pipelineBindPoint )
19814 && ( flags == rhs.flags )
19815 && ( tokenCount == rhs.tokenCount )
19816 && ( pTokens == rhs.pTokens );
19817 }
19818
19819 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
19820 {
19821 return !operator==( rhs );
19822 }
19823
19824 private:
19825 StructureType sType;
19826
19827 public:
19828 const void* pNext;
19829 PipelineBindPoint pipelineBindPoint;
19830 IndirectCommandsLayoutUsageFlagsNVX flags;
19831 uint32_t tokenCount;
19832 const IndirectCommandsLayoutTokenNVX* pTokens;
19833 };
19834 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
19835
19836 enum class ObjectEntryTypeNVX
19837 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019838 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
19839 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
19840 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
19841 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
19842 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019843 };
19844
19845 struct ObjectTableCreateInfoNVX
19846 {
19847 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 )
19848 : sType( StructureType::eObjectTableCreateInfoNVX )
19849 , pNext( nullptr )
19850 , objectCount( objectCount_ )
19851 , pObjectEntryTypes( pObjectEntryTypes_ )
19852 , pObjectEntryCounts( pObjectEntryCounts_ )
19853 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
19854 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
19855 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
19856 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
19857 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
19858 , maxPipelineLayouts( maxPipelineLayouts_ )
19859 {
19860 }
19861
19862 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
19863 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019864 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019865 }
19866
19867 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
19868 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019869 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019870 return *this;
19871 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019872 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
19873 {
19874 pNext = pNext_;
19875 return *this;
19876 }
19877
19878 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
19879 {
19880 objectCount = objectCount_;
19881 return *this;
19882 }
19883
19884 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
19885 {
19886 pObjectEntryTypes = pObjectEntryTypes_;
19887 return *this;
19888 }
19889
19890 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
19891 {
19892 pObjectEntryCounts = pObjectEntryCounts_;
19893 return *this;
19894 }
19895
19896 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
19897 {
19898 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
19899 return *this;
19900 }
19901
19902 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
19903 {
19904 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
19905 return *this;
19906 }
19907
19908 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
19909 {
19910 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
19911 return *this;
19912 }
19913
19914 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
19915 {
19916 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
19917 return *this;
19918 }
19919
19920 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
19921 {
19922 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
19923 return *this;
19924 }
19925
19926 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
19927 {
19928 maxPipelineLayouts = maxPipelineLayouts_;
19929 return *this;
19930 }
19931
19932 operator const VkObjectTableCreateInfoNVX&() const
19933 {
19934 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
19935 }
19936
19937 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
19938 {
19939 return ( sType == rhs.sType )
19940 && ( pNext == rhs.pNext )
19941 && ( objectCount == rhs.objectCount )
19942 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
19943 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
19944 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
19945 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
19946 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
19947 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
19948 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
19949 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
19950 }
19951
19952 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
19953 {
19954 return !operator==( rhs );
19955 }
19956
19957 private:
19958 StructureType sType;
19959
19960 public:
19961 const void* pNext;
19962 uint32_t objectCount;
19963 const ObjectEntryTypeNVX* pObjectEntryTypes;
19964 const uint32_t* pObjectEntryCounts;
19965 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
19966 uint32_t maxUniformBuffersPerDescriptor;
19967 uint32_t maxStorageBuffersPerDescriptor;
19968 uint32_t maxStorageImagesPerDescriptor;
19969 uint32_t maxSampledImagesPerDescriptor;
19970 uint32_t maxPipelineLayouts;
19971 };
19972 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
19973
19974 struct ObjectTableEntryNVX
19975 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019976 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019977 : type( type_ )
19978 , flags( flags_ )
19979 {
19980 }
19981
19982 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
19983 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019984 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019985 }
19986
19987 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
19988 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019989 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019990 return *this;
19991 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019992 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
19993 {
19994 type = type_;
19995 return *this;
19996 }
19997
19998 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19999 {
20000 flags = flags_;
20001 return *this;
20002 }
20003
20004 operator const VkObjectTableEntryNVX&() const
20005 {
20006 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
20007 }
20008
20009 bool operator==( ObjectTableEntryNVX const& rhs ) const
20010 {
20011 return ( type == rhs.type )
20012 && ( flags == rhs.flags );
20013 }
20014
20015 bool operator!=( ObjectTableEntryNVX const& rhs ) const
20016 {
20017 return !operator==( rhs );
20018 }
20019
20020 ObjectEntryTypeNVX type;
20021 ObjectEntryUsageFlagsNVX flags;
20022 };
20023 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
20024
20025 struct ObjectTablePipelineEntryNVX
20026 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020027 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020028 : type( type_ )
20029 , flags( flags_ )
20030 , pipeline( pipeline_ )
20031 {
20032 }
20033
20034 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
20035 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020036 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020037 }
20038
20039 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
20040 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020041 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020042 return *this;
20043 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020044 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
20045 {
20046 type = type_;
20047 return *this;
20048 }
20049
20050 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20051 {
20052 flags = flags_;
20053 return *this;
20054 }
20055
20056 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
20057 {
20058 pipeline = pipeline_;
20059 return *this;
20060 }
20061
20062 operator const VkObjectTablePipelineEntryNVX&() const
20063 {
20064 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
20065 }
20066
20067 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
20068 {
20069 return ( type == rhs.type )
20070 && ( flags == rhs.flags )
20071 && ( pipeline == rhs.pipeline );
20072 }
20073
20074 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
20075 {
20076 return !operator==( rhs );
20077 }
20078
20079 ObjectEntryTypeNVX type;
20080 ObjectEntryUsageFlagsNVX flags;
20081 Pipeline pipeline;
20082 };
20083 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
20084
20085 struct ObjectTableDescriptorSetEntryNVX
20086 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020087 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020088 : type( type_ )
20089 , flags( flags_ )
20090 , pipelineLayout( pipelineLayout_ )
20091 , descriptorSet( descriptorSet_ )
20092 {
20093 }
20094
20095 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
20096 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020097 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020098 }
20099
20100 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
20101 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020102 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020103 return *this;
20104 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020105 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
20106 {
20107 type = type_;
20108 return *this;
20109 }
20110
20111 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20112 {
20113 flags = flags_;
20114 return *this;
20115 }
20116
20117 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
20118 {
20119 pipelineLayout = pipelineLayout_;
20120 return *this;
20121 }
20122
20123 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
20124 {
20125 descriptorSet = descriptorSet_;
20126 return *this;
20127 }
20128
20129 operator const VkObjectTableDescriptorSetEntryNVX&() const
20130 {
20131 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
20132 }
20133
20134 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
20135 {
20136 return ( type == rhs.type )
20137 && ( flags == rhs.flags )
20138 && ( pipelineLayout == rhs.pipelineLayout )
20139 && ( descriptorSet == rhs.descriptorSet );
20140 }
20141
20142 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
20143 {
20144 return !operator==( rhs );
20145 }
20146
20147 ObjectEntryTypeNVX type;
20148 ObjectEntryUsageFlagsNVX flags;
20149 PipelineLayout pipelineLayout;
20150 DescriptorSet descriptorSet;
20151 };
20152 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
20153
20154 struct ObjectTableVertexBufferEntryNVX
20155 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020156 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020157 : type( type_ )
20158 , flags( flags_ )
20159 , buffer( buffer_ )
20160 {
20161 }
20162
20163 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
20164 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020165 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020166 }
20167
20168 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
20169 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020170 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020171 return *this;
20172 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020173 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
20174 {
20175 type = type_;
20176 return *this;
20177 }
20178
20179 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20180 {
20181 flags = flags_;
20182 return *this;
20183 }
20184
20185 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
20186 {
20187 buffer = buffer_;
20188 return *this;
20189 }
20190
20191 operator const VkObjectTableVertexBufferEntryNVX&() const
20192 {
20193 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
20194 }
20195
20196 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
20197 {
20198 return ( type == rhs.type )
20199 && ( flags == rhs.flags )
20200 && ( buffer == rhs.buffer );
20201 }
20202
20203 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
20204 {
20205 return !operator==( rhs );
20206 }
20207
20208 ObjectEntryTypeNVX type;
20209 ObjectEntryUsageFlagsNVX flags;
20210 Buffer buffer;
20211 };
20212 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
20213
20214 struct ObjectTableIndexBufferEntryNVX
20215 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020216 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020217 : type( type_ )
20218 , flags( flags_ )
20219 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070020220 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020221 {
20222 }
20223
20224 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
20225 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020226 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020227 }
20228
20229 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
20230 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020231 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020232 return *this;
20233 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020234 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
20235 {
20236 type = type_;
20237 return *this;
20238 }
20239
20240 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20241 {
20242 flags = flags_;
20243 return *this;
20244 }
20245
20246 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
20247 {
20248 buffer = buffer_;
20249 return *this;
20250 }
20251
Mark Young39389872017-01-19 21:10:49 -070020252 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
20253 {
20254 indexType = indexType_;
20255 return *this;
20256 }
20257
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020258 operator const VkObjectTableIndexBufferEntryNVX&() const
20259 {
20260 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
20261 }
20262
20263 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
20264 {
20265 return ( type == rhs.type )
20266 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070020267 && ( buffer == rhs.buffer )
20268 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020269 }
20270
20271 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
20272 {
20273 return !operator==( rhs );
20274 }
20275
20276 ObjectEntryTypeNVX type;
20277 ObjectEntryUsageFlagsNVX flags;
20278 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070020279 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020280 };
20281 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
20282
20283 struct ObjectTablePushConstantEntryNVX
20284 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020285 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020286 : type( type_ )
20287 , flags( flags_ )
20288 , pipelineLayout( pipelineLayout_ )
20289 , stageFlags( stageFlags_ )
20290 {
20291 }
20292
20293 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
20294 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020295 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020296 }
20297
20298 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
20299 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020300 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020301 return *this;
20302 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020303 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
20304 {
20305 type = type_;
20306 return *this;
20307 }
20308
20309 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20310 {
20311 flags = flags_;
20312 return *this;
20313 }
20314
20315 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
20316 {
20317 pipelineLayout = pipelineLayout_;
20318 return *this;
20319 }
20320
20321 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
20322 {
20323 stageFlags = stageFlags_;
20324 return *this;
20325 }
20326
20327 operator const VkObjectTablePushConstantEntryNVX&() const
20328 {
20329 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
20330 }
20331
20332 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
20333 {
20334 return ( type == rhs.type )
20335 && ( flags == rhs.flags )
20336 && ( pipelineLayout == rhs.pipelineLayout )
20337 && ( stageFlags == rhs.stageFlags );
20338 }
20339
20340 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
20341 {
20342 return !operator==( rhs );
20343 }
20344
20345 ObjectEntryTypeNVX type;
20346 ObjectEntryUsageFlagsNVX flags;
20347 PipelineLayout pipelineLayout;
20348 ShaderStageFlags stageFlags;
20349 };
20350 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
20351
Mark Young0f183a82017-02-28 09:58:04 -070020352 enum class DescriptorSetLayoutCreateFlagBits
20353 {
20354 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
20355 };
20356
20357 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
20358
20359 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
20360 {
20361 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
20362 }
20363
20364 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
20365 {
20366 return ~( DescriptorSetLayoutCreateFlags( bits ) );
20367 }
20368
20369 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
20370 {
20371 enum
20372 {
20373 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
20374 };
20375 };
20376
20377 struct DescriptorSetLayoutCreateInfo
20378 {
20379 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
20380 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
20381 , pNext( nullptr )
20382 , flags( flags_ )
20383 , bindingCount( bindingCount_ )
20384 , pBindings( pBindings_ )
20385 {
20386 }
20387
20388 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
20389 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020390 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070020391 }
20392
20393 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
20394 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020395 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070020396 return *this;
20397 }
Mark Young0f183a82017-02-28 09:58:04 -070020398 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
20399 {
20400 pNext = pNext_;
20401 return *this;
20402 }
20403
20404 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
20405 {
20406 flags = flags_;
20407 return *this;
20408 }
20409
20410 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
20411 {
20412 bindingCount = bindingCount_;
20413 return *this;
20414 }
20415
20416 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
20417 {
20418 pBindings = pBindings_;
20419 return *this;
20420 }
20421
20422 operator const VkDescriptorSetLayoutCreateInfo&() const
20423 {
20424 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
20425 }
20426
20427 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
20428 {
20429 return ( sType == rhs.sType )
20430 && ( pNext == rhs.pNext )
20431 && ( flags == rhs.flags )
20432 && ( bindingCount == rhs.bindingCount )
20433 && ( pBindings == rhs.pBindings );
20434 }
20435
20436 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
20437 {
20438 return !operator==( rhs );
20439 }
20440
20441 private:
20442 StructureType sType;
20443
20444 public:
20445 const void* pNext;
20446 DescriptorSetLayoutCreateFlags flags;
20447 uint32_t bindingCount;
20448 const DescriptorSetLayoutBinding* pBindings;
20449 };
20450 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
20451
Mark Youngabc2d6e2017-07-07 07:59:56 -060020452 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070020453 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020454 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
20455 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
20456 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
20457 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
20458 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
20459 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
20460 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070020461 };
20462
Mark Youngabc2d6e2017-07-07 07:59:56 -060020463 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070020464
Mark Youngabc2d6e2017-07-07 07:59:56 -060020465 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070020466 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020467 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070020468 }
20469
Mark Youngabc2d6e2017-07-07 07:59:56 -060020470 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070020471 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020472 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070020473 }
20474
Mark Youngabc2d6e2017-07-07 07:59:56 -060020475 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070020476 {
20477 enum
20478 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020479 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 -070020480 };
20481 };
20482
Mark Youngabc2d6e2017-07-07 07:59:56 -060020483 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020484 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020485 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
20486 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020487 , pNext( nullptr )
20488 , handleType( handleType_ )
20489 {
20490 }
20491
Mark Youngabc2d6e2017-07-07 07:59:56 -060020492 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020493 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020494 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020495 }
20496
Mark Youngabc2d6e2017-07-07 07:59:56 -060020497 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020498 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020499 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020500 return *this;
20501 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020502 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020503 {
20504 pNext = pNext_;
20505 return *this;
20506 }
20507
Mark Youngabc2d6e2017-07-07 07:59:56 -060020508 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020509 {
20510 handleType = handleType_;
20511 return *this;
20512 }
20513
Mark Youngabc2d6e2017-07-07 07:59:56 -060020514 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020515 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020516 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020517 }
20518
Mark Youngabc2d6e2017-07-07 07:59:56 -060020519 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020520 {
20521 return ( sType == rhs.sType )
20522 && ( pNext == rhs.pNext )
20523 && ( handleType == rhs.handleType );
20524 }
20525
Mark Youngabc2d6e2017-07-07 07:59:56 -060020526 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020527 {
20528 return !operator==( rhs );
20529 }
20530
20531 private:
20532 StructureType sType;
20533
20534 public:
20535 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020536 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020537 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020538 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020539
Mark Youngabc2d6e2017-07-07 07:59:56 -060020540 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020541 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020542 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
20543 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020544 , pNext( nullptr )
20545 , flags( flags_ )
20546 , usage( usage_ )
20547 , handleType( handleType_ )
20548 {
20549 }
20550
Mark Youngabc2d6e2017-07-07 07:59:56 -060020551 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020552 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020553 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020554 }
20555
Mark Youngabc2d6e2017-07-07 07:59:56 -060020556 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020557 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020558 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020559 return *this;
20560 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020561 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020562 {
20563 pNext = pNext_;
20564 return *this;
20565 }
20566
Mark Youngabc2d6e2017-07-07 07:59:56 -060020567 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070020568 {
20569 flags = flags_;
20570 return *this;
20571 }
20572
Mark Youngabc2d6e2017-07-07 07:59:56 -060020573 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070020574 {
20575 usage = usage_;
20576 return *this;
20577 }
20578
Mark Youngabc2d6e2017-07-07 07:59:56 -060020579 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020580 {
20581 handleType = handleType_;
20582 return *this;
20583 }
20584
Mark Youngabc2d6e2017-07-07 07:59:56 -060020585 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020586 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020587 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020588 }
20589
Mark Youngabc2d6e2017-07-07 07:59:56 -060020590 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020591 {
20592 return ( sType == rhs.sType )
20593 && ( pNext == rhs.pNext )
20594 && ( flags == rhs.flags )
20595 && ( usage == rhs.usage )
20596 && ( handleType == rhs.handleType );
20597 }
20598
Mark Youngabc2d6e2017-07-07 07:59:56 -060020599 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020600 {
20601 return !operator==( rhs );
20602 }
20603
20604 private:
20605 StructureType sType;
20606
20607 public:
20608 const void* pNext;
20609 BufferCreateFlags flags;
20610 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020611 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020612 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020613 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020614
Mark Youngabc2d6e2017-07-07 07:59:56 -060020615 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020616 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020617 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
20618 : sType( StructureType::eExternalMemoryImageCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020619 , pNext( nullptr )
20620 , handleTypes( handleTypes_ )
20621 {
20622 }
20623
Mark Youngabc2d6e2017-07-07 07:59:56 -060020624 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020625 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020626 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020627 }
20628
Mark Youngabc2d6e2017-07-07 07:59:56 -060020629 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020630 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020631 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020632 return *this;
20633 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020634 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020635 {
20636 pNext = pNext_;
20637 return *this;
20638 }
20639
Mark Youngabc2d6e2017-07-07 07:59:56 -060020640 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070020641 {
20642 handleTypes = handleTypes_;
20643 return *this;
20644 }
20645
Mark Youngabc2d6e2017-07-07 07:59:56 -060020646 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020647 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020648 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020649 }
20650
Mark Youngabc2d6e2017-07-07 07:59:56 -060020651 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020652 {
20653 return ( sType == rhs.sType )
20654 && ( pNext == rhs.pNext )
20655 && ( handleTypes == rhs.handleTypes );
20656 }
20657
Mark Youngabc2d6e2017-07-07 07:59:56 -060020658 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020659 {
20660 return !operator==( rhs );
20661 }
20662
20663 private:
20664 StructureType sType;
20665
20666 public:
20667 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020668 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070020669 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020670 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020671
Mark Youngabc2d6e2017-07-07 07:59:56 -060020672 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020673 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020674 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
20675 : sType( StructureType::eExternalMemoryBufferCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020676 , pNext( nullptr )
20677 , handleTypes( handleTypes_ )
20678 {
20679 }
20680
Mark Youngabc2d6e2017-07-07 07:59:56 -060020681 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020682 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020683 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020684 }
20685
Mark Youngabc2d6e2017-07-07 07:59:56 -060020686 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020687 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020688 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020689 return *this;
20690 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020691 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020692 {
20693 pNext = pNext_;
20694 return *this;
20695 }
20696
Mark Youngabc2d6e2017-07-07 07:59:56 -060020697 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070020698 {
20699 handleTypes = handleTypes_;
20700 return *this;
20701 }
20702
Mark Youngabc2d6e2017-07-07 07:59:56 -060020703 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020704 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020705 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020706 }
20707
Mark Youngabc2d6e2017-07-07 07:59:56 -060020708 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020709 {
20710 return ( sType == rhs.sType )
20711 && ( pNext == rhs.pNext )
20712 && ( handleTypes == rhs.handleTypes );
20713 }
20714
Mark Youngabc2d6e2017-07-07 07:59:56 -060020715 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020716 {
20717 return !operator==( rhs );
20718 }
20719
20720 private:
20721 StructureType sType;
20722
20723 public:
20724 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020725 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070020726 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020727 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020728
Mark Youngabc2d6e2017-07-07 07:59:56 -060020729 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020730 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020731 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
20732 : sType( StructureType::eExportMemoryAllocateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020733 , pNext( nullptr )
20734 , handleTypes( handleTypes_ )
20735 {
20736 }
20737
Mark Youngabc2d6e2017-07-07 07:59:56 -060020738 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020739 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020740 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020741 }
20742
Mark Youngabc2d6e2017-07-07 07:59:56 -060020743 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020744 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020745 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020746 return *this;
20747 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020748 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020749 {
20750 pNext = pNext_;
20751 return *this;
20752 }
20753
Mark Youngabc2d6e2017-07-07 07:59:56 -060020754 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070020755 {
20756 handleTypes = handleTypes_;
20757 return *this;
20758 }
20759
Mark Youngabc2d6e2017-07-07 07:59:56 -060020760 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020761 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020762 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020763 }
20764
Mark Youngabc2d6e2017-07-07 07:59:56 -060020765 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020766 {
20767 return ( sType == rhs.sType )
20768 && ( pNext == rhs.pNext )
20769 && ( handleTypes == rhs.handleTypes );
20770 }
20771
Mark Youngabc2d6e2017-07-07 07:59:56 -060020772 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020773 {
20774 return !operator==( rhs );
20775 }
20776
20777 private:
20778 StructureType sType;
20779
20780 public:
20781 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020782 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070020783 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020784 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020785
Mark Youngabc2d6e2017-07-07 07:59:56 -060020786#ifdef VK_USE_PLATFORM_WIN32_KHR
20787 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020788 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020789 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
20790 : sType( StructureType::eImportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020791 , pNext( nullptr )
20792 , handleType( handleType_ )
20793 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060020794 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070020795 {
20796 }
20797
Mark Youngabc2d6e2017-07-07 07:59:56 -060020798 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020799 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020800 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020801 }
20802
Mark Youngabc2d6e2017-07-07 07:59:56 -060020803 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020804 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020805 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020806 return *this;
20807 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020808 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020809 {
20810 pNext = pNext_;
20811 return *this;
20812 }
20813
Mark Youngabc2d6e2017-07-07 07:59:56 -060020814 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020815 {
20816 handleType = handleType_;
20817 return *this;
20818 }
20819
Mark Youngabc2d6e2017-07-07 07:59:56 -060020820 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070020821 {
20822 handle = handle_;
20823 return *this;
20824 }
20825
Mark Youngabc2d6e2017-07-07 07:59:56 -060020826 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070020827 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020828 name = name_;
20829 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070020830 }
20831
Mark Youngabc2d6e2017-07-07 07:59:56 -060020832 operator const VkImportMemoryWin32HandleInfoKHR&() const
20833 {
20834 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
20835 }
20836
20837 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020838 {
20839 return ( sType == rhs.sType )
20840 && ( pNext == rhs.pNext )
20841 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060020842 && ( handle == rhs.handle )
20843 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070020844 }
20845
Mark Youngabc2d6e2017-07-07 07:59:56 -060020846 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020847 {
20848 return !operator==( rhs );
20849 }
20850
20851 private:
20852 StructureType sType;
20853
20854 public:
20855 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020856 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020857 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020858 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070020859 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020860 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
20861#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070020862
Mark Youngabc2d6e2017-07-07 07:59:56 -060020863#ifdef VK_USE_PLATFORM_WIN32_KHR
20864 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020865 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020866 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
20867 : sType( StructureType::eMemoryGetWin32HandleInfoKHR )
20868 , pNext( nullptr )
20869 , memory( memory_ )
20870 , handleType( handleType_ )
20871 {
20872 }
20873
20874 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
20875 {
20876 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
20877 }
20878
20879 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
20880 {
20881 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
20882 return *this;
20883 }
20884 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
20885 {
20886 pNext = pNext_;
20887 return *this;
20888 }
20889
20890 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
20891 {
20892 memory = memory_;
20893 return *this;
20894 }
20895
20896 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
20897 {
20898 handleType = handleType_;
20899 return *this;
20900 }
20901
20902 operator const VkMemoryGetWin32HandleInfoKHR&() const
20903 {
20904 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
20905 }
20906
20907 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
20908 {
20909 return ( sType == rhs.sType )
20910 && ( pNext == rhs.pNext )
20911 && ( memory == rhs.memory )
20912 && ( handleType == rhs.handleType );
20913 }
20914
20915 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
20916 {
20917 return !operator==( rhs );
20918 }
20919
20920 private:
20921 StructureType sType;
20922
20923 public:
20924 const void* pNext;
20925 DeviceMemory memory;
20926 ExternalMemoryHandleTypeFlagBitsKHR handleType;
20927 };
20928 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
20929#endif /*VK_USE_PLATFORM_WIN32_KHR*/
20930
20931 struct ImportMemoryFdInfoKHR
20932 {
20933 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
20934 : sType( StructureType::eImportMemoryFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020935 , pNext( nullptr )
20936 , handleType( handleType_ )
20937 , fd( fd_ )
20938 {
20939 }
20940
Mark Youngabc2d6e2017-07-07 07:59:56 -060020941 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020942 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020943 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020944 }
20945
Mark Youngabc2d6e2017-07-07 07:59:56 -060020946 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020947 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020948 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020949 return *this;
20950 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020951 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020952 {
20953 pNext = pNext_;
20954 return *this;
20955 }
20956
Mark Youngabc2d6e2017-07-07 07:59:56 -060020957 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020958 {
20959 handleType = handleType_;
20960 return *this;
20961 }
20962
Mark Youngabc2d6e2017-07-07 07:59:56 -060020963 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070020964 {
20965 fd = fd_;
20966 return *this;
20967 }
20968
Mark Youngabc2d6e2017-07-07 07:59:56 -060020969 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020970 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020971 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020972 }
20973
Mark Youngabc2d6e2017-07-07 07:59:56 -060020974 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020975 {
20976 return ( sType == rhs.sType )
20977 && ( pNext == rhs.pNext )
20978 && ( handleType == rhs.handleType )
20979 && ( fd == rhs.fd );
20980 }
20981
Mark Youngabc2d6e2017-07-07 07:59:56 -060020982 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020983 {
20984 return !operator==( rhs );
20985 }
20986
20987 private:
20988 StructureType sType;
20989
20990 public:
20991 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020992 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020993 int fd;
20994 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020995 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020996
Mark Youngabc2d6e2017-07-07 07:59:56 -060020997 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020998 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020999 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
21000 : sType( StructureType::eMemoryGetFdInfoKHR )
21001 , pNext( nullptr )
21002 , memory( memory_ )
21003 , handleType( handleType_ )
21004 {
21005 }
21006
21007 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
21008 {
21009 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
21010 }
21011
21012 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
21013 {
21014 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
21015 return *this;
21016 }
21017 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
21018 {
21019 pNext = pNext_;
21020 return *this;
21021 }
21022
21023 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
21024 {
21025 memory = memory_;
21026 return *this;
21027 }
21028
21029 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
21030 {
21031 handleType = handleType_;
21032 return *this;
21033 }
21034
21035 operator const VkMemoryGetFdInfoKHR&() const
21036 {
21037 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
21038 }
21039
21040 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
21041 {
21042 return ( sType == rhs.sType )
21043 && ( pNext == rhs.pNext )
21044 && ( memory == rhs.memory )
21045 && ( handleType == rhs.handleType );
21046 }
21047
21048 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
21049 {
21050 return !operator==( rhs );
21051 }
21052
21053 private:
21054 StructureType sType;
21055
21056 public:
21057 const void* pNext;
21058 DeviceMemory memory;
21059 ExternalMemoryHandleTypeFlagBitsKHR handleType;
21060 };
21061 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
21062
21063 enum class ExternalMemoryFeatureFlagBitsKHR
21064 {
21065 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
21066 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
21067 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021068 };
21069
Mark Youngabc2d6e2017-07-07 07:59:56 -060021070 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021071
Mark Youngabc2d6e2017-07-07 07:59:56 -060021072 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021073 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021074 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021075 }
21076
Mark Youngabc2d6e2017-07-07 07:59:56 -060021077 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021078 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021079 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021080 }
21081
Mark Youngabc2d6e2017-07-07 07:59:56 -060021082 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021083 {
21084 enum
21085 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021086 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070021087 };
21088 };
21089
Mark Youngabc2d6e2017-07-07 07:59:56 -060021090 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021091 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021092 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021093 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021094 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021095 }
21096
Mark Youngabc2d6e2017-07-07 07:59:56 -060021097 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021098 {
21099 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
21100 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21101 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
21102 }
21103
Mark Youngabc2d6e2017-07-07 07:59:56 -060021104 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021105 {
21106 return !operator==( rhs );
21107 }
21108
Mark Youngabc2d6e2017-07-07 07:59:56 -060021109 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
21110 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
21111 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021112 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021113 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021114
Mark Youngabc2d6e2017-07-07 07:59:56 -060021115 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021116 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021117 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021118 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021119 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021120 }
21121
Mark Youngabc2d6e2017-07-07 07:59:56 -060021122 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021123 {
21124 return ( sType == rhs.sType )
21125 && ( pNext == rhs.pNext )
21126 && ( externalMemoryProperties == rhs.externalMemoryProperties );
21127 }
21128
Mark Youngabc2d6e2017-07-07 07:59:56 -060021129 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021130 {
21131 return !operator==( rhs );
21132 }
21133
21134 private:
21135 StructureType sType;
21136
21137 public:
21138 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021139 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070021140 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021141 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021142
Mark Youngabc2d6e2017-07-07 07:59:56 -060021143 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021144 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021145 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021146 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021147 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021148 }
21149
Mark Youngabc2d6e2017-07-07 07:59:56 -060021150 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021151 {
21152 return ( sType == rhs.sType )
21153 && ( pNext == rhs.pNext )
21154 && ( externalMemoryProperties == rhs.externalMemoryProperties );
21155 }
21156
Mark Youngabc2d6e2017-07-07 07:59:56 -060021157 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021158 {
21159 return !operator==( rhs );
21160 }
21161
21162 private:
21163 StructureType sType;
21164
21165 public:
21166 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021167 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070021168 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021169 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021170
Mark Youngabc2d6e2017-07-07 07:59:56 -060021171 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021172 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021173 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21174 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21175 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21176 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
21177 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021178 };
21179
Mark Youngabc2d6e2017-07-07 07:59:56 -060021180 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021181
Mark Youngabc2d6e2017-07-07 07:59:56 -060021182 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021183 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021184 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021185 }
21186
Mark Youngabc2d6e2017-07-07 07:59:56 -060021187 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021188 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021189 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021190 }
21191
Mark Youngabc2d6e2017-07-07 07:59:56 -060021192 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021193 {
21194 enum
21195 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021196 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070021197 };
21198 };
21199
Mark Youngabc2d6e2017-07-07 07:59:56 -060021200 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021201 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021202 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
21203 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021204 , pNext( nullptr )
21205 , handleType( handleType_ )
21206 {
21207 }
21208
Mark Youngabc2d6e2017-07-07 07:59:56 -060021209 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021210 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021211 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021212 }
21213
Mark Youngabc2d6e2017-07-07 07:59:56 -060021214 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021215 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021216 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021217 return *this;
21218 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021219 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021220 {
21221 pNext = pNext_;
21222 return *this;
21223 }
21224
Mark Youngabc2d6e2017-07-07 07:59:56 -060021225 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021226 {
21227 handleType = handleType_;
21228 return *this;
21229 }
21230
Mark Youngabc2d6e2017-07-07 07:59:56 -060021231 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021232 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021233 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021234 }
21235
Mark Youngabc2d6e2017-07-07 07:59:56 -060021236 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021237 {
21238 return ( sType == rhs.sType )
21239 && ( pNext == rhs.pNext )
21240 && ( handleType == rhs.handleType );
21241 }
21242
Mark Youngabc2d6e2017-07-07 07:59:56 -060021243 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021244 {
21245 return !operator==( rhs );
21246 }
21247
21248 private:
21249 StructureType sType;
21250
21251 public:
21252 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021253 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021254 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021255 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021256
Mark Youngabc2d6e2017-07-07 07:59:56 -060021257 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021258 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021259 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
21260 : sType( StructureType::eExportSemaphoreCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021261 , pNext( nullptr )
21262 , handleTypes( handleTypes_ )
21263 {
21264 }
21265
Mark Youngabc2d6e2017-07-07 07:59:56 -060021266 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021267 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021268 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021269 }
21270
Mark Youngabc2d6e2017-07-07 07:59:56 -060021271 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021272 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021273 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021274 return *this;
21275 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021276 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021277 {
21278 pNext = pNext_;
21279 return *this;
21280 }
21281
Mark Youngabc2d6e2017-07-07 07:59:56 -060021282 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070021283 {
21284 handleTypes = handleTypes_;
21285 return *this;
21286 }
21287
Mark Youngabc2d6e2017-07-07 07:59:56 -060021288 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021289 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021290 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021291 }
21292
Mark Youngabc2d6e2017-07-07 07:59:56 -060021293 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021294 {
21295 return ( sType == rhs.sType )
21296 && ( pNext == rhs.pNext )
21297 && ( handleTypes == rhs.handleTypes );
21298 }
21299
Mark Youngabc2d6e2017-07-07 07:59:56 -060021300 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021301 {
21302 return !operator==( rhs );
21303 }
21304
21305 private:
21306 StructureType sType;
21307
21308 public:
21309 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021310 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021311 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021312 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021313
Mark Youngabc2d6e2017-07-07 07:59:56 -060021314#ifdef VK_USE_PLATFORM_WIN32_KHR
21315 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021316 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021317 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
21318 : sType( StructureType::eSemaphoreGetWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021319 , pNext( nullptr )
21320 , semaphore( semaphore_ )
21321 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021322 {
21323 }
21324
Mark Youngabc2d6e2017-07-07 07:59:56 -060021325 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021326 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021327 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021328 }
21329
Mark Youngabc2d6e2017-07-07 07:59:56 -060021330 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021331 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021332 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021333 return *this;
21334 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021335 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021336 {
21337 pNext = pNext_;
21338 return *this;
21339 }
21340
Mark Youngabc2d6e2017-07-07 07:59:56 -060021341 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070021342 {
21343 semaphore = semaphore_;
21344 return *this;
21345 }
21346
Mark Youngabc2d6e2017-07-07 07:59:56 -060021347 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021348 {
21349 handleType = handleType_;
21350 return *this;
21351 }
21352
Mark Youngabc2d6e2017-07-07 07:59:56 -060021353 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021354 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021355 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021356 }
21357
Mark Youngabc2d6e2017-07-07 07:59:56 -060021358 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021359 {
21360 return ( sType == rhs.sType )
21361 && ( pNext == rhs.pNext )
21362 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060021363 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070021364 }
21365
Mark Youngabc2d6e2017-07-07 07:59:56 -060021366 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021367 {
21368 return !operator==( rhs );
21369 }
21370
21371 private:
21372 StructureType sType;
21373
21374 public:
21375 const void* pNext;
21376 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021377 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021378 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021379 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21380#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070021381
Mark Youngabc2d6e2017-07-07 07:59:56 -060021382 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021383 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021384 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
21385 : sType( StructureType::eSemaphoreGetFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021386 , pNext( nullptr )
21387 , semaphore( semaphore_ )
21388 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021389 {
21390 }
21391
Mark Youngabc2d6e2017-07-07 07:59:56 -060021392 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021393 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021394 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021395 }
21396
Mark Youngabc2d6e2017-07-07 07:59:56 -060021397 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021398 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021399 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021400 return *this;
21401 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021402 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021403 {
21404 pNext = pNext_;
21405 return *this;
21406 }
21407
Mark Youngabc2d6e2017-07-07 07:59:56 -060021408 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070021409 {
21410 semaphore = semaphore_;
21411 return *this;
21412 }
21413
Mark Youngabc2d6e2017-07-07 07:59:56 -060021414 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021415 {
21416 handleType = handleType_;
21417 return *this;
21418 }
21419
Mark Youngabc2d6e2017-07-07 07:59:56 -060021420 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021421 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021422 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021423 }
21424
Mark Youngabc2d6e2017-07-07 07:59:56 -060021425 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021426 {
21427 return ( sType == rhs.sType )
21428 && ( pNext == rhs.pNext )
21429 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060021430 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070021431 }
21432
Mark Youngabc2d6e2017-07-07 07:59:56 -060021433 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021434 {
21435 return !operator==( rhs );
21436 }
21437
21438 private:
21439 StructureType sType;
21440
21441 public:
21442 const void* pNext;
21443 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021444 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021445 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021446 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021447
Mark Youngabc2d6e2017-07-07 07:59:56 -060021448 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021449 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021450 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
21451 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021452 };
21453
Mark Youngabc2d6e2017-07-07 07:59:56 -060021454 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021455
Mark Youngabc2d6e2017-07-07 07:59:56 -060021456 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021457 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021458 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021459 }
21460
Mark Youngabc2d6e2017-07-07 07:59:56 -060021461 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021462 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021463 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021464 }
21465
Mark Youngabc2d6e2017-07-07 07:59:56 -060021466 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021467 {
21468 enum
21469 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021470 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070021471 };
21472 };
21473
Mark Youngabc2d6e2017-07-07 07:59:56 -060021474 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021475 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021476 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021477 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021478 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021479 }
21480
Mark Youngabc2d6e2017-07-07 07:59:56 -060021481 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021482 {
21483 return ( sType == rhs.sType )
21484 && ( pNext == rhs.pNext )
21485 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21486 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
21487 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
21488 }
21489
Mark Youngabc2d6e2017-07-07 07:59:56 -060021490 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021491 {
21492 return !operator==( rhs );
21493 }
21494
21495 private:
21496 StructureType sType;
21497
21498 public:
21499 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021500 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
21501 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
21502 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070021503 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021504 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
21505
21506 enum class SemaphoreImportFlagBitsKHR
21507 {
21508 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
21509 };
21510
21511 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
21512
21513 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
21514 {
21515 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
21516 }
21517
21518 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
21519 {
21520 return ~( SemaphoreImportFlagsKHR( bits ) );
21521 }
21522
21523 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
21524 {
21525 enum
21526 {
21527 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
21528 };
21529 };
21530
21531#ifdef VK_USE_PLATFORM_WIN32_KHR
21532 struct ImportSemaphoreWin32HandleInfoKHR
21533 {
21534 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
21535 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHR )
21536 , pNext( nullptr )
21537 , semaphore( semaphore_ )
21538 , flags( flags_ )
21539 , handleType( handleType_ )
21540 , handle( handle_ )
21541 , name( name_ )
21542 {
21543 }
21544
21545 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
21546 {
21547 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
21548 }
21549
21550 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
21551 {
21552 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
21553 return *this;
21554 }
21555 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
21556 {
21557 pNext = pNext_;
21558 return *this;
21559 }
21560
21561 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
21562 {
21563 semaphore = semaphore_;
21564 return *this;
21565 }
21566
21567 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
21568 {
21569 flags = flags_;
21570 return *this;
21571 }
21572
21573 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
21574 {
21575 handleType = handleType_;
21576 return *this;
21577 }
21578
21579 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
21580 {
21581 handle = handle_;
21582 return *this;
21583 }
21584
21585 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
21586 {
21587 name = name_;
21588 return *this;
21589 }
21590
21591 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
21592 {
21593 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
21594 }
21595
21596 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
21597 {
21598 return ( sType == rhs.sType )
21599 && ( pNext == rhs.pNext )
21600 && ( semaphore == rhs.semaphore )
21601 && ( flags == rhs.flags )
21602 && ( handleType == rhs.handleType )
21603 && ( handle == rhs.handle )
21604 && ( name == rhs.name );
21605 }
21606
21607 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
21608 {
21609 return !operator==( rhs );
21610 }
21611
21612 private:
21613 StructureType sType;
21614
21615 public:
21616 const void* pNext;
21617 Semaphore semaphore;
21618 SemaphoreImportFlagsKHR flags;
21619 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
21620 HANDLE handle;
21621 LPCWSTR name;
21622 };
21623 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21624#endif /*VK_USE_PLATFORM_WIN32_KHR*/
21625
21626 struct ImportSemaphoreFdInfoKHR
21627 {
21628 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
21629 : sType( StructureType::eImportSemaphoreFdInfoKHR )
21630 , pNext( nullptr )
21631 , semaphore( semaphore_ )
21632 , flags( flags_ )
21633 , handleType( handleType_ )
21634 , fd( fd_ )
21635 {
21636 }
21637
21638 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
21639 {
21640 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
21641 }
21642
21643 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
21644 {
21645 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
21646 return *this;
21647 }
21648 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
21649 {
21650 pNext = pNext_;
21651 return *this;
21652 }
21653
21654 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
21655 {
21656 semaphore = semaphore_;
21657 return *this;
21658 }
21659
21660 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
21661 {
21662 flags = flags_;
21663 return *this;
21664 }
21665
21666 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
21667 {
21668 handleType = handleType_;
21669 return *this;
21670 }
21671
21672 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
21673 {
21674 fd = fd_;
21675 return *this;
21676 }
21677
21678 operator const VkImportSemaphoreFdInfoKHR&() const
21679 {
21680 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
21681 }
21682
21683 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
21684 {
21685 return ( sType == rhs.sType )
21686 && ( pNext == rhs.pNext )
21687 && ( semaphore == rhs.semaphore )
21688 && ( flags == rhs.flags )
21689 && ( handleType == rhs.handleType )
21690 && ( fd == rhs.fd );
21691 }
21692
21693 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
21694 {
21695 return !operator==( rhs );
21696 }
21697
21698 private:
21699 StructureType sType;
21700
21701 public:
21702 const void* pNext;
21703 Semaphore semaphore;
21704 SemaphoreImportFlagsKHR flags;
21705 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
21706 int fd;
21707 };
21708 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
21709
21710 enum class ExternalFenceHandleTypeFlagBitsKHR
21711 {
21712 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21713 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21714 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21715 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
21716 };
21717
21718 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
21719
21720 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
21721 {
21722 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
21723 }
21724
21725 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
21726 {
21727 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
21728 }
21729
21730 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
21731 {
21732 enum
21733 {
21734 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
21735 };
21736 };
21737
21738 struct PhysicalDeviceExternalFenceInfoKHR
21739 {
21740 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
21741 : sType( StructureType::ePhysicalDeviceExternalFenceInfoKHR )
21742 , pNext( nullptr )
21743 , handleType( handleType_ )
21744 {
21745 }
21746
21747 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
21748 {
21749 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
21750 }
21751
21752 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
21753 {
21754 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
21755 return *this;
21756 }
21757 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
21758 {
21759 pNext = pNext_;
21760 return *this;
21761 }
21762
21763 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
21764 {
21765 handleType = handleType_;
21766 return *this;
21767 }
21768
21769 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
21770 {
21771 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
21772 }
21773
21774 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
21775 {
21776 return ( sType == rhs.sType )
21777 && ( pNext == rhs.pNext )
21778 && ( handleType == rhs.handleType );
21779 }
21780
21781 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
21782 {
21783 return !operator==( rhs );
21784 }
21785
21786 private:
21787 StructureType sType;
21788
21789 public:
21790 const void* pNext;
21791 ExternalFenceHandleTypeFlagBitsKHR handleType;
21792 };
21793 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
21794
21795 struct ExportFenceCreateInfoKHR
21796 {
21797 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
21798 : sType( StructureType::eExportFenceCreateInfoKHR )
21799 , pNext( nullptr )
21800 , handleTypes( handleTypes_ )
21801 {
21802 }
21803
21804 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
21805 {
21806 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
21807 }
21808
21809 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
21810 {
21811 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
21812 return *this;
21813 }
21814 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
21815 {
21816 pNext = pNext_;
21817 return *this;
21818 }
21819
21820 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
21821 {
21822 handleTypes = handleTypes_;
21823 return *this;
21824 }
21825
21826 operator const VkExportFenceCreateInfoKHR&() const
21827 {
21828 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
21829 }
21830
21831 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
21832 {
21833 return ( sType == rhs.sType )
21834 && ( pNext == rhs.pNext )
21835 && ( handleTypes == rhs.handleTypes );
21836 }
21837
21838 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
21839 {
21840 return !operator==( rhs );
21841 }
21842
21843 private:
21844 StructureType sType;
21845
21846 public:
21847 const void* pNext;
21848 ExternalFenceHandleTypeFlagsKHR handleTypes;
21849 };
21850 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
21851
21852#ifdef VK_USE_PLATFORM_WIN32_KHR
21853 struct FenceGetWin32HandleInfoKHR
21854 {
21855 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
21856 : sType( StructureType::eFenceGetWin32HandleInfoKHR )
21857 , pNext( nullptr )
21858 , fence( fence_ )
21859 , handleType( handleType_ )
21860 {
21861 }
21862
21863 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
21864 {
21865 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
21866 }
21867
21868 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
21869 {
21870 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
21871 return *this;
21872 }
21873 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
21874 {
21875 pNext = pNext_;
21876 return *this;
21877 }
21878
21879 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
21880 {
21881 fence = fence_;
21882 return *this;
21883 }
21884
21885 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
21886 {
21887 handleType = handleType_;
21888 return *this;
21889 }
21890
21891 operator const VkFenceGetWin32HandleInfoKHR&() const
21892 {
21893 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
21894 }
21895
21896 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
21897 {
21898 return ( sType == rhs.sType )
21899 && ( pNext == rhs.pNext )
21900 && ( fence == rhs.fence )
21901 && ( handleType == rhs.handleType );
21902 }
21903
21904 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
21905 {
21906 return !operator==( rhs );
21907 }
21908
21909 private:
21910 StructureType sType;
21911
21912 public:
21913 const void* pNext;
21914 Fence fence;
21915 ExternalFenceHandleTypeFlagBitsKHR handleType;
21916 };
21917 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21918#endif /*VK_USE_PLATFORM_WIN32_KHR*/
21919
21920 struct FenceGetFdInfoKHR
21921 {
21922 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
21923 : sType( StructureType::eFenceGetFdInfoKHR )
21924 , pNext( nullptr )
21925 , fence( fence_ )
21926 , handleType( handleType_ )
21927 {
21928 }
21929
21930 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
21931 {
21932 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
21933 }
21934
21935 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
21936 {
21937 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
21938 return *this;
21939 }
21940 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
21941 {
21942 pNext = pNext_;
21943 return *this;
21944 }
21945
21946 FenceGetFdInfoKHR& setFence( Fence fence_ )
21947 {
21948 fence = fence_;
21949 return *this;
21950 }
21951
21952 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
21953 {
21954 handleType = handleType_;
21955 return *this;
21956 }
21957
21958 operator const VkFenceGetFdInfoKHR&() const
21959 {
21960 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
21961 }
21962
21963 bool operator==( FenceGetFdInfoKHR const& rhs ) const
21964 {
21965 return ( sType == rhs.sType )
21966 && ( pNext == rhs.pNext )
21967 && ( fence == rhs.fence )
21968 && ( handleType == rhs.handleType );
21969 }
21970
21971 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
21972 {
21973 return !operator==( rhs );
21974 }
21975
21976 private:
21977 StructureType sType;
21978
21979 public:
21980 const void* pNext;
21981 Fence fence;
21982 ExternalFenceHandleTypeFlagBitsKHR handleType;
21983 };
21984 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
21985
21986 enum class ExternalFenceFeatureFlagBitsKHR
21987 {
21988 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
21989 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
21990 };
21991
21992 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
21993
21994 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
21995 {
21996 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
21997 }
21998
21999 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
22000 {
22001 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
22002 }
22003
22004 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
22005 {
22006 enum
22007 {
22008 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
22009 };
22010 };
22011
22012 struct ExternalFencePropertiesKHR
22013 {
22014 operator const VkExternalFencePropertiesKHR&() const
22015 {
22016 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
22017 }
22018
22019 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
22020 {
22021 return ( sType == rhs.sType )
22022 && ( pNext == rhs.pNext )
22023 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22024 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
22025 && ( externalFenceFeatures == rhs.externalFenceFeatures );
22026 }
22027
22028 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
22029 {
22030 return !operator==( rhs );
22031 }
22032
22033 private:
22034 StructureType sType;
22035
22036 public:
22037 void* pNext;
22038 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
22039 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
22040 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
22041 };
22042 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
22043
22044 enum class FenceImportFlagBitsKHR
22045 {
22046 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
22047 };
22048
22049 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
22050
22051 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
22052 {
22053 return FenceImportFlagsKHR( bit0 ) | bit1;
22054 }
22055
22056 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
22057 {
22058 return ~( FenceImportFlagsKHR( bits ) );
22059 }
22060
22061 template <> struct FlagTraits<FenceImportFlagBitsKHR>
22062 {
22063 enum
22064 {
22065 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
22066 };
22067 };
22068
22069#ifdef VK_USE_PLATFORM_WIN32_KHR
22070 struct ImportFenceWin32HandleInfoKHR
22071 {
22072 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22073 : sType( StructureType::eImportFenceWin32HandleInfoKHR )
22074 , pNext( nullptr )
22075 , fence( fence_ )
22076 , flags( flags_ )
22077 , handleType( handleType_ )
22078 , handle( handle_ )
22079 , name( name_ )
22080 {
22081 }
22082
22083 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
22084 {
22085 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
22086 }
22087
22088 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
22089 {
22090 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
22091 return *this;
22092 }
22093 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
22094 {
22095 pNext = pNext_;
22096 return *this;
22097 }
22098
22099 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
22100 {
22101 fence = fence_;
22102 return *this;
22103 }
22104
22105 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
22106 {
22107 flags = flags_;
22108 return *this;
22109 }
22110
22111 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22112 {
22113 handleType = handleType_;
22114 return *this;
22115 }
22116
22117 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
22118 {
22119 handle = handle_;
22120 return *this;
22121 }
22122
22123 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
22124 {
22125 name = name_;
22126 return *this;
22127 }
22128
22129 operator const VkImportFenceWin32HandleInfoKHR&() const
22130 {
22131 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
22132 }
22133
22134 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
22135 {
22136 return ( sType == rhs.sType )
22137 && ( pNext == rhs.pNext )
22138 && ( fence == rhs.fence )
22139 && ( flags == rhs.flags )
22140 && ( handleType == rhs.handleType )
22141 && ( handle == rhs.handle )
22142 && ( name == rhs.name );
22143 }
22144
22145 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
22146 {
22147 return !operator==( rhs );
22148 }
22149
22150 private:
22151 StructureType sType;
22152
22153 public:
22154 const void* pNext;
22155 Fence fence;
22156 FenceImportFlagsKHR flags;
22157 ExternalFenceHandleTypeFlagBitsKHR handleType;
22158 HANDLE handle;
22159 LPCWSTR name;
22160 };
22161 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22162#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22163
22164 struct ImportFenceFdInfoKHR
22165 {
22166 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22167 : sType( StructureType::eImportFenceFdInfoKHR )
22168 , pNext( nullptr )
22169 , fence( fence_ )
22170 , flags( flags_ )
22171 , handleType( handleType_ )
22172 , fd( fd_ )
22173 {
22174 }
22175
22176 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
22177 {
22178 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
22179 }
22180
22181 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
22182 {
22183 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
22184 return *this;
22185 }
22186 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
22187 {
22188 pNext = pNext_;
22189 return *this;
22190 }
22191
22192 ImportFenceFdInfoKHR& setFence( Fence fence_ )
22193 {
22194 fence = fence_;
22195 return *this;
22196 }
22197
22198 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
22199 {
22200 flags = flags_;
22201 return *this;
22202 }
22203
22204 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22205 {
22206 handleType = handleType_;
22207 return *this;
22208 }
22209
22210 ImportFenceFdInfoKHR& setFd( int fd_ )
22211 {
22212 fd = fd_;
22213 return *this;
22214 }
22215
22216 operator const VkImportFenceFdInfoKHR&() const
22217 {
22218 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
22219 }
22220
22221 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
22222 {
22223 return ( sType == rhs.sType )
22224 && ( pNext == rhs.pNext )
22225 && ( fence == rhs.fence )
22226 && ( flags == rhs.flags )
22227 && ( handleType == rhs.handleType )
22228 && ( fd == rhs.fd );
22229 }
22230
22231 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
22232 {
22233 return !operator==( rhs );
22234 }
22235
22236 private:
22237 StructureType sType;
22238
22239 public:
22240 const void* pNext;
22241 Fence fence;
22242 FenceImportFlagsKHR flags;
22243 ExternalFenceHandleTypeFlagBitsKHR handleType;
22244 int fd;
22245 };
22246 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022247
Mark Young39389872017-01-19 21:10:49 -070022248 enum class SurfaceCounterFlagBitsEXT
22249 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060022250 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070022251 };
22252
22253 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
22254
22255 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
22256 {
22257 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
22258 }
22259
22260 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
22261 {
22262 return ~( SurfaceCounterFlagsEXT( bits ) );
22263 }
22264
22265 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
22266 {
22267 enum
22268 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060022269 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070022270 };
22271 };
22272
22273 struct SurfaceCapabilities2EXT
22274 {
22275 operator const VkSurfaceCapabilities2EXT&() const
22276 {
22277 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
22278 }
22279
22280 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
22281 {
22282 return ( sType == rhs.sType )
22283 && ( pNext == rhs.pNext )
22284 && ( minImageCount == rhs.minImageCount )
22285 && ( maxImageCount == rhs.maxImageCount )
22286 && ( currentExtent == rhs.currentExtent )
22287 && ( minImageExtent == rhs.minImageExtent )
22288 && ( maxImageExtent == rhs.maxImageExtent )
22289 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
22290 && ( supportedTransforms == rhs.supportedTransforms )
22291 && ( currentTransform == rhs.currentTransform )
22292 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
22293 && ( supportedUsageFlags == rhs.supportedUsageFlags )
22294 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
22295 }
22296
22297 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
22298 {
22299 return !operator==( rhs );
22300 }
22301
22302 private:
22303 StructureType sType;
22304
22305 public:
22306 void* pNext;
22307 uint32_t minImageCount;
22308 uint32_t maxImageCount;
22309 Extent2D currentExtent;
22310 Extent2D minImageExtent;
22311 Extent2D maxImageExtent;
22312 uint32_t maxImageArrayLayers;
22313 SurfaceTransformFlagsKHR supportedTransforms;
22314 SurfaceTransformFlagBitsKHR currentTransform;
22315 CompositeAlphaFlagsKHR supportedCompositeAlpha;
22316 ImageUsageFlags supportedUsageFlags;
22317 SurfaceCounterFlagsEXT supportedSurfaceCounters;
22318 };
22319 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
22320
22321 struct SwapchainCounterCreateInfoEXT
22322 {
22323 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
22324 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
22325 , pNext( nullptr )
22326 , surfaceCounters( surfaceCounters_ )
22327 {
22328 }
22329
22330 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
22331 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022332 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022333 }
22334
22335 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
22336 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022337 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022338 return *this;
22339 }
Mark Young39389872017-01-19 21:10:49 -070022340 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
22341 {
22342 pNext = pNext_;
22343 return *this;
22344 }
22345
22346 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
22347 {
22348 surfaceCounters = surfaceCounters_;
22349 return *this;
22350 }
22351
22352 operator const VkSwapchainCounterCreateInfoEXT&() const
22353 {
22354 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
22355 }
22356
22357 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
22358 {
22359 return ( sType == rhs.sType )
22360 && ( pNext == rhs.pNext )
22361 && ( surfaceCounters == rhs.surfaceCounters );
22362 }
22363
22364 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
22365 {
22366 return !operator==( rhs );
22367 }
22368
22369 private:
22370 StructureType sType;
22371
22372 public:
22373 const void* pNext;
22374 SurfaceCounterFlagsEXT surfaceCounters;
22375 };
22376 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
22377
22378 enum class DisplayPowerStateEXT
22379 {
22380 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
22381 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
22382 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
22383 };
22384
22385 struct DisplayPowerInfoEXT
22386 {
22387 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
22388 : sType( StructureType::eDisplayPowerInfoEXT )
22389 , pNext( nullptr )
22390 , powerState( powerState_ )
22391 {
22392 }
22393
22394 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
22395 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022396 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022397 }
22398
22399 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
22400 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022401 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022402 return *this;
22403 }
Mark Young39389872017-01-19 21:10:49 -070022404 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
22405 {
22406 pNext = pNext_;
22407 return *this;
22408 }
22409
22410 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
22411 {
22412 powerState = powerState_;
22413 return *this;
22414 }
22415
22416 operator const VkDisplayPowerInfoEXT&() const
22417 {
22418 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
22419 }
22420
22421 bool operator==( DisplayPowerInfoEXT const& rhs ) const
22422 {
22423 return ( sType == rhs.sType )
22424 && ( pNext == rhs.pNext )
22425 && ( powerState == rhs.powerState );
22426 }
22427
22428 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
22429 {
22430 return !operator==( rhs );
22431 }
22432
22433 private:
22434 StructureType sType;
22435
22436 public:
22437 const void* pNext;
22438 DisplayPowerStateEXT powerState;
22439 };
22440 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
22441
22442 enum class DeviceEventTypeEXT
22443 {
22444 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
22445 };
22446
22447 struct DeviceEventInfoEXT
22448 {
22449 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
22450 : sType( StructureType::eDeviceEventInfoEXT )
22451 , pNext( nullptr )
22452 , deviceEvent( deviceEvent_ )
22453 {
22454 }
22455
22456 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
22457 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022458 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022459 }
22460
22461 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
22462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022463 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022464 return *this;
22465 }
Mark Young39389872017-01-19 21:10:49 -070022466 DeviceEventInfoEXT& setPNext( const void* pNext_ )
22467 {
22468 pNext = pNext_;
22469 return *this;
22470 }
22471
22472 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
22473 {
22474 deviceEvent = deviceEvent_;
22475 return *this;
22476 }
22477
22478 operator const VkDeviceEventInfoEXT&() const
22479 {
22480 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
22481 }
22482
22483 bool operator==( DeviceEventInfoEXT const& rhs ) const
22484 {
22485 return ( sType == rhs.sType )
22486 && ( pNext == rhs.pNext )
22487 && ( deviceEvent == rhs.deviceEvent );
22488 }
22489
22490 bool operator!=( DeviceEventInfoEXT const& rhs ) const
22491 {
22492 return !operator==( rhs );
22493 }
22494
22495 private:
22496 StructureType sType;
22497
22498 public:
22499 const void* pNext;
22500 DeviceEventTypeEXT deviceEvent;
22501 };
22502 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
22503
22504 enum class DisplayEventTypeEXT
22505 {
22506 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
22507 };
22508
22509 struct DisplayEventInfoEXT
22510 {
22511 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
22512 : sType( StructureType::eDisplayEventInfoEXT )
22513 , pNext( nullptr )
22514 , displayEvent( displayEvent_ )
22515 {
22516 }
22517
22518 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
22519 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022520 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022521 }
22522
22523 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
22524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022525 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022526 return *this;
22527 }
Mark Young39389872017-01-19 21:10:49 -070022528 DisplayEventInfoEXT& setPNext( const void* pNext_ )
22529 {
22530 pNext = pNext_;
22531 return *this;
22532 }
22533
22534 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
22535 {
22536 displayEvent = displayEvent_;
22537 return *this;
22538 }
22539
22540 operator const VkDisplayEventInfoEXT&() const
22541 {
22542 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
22543 }
22544
22545 bool operator==( DisplayEventInfoEXT const& rhs ) const
22546 {
22547 return ( sType == rhs.sType )
22548 && ( pNext == rhs.pNext )
22549 && ( displayEvent == rhs.displayEvent );
22550 }
22551
22552 bool operator!=( DisplayEventInfoEXT const& rhs ) const
22553 {
22554 return !operator==( rhs );
22555 }
22556
22557 private:
22558 StructureType sType;
22559
22560 public:
22561 const void* pNext;
22562 DisplayEventTypeEXT displayEvent;
22563 };
22564 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
22565
Mark Young0f183a82017-02-28 09:58:04 -070022566 enum class PeerMemoryFeatureFlagBitsKHX
22567 {
22568 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
22569 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
22570 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
22571 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
22572 };
22573
22574 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
22575
22576 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
22577 {
22578 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
22579 }
22580
22581 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
22582 {
22583 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
22584 }
22585
22586 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
22587 {
22588 enum
22589 {
22590 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
22591 };
22592 };
22593
22594 enum class MemoryAllocateFlagBitsKHX
22595 {
22596 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
22597 };
22598
22599 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
22600
22601 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
22602 {
22603 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
22604 }
22605
22606 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
22607 {
22608 return ~( MemoryAllocateFlagsKHX( bits ) );
22609 }
22610
22611 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
22612 {
22613 enum
22614 {
22615 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
22616 };
22617 };
22618
22619 struct MemoryAllocateFlagsInfoKHX
22620 {
22621 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
22622 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
22623 , pNext( nullptr )
22624 , flags( flags_ )
22625 , deviceMask( deviceMask_ )
22626 {
22627 }
22628
22629 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
22630 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022631 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022632 }
22633
22634 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
22635 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022636 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022637 return *this;
22638 }
Mark Young0f183a82017-02-28 09:58:04 -070022639 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
22640 {
22641 pNext = pNext_;
22642 return *this;
22643 }
22644
22645 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
22646 {
22647 flags = flags_;
22648 return *this;
22649 }
22650
22651 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
22652 {
22653 deviceMask = deviceMask_;
22654 return *this;
22655 }
22656
22657 operator const VkMemoryAllocateFlagsInfoKHX&() const
22658 {
22659 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
22660 }
22661
22662 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
22663 {
22664 return ( sType == rhs.sType )
22665 && ( pNext == rhs.pNext )
22666 && ( flags == rhs.flags )
22667 && ( deviceMask == rhs.deviceMask );
22668 }
22669
22670 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
22671 {
22672 return !operator==( rhs );
22673 }
22674
22675 private:
22676 StructureType sType;
22677
22678 public:
22679 const void* pNext;
22680 MemoryAllocateFlagsKHX flags;
22681 uint32_t deviceMask;
22682 };
22683 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
22684
22685 enum class DeviceGroupPresentModeFlagBitsKHX
22686 {
22687 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
22688 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
22689 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
22690 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
22691 };
22692
22693 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
22694
22695 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
22696 {
22697 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
22698 }
22699
22700 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
22701 {
22702 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
22703 }
22704
22705 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
22706 {
22707 enum
22708 {
22709 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
22710 };
22711 };
22712
22713 struct DeviceGroupPresentCapabilitiesKHX
22714 {
22715 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
22716 {
22717 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
22718 }
22719
22720 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
22721 {
22722 return ( sType == rhs.sType )
22723 && ( pNext == rhs.pNext )
22724 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
22725 && ( modes == rhs.modes );
22726 }
22727
22728 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
22729 {
22730 return !operator==( rhs );
22731 }
22732
22733 private:
22734 StructureType sType;
22735
22736 public:
22737 const void* pNext;
22738 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
22739 DeviceGroupPresentModeFlagsKHX modes;
22740 };
22741 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
22742
22743 struct DeviceGroupPresentInfoKHX
22744 {
22745 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
22746 : sType( StructureType::eDeviceGroupPresentInfoKHX )
22747 , pNext( nullptr )
22748 , swapchainCount( swapchainCount_ )
22749 , pDeviceMasks( pDeviceMasks_ )
22750 , mode( mode_ )
22751 {
22752 }
22753
22754 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
22755 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022756 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022757 }
22758
22759 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
22760 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022761 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022762 return *this;
22763 }
Mark Young0f183a82017-02-28 09:58:04 -070022764 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
22765 {
22766 pNext = pNext_;
22767 return *this;
22768 }
22769
22770 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
22771 {
22772 swapchainCount = swapchainCount_;
22773 return *this;
22774 }
22775
22776 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
22777 {
22778 pDeviceMasks = pDeviceMasks_;
22779 return *this;
22780 }
22781
22782 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
22783 {
22784 mode = mode_;
22785 return *this;
22786 }
22787
22788 operator const VkDeviceGroupPresentInfoKHX&() const
22789 {
22790 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
22791 }
22792
22793 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
22794 {
22795 return ( sType == rhs.sType )
22796 && ( pNext == rhs.pNext )
22797 && ( swapchainCount == rhs.swapchainCount )
22798 && ( pDeviceMasks == rhs.pDeviceMasks )
22799 && ( mode == rhs.mode );
22800 }
22801
22802 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
22803 {
22804 return !operator==( rhs );
22805 }
22806
22807 private:
22808 StructureType sType;
22809
22810 public:
22811 const void* pNext;
22812 uint32_t swapchainCount;
22813 const uint32_t* pDeviceMasks;
22814 DeviceGroupPresentModeFlagBitsKHX mode;
22815 };
22816 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
22817
22818 struct DeviceGroupSwapchainCreateInfoKHX
22819 {
22820 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
22821 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
22822 , pNext( nullptr )
22823 , modes( modes_ )
22824 {
22825 }
22826
22827 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
22828 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022829 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022830 }
22831
22832 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
22833 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022834 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022835 return *this;
22836 }
Mark Young0f183a82017-02-28 09:58:04 -070022837 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
22838 {
22839 pNext = pNext_;
22840 return *this;
22841 }
22842
22843 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
22844 {
22845 modes = modes_;
22846 return *this;
22847 }
22848
22849 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
22850 {
22851 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
22852 }
22853
22854 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
22855 {
22856 return ( sType == rhs.sType )
22857 && ( pNext == rhs.pNext )
22858 && ( modes == rhs.modes );
22859 }
22860
22861 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
22862 {
22863 return !operator==( rhs );
22864 }
22865
22866 private:
22867 StructureType sType;
22868
22869 public:
22870 const void* pNext;
22871 DeviceGroupPresentModeFlagsKHX modes;
22872 };
22873 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
22874
22875 enum class SwapchainCreateFlagBitsKHR
22876 {
22877 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
22878 };
22879
22880 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
22881
22882 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
22883 {
22884 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
22885 }
22886
22887 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
22888 {
22889 return ~( SwapchainCreateFlagsKHR( bits ) );
22890 }
22891
22892 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
22893 {
22894 enum
22895 {
22896 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
22897 };
22898 };
22899
22900 struct SwapchainCreateInfoKHR
22901 {
22902 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() )
22903 : sType( StructureType::eSwapchainCreateInfoKHR )
22904 , pNext( nullptr )
22905 , flags( flags_ )
22906 , surface( surface_ )
22907 , minImageCount( minImageCount_ )
22908 , imageFormat( imageFormat_ )
22909 , imageColorSpace( imageColorSpace_ )
22910 , imageExtent( imageExtent_ )
22911 , imageArrayLayers( imageArrayLayers_ )
22912 , imageUsage( imageUsage_ )
22913 , imageSharingMode( imageSharingMode_ )
22914 , queueFamilyIndexCount( queueFamilyIndexCount_ )
22915 , pQueueFamilyIndices( pQueueFamilyIndices_ )
22916 , preTransform( preTransform_ )
22917 , compositeAlpha( compositeAlpha_ )
22918 , presentMode( presentMode_ )
22919 , clipped( clipped_ )
22920 , oldSwapchain( oldSwapchain_ )
22921 {
22922 }
22923
22924 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
22925 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022926 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022927 }
22928
22929 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
22930 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022931 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022932 return *this;
22933 }
Mark Young0f183a82017-02-28 09:58:04 -070022934 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
22935 {
22936 pNext = pNext_;
22937 return *this;
22938 }
22939
22940 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
22941 {
22942 flags = flags_;
22943 return *this;
22944 }
22945
22946 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
22947 {
22948 surface = surface_;
22949 return *this;
22950 }
22951
22952 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
22953 {
22954 minImageCount = minImageCount_;
22955 return *this;
22956 }
22957
22958 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
22959 {
22960 imageFormat = imageFormat_;
22961 return *this;
22962 }
22963
22964 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
22965 {
22966 imageColorSpace = imageColorSpace_;
22967 return *this;
22968 }
22969
22970 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
22971 {
22972 imageExtent = imageExtent_;
22973 return *this;
22974 }
22975
22976 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
22977 {
22978 imageArrayLayers = imageArrayLayers_;
22979 return *this;
22980 }
22981
22982 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
22983 {
22984 imageUsage = imageUsage_;
22985 return *this;
22986 }
22987
22988 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
22989 {
22990 imageSharingMode = imageSharingMode_;
22991 return *this;
22992 }
22993
22994 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
22995 {
22996 queueFamilyIndexCount = queueFamilyIndexCount_;
22997 return *this;
22998 }
22999
23000 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
23001 {
23002 pQueueFamilyIndices = pQueueFamilyIndices_;
23003 return *this;
23004 }
23005
23006 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
23007 {
23008 preTransform = preTransform_;
23009 return *this;
23010 }
23011
23012 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
23013 {
23014 compositeAlpha = compositeAlpha_;
23015 return *this;
23016 }
23017
23018 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
23019 {
23020 presentMode = presentMode_;
23021 return *this;
23022 }
23023
23024 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
23025 {
23026 clipped = clipped_;
23027 return *this;
23028 }
23029
23030 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
23031 {
23032 oldSwapchain = oldSwapchain_;
23033 return *this;
23034 }
23035
23036 operator const VkSwapchainCreateInfoKHR&() const
23037 {
23038 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
23039 }
23040
23041 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
23042 {
23043 return ( sType == rhs.sType )
23044 && ( pNext == rhs.pNext )
23045 && ( flags == rhs.flags )
23046 && ( surface == rhs.surface )
23047 && ( minImageCount == rhs.minImageCount )
23048 && ( imageFormat == rhs.imageFormat )
23049 && ( imageColorSpace == rhs.imageColorSpace )
23050 && ( imageExtent == rhs.imageExtent )
23051 && ( imageArrayLayers == rhs.imageArrayLayers )
23052 && ( imageUsage == rhs.imageUsage )
23053 && ( imageSharingMode == rhs.imageSharingMode )
23054 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
23055 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
23056 && ( preTransform == rhs.preTransform )
23057 && ( compositeAlpha == rhs.compositeAlpha )
23058 && ( presentMode == rhs.presentMode )
23059 && ( clipped == rhs.clipped )
23060 && ( oldSwapchain == rhs.oldSwapchain );
23061 }
23062
23063 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
23064 {
23065 return !operator==( rhs );
23066 }
23067
23068 private:
23069 StructureType sType;
23070
23071 public:
23072 const void* pNext;
23073 SwapchainCreateFlagsKHR flags;
23074 SurfaceKHR surface;
23075 uint32_t minImageCount;
23076 Format imageFormat;
23077 ColorSpaceKHR imageColorSpace;
23078 Extent2D imageExtent;
23079 uint32_t imageArrayLayers;
23080 ImageUsageFlags imageUsage;
23081 SharingMode imageSharingMode;
23082 uint32_t queueFamilyIndexCount;
23083 const uint32_t* pQueueFamilyIndices;
23084 SurfaceTransformFlagBitsKHR preTransform;
23085 CompositeAlphaFlagBitsKHR compositeAlpha;
23086 PresentModeKHR presentMode;
23087 Bool32 clipped;
23088 SwapchainKHR oldSwapchain;
23089 };
23090 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
23091
23092 enum class ViewportCoordinateSwizzleNV
23093 {
23094 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
23095 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
23096 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
23097 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
23098 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
23099 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
23100 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
23101 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
23102 };
23103
23104 struct ViewportSwizzleNV
23105 {
23106 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
23107 : x( x_ )
23108 , y( y_ )
23109 , z( z_ )
23110 , w( w_ )
23111 {
23112 }
23113
23114 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
23115 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023116 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023117 }
23118
23119 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
23120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023121 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023122 return *this;
23123 }
Mark Young0f183a82017-02-28 09:58:04 -070023124 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
23125 {
23126 x = x_;
23127 return *this;
23128 }
23129
23130 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
23131 {
23132 y = y_;
23133 return *this;
23134 }
23135
23136 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
23137 {
23138 z = z_;
23139 return *this;
23140 }
23141
23142 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
23143 {
23144 w = w_;
23145 return *this;
23146 }
23147
23148 operator const VkViewportSwizzleNV&() const
23149 {
23150 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
23151 }
23152
23153 bool operator==( ViewportSwizzleNV const& rhs ) const
23154 {
23155 return ( x == rhs.x )
23156 && ( y == rhs.y )
23157 && ( z == rhs.z )
23158 && ( w == rhs.w );
23159 }
23160
23161 bool operator!=( ViewportSwizzleNV const& rhs ) const
23162 {
23163 return !operator==( rhs );
23164 }
23165
23166 ViewportCoordinateSwizzleNV x;
23167 ViewportCoordinateSwizzleNV y;
23168 ViewportCoordinateSwizzleNV z;
23169 ViewportCoordinateSwizzleNV w;
23170 };
23171 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
23172
23173 struct PipelineViewportSwizzleStateCreateInfoNV
23174 {
23175 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
23176 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
23177 , pNext( nullptr )
23178 , flags( flags_ )
23179 , viewportCount( viewportCount_ )
23180 , pViewportSwizzles( pViewportSwizzles_ )
23181 {
23182 }
23183
23184 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
23185 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023186 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023187 }
23188
23189 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
23190 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023191 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023192 return *this;
23193 }
Mark Young0f183a82017-02-28 09:58:04 -070023194 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
23195 {
23196 pNext = pNext_;
23197 return *this;
23198 }
23199
23200 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
23201 {
23202 flags = flags_;
23203 return *this;
23204 }
23205
23206 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
23207 {
23208 viewportCount = viewportCount_;
23209 return *this;
23210 }
23211
23212 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
23213 {
23214 pViewportSwizzles = pViewportSwizzles_;
23215 return *this;
23216 }
23217
23218 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
23219 {
23220 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
23221 }
23222
23223 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
23224 {
23225 return ( sType == rhs.sType )
23226 && ( pNext == rhs.pNext )
23227 && ( flags == rhs.flags )
23228 && ( viewportCount == rhs.viewportCount )
23229 && ( pViewportSwizzles == rhs.pViewportSwizzles );
23230 }
23231
23232 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
23233 {
23234 return !operator==( rhs );
23235 }
23236
23237 private:
23238 StructureType sType;
23239
23240 public:
23241 const void* pNext;
23242 PipelineViewportSwizzleStateCreateFlagsNV flags;
23243 uint32_t viewportCount;
23244 const ViewportSwizzleNV* pViewportSwizzles;
23245 };
23246 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
23247
23248 enum class DiscardRectangleModeEXT
23249 {
23250 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
23251 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
23252 };
23253
23254 struct PipelineDiscardRectangleStateCreateInfoEXT
23255 {
23256 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
23257 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
23258 , pNext( nullptr )
23259 , flags( flags_ )
23260 , discardRectangleMode( discardRectangleMode_ )
23261 , discardRectangleCount( discardRectangleCount_ )
23262 , pDiscardRectangles( pDiscardRectangles_ )
23263 {
23264 }
23265
23266 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
23267 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023268 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070023269 }
23270
23271 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
23272 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023273 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070023274 return *this;
23275 }
Mark Young0f183a82017-02-28 09:58:04 -070023276 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
23277 {
23278 pNext = pNext_;
23279 return *this;
23280 }
23281
23282 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
23283 {
23284 flags = flags_;
23285 return *this;
23286 }
23287
23288 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
23289 {
23290 discardRectangleMode = discardRectangleMode_;
23291 return *this;
23292 }
23293
23294 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
23295 {
23296 discardRectangleCount = discardRectangleCount_;
23297 return *this;
23298 }
23299
23300 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
23301 {
23302 pDiscardRectangles = pDiscardRectangles_;
23303 return *this;
23304 }
23305
23306 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
23307 {
23308 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
23309 }
23310
23311 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
23312 {
23313 return ( sType == rhs.sType )
23314 && ( pNext == rhs.pNext )
23315 && ( flags == rhs.flags )
23316 && ( discardRectangleMode == rhs.discardRectangleMode )
23317 && ( discardRectangleCount == rhs.discardRectangleCount )
23318 && ( pDiscardRectangles == rhs.pDiscardRectangles );
23319 }
23320
23321 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
23322 {
23323 return !operator==( rhs );
23324 }
23325
23326 private:
23327 StructureType sType;
23328
23329 public:
23330 const void* pNext;
23331 PipelineDiscardRectangleStateCreateFlagsEXT flags;
23332 DiscardRectangleModeEXT discardRectangleMode;
23333 uint32_t discardRectangleCount;
23334 const Rect2D* pDiscardRectangles;
23335 };
23336 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
23337
23338 enum class SubpassDescriptionFlagBits
23339 {
23340 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
23341 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
23342 };
23343
23344 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
23345
23346 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
23347 {
23348 return SubpassDescriptionFlags( bit0 ) | bit1;
23349 }
23350
23351 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
23352 {
23353 return ~( SubpassDescriptionFlags( bits ) );
23354 }
23355
23356 template <> struct FlagTraits<SubpassDescriptionFlagBits>
23357 {
23358 enum
23359 {
23360 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
23361 };
23362 };
23363
23364 struct SubpassDescription
23365 {
23366 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 )
23367 : flags( flags_ )
23368 , pipelineBindPoint( pipelineBindPoint_ )
23369 , inputAttachmentCount( inputAttachmentCount_ )
23370 , pInputAttachments( pInputAttachments_ )
23371 , colorAttachmentCount( colorAttachmentCount_ )
23372 , pColorAttachments( pColorAttachments_ )
23373 , pResolveAttachments( pResolveAttachments_ )
23374 , pDepthStencilAttachment( pDepthStencilAttachment_ )
23375 , preserveAttachmentCount( preserveAttachmentCount_ )
23376 , pPreserveAttachments( pPreserveAttachments_ )
23377 {
23378 }
23379
23380 SubpassDescription( VkSubpassDescription const & rhs )
23381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023382 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070023383 }
23384
23385 SubpassDescription& operator=( VkSubpassDescription const & rhs )
23386 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023387 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070023388 return *this;
23389 }
Mark Young0f183a82017-02-28 09:58:04 -070023390 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
23391 {
23392 flags = flags_;
23393 return *this;
23394 }
23395
23396 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
23397 {
23398 pipelineBindPoint = pipelineBindPoint_;
23399 return *this;
23400 }
23401
23402 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
23403 {
23404 inputAttachmentCount = inputAttachmentCount_;
23405 return *this;
23406 }
23407
23408 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
23409 {
23410 pInputAttachments = pInputAttachments_;
23411 return *this;
23412 }
23413
23414 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
23415 {
23416 colorAttachmentCount = colorAttachmentCount_;
23417 return *this;
23418 }
23419
23420 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
23421 {
23422 pColorAttachments = pColorAttachments_;
23423 return *this;
23424 }
23425
23426 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
23427 {
23428 pResolveAttachments = pResolveAttachments_;
23429 return *this;
23430 }
23431
23432 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
23433 {
23434 pDepthStencilAttachment = pDepthStencilAttachment_;
23435 return *this;
23436 }
23437
23438 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
23439 {
23440 preserveAttachmentCount = preserveAttachmentCount_;
23441 return *this;
23442 }
23443
23444 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
23445 {
23446 pPreserveAttachments = pPreserveAttachments_;
23447 return *this;
23448 }
23449
23450 operator const VkSubpassDescription&() const
23451 {
23452 return *reinterpret_cast<const VkSubpassDescription*>(this);
23453 }
23454
23455 bool operator==( SubpassDescription const& rhs ) const
23456 {
23457 return ( flags == rhs.flags )
23458 && ( pipelineBindPoint == rhs.pipelineBindPoint )
23459 && ( inputAttachmentCount == rhs.inputAttachmentCount )
23460 && ( pInputAttachments == rhs.pInputAttachments )
23461 && ( colorAttachmentCount == rhs.colorAttachmentCount )
23462 && ( pColorAttachments == rhs.pColorAttachments )
23463 && ( pResolveAttachments == rhs.pResolveAttachments )
23464 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
23465 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
23466 && ( pPreserveAttachments == rhs.pPreserveAttachments );
23467 }
23468
23469 bool operator!=( SubpassDescription const& rhs ) const
23470 {
23471 return !operator==( rhs );
23472 }
23473
23474 SubpassDescriptionFlags flags;
23475 PipelineBindPoint pipelineBindPoint;
23476 uint32_t inputAttachmentCount;
23477 const AttachmentReference* pInputAttachments;
23478 uint32_t colorAttachmentCount;
23479 const AttachmentReference* pColorAttachments;
23480 const AttachmentReference* pResolveAttachments;
23481 const AttachmentReference* pDepthStencilAttachment;
23482 uint32_t preserveAttachmentCount;
23483 const uint32_t* pPreserveAttachments;
23484 };
23485 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
23486
23487 struct RenderPassCreateInfo
23488 {
23489 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 )
23490 : sType( StructureType::eRenderPassCreateInfo )
23491 , pNext( nullptr )
23492 , flags( flags_ )
23493 , attachmentCount( attachmentCount_ )
23494 , pAttachments( pAttachments_ )
23495 , subpassCount( subpassCount_ )
23496 , pSubpasses( pSubpasses_ )
23497 , dependencyCount( dependencyCount_ )
23498 , pDependencies( pDependencies_ )
23499 {
23500 }
23501
23502 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
23503 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023504 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070023505 }
23506
23507 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
23508 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023509 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070023510 return *this;
23511 }
Mark Young0f183a82017-02-28 09:58:04 -070023512 RenderPassCreateInfo& setPNext( const void* pNext_ )
23513 {
23514 pNext = pNext_;
23515 return *this;
23516 }
23517
23518 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
23519 {
23520 flags = flags_;
23521 return *this;
23522 }
23523
23524 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
23525 {
23526 attachmentCount = attachmentCount_;
23527 return *this;
23528 }
23529
23530 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
23531 {
23532 pAttachments = pAttachments_;
23533 return *this;
23534 }
23535
23536 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
23537 {
23538 subpassCount = subpassCount_;
23539 return *this;
23540 }
23541
23542 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
23543 {
23544 pSubpasses = pSubpasses_;
23545 return *this;
23546 }
23547
23548 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
23549 {
23550 dependencyCount = dependencyCount_;
23551 return *this;
23552 }
23553
23554 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
23555 {
23556 pDependencies = pDependencies_;
23557 return *this;
23558 }
23559
23560 operator const VkRenderPassCreateInfo&() const
23561 {
23562 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
23563 }
23564
23565 bool operator==( RenderPassCreateInfo const& rhs ) const
23566 {
23567 return ( sType == rhs.sType )
23568 && ( pNext == rhs.pNext )
23569 && ( flags == rhs.flags )
23570 && ( attachmentCount == rhs.attachmentCount )
23571 && ( pAttachments == rhs.pAttachments )
23572 && ( subpassCount == rhs.subpassCount )
23573 && ( pSubpasses == rhs.pSubpasses )
23574 && ( dependencyCount == rhs.dependencyCount )
23575 && ( pDependencies == rhs.pDependencies );
23576 }
23577
23578 bool operator!=( RenderPassCreateInfo const& rhs ) const
23579 {
23580 return !operator==( rhs );
23581 }
23582
23583 private:
23584 StructureType sType;
23585
23586 public:
23587 const void* pNext;
23588 RenderPassCreateFlags flags;
23589 uint32_t attachmentCount;
23590 const AttachmentDescription* pAttachments;
23591 uint32_t subpassCount;
23592 const SubpassDescription* pSubpasses;
23593 uint32_t dependencyCount;
23594 const SubpassDependency* pDependencies;
23595 };
23596 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
23597
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060023598 enum class SamplerReductionModeEXT
23599 {
23600 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
23601 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
23602 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
23603 };
23604
23605 struct SamplerReductionModeCreateInfoEXT
23606 {
23607 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
23608 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
23609 , pNext( nullptr )
23610 , reductionMode( reductionMode_ )
23611 {
23612 }
23613
23614 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
23615 {
23616 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
23617 }
23618
23619 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
23620 {
23621 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
23622 return *this;
23623 }
23624 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
23625 {
23626 pNext = pNext_;
23627 return *this;
23628 }
23629
23630 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
23631 {
23632 reductionMode = reductionMode_;
23633 return *this;
23634 }
23635
23636 operator const VkSamplerReductionModeCreateInfoEXT&() const
23637 {
23638 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
23639 }
23640
23641 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
23642 {
23643 return ( sType == rhs.sType )
23644 && ( pNext == rhs.pNext )
23645 && ( reductionMode == rhs.reductionMode );
23646 }
23647
23648 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
23649 {
23650 return !operator==( rhs );
23651 }
23652
23653 private:
23654 StructureType sType;
23655
23656 public:
23657 const void* pNext;
23658 SamplerReductionModeEXT reductionMode;
23659 };
23660 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
23661
23662 enum class BlendOverlapEXT
23663 {
23664 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
23665 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
23666 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
23667 };
23668
23669 struct PipelineColorBlendAdvancedStateCreateInfoEXT
23670 {
23671 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
23672 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
23673 , pNext( nullptr )
23674 , srcPremultiplied( srcPremultiplied_ )
23675 , dstPremultiplied( dstPremultiplied_ )
23676 , blendOverlap( blendOverlap_ )
23677 {
23678 }
23679
23680 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
23681 {
23682 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
23683 }
23684
23685 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
23686 {
23687 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
23688 return *this;
23689 }
23690 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
23691 {
23692 pNext = pNext_;
23693 return *this;
23694 }
23695
23696 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
23697 {
23698 srcPremultiplied = srcPremultiplied_;
23699 return *this;
23700 }
23701
23702 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
23703 {
23704 dstPremultiplied = dstPremultiplied_;
23705 return *this;
23706 }
23707
23708 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
23709 {
23710 blendOverlap = blendOverlap_;
23711 return *this;
23712 }
23713
23714 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
23715 {
23716 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
23717 }
23718
23719 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
23720 {
23721 return ( sType == rhs.sType )
23722 && ( pNext == rhs.pNext )
23723 && ( srcPremultiplied == rhs.srcPremultiplied )
23724 && ( dstPremultiplied == rhs.dstPremultiplied )
23725 && ( blendOverlap == rhs.blendOverlap );
23726 }
23727
23728 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
23729 {
23730 return !operator==( rhs );
23731 }
23732
23733 private:
23734 StructureType sType;
23735
23736 public:
23737 const void* pNext;
23738 Bool32 srcPremultiplied;
23739 Bool32 dstPremultiplied;
23740 BlendOverlapEXT blendOverlap;
23741 };
23742 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
23743
23744 enum class CoverageModulationModeNV
23745 {
23746 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
23747 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
23748 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
23749 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
23750 };
23751
23752 struct PipelineCoverageModulationStateCreateInfoNV
23753 {
23754 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
23755 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
23756 , pNext( nullptr )
23757 , flags( flags_ )
23758 , coverageModulationMode( coverageModulationMode_ )
23759 , coverageModulationTableEnable( coverageModulationTableEnable_ )
23760 , coverageModulationTableCount( coverageModulationTableCount_ )
23761 , pCoverageModulationTable( pCoverageModulationTable_ )
23762 {
23763 }
23764
23765 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
23766 {
23767 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
23768 }
23769
23770 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
23771 {
23772 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
23773 return *this;
23774 }
23775 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
23776 {
23777 pNext = pNext_;
23778 return *this;
23779 }
23780
23781 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
23782 {
23783 flags = flags_;
23784 return *this;
23785 }
23786
23787 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
23788 {
23789 coverageModulationMode = coverageModulationMode_;
23790 return *this;
23791 }
23792
23793 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
23794 {
23795 coverageModulationTableEnable = coverageModulationTableEnable_;
23796 return *this;
23797 }
23798
23799 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
23800 {
23801 coverageModulationTableCount = coverageModulationTableCount_;
23802 return *this;
23803 }
23804
23805 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
23806 {
23807 pCoverageModulationTable = pCoverageModulationTable_;
23808 return *this;
23809 }
23810
23811 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
23812 {
23813 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
23814 }
23815
23816 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
23817 {
23818 return ( sType == rhs.sType )
23819 && ( pNext == rhs.pNext )
23820 && ( flags == rhs.flags )
23821 && ( coverageModulationMode == rhs.coverageModulationMode )
23822 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
23823 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
23824 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
23825 }
23826
23827 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
23828 {
23829 return !operator==( rhs );
23830 }
23831
23832 private:
23833 StructureType sType;
23834
23835 public:
23836 const void* pNext;
23837 PipelineCoverageModulationStateCreateFlagsNV flags;
23838 CoverageModulationModeNV coverageModulationMode;
23839 Bool32 coverageModulationTableEnable;
23840 uint32_t coverageModulationTableCount;
23841 const float* pCoverageModulationTable;
23842 };
23843 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
23844
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023845 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023846#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023847 template <typename Allocator = std::allocator<LayerProperties>>
23848 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023849#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23850
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023851 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
23852 {
23853 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
23854 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023855#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023856 template <typename Allocator>
23857 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023858 {
23859 std::vector<LayerProperties,Allocator> properties;
23860 uint32_t propertyCount;
23861 Result result;
23862 do
23863 {
23864 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
23865 if ( ( result == Result::eSuccess ) && propertyCount )
23866 {
23867 properties.resize( propertyCount );
23868 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
23869 }
23870 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023871 assert( propertyCount <= properties.size() );
23872 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023873 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
23874 }
23875#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23876
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023877
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023878 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023879#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023880 template <typename Allocator = std::allocator<ExtensionProperties>>
23881 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23883
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023884 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
23885 {
23886 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
23887 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023889 template <typename Allocator>
23890 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023891 {
23892 std::vector<ExtensionProperties,Allocator> properties;
23893 uint32_t propertyCount;
23894 Result result;
23895 do
23896 {
23897 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
23898 if ( ( result == Result::eSuccess ) && propertyCount )
23899 {
23900 properties.resize( propertyCount );
23901 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
23902 }
23903 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023904 assert( propertyCount <= properties.size() );
23905 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023906 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
23907 }
23908#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23909
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023910
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023911 // forward declarations
23912 struct CmdProcessCommandsInfoNVX;
23913
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023914 class CommandBuffer
23915 {
23916 public:
23917 CommandBuffer()
23918 : m_commandBuffer(VK_NULL_HANDLE)
23919 {}
23920
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070023921 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023922 : m_commandBuffer(VK_NULL_HANDLE)
23923 {}
23924
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023925 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
23926 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023927 {}
23928
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023929#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023930 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023931 {
23932 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023933 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023934 }
23935#endif
23936
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023937 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023938 {
23939 m_commandBuffer = VK_NULL_HANDLE;
23940 return *this;
23941 }
23942
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023943 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023944 {
23945 return m_commandBuffer == rhs.m_commandBuffer;
23946 }
23947
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023948 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023949 {
23950 return m_commandBuffer != rhs.m_commandBuffer;
23951 }
23952
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023953 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023954 {
23955 return m_commandBuffer < rhs.m_commandBuffer;
23956 }
23957
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023958 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023959#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023960 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23962
23963#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023964 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023965#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023966 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23968
23969#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023970 Result reset( CommandBufferResetFlags flags ) const;
23971#else
23972 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023973#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23974
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023975 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023976
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023977 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023978#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023979 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23981
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023982 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023983#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023984 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23986
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023987 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023989 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
23990
23991 void setBlendConstants( const float blendConstants[4] ) const;
23992
23993 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
23994
23995 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
23996
23997 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
23998
23999 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
24000
24001 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 -060024002#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024003 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 -060024004#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24005
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024006 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024007
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024008 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024009#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024010 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024011#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24012
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024013 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024014
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024015 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
24016
24017 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
24018
24019 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
24020
Mark Young0f183a82017-02-28 09:58:04 -070024021 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024022
24023 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
24024
24025 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024026#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024027 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024028#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24029
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024030 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024032 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24034
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024035 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 -060024036#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024037 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024040 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024042 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024043#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24044
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024045 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024047 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24049
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024050 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24052 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024053 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024054#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24055
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024056 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024057
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024058 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024060 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24062
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024063 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024065 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24067
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024068 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024070 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24072
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024073 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024074#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024075 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24077
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024078 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024079
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024080 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
24081
24082 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 -060024083#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024084 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 -060024085#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24086
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024087 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 -060024088#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024089 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 -060024090#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24091
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024092 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024093
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024094 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024095
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024096 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024097
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024098 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024099
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024100 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 -060024101
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024102 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24104 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024105 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24107
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024108 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024110 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24112
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024113 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024114
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024115 void endRenderPass() const;
24116
24117 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024119 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24121
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024122 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024124 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24126
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024127 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024128
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024129 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024130#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024131 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24133
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024134 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024135
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024136 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
24137
24138 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024139#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024140 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024141#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24142
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024143 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024145 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24147
Mark Young0f183a82017-02-28 09:58:04 -070024148 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
24149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24150 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
24151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24152
24153 void setDeviceMaskKHX( uint32_t deviceMask ) const;
24154
24155 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
24156
24157 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
24158
24159 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
24160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24161 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
24162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24163
24164 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
24165#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24166 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
24167#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24168
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024169
24170
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024171 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024172 {
24173 return m_commandBuffer;
24174 }
24175
24176 explicit operator bool() const
24177 {
24178 return m_commandBuffer != VK_NULL_HANDLE;
24179 }
24180
24181 bool operator!() const
24182 {
24183 return m_commandBuffer == VK_NULL_HANDLE;
24184 }
24185
24186 private:
24187 VkCommandBuffer m_commandBuffer;
24188 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024189
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024190 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
24191
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024192 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
24193 {
24194 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
24195 }
24196#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24197 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
24198 {
24199 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
24200 return createResultValue( result, "vk::CommandBuffer::begin" );
24201 }
24202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24203
24204#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24205 VULKAN_HPP_INLINE Result CommandBuffer::end() const
24206 {
24207 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
24208 }
24209#else
24210 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
24211 {
24212 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
24213 return createResultValue( result, "vk::CommandBuffer::end" );
24214 }
24215#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24216
24217#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24218 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
24219 {
24220 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
24221 }
24222#else
24223 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
24224 {
24225 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
24226 return createResultValue( result, "vk::CommandBuffer::reset" );
24227 }
24228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24229
24230 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
24231 {
24232 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
24233 }
24234
24235 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
24236 {
24237 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
24238 }
24239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24240 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
24241 {
24242 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
24243 }
24244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24245
24246 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
24247 {
24248 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
24249 }
24250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24251 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
24252 {
24253 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
24254 }
24255#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24256
24257 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
24258 {
24259 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
24260 }
24261
24262 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
24263 {
24264 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
24265 }
24266
24267 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
24268 {
24269 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
24270 }
24271
24272 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
24273 {
24274 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
24275 }
24276
24277 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
24278 {
24279 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
24280 }
24281
24282 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
24283 {
24284 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
24285 }
24286
24287 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
24288 {
24289 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
24290 }
24291
24292 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
24293 {
24294 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
24295 }
24296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24297 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
24298 {
24299 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
24300 }
24301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24302
24303 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
24304 {
24305 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
24306 }
24307
24308 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
24309 {
24310 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
24311 }
24312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24313 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
24314 {
24315#ifdef VULKAN_HPP_NO_EXCEPTIONS
24316 assert( buffers.size() == offsets.size() );
24317#else
24318 if ( buffers.size() != offsets.size() )
24319 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024320 throw LogicError( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024321 }
24322#endif // VULKAN_HPP_NO_EXCEPTIONS
24323 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
24324 }
24325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24326
24327 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
24328 {
24329 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
24330 }
24331
24332 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
24333 {
24334 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
24335 }
24336
24337 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
24338 {
24339 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
24340 }
24341
24342 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
24343 {
24344 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
24345 }
24346
Mark Young0f183a82017-02-28 09:58:04 -070024347 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024348 {
Mark Young0f183a82017-02-28 09:58:04 -070024349 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024350 }
24351
24352 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
24353 {
24354 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
24355 }
24356
24357 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
24358 {
24359 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
24360 }
24361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24362 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
24363 {
24364 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
24365 }
24366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24367
24368 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
24369 {
24370 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 ) );
24371 }
24372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24373 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
24374 {
24375 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() ) );
24376 }
24377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24378
24379 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
24380 {
24381 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 ) );
24382 }
24383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24384 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
24385 {
24386 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 ) );
24387 }
24388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24389
24390 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
24391 {
24392 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
24393 }
24394#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24395 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
24396 {
24397 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
24398 }
24399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24400
24401 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
24402 {
24403 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
24404 }
24405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24406 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
24407 {
24408 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
24409 }
24410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24411
24412 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
24413 {
24414 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
24415 }
24416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24417 template <typename T>
24418 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
24419 {
24420 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
24421 }
24422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24423
24424 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
24425 {
24426 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
24427 }
24428
24429 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
24430 {
24431 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
24432 }
24433#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24434 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
24435 {
24436 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
24437 }
24438#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24439
24440 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
24441 {
24442 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
24443 }
24444#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24445 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
24446 {
24447 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
24448 }
24449#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24450
24451 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
24452 {
24453 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
24454 }
24455#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24456 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
24457 {
24458 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
24459 }
24460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24461
24462 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
24463 {
24464 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 ) );
24465 }
24466#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24467 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
24468 {
24469 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() ) );
24470 }
24471#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24472
24473 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
24474 {
24475 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
24476 }
24477
24478 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
24479 {
24480 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
24481 }
24482
24483 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
24484 {
24485 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 ) );
24486 }
24487#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24488 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
24489 {
24490 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() ) );
24491 }
24492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24493
24494 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
24495 {
24496 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 ) );
24497 }
24498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24499 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
24500 {
24501 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() ) );
24502 }
24503#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24504
24505 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
24506 {
24507 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
24508 }
24509
24510 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
24511 {
24512 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
24513 }
24514
24515 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
24516 {
24517 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
24518 }
24519
24520 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
24521 {
24522 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
24523 }
24524
24525 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
24526 {
24527 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
24528 }
24529
24530 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
24531 {
24532 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
24533 }
24534#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24535 template <typename T>
24536 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
24537 {
24538 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
24539 }
24540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24541
24542 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
24543 {
24544 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
24545 }
24546#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24547 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
24548 {
24549 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
24550 }
24551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24552
24553 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
24554 {
24555 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
24556 }
24557
24558 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
24559 {
24560 vkCmdEndRenderPass( m_commandBuffer );
24561 }
24562
24563 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
24564 {
24565 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
24566 }
24567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24568 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
24569 {
24570 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
24571 }
24572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24573
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024574 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024575 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024576 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024577 }
24578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024579 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024580 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024581 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024582 }
24583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24584
24585 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
24586 {
24587 vkCmdDebugMarkerEndEXT( m_commandBuffer );
24588 }
24589
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024590 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024591 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024592 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024593 }
24594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024595 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024596 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024597 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024598 }
24599#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24600
24601 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
24602 {
24603 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
24604 }
24605
24606 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
24607 {
24608 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
24609 }
24610
24611 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
24612 {
24613 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
24614 }
24615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24616 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
24617 {
24618 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
24619 }
24620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24621
24622 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
24623 {
24624 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
24625 }
24626#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24627 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
24628 {
24629 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
24630 }
24631#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070024632
24633 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
24634 {
24635 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
24636 }
24637#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24638 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
24639 {
24640 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
24641 }
24642#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24643
24644 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
24645 {
24646 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
24647 }
24648
24649 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
24650 {
24651 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
24652 }
24653
24654 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
24655 {
24656 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
24657 }
24658
24659 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
24660 {
24661 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
24662 }
24663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24664 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
24665 {
24666 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
24667 }
24668#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24669
24670 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
24671 {
24672 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
24673 }
24674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24675 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
24676 {
24677 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
24678 }
24679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024680
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024681 struct SubmitInfo
24682 {
24683 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 )
24684 : sType( StructureType::eSubmitInfo )
24685 , pNext( nullptr )
24686 , waitSemaphoreCount( waitSemaphoreCount_ )
24687 , pWaitSemaphores( pWaitSemaphores_ )
24688 , pWaitDstStageMask( pWaitDstStageMask_ )
24689 , commandBufferCount( commandBufferCount_ )
24690 , pCommandBuffers( pCommandBuffers_ )
24691 , signalSemaphoreCount( signalSemaphoreCount_ )
24692 , pSignalSemaphores( pSignalSemaphores_ )
24693 {
24694 }
24695
24696 SubmitInfo( VkSubmitInfo const & rhs )
24697 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024698 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024699 }
24700
24701 SubmitInfo& operator=( VkSubmitInfo const & rhs )
24702 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024703 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024704 return *this;
24705 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024706 SubmitInfo& setPNext( const void* pNext_ )
24707 {
24708 pNext = pNext_;
24709 return *this;
24710 }
24711
24712 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
24713 {
24714 waitSemaphoreCount = waitSemaphoreCount_;
24715 return *this;
24716 }
24717
24718 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
24719 {
24720 pWaitSemaphores = pWaitSemaphores_;
24721 return *this;
24722 }
24723
24724 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
24725 {
24726 pWaitDstStageMask = pWaitDstStageMask_;
24727 return *this;
24728 }
24729
24730 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
24731 {
24732 commandBufferCount = commandBufferCount_;
24733 return *this;
24734 }
24735
24736 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
24737 {
24738 pCommandBuffers = pCommandBuffers_;
24739 return *this;
24740 }
24741
24742 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
24743 {
24744 signalSemaphoreCount = signalSemaphoreCount_;
24745 return *this;
24746 }
24747
24748 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
24749 {
24750 pSignalSemaphores = pSignalSemaphores_;
24751 return *this;
24752 }
24753
24754 operator const VkSubmitInfo&() const
24755 {
24756 return *reinterpret_cast<const VkSubmitInfo*>(this);
24757 }
24758
24759 bool operator==( SubmitInfo const& rhs ) const
24760 {
24761 return ( sType == rhs.sType )
24762 && ( pNext == rhs.pNext )
24763 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
24764 && ( pWaitSemaphores == rhs.pWaitSemaphores )
24765 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
24766 && ( commandBufferCount == rhs.commandBufferCount )
24767 && ( pCommandBuffers == rhs.pCommandBuffers )
24768 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
24769 && ( pSignalSemaphores == rhs.pSignalSemaphores );
24770 }
24771
24772 bool operator!=( SubmitInfo const& rhs ) const
24773 {
24774 return !operator==( rhs );
24775 }
24776
24777 private:
24778 StructureType sType;
24779
24780 public:
24781 const void* pNext;
24782 uint32_t waitSemaphoreCount;
24783 const Semaphore* pWaitSemaphores;
24784 const PipelineStageFlags* pWaitDstStageMask;
24785 uint32_t commandBufferCount;
24786 const CommandBuffer* pCommandBuffers;
24787 uint32_t signalSemaphoreCount;
24788 const Semaphore* pSignalSemaphores;
24789 };
24790 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
24791
24792 class Queue
24793 {
24794 public:
24795 Queue()
24796 : m_queue(VK_NULL_HANDLE)
24797 {}
24798
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070024799 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024800 : m_queue(VK_NULL_HANDLE)
24801 {}
24802
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024803 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
24804 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024805 {}
24806
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024807#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024808 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024809 {
24810 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024811 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024812 }
24813#endif
24814
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024815 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024816 {
24817 m_queue = VK_NULL_HANDLE;
24818 return *this;
24819 }
24820
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024821 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024822 {
24823 return m_queue == rhs.m_queue;
24824 }
24825
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024826 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024827 {
24828 return m_queue != rhs.m_queue;
24829 }
24830
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024831 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024832 {
24833 return m_queue < rhs.m_queue;
24834 }
24835
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024836 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024837#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024838 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024839#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24840
24841#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024842 Result waitIdle() const;
24843#else
24844 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24846
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024847 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024848#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024849 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024850#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24851
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024852 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024853#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024854 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024855#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24856
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024857
24858
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024859 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024860 {
24861 return m_queue;
24862 }
24863
24864 explicit operator bool() const
24865 {
24866 return m_queue != VK_NULL_HANDLE;
24867 }
24868
24869 bool operator!() const
24870 {
24871 return m_queue == VK_NULL_HANDLE;
24872 }
24873
24874 private:
24875 VkQueue m_queue;
24876 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024877
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024878 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
24879
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024880 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
24881 {
24882 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
24883 }
24884#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24885 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
24886 {
24887 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
24888 return createResultValue( result, "vk::Queue::submit" );
24889 }
24890#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24891
24892#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24893 VULKAN_HPP_INLINE Result Queue::waitIdle() const
24894 {
24895 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
24896 }
24897#else
24898 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
24899 {
24900 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
24901 return createResultValue( result, "vk::Queue::waitIdle" );
24902 }
24903#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24904
24905 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
24906 {
24907 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
24908 }
24909#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24910 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
24911 {
24912 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
24913 return createResultValue( result, "vk::Queue::bindSparse" );
24914 }
24915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24916
24917 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
24918 {
24919 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
24920 }
24921#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24922 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
24923 {
24924 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
24925 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
24926 }
24927#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024928
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024929#ifndef VULKAN_HPP_NO_SMART_HANDLE
24930 class BufferDeleter;
24931 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
24932 class BufferViewDeleter;
24933 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
24934 class CommandBufferDeleter;
24935 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
24936 class CommandPoolDeleter;
24937 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
24938 class DescriptorPoolDeleter;
24939 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
24940 class DescriptorSetDeleter;
24941 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
24942 class DescriptorSetLayoutDeleter;
24943 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070024944 class DescriptorUpdateTemplateKHRDeleter;
24945 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024946 class DeviceMemoryDeleter;
24947 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
24948 class EventDeleter;
24949 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
24950 class FenceDeleter;
24951 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
24952 class FramebufferDeleter;
24953 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
24954 class ImageDeleter;
24955 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
24956 class ImageViewDeleter;
24957 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
24958 class IndirectCommandsLayoutNVXDeleter;
24959 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
24960 class ObjectTableNVXDeleter;
24961 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
24962 class PipelineDeleter;
24963 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
24964 class PipelineCacheDeleter;
24965 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
24966 class PipelineLayoutDeleter;
24967 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
24968 class QueryPoolDeleter;
24969 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
24970 class RenderPassDeleter;
24971 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
24972 class SamplerDeleter;
24973 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
24974 class SemaphoreDeleter;
24975 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
24976 class ShaderModuleDeleter;
24977 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
24978 class SwapchainKHRDeleter;
24979 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
24980#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24981
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024982 class Device
24983 {
24984 public:
24985 Device()
24986 : m_device(VK_NULL_HANDLE)
24987 {}
24988
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070024989 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024990 : m_device(VK_NULL_HANDLE)
24991 {}
24992
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024993 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
24994 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024995 {}
24996
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024997#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024998 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024999 {
25000 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025001 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025002 }
25003#endif
25004
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025005 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025006 {
25007 m_device = VK_NULL_HANDLE;
25008 return *this;
25009 }
25010
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025011 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025012 {
25013 return m_device == rhs.m_device;
25014 }
25015
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025016 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025017 {
25018 return m_device != rhs.m_device;
25019 }
25020
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025021 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025022 {
25023 return m_device < rhs.m_device;
25024 }
25025
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025026 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025027#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025028 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025029#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25030
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025031 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025033 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025034#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25035
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025036 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025037#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025038 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025039#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25040
25041#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025042 Result waitIdle() const;
25043#else
25044 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25046
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025047 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025048#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025049 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25050#ifndef VULKAN_HPP_NO_SMART_HANDLE
25051 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25052#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25054
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025055 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025056#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025057 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25058#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25059
25060 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
25061#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25062 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
25063#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25064
25065 void unmapMemory( DeviceMemory memory ) const;
25066
25067 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
25068#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25069 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
25070#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25071
25072 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
25073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25074 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
25075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25076
25077 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
25078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25079 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
25080#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25081
25082 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
25083#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25084 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025085#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25086
25087#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025088 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
25089#else
25090 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
25091#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025092
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025093 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025094#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025095 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25097
25098#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025099 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
25100#else
25101 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025102#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25103
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025104 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025105#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025106 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
25107 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25109
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025110 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025112 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25113#ifndef VULKAN_HPP_NO_SMART_HANDLE
25114 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25115#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25117
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025118 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025120 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25122
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025123 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025125 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25127
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025128 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025129
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025130 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025132 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
25133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25134
25135 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
25136#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25137 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25138#ifndef VULKAN_HPP_NO_SMART_HANDLE
25139 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25140#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25141#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25142
25143 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
25144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25145 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25147
25148 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
25149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25150 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25151#ifndef VULKAN_HPP_NO_SMART_HANDLE
25152 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25153#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25154#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25155
25156 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
25157#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25158 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25160
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025161 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025162
25163#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025164 Result setEvent( Event event ) const;
25165#else
25166 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025167#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25168
25169#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025170 Result resetEvent( Event event ) const;
25171#else
25172 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25174
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025175 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025177 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25178#ifndef VULKAN_HPP_NO_SMART_HANDLE
25179 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25180#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25182
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025183 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025184#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025185 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25187
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025188 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 -060025189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25190 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025191 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 -060025192#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25193
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025194 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025195#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025196 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25197#ifndef VULKAN_HPP_NO_SMART_HANDLE
25198 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25199#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025200#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25201
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025202 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025203#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025204 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025205#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25206
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025207 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025209 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25210#ifndef VULKAN_HPP_NO_SMART_HANDLE
25211 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25212#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25214
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025215 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025217 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25219
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025220 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025221#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025222 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25223#ifndef VULKAN_HPP_NO_SMART_HANDLE
25224 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25225#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025226#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25227
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025228 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025229#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025230 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25232
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025233 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025234#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025235 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25237
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025238 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025240 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25241#ifndef VULKAN_HPP_NO_SMART_HANDLE
25242 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25243#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25245
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025246 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025248 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025249#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25250
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025251 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025252#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025253 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25254#ifndef VULKAN_HPP_NO_SMART_HANDLE
25255 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25256#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25258
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025259 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025261 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25263
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025264 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025265#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025266 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25267#ifndef VULKAN_HPP_NO_SMART_HANDLE
25268 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25269#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25271
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025272 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025274 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25276
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025277 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025278#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025279 template <typename Allocator = std::allocator<uint8_t>>
25280 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25282
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025283 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025285 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025286#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25287
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025288 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025289#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025290 template <typename Allocator = std::allocator<Pipeline>>
25291 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25292 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25293#ifndef VULKAN_HPP_NO_SMART_HANDLE
25294 template <typename Allocator = std::allocator<Pipeline>>
25295 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25296 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25297#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25299
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025300 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025302 template <typename Allocator = std::allocator<Pipeline>>
25303 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25304 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25305#ifndef VULKAN_HPP_NO_SMART_HANDLE
25306 template <typename Allocator = std::allocator<Pipeline>>
25307 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25308 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25309#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025310#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25311
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025312 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025313#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025314 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025315#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25316
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025317 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025318#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025319 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25320#ifndef VULKAN_HPP_NO_SMART_HANDLE
25321 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25322#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25324
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025325 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025327 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25329
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025330 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025332 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25333#ifndef VULKAN_HPP_NO_SMART_HANDLE
25334 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25335#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25337
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025338 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025339#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025340 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25342
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025343 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025345 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25346#ifndef VULKAN_HPP_NO_SMART_HANDLE
25347 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25348#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025349#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25350
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025351 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025352#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025353 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25355
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025356 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025358 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25359#ifndef VULKAN_HPP_NO_SMART_HANDLE
25360 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25361#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025362#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25363
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025364 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025365#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025366 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25368
25369#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025370 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
25371#else
25372 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025373#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25374
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025375 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025376#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025377 template <typename Allocator = std::allocator<DescriptorSet>>
25378 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
25379#ifndef VULKAN_HPP_NO_SMART_HANDLE
25380 template <typename Allocator = std::allocator<DescriptorSet>>
25381 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
25382#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025383#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25384
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025385 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025387 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25389
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025390 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025392 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25394
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025395 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025397 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25398#ifndef VULKAN_HPP_NO_SMART_HANDLE
25399 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25400#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025401#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25402
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025403 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025404#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025405 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25407
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025408 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025410 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25411#ifndef VULKAN_HPP_NO_SMART_HANDLE
25412 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25413#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025414#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25415
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025416 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025417#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025418 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25420
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025421 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025422#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025423 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025424#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25425
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025426 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025427#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025428 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25429#ifndef VULKAN_HPP_NO_SMART_HANDLE
25430 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25431#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025432#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25433
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025434 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025435#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025436 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025437#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25438
25439#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025440 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
25441#else
25442 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025443#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25444
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025445 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025447 template <typename Allocator = std::allocator<CommandBuffer>>
25448 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
25449#ifndef VULKAN_HPP_NO_SMART_HANDLE
25450 template <typename Allocator = std::allocator<CommandBuffer>>
25451 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
25452#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25454
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025455 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025457 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025458#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25459
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025460 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025461#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025462 template <typename Allocator = std::allocator<SwapchainKHR>>
25463 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25464 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25465#ifndef VULKAN_HPP_NO_SMART_HANDLE
25466 template <typename Allocator = std::allocator<SwapchainKHR>>
25467 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25468 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25469#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025470#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25471
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025472 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025474 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25475#ifndef VULKAN_HPP_NO_SMART_HANDLE
25476 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25477#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025478#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25479
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025480 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025482 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025483#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25484
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025485 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025487 template <typename Allocator = std::allocator<Image>>
25488 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025489#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25490
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025491 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025492#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025493 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025494#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25495
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025496 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025498 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25500
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025501 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025503 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25505
Lenny Komow6501c122016-08-31 15:03:49 -060025506#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025507 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
25508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25509 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
25510#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060025511#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25512
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025513 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060025514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025515 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25516#ifndef VULKAN_HPP_NO_SMART_HANDLE
25517 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25518#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060025519#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25520
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025521 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025522#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025523 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25525
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025526 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025528 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25529#ifndef VULKAN_HPP_NO_SMART_HANDLE
25530 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25531#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025532#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25533
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025534 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025535#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025536 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25538
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025539 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025540#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025541 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025542#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25543
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025544 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025546 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25548
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025549#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025550 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025551#else
25552 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
25553#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025554
Mark Youngabc2d6e2017-07-07 07:59:56 -060025555#ifdef VK_USE_PLATFORM_WIN32_KHR
25556 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025557#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025558 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025560#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025561
Mark Youngabc2d6e2017-07-07 07:59:56 -060025562#ifdef VK_USE_PLATFORM_WIN32_KHR
25563 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025564#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025565 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025566#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025567#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025568
Mark Youngabc2d6e2017-07-07 07:59:56 -060025569 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025570#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025571 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25573
Mark Youngabc2d6e2017-07-07 07:59:56 -060025574 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025575#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025576 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025577#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25578
Mark Youngabc2d6e2017-07-07 07:59:56 -060025579#ifdef VK_USE_PLATFORM_WIN32_KHR
25580 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025582 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025584#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025585
Mark Youngabc2d6e2017-07-07 07:59:56 -060025586#ifdef VK_USE_PLATFORM_WIN32_KHR
25587 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025588#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025589 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025591#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025592
Mark Youngabc2d6e2017-07-07 07:59:56 -060025593 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025595 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25597
Mark Youngabc2d6e2017-07-07 07:59:56 -060025598 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025600 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
25601#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25602
25603#ifdef VK_USE_PLATFORM_WIN32_KHR
25604 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
25605#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25606 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
25607#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25608#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25609
25610#ifdef VK_USE_PLATFORM_WIN32_KHR
25611 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
25612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25613 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
25614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25615#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25616
25617 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
25618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25619 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
25620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25621
25622 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
25623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25624 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025625#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25626
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025627 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025628#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025629 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25631
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025632 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070025633#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025634 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070025635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25636
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025637 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070025638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025639 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070025640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25641
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025642 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070025643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025644 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070025645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25646
Mark Young0f183a82017-02-28 09:58:04 -070025647 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
25648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25649 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
25650#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25651
25652 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
25653#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25654 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
25655#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25656
25657 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
25658#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25659 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
25660#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25661
25662 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
25663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25664 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
25665#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25666
25667 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
25668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25669 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
25670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25671
25672 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
25673#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25674 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
25675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25676
25677 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
25678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25679 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25680#ifndef VULKAN_HPP_NO_SMART_HANDLE
25681 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25682#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25684
25685 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
25686#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25687 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25688#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25689
25690 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
25691
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025692 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
25693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25694 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
25695#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25696
Mark Lobodzinski54385432017-05-15 10:27:52 -060025697 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
25698
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025699 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
25700#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25701 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
25702#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25703
25704 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
25705#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25706 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
25707 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
25708#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25709
Mark Youngabc2d6e2017-07-07 07:59:56 -060025710 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
25711#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25712 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
25713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25714
25715 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
25716#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25717 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
25718#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25719
25720 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
25721#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25722 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
25723 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const;
25724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25725
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025726
25727
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025728 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025729 {
25730 return m_device;
25731 }
25732
25733 explicit operator bool() const
25734 {
25735 return m_device != VK_NULL_HANDLE;
25736 }
25737
25738 bool operator!() const
25739 {
25740 return m_device == VK_NULL_HANDLE;
25741 }
25742
25743 private:
25744 VkDevice m_device;
25745 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025746
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025747 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
25748
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025749#ifndef VULKAN_HPP_NO_SMART_HANDLE
25750 class BufferDeleter
25751 {
25752 public:
25753 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25754 : m_device( device )
25755 , m_allocator( allocator )
25756 {}
25757
25758 void operator()( Buffer buffer )
25759 {
25760 m_device.destroyBuffer( buffer, m_allocator );
25761 }
25762
25763 private:
25764 Device m_device;
25765 Optional<const AllocationCallbacks> m_allocator;
25766 };
25767
25768 class BufferViewDeleter
25769 {
25770 public:
25771 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25772 : m_device( device )
25773 , m_allocator( allocator )
25774 {}
25775
25776 void operator()( BufferView bufferView )
25777 {
25778 m_device.destroyBufferView( bufferView, m_allocator );
25779 }
25780
25781 private:
25782 Device m_device;
25783 Optional<const AllocationCallbacks> m_allocator;
25784 };
25785
25786 class CommandBufferDeleter
25787 {
25788 public:
25789 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
25790 : m_device( device )
25791 , m_commandPool( commandPool )
25792 {}
25793
25794 void operator()( CommandBuffer commandBuffer )
25795 {
25796 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
25797 }
25798
25799 private:
25800 Device m_device;
25801 CommandPool m_commandPool;
25802 };
25803
25804 class CommandPoolDeleter
25805 {
25806 public:
25807 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25808 : m_device( device )
25809 , m_allocator( allocator )
25810 {}
25811
25812 void operator()( CommandPool commandPool )
25813 {
25814 m_device.destroyCommandPool( commandPool, m_allocator );
25815 }
25816
25817 private:
25818 Device m_device;
25819 Optional<const AllocationCallbacks> m_allocator;
25820 };
25821
25822 class DescriptorPoolDeleter
25823 {
25824 public:
25825 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25826 : m_device( device )
25827 , m_allocator( allocator )
25828 {}
25829
25830 void operator()( DescriptorPool descriptorPool )
25831 {
25832 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
25833 }
25834
25835 private:
25836 Device m_device;
25837 Optional<const AllocationCallbacks> m_allocator;
25838 };
25839
25840 class DescriptorSetDeleter
25841 {
25842 public:
25843 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
25844 : m_device( device )
25845 , m_descriptorPool( descriptorPool )
25846 {}
25847
25848 void operator()( DescriptorSet descriptorSet )
25849 {
25850 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
25851 }
25852
25853 private:
25854 Device m_device;
25855 DescriptorPool m_descriptorPool;
25856 };
25857
25858 class DescriptorSetLayoutDeleter
25859 {
25860 public:
25861 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25862 : m_device( device )
25863 , m_allocator( allocator )
25864 {}
25865
25866 void operator()( DescriptorSetLayout descriptorSetLayout )
25867 {
25868 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
25869 }
25870
25871 private:
25872 Device m_device;
25873 Optional<const AllocationCallbacks> m_allocator;
25874 };
25875
Mark Young0f183a82017-02-28 09:58:04 -070025876 class DescriptorUpdateTemplateKHRDeleter
25877 {
25878 public:
25879 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25880 : m_device( device )
25881 , m_allocator( allocator )
25882 {}
25883
25884 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
25885 {
25886 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
25887 }
25888
25889 private:
25890 Device m_device;
25891 Optional<const AllocationCallbacks> m_allocator;
25892 };
25893
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025894 class DeviceMemoryDeleter
25895 {
25896 public:
25897 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25898 : m_device( device )
25899 , m_allocator( allocator )
25900 {}
25901
25902 void operator()( DeviceMemory deviceMemory )
25903 {
25904 m_device.freeMemory( deviceMemory, m_allocator );
25905 }
25906
25907 private:
25908 Device m_device;
25909 Optional<const AllocationCallbacks> m_allocator;
25910 };
25911
25912 class EventDeleter
25913 {
25914 public:
25915 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25916 : m_device( device )
25917 , m_allocator( allocator )
25918 {}
25919
25920 void operator()( Event event )
25921 {
25922 m_device.destroyEvent( event, m_allocator );
25923 }
25924
25925 private:
25926 Device m_device;
25927 Optional<const AllocationCallbacks> m_allocator;
25928 };
25929
25930 class FenceDeleter
25931 {
25932 public:
25933 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25934 : m_device( device )
25935 , m_allocator( allocator )
25936 {}
25937
25938 void operator()( Fence fence )
25939 {
25940 m_device.destroyFence( fence, m_allocator );
25941 }
25942
25943 private:
25944 Device m_device;
25945 Optional<const AllocationCallbacks> m_allocator;
25946 };
25947
25948 class FramebufferDeleter
25949 {
25950 public:
25951 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25952 : m_device( device )
25953 , m_allocator( allocator )
25954 {}
25955
25956 void operator()( Framebuffer framebuffer )
25957 {
25958 m_device.destroyFramebuffer( framebuffer, m_allocator );
25959 }
25960
25961 private:
25962 Device m_device;
25963 Optional<const AllocationCallbacks> m_allocator;
25964 };
25965
25966 class ImageDeleter
25967 {
25968 public:
25969 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25970 : m_device( device )
25971 , m_allocator( allocator )
25972 {}
25973
25974 void operator()( Image image )
25975 {
25976 m_device.destroyImage( image, m_allocator );
25977 }
25978
25979 private:
25980 Device m_device;
25981 Optional<const AllocationCallbacks> m_allocator;
25982 };
25983
25984 class ImageViewDeleter
25985 {
25986 public:
25987 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25988 : m_device( device )
25989 , m_allocator( allocator )
25990 {}
25991
25992 void operator()( ImageView imageView )
25993 {
25994 m_device.destroyImageView( imageView, m_allocator );
25995 }
25996
25997 private:
25998 Device m_device;
25999 Optional<const AllocationCallbacks> m_allocator;
26000 };
26001
26002 class IndirectCommandsLayoutNVXDeleter
26003 {
26004 public:
26005 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26006 : m_device( device )
26007 , m_allocator( allocator )
26008 {}
26009
26010 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
26011 {
26012 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
26013 }
26014
26015 private:
26016 Device m_device;
26017 Optional<const AllocationCallbacks> m_allocator;
26018 };
26019
26020 class ObjectTableNVXDeleter
26021 {
26022 public:
26023 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26024 : m_device( device )
26025 , m_allocator( allocator )
26026 {}
26027
26028 void operator()( ObjectTableNVX objectTableNVX )
26029 {
26030 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
26031 }
26032
26033 private:
26034 Device m_device;
26035 Optional<const AllocationCallbacks> m_allocator;
26036 };
26037
26038 class PipelineDeleter
26039 {
26040 public:
26041 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26042 : m_device( device )
26043 , m_allocator( allocator )
26044 {}
26045
26046 void operator()( Pipeline pipeline )
26047 {
26048 m_device.destroyPipeline( pipeline, m_allocator );
26049 }
26050
26051 private:
26052 Device m_device;
26053 Optional<const AllocationCallbacks> m_allocator;
26054 };
26055
26056 class PipelineCacheDeleter
26057 {
26058 public:
26059 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26060 : m_device( device )
26061 , m_allocator( allocator )
26062 {}
26063
26064 void operator()( PipelineCache pipelineCache )
26065 {
26066 m_device.destroyPipelineCache( pipelineCache, m_allocator );
26067 }
26068
26069 private:
26070 Device m_device;
26071 Optional<const AllocationCallbacks> m_allocator;
26072 };
26073
26074 class PipelineLayoutDeleter
26075 {
26076 public:
26077 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26078 : m_device( device )
26079 , m_allocator( allocator )
26080 {}
26081
26082 void operator()( PipelineLayout pipelineLayout )
26083 {
26084 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
26085 }
26086
26087 private:
26088 Device m_device;
26089 Optional<const AllocationCallbacks> m_allocator;
26090 };
26091
26092 class QueryPoolDeleter
26093 {
26094 public:
26095 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26096 : m_device( device )
26097 , m_allocator( allocator )
26098 {}
26099
26100 void operator()( QueryPool queryPool )
26101 {
26102 m_device.destroyQueryPool( queryPool, m_allocator );
26103 }
26104
26105 private:
26106 Device m_device;
26107 Optional<const AllocationCallbacks> m_allocator;
26108 };
26109
26110 class RenderPassDeleter
26111 {
26112 public:
26113 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26114 : m_device( device )
26115 , m_allocator( allocator )
26116 {}
26117
26118 void operator()( RenderPass renderPass )
26119 {
26120 m_device.destroyRenderPass( renderPass, m_allocator );
26121 }
26122
26123 private:
26124 Device m_device;
26125 Optional<const AllocationCallbacks> m_allocator;
26126 };
26127
26128 class SamplerDeleter
26129 {
26130 public:
26131 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26132 : m_device( device )
26133 , m_allocator( allocator )
26134 {}
26135
26136 void operator()( Sampler sampler )
26137 {
26138 m_device.destroySampler( sampler, m_allocator );
26139 }
26140
26141 private:
26142 Device m_device;
26143 Optional<const AllocationCallbacks> m_allocator;
26144 };
26145
26146 class SemaphoreDeleter
26147 {
26148 public:
26149 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26150 : m_device( device )
26151 , m_allocator( allocator )
26152 {}
26153
26154 void operator()( Semaphore semaphore )
26155 {
26156 m_device.destroySemaphore( semaphore, m_allocator );
26157 }
26158
26159 private:
26160 Device m_device;
26161 Optional<const AllocationCallbacks> m_allocator;
26162 };
26163
26164 class ShaderModuleDeleter
26165 {
26166 public:
26167 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26168 : m_device( device )
26169 , m_allocator( allocator )
26170 {}
26171
26172 void operator()( ShaderModule shaderModule )
26173 {
26174 m_device.destroyShaderModule( shaderModule, m_allocator );
26175 }
26176
26177 private:
26178 Device m_device;
26179 Optional<const AllocationCallbacks> m_allocator;
26180 };
26181
26182 class SwapchainKHRDeleter
26183 {
26184 public:
26185 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26186 : m_device( device )
26187 , m_allocator( allocator )
26188 {}
26189
26190 void operator()( SwapchainKHR swapchainKHR )
26191 {
26192 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
26193 }
26194
26195 private:
26196 Device m_device;
26197 Optional<const AllocationCallbacks> m_allocator;
26198 };
26199#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26200
26201 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
26202 {
26203 return vkGetDeviceProcAddr( m_device, pName );
26204 }
26205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26206 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
26207 {
26208 return vkGetDeviceProcAddr( m_device, name.c_str() );
26209 }
26210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26211
26212 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
26213 {
26214 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26215 }
26216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26217 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
26218 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026219 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026220 }
26221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26222
26223 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
26224 {
26225 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
26226 }
26227#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26228 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
26229 {
26230 Queue queue;
26231 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
26232 return queue;
26233 }
26234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26235
26236#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26237 VULKAN_HPP_INLINE Result Device::waitIdle() const
26238 {
26239 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
26240 }
26241#else
26242 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
26243 {
26244 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
26245 return createResultValue( result, "vk::Device::waitIdle" );
26246 }
26247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26248
26249 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
26250 {
26251 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
26252 }
26253#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26254 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
26255 {
26256 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026257 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 -070026258 return createResultValue( result, memory, "vk::Device::allocateMemory" );
26259 }
26260#ifndef VULKAN_HPP_NO_SMART_HANDLE
26261 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
26262 {
26263 DeviceMemoryDeleter deleter( *this, allocator );
26264 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
26265 }
26266#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26268
26269 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
26270 {
26271 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26272 }
26273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26274 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
26275 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026276 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026277 }
26278#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26279
26280 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
26281 {
26282 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
26283 }
26284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26285 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
26286 {
26287 void* pData;
26288 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
26289 return createResultValue( result, pData, "vk::Device::mapMemory" );
26290 }
26291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26292
26293 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
26294 {
26295 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
26296 }
26297
26298 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
26299 {
26300 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
26301 }
26302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26303 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
26304 {
26305 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
26306 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
26307 }
26308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26309
26310 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
26311 {
26312 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
26313 }
26314#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26315 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
26316 {
26317 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
26318 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
26319 }
26320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26321
26322 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
26323 {
26324 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
26325 }
26326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26327 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
26328 {
26329 DeviceSize committedMemoryInBytes;
26330 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
26331 return committedMemoryInBytes;
26332 }
26333#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26334
26335 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
26336 {
26337 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
26338 }
26339#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26340 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
26341 {
26342 MemoryRequirements memoryRequirements;
26343 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
26344 return memoryRequirements;
26345 }
26346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26347
26348#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26349 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
26350 {
26351 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26352 }
26353#else
26354 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
26355 {
26356 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26357 return createResultValue( result, "vk::Device::bindBufferMemory" );
26358 }
26359#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26360
26361 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
26362 {
26363 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
26364 }
26365#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26366 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
26367 {
26368 MemoryRequirements memoryRequirements;
26369 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
26370 return memoryRequirements;
26371 }
26372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26373
26374#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26375 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
26376 {
26377 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26378 }
26379#else
26380 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
26381 {
26382 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26383 return createResultValue( result, "vk::Device::bindImageMemory" );
26384 }
26385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26386
26387 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
26388 {
26389 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
26390 }
26391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26392 template <typename Allocator>
26393 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
26394 {
26395 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
26396 uint32_t sparseMemoryRequirementCount;
26397 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
26398 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
26399 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
26400 return sparseMemoryRequirements;
26401 }
26402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26403
26404 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
26405 {
26406 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
26407 }
26408#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26409 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26410 {
26411 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026412 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 -070026413 return createResultValue( result, fence, "vk::Device::createFence" );
26414 }
26415#ifndef VULKAN_HPP_NO_SMART_HANDLE
26416 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26417 {
26418 FenceDeleter deleter( *this, allocator );
26419 return UniqueFence( createFence( createInfo, allocator ), deleter );
26420 }
26421#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26423
26424 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
26425 {
26426 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26427 }
26428#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26429 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
26430 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026431 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026432 }
26433#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26434
26435 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
26436 {
26437 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
26438 }
26439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26440 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
26441 {
26442 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
26443 return createResultValue( result, "vk::Device::resetFences" );
26444 }
26445#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26446
26447#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26448 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
26449 {
26450 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
26451 }
26452#else
26453 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
26454 {
26455 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
26456 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
26457 }
26458#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26459
26460 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
26461 {
26462 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
26463 }
26464#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26465 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
26466 {
26467 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
26468 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
26469 }
26470#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26471
26472 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
26473 {
26474 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
26475 }
26476#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26477 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26478 {
26479 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026480 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 -070026481 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
26482 }
26483#ifndef VULKAN_HPP_NO_SMART_HANDLE
26484 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26485 {
26486 SemaphoreDeleter deleter( *this, allocator );
26487 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
26488 }
26489#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26491
26492 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
26493 {
26494 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26495 }
26496#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26497 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
26498 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026499 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026500 }
26501#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26502
26503 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
26504 {
26505 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
26506 }
26507#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26508 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26509 {
26510 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026511 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 -070026512 return createResultValue( result, event, "vk::Device::createEvent" );
26513 }
26514#ifndef VULKAN_HPP_NO_SMART_HANDLE
26515 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26516 {
26517 EventDeleter deleter( *this, allocator );
26518 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
26519 }
26520#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26522
26523 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
26524 {
26525 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26526 }
26527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26528 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
26529 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026530 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026531 }
26532#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26533
26534#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26535 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
26536 {
26537 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
26538 }
26539#else
26540 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
26541 {
26542 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
26543 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
26544 }
26545#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26546
26547#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26548 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
26549 {
26550 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
26551 }
26552#else
26553 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
26554 {
26555 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
26556 return createResultValue( result, "vk::Device::setEvent" );
26557 }
26558#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26559
26560#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26561 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
26562 {
26563 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
26564 }
26565#else
26566 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
26567 {
26568 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
26569 return createResultValue( result, "vk::Device::resetEvent" );
26570 }
26571#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26572
26573 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
26574 {
26575 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
26576 }
26577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26578 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26579 {
26580 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026581 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 -070026582 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
26583 }
26584#ifndef VULKAN_HPP_NO_SMART_HANDLE
26585 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26586 {
26587 QueryPoolDeleter deleter( *this, allocator );
26588 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
26589 }
26590#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26592
26593 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
26594 {
26595 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26596 }
26597#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26598 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
26599 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026600 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026601 }
26602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26603
26604 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
26605 {
26606 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
26607 }
26608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26609 template <typename T>
26610 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
26611 {
26612 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 ) ) );
26613 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
26614 }
26615#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26616
26617 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
26618 {
26619 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
26620 }
26621#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26622 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26623 {
26624 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026625 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 -070026626 return createResultValue( result, buffer, "vk::Device::createBuffer" );
26627 }
26628#ifndef VULKAN_HPP_NO_SMART_HANDLE
26629 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26630 {
26631 BufferDeleter deleter( *this, allocator );
26632 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
26633 }
26634#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26636
26637 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
26638 {
26639 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26640 }
26641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26642 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
26643 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026644 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026645 }
26646#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26647
26648 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
26649 {
26650 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
26651 }
26652#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26653 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26654 {
26655 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026656 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 -070026657 return createResultValue( result, view, "vk::Device::createBufferView" );
26658 }
26659#ifndef VULKAN_HPP_NO_SMART_HANDLE
26660 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26661 {
26662 BufferViewDeleter deleter( *this, allocator );
26663 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
26664 }
26665#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26666#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26667
26668 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
26669 {
26670 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26671 }
26672#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26673 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
26674 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026675 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026676 }
26677#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26678
26679 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
26680 {
26681 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
26682 }
26683#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26684 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26685 {
26686 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026687 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 -070026688 return createResultValue( result, image, "vk::Device::createImage" );
26689 }
26690#ifndef VULKAN_HPP_NO_SMART_HANDLE
26691 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26692 {
26693 ImageDeleter deleter( *this, allocator );
26694 return UniqueImage( createImage( createInfo, allocator ), deleter );
26695 }
26696#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26698
26699 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
26700 {
26701 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26702 }
26703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26704 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
26705 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026706 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026707 }
26708#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26709
26710 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
26711 {
26712 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
26713 }
26714#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26715 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
26716 {
26717 SubresourceLayout layout;
26718 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
26719 return layout;
26720 }
26721#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26722
26723 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
26724 {
26725 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
26726 }
26727#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26728 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26729 {
26730 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026731 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 -070026732 return createResultValue( result, view, "vk::Device::createImageView" );
26733 }
26734#ifndef VULKAN_HPP_NO_SMART_HANDLE
26735 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26736 {
26737 ImageViewDeleter deleter( *this, allocator );
26738 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
26739 }
26740#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26741#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26742
26743 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
26744 {
26745 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26746 }
26747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26748 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
26749 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026750 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026751 }
26752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26753
26754 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
26755 {
26756 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
26757 }
26758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26759 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26760 {
26761 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026762 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 -070026763 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
26764 }
26765#ifndef VULKAN_HPP_NO_SMART_HANDLE
26766 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26767 {
26768 ShaderModuleDeleter deleter( *this, allocator );
26769 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
26770 }
26771#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26773
26774 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
26775 {
26776 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26777 }
26778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26779 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
26780 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026781 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026782 }
26783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26784
26785 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
26786 {
26787 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
26788 }
26789#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26790 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26791 {
26792 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026793 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 -070026794 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
26795 }
26796#ifndef VULKAN_HPP_NO_SMART_HANDLE
26797 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26798 {
26799 PipelineCacheDeleter deleter( *this, allocator );
26800 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
26801 }
26802#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26804
26805 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
26806 {
26807 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26808 }
26809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26810 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
26811 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026812 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026813 }
26814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26815
26816 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
26817 {
26818 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
26819 }
26820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26821 template <typename Allocator>
26822 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
26823 {
26824 std::vector<uint8_t,Allocator> data;
26825 size_t dataSize;
26826 Result result;
26827 do
26828 {
26829 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
26830 if ( ( result == Result::eSuccess ) && dataSize )
26831 {
26832 data.resize( dataSize );
26833 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
26834 }
26835 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026836 assert( dataSize <= data.size() );
26837 data.resize( dataSize );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026838 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
26839 }
26840#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26841
26842 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
26843 {
26844 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
26845 }
26846#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26847 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
26848 {
26849 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
26850 return createResultValue( result, "vk::Device::mergePipelineCaches" );
26851 }
26852#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26853
26854 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
26855 {
26856 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 ) ) );
26857 }
26858#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26859 template <typename Allocator>
26860 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26861 {
26862 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026863 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 -070026864 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
26865 }
26866 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26867 {
26868 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026869 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 -070026870 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
26871 }
26872#ifndef VULKAN_HPP_NO_SMART_HANDLE
26873 template <typename Allocator>
26874 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26875 {
26876 PipelineDeleter deleter( *this, allocator );
26877 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
26878 std::vector<UniquePipeline> uniquePipelines;
26879 uniquePipelines.reserve( pipelines.size() );
26880 for ( auto pipeline : pipelines )
26881 {
26882 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
26883 }
26884 return uniquePipelines;
26885 }
26886 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26887 {
26888 PipelineDeleter deleter( *this, allocator );
26889 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
26890 }
26891#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26893
26894 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
26895 {
26896 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 ) ) );
26897 }
26898#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26899 template <typename Allocator>
26900 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26901 {
26902 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026903 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 -070026904 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
26905 }
26906 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26907 {
26908 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026909 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 -070026910 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
26911 }
26912#ifndef VULKAN_HPP_NO_SMART_HANDLE
26913 template <typename Allocator>
26914 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26915 {
26916 PipelineDeleter deleter( *this, allocator );
26917 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
26918 std::vector<UniquePipeline> uniquePipelines;
26919 uniquePipelines.reserve( pipelines.size() );
26920 for ( auto pipeline : pipelines )
26921 {
26922 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
26923 }
26924 return uniquePipelines;
26925 }
26926 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26927 {
26928 PipelineDeleter deleter( *this, allocator );
26929 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
26930 }
26931#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26933
26934 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
26935 {
26936 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26937 }
26938#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26939 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
26940 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026941 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026942 }
26943#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26944
26945 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
26946 {
26947 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
26948 }
26949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26950 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26951 {
26952 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026953 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 -070026954 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
26955 }
26956#ifndef VULKAN_HPP_NO_SMART_HANDLE
26957 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26958 {
26959 PipelineLayoutDeleter deleter( *this, allocator );
26960 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
26961 }
26962#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26964
26965 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
26966 {
26967 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26968 }
26969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26970 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
26971 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026972 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026973 }
26974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26975
26976 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
26977 {
26978 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
26979 }
26980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26981 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26982 {
26983 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026984 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 -070026985 return createResultValue( result, sampler, "vk::Device::createSampler" );
26986 }
26987#ifndef VULKAN_HPP_NO_SMART_HANDLE
26988 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26989 {
26990 SamplerDeleter deleter( *this, allocator );
26991 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
26992 }
26993#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26994#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26995
26996 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
26997 {
26998 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26999 }
27000#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27001 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
27002 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027003 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027004 }
27005#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27006
27007 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
27008 {
27009 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
27010 }
27011#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27012 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27013 {
27014 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027015 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 -070027016 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
27017 }
27018#ifndef VULKAN_HPP_NO_SMART_HANDLE
27019 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27020 {
27021 DescriptorSetLayoutDeleter deleter( *this, allocator );
27022 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
27023 }
27024#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27025#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27026
27027 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
27028 {
27029 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27030 }
27031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27032 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
27033 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027034 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027035 }
27036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27037
27038 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
27039 {
27040 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
27041 }
27042#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27043 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27044 {
27045 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027046 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 -070027047 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
27048 }
27049#ifndef VULKAN_HPP_NO_SMART_HANDLE
27050 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27051 {
27052 DescriptorPoolDeleter deleter( *this, allocator );
27053 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
27054 }
27055#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27057
27058 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
27059 {
27060 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27061 }
27062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27063 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
27064 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027065 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027066 }
27067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27068
27069#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27070 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
27071 {
27072 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
27073 }
27074#else
27075 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
27076 {
27077 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
27078 return createResultValue( result, "vk::Device::resetDescriptorPool" );
27079 }
27080#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27081
27082 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
27083 {
27084 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
27085 }
27086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27087 template <typename Allocator>
27088 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
27089 {
27090 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
27091 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
27092 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
27093 }
27094#ifndef VULKAN_HPP_NO_SMART_HANDLE
27095 template <typename Allocator>
27096 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
27097 {
27098 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
27099 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
27100 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
27101 uniqueDescriptorSets.reserve( descriptorSets.size() );
27102 for ( auto descriptorSet : descriptorSets )
27103 {
27104 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
27105 }
27106 return uniqueDescriptorSets;
27107 }
27108#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27109#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27110
27111 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
27112 {
27113 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
27114 }
27115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27116 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
27117 {
27118 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
27119 return createResultValue( result, "vk::Device::freeDescriptorSets" );
27120 }
27121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27122
27123 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
27124 {
27125 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
27126 }
27127#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27128 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
27129 {
27130 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
27131 }
27132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27133
27134 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
27135 {
27136 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
27137 }
27138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27139 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27140 {
27141 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027142 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 -070027143 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
27144 }
27145#ifndef VULKAN_HPP_NO_SMART_HANDLE
27146 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27147 {
27148 FramebufferDeleter deleter( *this, allocator );
27149 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
27150 }
27151#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27153
27154 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
27155 {
27156 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27157 }
27158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27159 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
27160 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027161 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027162 }
27163#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27164
27165 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
27166 {
27167 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
27168 }
27169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27170 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27171 {
27172 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027173 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 -070027174 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
27175 }
27176#ifndef VULKAN_HPP_NO_SMART_HANDLE
27177 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27178 {
27179 RenderPassDeleter deleter( *this, allocator );
27180 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
27181 }
27182#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27183#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27184
27185 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
27186 {
27187 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27188 }
27189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27190 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
27191 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027192 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027193 }
27194#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27195
27196 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
27197 {
27198 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
27199 }
27200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27201 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
27202 {
27203 Extent2D granularity;
27204 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
27205 return granularity;
27206 }
27207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27208
27209 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
27210 {
27211 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
27212 }
27213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27214 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27215 {
27216 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027217 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 -070027218 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
27219 }
27220#ifndef VULKAN_HPP_NO_SMART_HANDLE
27221 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27222 {
27223 CommandPoolDeleter deleter( *this, allocator );
27224 return UniqueCommandPool( createCommandPool( 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::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
27230 {
27231 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27232 }
27233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27234 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
27235 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027236 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), 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#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27241 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
27242 {
27243 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
27244 }
27245#else
27246 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
27247 {
27248 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
27249 return createResultValue( result, "vk::Device::resetCommandPool" );
27250 }
27251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27252
27253 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
27254 {
27255 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
27256 }
27257#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27258 template <typename Allocator>
27259 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
27260 {
27261 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
27262 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
27263 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
27264 }
27265#ifndef VULKAN_HPP_NO_SMART_HANDLE
27266 template <typename Allocator>
27267 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
27268 {
27269 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
27270 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
27271 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
27272 uniqueCommandBuffers.reserve( commandBuffers.size() );
27273 for ( auto commandBuffer : commandBuffers )
27274 {
27275 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
27276 }
27277 return uniqueCommandBuffers;
27278 }
27279#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27281
27282 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
27283 {
27284 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
27285 }
27286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27287 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
27288 {
27289 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
27290 }
27291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27292
27293 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
27294 {
27295 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
27296 }
27297#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27298 template <typename Allocator>
27299 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
27300 {
27301 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027302 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 -070027303 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
27304 }
27305 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27306 {
27307 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027308 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 -070027309 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
27310 }
27311#ifndef VULKAN_HPP_NO_SMART_HANDLE
27312 template <typename Allocator>
27313 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
27314 {
27315 SwapchainKHRDeleter deleter( *this, allocator );
27316 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
27317 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
27318 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
27319 for ( auto swapchainKHR : swapchainKHRs )
27320 {
27321 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
27322 }
27323 return uniqueSwapchainKHRs;
27324 }
27325 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27326 {
27327 SwapchainKHRDeleter deleter( *this, allocator );
27328 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
27329 }
27330#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27332
27333 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
27334 {
27335 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
27336 }
27337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27338 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27339 {
27340 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027341 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 -070027342 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
27343 }
27344#ifndef VULKAN_HPP_NO_SMART_HANDLE
27345 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27346 {
27347 SwapchainKHRDeleter deleter( *this, allocator );
27348 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
27349 }
27350#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27352
27353 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
27354 {
27355 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27356 }
27357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27358 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
27359 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027360 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027361 }
27362#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27363
27364 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
27365 {
27366 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
27367 }
27368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27369 template <typename Allocator>
27370 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
27371 {
27372 std::vector<Image,Allocator> swapchainImages;
27373 uint32_t swapchainImageCount;
27374 Result result;
27375 do
27376 {
27377 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
27378 if ( ( result == Result::eSuccess ) && swapchainImageCount )
27379 {
27380 swapchainImages.resize( swapchainImageCount );
27381 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
27382 }
27383 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027384 assert( swapchainImageCount <= swapchainImages.size() );
27385 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027386 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
27387 }
27388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27389
27390 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
27391 {
27392 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
27393 }
27394#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27395 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
27396 {
27397 uint32_t imageIndex;
27398 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
27399 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
27400 }
27401#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27402
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027403 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027404 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027405 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027406 }
27407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027408 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027409 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027410 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
27411 return createResultValue( result, "vk::Device::debugMarkerSetObjectNameEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027412 }
27413#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27414
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027415 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027416 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027417 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027418 }
27419#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027420 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027421 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027422 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
27423 return createResultValue( result, "vk::Device::debugMarkerSetObjectTagEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027424 }
27425#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27426
27427#ifdef VK_USE_PLATFORM_WIN32_KHR
27428 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
27429 {
27430 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
27431 }
27432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27433 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
27434 {
27435 HANDLE handle;
27436 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
27437 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
27438 }
27439#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27440#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27441
27442 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
27443 {
27444 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
27445 }
27446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27447 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27448 {
27449 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027450 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 -070027451 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
27452 }
27453#ifndef VULKAN_HPP_NO_SMART_HANDLE
27454 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27455 {
27456 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
27457 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
27458 }
27459#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27461
27462 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
27463 {
27464 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27465 }
27466#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27467 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
27468 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027469 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027470 }
27471#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27472
27473 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
27474 {
27475 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
27476 }
27477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27478 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27479 {
27480 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027481 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 -070027482 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
27483 }
27484#ifndef VULKAN_HPP_NO_SMART_HANDLE
27485 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27486 {
27487 ObjectTableNVXDeleter deleter( *this, allocator );
27488 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
27489 }
27490#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27492
27493 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
27494 {
27495 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27496 }
27497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27498 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
27499 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027500 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027501 }
27502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27503
27504 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
27505 {
27506 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
27507 }
27508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27509 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
27510 {
27511#ifdef VULKAN_HPP_NO_EXCEPTIONS
27512 assert( pObjectTableEntries.size() == objectIndices.size() );
27513#else
27514 if ( pObjectTableEntries.size() != objectIndices.size() )
27515 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027516 throw LogicError( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027517 }
27518#endif // VULKAN_HPP_NO_EXCEPTIONS
27519 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
27520 return createResultValue( result, "vk::Device::registerObjectsNVX" );
27521 }
27522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27523
27524 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
27525 {
27526 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
27527 }
27528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27529 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
27530 {
27531#ifdef VULKAN_HPP_NO_EXCEPTIONS
27532 assert( objectEntryTypes.size() == objectIndices.size() );
27533#else
27534 if ( objectEntryTypes.size() != objectIndices.size() )
27535 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027536 throw LogicError( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027537 }
27538#endif // VULKAN_HPP_NO_EXCEPTIONS
27539 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
27540 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
27541 }
27542#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27543
27544 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
27545 {
27546 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
27547 }
27548
Mark Youngabc2d6e2017-07-07 07:59:56 -060027549#ifdef VK_USE_PLATFORM_WIN32_KHR
27550 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070027551 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027552 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070027553 }
27554#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027555 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027556 {
27557 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027558 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
27559 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027560 }
27561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027562#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027563
Mark Youngabc2d6e2017-07-07 07:59:56 -060027564#ifdef VK_USE_PLATFORM_WIN32_KHR
27565 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070027566 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027567 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027568 }
27569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027570 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070027571 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027572 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
27573 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
27574 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027575 }
27576#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027577#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027578
Mark Youngabc2d6e2017-07-07 07:59:56 -060027579 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070027580 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027581 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070027582 }
27583#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027584 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027585 {
27586 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027587 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
27588 return createResultValue( result, fd, "vk::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027589 }
27590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27591
Mark Youngabc2d6e2017-07-07 07:59:56 -060027592 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070027593 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027594 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027595 }
27596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027597 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070027598 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027599 MemoryFdPropertiesKHR memoryFdProperties;
27600 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
27601 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027602 }
27603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27604
Mark Youngabc2d6e2017-07-07 07:59:56 -060027605#ifdef VK_USE_PLATFORM_WIN32_KHR
27606 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070027607 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027608 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070027609 }
27610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027611 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027612 {
27613 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027614 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
27615 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027616 }
27617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027618#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027619
Mark Youngabc2d6e2017-07-07 07:59:56 -060027620#ifdef VK_USE_PLATFORM_WIN32_KHR
27621 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027622 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027623 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027624 }
27625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027626 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027627 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027628 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
27629 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027630 }
27631#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027632#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027633
Mark Youngabc2d6e2017-07-07 07:59:56 -060027634 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070027635 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027636 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070027637 }
27638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027639 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027640 {
27641 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027642 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
27643 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027644 }
27645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27646
Mark Youngabc2d6e2017-07-07 07:59:56 -060027647 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027648 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027649 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027650 }
27651#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027652 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027653 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027654 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
27655 return createResultValue( result, "vk::Device::importSemaphoreFdKHR" );
27656 }
27657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27658
27659#ifdef VK_USE_PLATFORM_WIN32_KHR
27660 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
27661 {
27662 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
27663 }
27664#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27665 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
27666 {
27667 HANDLE handle;
27668 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
27669 return createResultValue( result, handle, "vk::Device::getFenceWin32HandleKHR" );
27670 }
27671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27672#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27673
27674#ifdef VK_USE_PLATFORM_WIN32_KHR
27675 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
27676 {
27677 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
27678 }
27679#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27680 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
27681 {
27682 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
27683 return createResultValue( result, "vk::Device::importFenceWin32HandleKHR" );
27684 }
27685#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27686#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27687
27688 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
27689 {
27690 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
27691 }
27692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27693 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
27694 {
27695 int fd;
27696 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
27697 return createResultValue( result, fd, "vk::Device::getFenceFdKHR" );
27698 }
27699#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27700
27701 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
27702 {
27703 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
27704 }
27705#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27706 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
27707 {
27708 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
27709 return createResultValue( result, "vk::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027710 }
27711#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27712
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027713 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
27714 {
27715 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
27716 }
27717#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27718 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
27719 {
27720 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
27721 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
27722 }
27723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27724
27725 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
27726 {
27727 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
27728 }
27729#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27730 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
27731 {
27732 Fence fence;
27733 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
27734 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
27735 }
27736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27737
27738 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
27739 {
27740 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 ) ) );
27741 }
27742#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27743 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
27744 {
27745 Fence fence;
27746 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 ) ) );
27747 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
27748 }
27749#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27750
27751 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
27752 {
27753 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
27754 }
27755#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27756 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
27757 {
27758 uint64_t counterValue;
27759 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
27760 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
27761 }
27762#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027763
27764 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
27765 {
27766 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
27767 }
27768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27769 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
27770 {
27771 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
27772 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
27773 return peerMemoryFeatures;
27774 }
27775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27776
27777 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
27778 {
27779 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
27780 }
27781#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27782 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
27783 {
27784 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
27785 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
27786 }
27787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27788
27789 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
27790 {
27791 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
27792 }
27793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27794 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
27795 {
27796 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
27797 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
27798 }
27799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27800
27801 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
27802 {
27803 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
27804 }
27805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27806 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
27807 {
27808 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
27809 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
27810 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
27811 }
27812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27813
27814 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
27815 {
27816 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
27817 }
27818#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27819 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
27820 {
27821 DeviceGroupPresentModeFlagsKHX modes;
27822 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
27823 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
27824 }
27825#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27826
27827 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
27828 {
27829 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
27830 }
27831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27832 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
27833 {
27834 uint32_t imageIndex;
27835 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
27836 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
27837 }
27838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27839
27840 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
27841 {
27842 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
27843 }
27844#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27845 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27846 {
27847 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027848 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 -070027849 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
27850 }
27851#ifndef VULKAN_HPP_NO_SMART_HANDLE
27852 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27853 {
27854 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
27855 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
27856 }
27857#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27859
27860 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
27861 {
27862 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27863 }
27864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27865 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
27866 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027867 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027868 }
27869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27870
27871 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
27872 {
27873 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
27874 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027875
27876 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
27877 {
27878 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
27879 }
27880#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27881 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
27882 {
27883#ifdef VULKAN_HPP_NO_EXCEPTIONS
27884 assert( swapchains.size() == metadata.size() );
27885#else
27886 if ( swapchains.size() != metadata.size() )
27887 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027888 throw LogicError( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027889 }
27890#endif // VULKAN_HPP_NO_EXCEPTIONS
27891 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
27892 }
27893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27894
Mark Lobodzinski54385432017-05-15 10:27:52 -060027895#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27896 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
27897 {
27898 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
27899 }
27900#else
27901 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
27902 {
27903 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
27904 return createResultValue( result, "vk::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
27905 }
27906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27907
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027908 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
27909 {
27910 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
27911 }
27912#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27913 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
27914 {
27915 RefreshCycleDurationGOOGLE displayTimingProperties;
27916 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
27917 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
27918 }
27919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27920
27921 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
27922 {
27923 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
27924 }
27925#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27926 template <typename Allocator>
27927 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
27928 {
27929 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
27930 uint32_t presentationTimingCount;
27931 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
27932 if ( ( result == Result::eSuccess ) && presentationTimingCount )
27933 {
27934 presentationTimings.resize( presentationTimingCount );
27935 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
27936 }
27937 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
27938 }
27939#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27940
Mark Youngabc2d6e2017-07-07 07:59:56 -060027941 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
27942 {
27943 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
27944 }
27945#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27946 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
27947 {
27948 MemoryRequirements2KHR memoryRequirements;
27949 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
27950 return memoryRequirements;
27951 }
27952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27953
27954 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
27955 {
27956 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
27957 }
27958#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27959 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
27960 {
27961 MemoryRequirements2KHR memoryRequirements;
27962 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
27963 return memoryRequirements;
27964 }
27965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27966
27967 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
27968 {
27969 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
27970 }
27971#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27972 template <typename Allocator>
27973 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const
27974 {
27975 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements;
27976 uint32_t sparseMemoryRequirementCount;
27977 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
27978 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
27979 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
27980 return sparseMemoryRequirements;
27981 }
27982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27983
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027984#ifndef VULKAN_HPP_NO_SMART_HANDLE
27985 class DeviceDeleter;
27986 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
27987#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27988
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027989 class PhysicalDevice
27990 {
27991 public:
27992 PhysicalDevice()
27993 : m_physicalDevice(VK_NULL_HANDLE)
27994 {}
27995
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070027996 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027997 : m_physicalDevice(VK_NULL_HANDLE)
27998 {}
27999
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028000 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
28001 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028002 {}
28003
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070028004#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028005 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028006 {
28007 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028008 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028009 }
28010#endif
28011
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028012 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028013 {
28014 m_physicalDevice = VK_NULL_HANDLE;
28015 return *this;
28016 }
28017
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028018 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028019 {
28020 return m_physicalDevice == rhs.m_physicalDevice;
28021 }
28022
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028023 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028024 {
28025 return m_physicalDevice != rhs.m_physicalDevice;
28026 }
28027
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028028 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028029 {
28030 return m_physicalDevice < rhs.m_physicalDevice;
28031 }
28032
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028033 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028035 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28037
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028038 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028039#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028040 template <typename Allocator = std::allocator<QueueFamilyProperties>>
28041 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28043
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028044 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028046 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28048
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028049 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028050#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028051 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028052#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28053
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028054 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028055#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028056 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28058
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028059 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028061 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028064 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028066 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
28067#ifndef VULKAN_HPP_NO_SMART_HANDLE
28068 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
28069#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028070#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28071
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028072 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028074 template <typename Allocator = std::allocator<LayerProperties>>
28075 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28077
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028078 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028079#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028080 template <typename Allocator = std::allocator<ExtensionProperties>>
28081 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28083
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028084 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 -060028085#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028086 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
28087 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28089
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028090 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028092 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
28093 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28095
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028096 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028097#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028098 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
28099 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28101
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028102 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028104 template <typename Allocator = std::allocator<DisplayKHR>>
28105 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28107
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028108 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028110 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
28111 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28113
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028114 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028116 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028117#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28118
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028119 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028121 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028122#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28123
28124#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028125 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
28126#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28127 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
28128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028129#endif /*VK_USE_PLATFORM_MIR_KHR*/
28130
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028131 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028132#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028133 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28135
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028136 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028138 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028139#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28140
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028141 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028143 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
28144 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28146
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028147 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028149 template <typename Allocator = std::allocator<PresentModeKHR>>
28150 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28152
28153#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028154 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
28155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28156 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
28157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028158#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28159
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028160#ifdef VK_USE_PLATFORM_WIN32_KHR
28161 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
28162#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28163
28164#ifdef VK_USE_PLATFORM_XLIB_KHR
28165 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028167 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
28168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28169#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28170
28171#ifdef VK_USE_PLATFORM_XCB_KHR
28172 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
28173#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28174 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
28175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28176#endif /*VK_USE_PLATFORM_XCB_KHR*/
28177
28178 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
28179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28180 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
28181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28182
28183 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
28184#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28185 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
28186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28187
28188 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
28189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28190 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
28191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28192
28193 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
28194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28195 PhysicalDeviceProperties2KHR getProperties2KHR() const;
28196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28197
28198 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
28199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28200 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
28201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28202
28203 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
28204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28205 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
28206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28207
28208 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
28209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28210 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
28211 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
28212#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28213
28214 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
28215#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28216 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
28217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28218
28219 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
28220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28221 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
28222 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028223#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28224
Mark Youngabc2d6e2017-07-07 07:59:56 -060028225 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028226#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028227 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28229
Mark Youngabc2d6e2017-07-07 07:59:56 -060028230 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028231#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028232 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
28233#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28234
28235 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
28236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28237 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28239
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028240#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028241 Result releaseDisplayEXT( DisplayKHR display ) const;
28242#else
28243 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070028244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28245
28246#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028247 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070028248#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028249 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070028250#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070028251#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
28252
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028253#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
28254 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070028255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028256 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070028257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028258#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070028259
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028260 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070028261#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028262 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070028263#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28264
Mark Young0f183a82017-02-28 09:58:04 -070028265 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
28266#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28267 template <typename Allocator = std::allocator<Rect2D>>
28268 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
28269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28270
Mark Lobodzinski54385432017-05-15 10:27:52 -060028271 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
28272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028273 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060028274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28275
28276 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
28277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28278 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
28279 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
28280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28281
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028282
28283
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070028284 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028285 {
28286 return m_physicalDevice;
28287 }
28288
28289 explicit operator bool() const
28290 {
28291 return m_physicalDevice != VK_NULL_HANDLE;
28292 }
28293
28294 bool operator!() const
28295 {
28296 return m_physicalDevice == VK_NULL_HANDLE;
28297 }
28298
28299 private:
28300 VkPhysicalDevice m_physicalDevice;
28301 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028302
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028303 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
28304
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028305#ifndef VULKAN_HPP_NO_SMART_HANDLE
28306 class DeviceDeleter
28307 {
28308 public:
28309 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
28310 : m_allocator( allocator )
28311 {}
28312
28313 void operator()( Device device )
28314 {
28315 device.destroy( m_allocator );
28316 }
28317
28318 private:
28319 Optional<const AllocationCallbacks> m_allocator;
28320 };
28321#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28322
28323 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
28324 {
28325 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
28326 }
28327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28328 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
28329 {
28330 PhysicalDeviceProperties properties;
28331 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
28332 return properties;
28333 }
28334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28335
28336 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
28337 {
28338 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
28339 }
28340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28341 template <typename Allocator>
28342 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
28343 {
28344 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
28345 uint32_t queueFamilyPropertyCount;
28346 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
28347 queueFamilyProperties.resize( queueFamilyPropertyCount );
28348 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
28349 return queueFamilyProperties;
28350 }
28351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28352
28353 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
28354 {
28355 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
28356 }
28357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28358 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
28359 {
28360 PhysicalDeviceMemoryProperties memoryProperties;
28361 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
28362 return memoryProperties;
28363 }
28364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28365
28366 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
28367 {
28368 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
28369 }
28370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28371 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
28372 {
28373 PhysicalDeviceFeatures features;
28374 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
28375 return features;
28376 }
28377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28378
28379 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
28380 {
28381 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
28382 }
28383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28384 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
28385 {
28386 FormatProperties formatProperties;
28387 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
28388 return formatProperties;
28389 }
28390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28391
28392 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
28393 {
28394 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 ) ) );
28395 }
28396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28397 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
28398 {
28399 ImageFormatProperties imageFormatProperties;
28400 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 ) ) );
28401 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
28402 }
28403#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28404
28405 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
28406 {
28407 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
28408 }
28409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28410 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28411 {
28412 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028413 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 -070028414 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
28415 }
28416#ifndef VULKAN_HPP_NO_SMART_HANDLE
28417 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28418 {
28419 DeviceDeleter deleter( allocator );
28420 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
28421 }
28422#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28423#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28424
28425 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
28426 {
28427 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
28428 }
28429#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28430 template <typename Allocator>
28431 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
28432 {
28433 std::vector<LayerProperties,Allocator> properties;
28434 uint32_t propertyCount;
28435 Result result;
28436 do
28437 {
28438 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
28439 if ( ( result == Result::eSuccess ) && propertyCount )
28440 {
28441 properties.resize( propertyCount );
28442 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
28443 }
28444 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028445 assert( propertyCount <= properties.size() );
28446 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028447 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
28448 }
28449#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28450
28451 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
28452 {
28453 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
28454 }
28455#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28456 template <typename Allocator>
28457 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
28458 {
28459 std::vector<ExtensionProperties,Allocator> properties;
28460 uint32_t propertyCount;
28461 Result result;
28462 do
28463 {
28464 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
28465 if ( ( result == Result::eSuccess ) && propertyCount )
28466 {
28467 properties.resize( propertyCount );
28468 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
28469 }
28470 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028471 assert( propertyCount <= properties.size() );
28472 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028473 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
28474 }
28475#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28476
28477 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
28478 {
28479 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 ) );
28480 }
28481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28482 template <typename Allocator>
28483 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
28484 {
28485 std::vector<SparseImageFormatProperties,Allocator> properties;
28486 uint32_t propertyCount;
28487 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 );
28488 properties.resize( propertyCount );
28489 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() ) );
28490 return properties;
28491 }
28492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28493
28494 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
28495 {
28496 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
28497 }
28498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28499 template <typename Allocator>
28500 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
28501 {
28502 std::vector<DisplayPropertiesKHR,Allocator> properties;
28503 uint32_t propertyCount;
28504 Result result;
28505 do
28506 {
28507 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
28508 if ( ( result == Result::eSuccess ) && propertyCount )
28509 {
28510 properties.resize( propertyCount );
28511 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
28512 }
28513 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028514 assert( propertyCount <= properties.size() );
28515 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028516 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
28517 }
28518#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28519
28520 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
28521 {
28522 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
28523 }
28524#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28525 template <typename Allocator>
28526 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
28527 {
28528 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
28529 uint32_t propertyCount;
28530 Result result;
28531 do
28532 {
28533 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
28534 if ( ( result == Result::eSuccess ) && propertyCount )
28535 {
28536 properties.resize( propertyCount );
28537 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
28538 }
28539 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028540 assert( propertyCount <= properties.size() );
28541 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028542 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
28543 }
28544#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28545
28546 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
28547 {
28548 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
28549 }
28550#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28551 template <typename Allocator>
28552 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
28553 {
28554 std::vector<DisplayKHR,Allocator> displays;
28555 uint32_t displayCount;
28556 Result result;
28557 do
28558 {
28559 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
28560 if ( ( result == Result::eSuccess ) && displayCount )
28561 {
28562 displays.resize( displayCount );
28563 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
28564 }
28565 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028566 assert( displayCount <= displays.size() );
28567 displays.resize( displayCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028568 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
28569 }
28570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28571
28572 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
28573 {
28574 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
28575 }
28576#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28577 template <typename Allocator>
28578 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
28579 {
28580 std::vector<DisplayModePropertiesKHR,Allocator> properties;
28581 uint32_t propertyCount;
28582 Result result;
28583 do
28584 {
28585 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
28586 if ( ( result == Result::eSuccess ) && propertyCount )
28587 {
28588 properties.resize( propertyCount );
28589 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
28590 }
28591 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028592 assert( propertyCount <= properties.size() );
28593 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028594 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
28595 }
28596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28597
28598 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
28599 {
28600 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 ) ) );
28601 }
28602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28603 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28604 {
28605 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028606 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 -070028607 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
28608 }
28609#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28610
28611 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
28612 {
28613 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
28614 }
28615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28616 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
28617 {
28618 DisplayPlaneCapabilitiesKHR capabilities;
28619 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
28620 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
28621 }
28622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28623
28624#ifdef VK_USE_PLATFORM_MIR_KHR
28625 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
28626 {
28627 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
28628 }
28629#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28630 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
28631 {
28632 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
28633 }
28634#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28635#endif /*VK_USE_PLATFORM_MIR_KHR*/
28636
28637 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
28638 {
28639 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
28640 }
28641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28642 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
28643 {
28644 Bool32 supported;
28645 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
28646 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
28647 }
28648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28649
28650 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
28651 {
28652 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
28653 }
28654#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28655 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
28656 {
28657 SurfaceCapabilitiesKHR surfaceCapabilities;
28658 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
28659 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
28660 }
28661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28662
28663 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
28664 {
28665 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
28666 }
28667#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28668 template <typename Allocator>
28669 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
28670 {
28671 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
28672 uint32_t surfaceFormatCount;
28673 Result result;
28674 do
28675 {
28676 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
28677 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
28678 {
28679 surfaceFormats.resize( surfaceFormatCount );
28680 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
28681 }
28682 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028683 assert( surfaceFormatCount <= surfaceFormats.size() );
28684 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028685 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
28686 }
28687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28688
28689 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
28690 {
28691 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
28692 }
28693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28694 template <typename Allocator>
28695 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
28696 {
28697 std::vector<PresentModeKHR,Allocator> presentModes;
28698 uint32_t presentModeCount;
28699 Result result;
28700 do
28701 {
28702 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
28703 if ( ( result == Result::eSuccess ) && presentModeCount )
28704 {
28705 presentModes.resize( presentModeCount );
28706 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
28707 }
28708 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028709 assert( presentModeCount <= presentModes.size() );
28710 presentModes.resize( presentModeCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028711 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
28712 }
28713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28714
28715#ifdef VK_USE_PLATFORM_WAYLAND_KHR
28716 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
28717 {
28718 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
28719 }
28720#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28721 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
28722 {
28723 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
28724 }
28725#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28726#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28727
28728#ifdef VK_USE_PLATFORM_WIN32_KHR
28729 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
28730 {
28731 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
28732 }
28733#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28734
28735#ifdef VK_USE_PLATFORM_XLIB_KHR
28736 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
28737 {
28738 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
28739 }
28740#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28741 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
28742 {
28743 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
28744 }
28745#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28746#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28747
28748#ifdef VK_USE_PLATFORM_XCB_KHR
28749 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
28750 {
28751 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
28752 }
28753#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28754 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
28755 {
28756 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
28757 }
28758#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28759#endif /*VK_USE_PLATFORM_XCB_KHR*/
28760
28761 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
28762 {
28763 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 ) ) );
28764 }
28765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28766 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
28767 {
28768 ExternalImageFormatPropertiesNV externalImageFormatProperties;
28769 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 ) ) );
28770 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
28771 }
28772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28773
28774 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
28775 {
28776 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
28777 }
28778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28779 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
28780 {
28781 DeviceGeneratedCommandsLimitsNVX limits;
28782 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
28783 return limits;
28784 }
28785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28786
28787 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
28788 {
28789 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
28790 }
28791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28792 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
28793 {
28794 PhysicalDeviceFeatures2KHR features;
28795 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
28796 return features;
28797 }
28798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28799
28800 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
28801 {
28802 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
28803 }
28804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28805 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
28806 {
28807 PhysicalDeviceProperties2KHR properties;
28808 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
28809 return properties;
28810 }
28811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28812
28813 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
28814 {
28815 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
28816 }
28817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28818 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
28819 {
28820 FormatProperties2KHR formatProperties;
28821 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
28822 return formatProperties;
28823 }
28824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28825
28826 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
28827 {
28828 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
28829 }
28830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28831 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
28832 {
28833 ImageFormatProperties2KHR imageFormatProperties;
28834 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
28835 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
28836 }
28837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28838
28839 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
28840 {
28841 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
28842 }
28843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28844 template <typename Allocator>
28845 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
28846 {
28847 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
28848 uint32_t queueFamilyPropertyCount;
28849 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
28850 queueFamilyProperties.resize( queueFamilyPropertyCount );
28851 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
28852 return queueFamilyProperties;
28853 }
28854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28855
28856 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
28857 {
28858 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
28859 }
28860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28861 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
28862 {
28863 PhysicalDeviceMemoryProperties2KHR memoryProperties;
28864 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
28865 return memoryProperties;
28866 }
28867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28868
28869 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
28870 {
28871 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
28872 }
28873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28874 template <typename Allocator>
28875 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
28876 {
28877 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
28878 uint32_t propertyCount;
28879 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
28880 properties.resize( propertyCount );
28881 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
28882 return properties;
28883 }
28884#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28885
Mark Youngabc2d6e2017-07-07 07:59:56 -060028886 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070028887 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028888 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028889 }
28890#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028891 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028892 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028893 ExternalBufferPropertiesKHR externalBufferProperties;
28894 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028895 return externalBufferProperties;
28896 }
28897#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28898
Mark Youngabc2d6e2017-07-07 07:59:56 -060028899 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070028900 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028901 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028902 }
28903#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028904 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028905 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028906 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
28907 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028908 return externalSemaphoreProperties;
28909 }
28910#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28911
Mark Youngabc2d6e2017-07-07 07:59:56 -060028912 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
28913 {
28914 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
28915 }
28916#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28917 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
28918 {
28919 ExternalFencePropertiesKHR externalFenceProperties;
28920 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
28921 return externalFenceProperties;
28922 }
28923#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28924
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028925#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28926 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
28927 {
28928 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
28929 }
28930#else
28931 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
28932 {
28933 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
28934 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
28935 }
28936#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28937
28938#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
28939 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
28940 {
28941 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
28942 }
28943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28944 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
28945 {
28946 Display dpy;
28947 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
28948 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
28949 }
28950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28951#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
28952
28953#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
28954 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
28955 {
28956 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
28957 }
28958#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28959 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
28960 {
28961 DisplayKHR display;
28962 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
28963 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
28964 }
28965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28966#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
28967
28968 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
28969 {
28970 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
28971 }
28972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28973 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
28974 {
28975 SurfaceCapabilities2EXT surfaceCapabilities;
28976 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
28977 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
28978 }
28979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070028980
28981 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
28982 {
28983 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
28984 }
28985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28986 template <typename Allocator>
28987 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
28988 {
28989 std::vector<Rect2D,Allocator> rects;
28990 uint32_t rectCount;
28991 Result result;
28992 do
28993 {
28994 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
28995 if ( ( result == Result::eSuccess ) && rectCount )
28996 {
28997 rects.resize( rectCount );
28998 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
28999 }
29000 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029001 assert( rectCount <= rects.size() );
29002 rects.resize( rectCount );
Mark Young0f183a82017-02-28 09:58:04 -070029003 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
29004 }
29005#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029006
Mark Lobodzinski54385432017-05-15 10:27:52 -060029007 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
29008 {
29009 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
29010 }
29011#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029012 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060029013 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029014 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060029015 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
29016 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
29017 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060029018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29019
29020 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
29021 {
29022 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
29023 }
29024#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29025 template <typename Allocator>
29026 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
29027 {
29028 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
29029 uint32_t surfaceFormatCount;
29030 Result result;
29031 do
29032 {
29033 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
29034 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
29035 {
29036 surfaceFormats.resize( surfaceFormatCount );
29037 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
29038 }
29039 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029040 assert( surfaceFormatCount <= surfaceFormats.size() );
29041 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski54385432017-05-15 10:27:52 -060029042 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormats2KHR" );
29043 }
29044#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29045
Mark Young0f183a82017-02-28 09:58:04 -070029046 struct CmdProcessCommandsInfoNVX
29047 {
29048 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 )
29049 : sType( StructureType::eCmdProcessCommandsInfoNVX )
29050 , pNext( nullptr )
29051 , objectTable( objectTable_ )
29052 , indirectCommandsLayout( indirectCommandsLayout_ )
29053 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
29054 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
29055 , maxSequencesCount( maxSequencesCount_ )
29056 , targetCommandBuffer( targetCommandBuffer_ )
29057 , sequencesCountBuffer( sequencesCountBuffer_ )
29058 , sequencesCountOffset( sequencesCountOffset_ )
29059 , sequencesIndexBuffer( sequencesIndexBuffer_ )
29060 , sequencesIndexOffset( sequencesIndexOffset_ )
29061 {
29062 }
29063
29064 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
29065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029066 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070029067 }
29068
29069 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
29070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029071 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070029072 return *this;
29073 }
Mark Young0f183a82017-02-28 09:58:04 -070029074 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
29075 {
29076 pNext = pNext_;
29077 return *this;
29078 }
29079
29080 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
29081 {
29082 objectTable = objectTable_;
29083 return *this;
29084 }
29085
29086 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
29087 {
29088 indirectCommandsLayout = indirectCommandsLayout_;
29089 return *this;
29090 }
29091
29092 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
29093 {
29094 indirectCommandsTokenCount = indirectCommandsTokenCount_;
29095 return *this;
29096 }
29097
29098 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
29099 {
29100 pIndirectCommandsTokens = pIndirectCommandsTokens_;
29101 return *this;
29102 }
29103
29104 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
29105 {
29106 maxSequencesCount = maxSequencesCount_;
29107 return *this;
29108 }
29109
29110 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
29111 {
29112 targetCommandBuffer = targetCommandBuffer_;
29113 return *this;
29114 }
29115
29116 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
29117 {
29118 sequencesCountBuffer = sequencesCountBuffer_;
29119 return *this;
29120 }
29121
29122 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
29123 {
29124 sequencesCountOffset = sequencesCountOffset_;
29125 return *this;
29126 }
29127
29128 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
29129 {
29130 sequencesIndexBuffer = sequencesIndexBuffer_;
29131 return *this;
29132 }
29133
29134 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
29135 {
29136 sequencesIndexOffset = sequencesIndexOffset_;
29137 return *this;
29138 }
29139
29140 operator const VkCmdProcessCommandsInfoNVX&() const
29141 {
29142 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
29143 }
29144
29145 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
29146 {
29147 return ( sType == rhs.sType )
29148 && ( pNext == rhs.pNext )
29149 && ( objectTable == rhs.objectTable )
29150 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
29151 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
29152 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
29153 && ( maxSequencesCount == rhs.maxSequencesCount )
29154 && ( targetCommandBuffer == rhs.targetCommandBuffer )
29155 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
29156 && ( sequencesCountOffset == rhs.sequencesCountOffset )
29157 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
29158 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
29159 }
29160
29161 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
29162 {
29163 return !operator==( rhs );
29164 }
29165
29166 private:
29167 StructureType sType;
29168
29169 public:
29170 const void* pNext;
29171 ObjectTableNVX objectTable;
29172 IndirectCommandsLayoutNVX indirectCommandsLayout;
29173 uint32_t indirectCommandsTokenCount;
29174 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
29175 uint32_t maxSequencesCount;
29176 CommandBuffer targetCommandBuffer;
29177 Buffer sequencesCountBuffer;
29178 DeviceSize sequencesCountOffset;
29179 Buffer sequencesIndexBuffer;
29180 DeviceSize sequencesIndexOffset;
29181 };
29182 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
29183
29184 struct PhysicalDeviceGroupPropertiesKHX
29185 {
29186 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
29187 {
29188 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
29189 }
29190
29191 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
29192 {
29193 return ( sType == rhs.sType )
29194 && ( pNext == rhs.pNext )
29195 && ( physicalDeviceCount == rhs.physicalDeviceCount )
29196 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
29197 && ( subsetAllocation == rhs.subsetAllocation );
29198 }
29199
29200 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
29201 {
29202 return !operator==( rhs );
29203 }
29204
29205 private:
29206 StructureType sType;
29207
29208 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060029209 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070029210 uint32_t physicalDeviceCount;
29211 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
29212 Bool32 subsetAllocation;
29213 };
29214 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
29215
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029216#ifndef VULKAN_HPP_NO_SMART_HANDLE
29217 class DebugReportCallbackEXTDeleter;
29218 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
29219 class SurfaceKHRDeleter;
29220 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
29221#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29222
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029223 class Instance
29224 {
29225 public:
29226 Instance()
29227 : m_instance(VK_NULL_HANDLE)
29228 {}
29229
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070029230 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029231 : m_instance(VK_NULL_HANDLE)
29232 {}
29233
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029234 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
29235 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029236 {}
29237
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070029238#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029239 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029240 {
29241 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029242 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029243 }
29244#endif
29245
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029246 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029247 {
29248 m_instance = VK_NULL_HANDLE;
29249 return *this;
29250 }
29251
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029252 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029253 {
29254 return m_instance == rhs.m_instance;
29255 }
29256
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029257 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029258 {
29259 return m_instance != rhs.m_instance;
29260 }
29261
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029262 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029263 {
29264 return m_instance < rhs.m_instance;
29265 }
29266
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029267 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029269 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29271
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029272 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029274 template <typename Allocator = std::allocator<PhysicalDevice>>
29275 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029276#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29277
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029278 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029279#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029280 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29282
29283#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029284 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029286 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29287#ifndef VULKAN_HPP_NO_SMART_HANDLE
29288 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29289#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029291#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029292
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029293 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029294#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029295 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29296#ifndef VULKAN_HPP_NO_SMART_HANDLE
29297 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29298#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29300
29301#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029302 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029304 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29305#ifndef VULKAN_HPP_NO_SMART_HANDLE
29306 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29307#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029309#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029310
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029311 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029313 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029314#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29315
Mark Young39389872017-01-19 21:10:49 -070029316#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029317 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29318#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29319 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29320#ifndef VULKAN_HPP_NO_SMART_HANDLE
29321 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29322#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070029324#endif /*VK_USE_PLATFORM_VI_NN*/
29325
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029326#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029327 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29328#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29329 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29330#ifndef VULKAN_HPP_NO_SMART_HANDLE
29331 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29332#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29333#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029334#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
29335
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029336#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029337 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29338#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29339 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29340#ifndef VULKAN_HPP_NO_SMART_HANDLE
29341 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29342#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29343#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029344#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29345
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029346#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029347 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29348#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29349 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29350#ifndef VULKAN_HPP_NO_SMART_HANDLE
29351 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29352#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29353#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029354#endif /*VK_USE_PLATFORM_XLIB_KHR*/
29355
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029356#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029357 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29358#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29359 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29360#ifndef VULKAN_HPP_NO_SMART_HANDLE
29361 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29362#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029364#endif /*VK_USE_PLATFORM_XCB_KHR*/
29365
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029366 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029368 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29369#ifndef VULKAN_HPP_NO_SMART_HANDLE
29370 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29371#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29373
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029374 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029375#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029376 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29378
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029379 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 -060029380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029381 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 -060029382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29383
Mark Young0f183a82017-02-28 09:58:04 -070029384 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
29385#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29386 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
29387 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
29388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29389
29390#ifdef VK_USE_PLATFORM_IOS_MVK
29391 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29393 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29394#ifndef VULKAN_HPP_NO_SMART_HANDLE
29395 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29396#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29398#endif /*VK_USE_PLATFORM_IOS_MVK*/
29399
29400#ifdef VK_USE_PLATFORM_MACOS_MVK
29401 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29403 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29404#ifndef VULKAN_HPP_NO_SMART_HANDLE
29405 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29406#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29408#endif /*VK_USE_PLATFORM_MACOS_MVK*/
29409
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029410
29411
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070029412 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029413 {
29414 return m_instance;
29415 }
29416
29417 explicit operator bool() const
29418 {
29419 return m_instance != VK_NULL_HANDLE;
29420 }
29421
29422 bool operator!() const
29423 {
29424 return m_instance == VK_NULL_HANDLE;
29425 }
29426
29427 private:
29428 VkInstance m_instance;
29429 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029430
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029431 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
29432
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029433#ifndef VULKAN_HPP_NO_SMART_HANDLE
29434 class DebugReportCallbackEXTDeleter
29435 {
29436 public:
29437 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
29438 : m_instance( instance )
29439 , m_allocator( allocator )
29440 {}
29441
29442 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
29443 {
29444 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
29445 }
29446
29447 private:
29448 Instance m_instance;
29449 Optional<const AllocationCallbacks> m_allocator;
29450 };
29451
29452 class SurfaceKHRDeleter
29453 {
29454 public:
29455 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
29456 : m_instance( instance )
29457 , m_allocator( allocator )
29458 {}
29459
29460 void operator()( SurfaceKHR surfaceKHR )
29461 {
29462 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
29463 }
29464
29465 private:
29466 Instance m_instance;
29467 Optional<const AllocationCallbacks> m_allocator;
29468 };
29469#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29470
29471 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
29472 {
29473 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29474 }
29475#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29476 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
29477 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029478 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029479 }
29480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29481
29482 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
29483 {
29484 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
29485 }
29486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29487 template <typename Allocator>
29488 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
29489 {
29490 std::vector<PhysicalDevice,Allocator> physicalDevices;
29491 uint32_t physicalDeviceCount;
29492 Result result;
29493 do
29494 {
29495 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
29496 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
29497 {
29498 physicalDevices.resize( physicalDeviceCount );
29499 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
29500 }
29501 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029502 assert( physicalDeviceCount <= physicalDevices.size() );
29503 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029504 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
29505 }
29506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29507
29508 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
29509 {
29510 return vkGetInstanceProcAddr( m_instance, pName );
29511 }
29512#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29513 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
29514 {
29515 return vkGetInstanceProcAddr( m_instance, name.c_str() );
29516 }
29517#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29518
29519#ifdef VK_USE_PLATFORM_ANDROID_KHR
29520 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29521 {
29522 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29523 }
29524#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29525 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29526 {
29527 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029528 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 -070029529 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
29530 }
29531#ifndef VULKAN_HPP_NO_SMART_HANDLE
29532 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29533 {
29534 SurfaceKHRDeleter deleter( *this, allocator );
29535 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
29536 }
29537#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29539#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
29540
29541 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29542 {
29543 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29544 }
29545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29546 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29547 {
29548 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029549 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 -070029550 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
29551 }
29552#ifndef VULKAN_HPP_NO_SMART_HANDLE
29553 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29554 {
29555 SurfaceKHRDeleter deleter( *this, allocator );
29556 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
29557 }
29558#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29560
29561#ifdef VK_USE_PLATFORM_MIR_KHR
29562 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29563 {
29564 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29565 }
29566#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29567 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29568 {
29569 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029570 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 -070029571 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
29572 }
29573#ifndef VULKAN_HPP_NO_SMART_HANDLE
29574 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29575 {
29576 SurfaceKHRDeleter deleter( *this, allocator );
29577 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
29578 }
29579#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29580#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29581#endif /*VK_USE_PLATFORM_MIR_KHR*/
29582
29583 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
29584 {
29585 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29586 }
29587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29588 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
29589 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029590 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029591 }
29592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29593
29594#ifdef VK_USE_PLATFORM_VI_NN
29595 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29596 {
29597 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29598 }
29599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29600 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
29601 {
29602 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029603 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 -070029604 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
29605 }
29606#ifndef VULKAN_HPP_NO_SMART_HANDLE
29607 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
29608 {
29609 SurfaceKHRDeleter deleter( *this, allocator );
29610 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
29611 }
29612#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29614#endif /*VK_USE_PLATFORM_VI_NN*/
29615
29616#ifdef VK_USE_PLATFORM_WAYLAND_KHR
29617 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29618 {
29619 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29620 }
29621#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29622 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29623 {
29624 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029625 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 -070029626 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
29627 }
29628#ifndef VULKAN_HPP_NO_SMART_HANDLE
29629 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29630 {
29631 SurfaceKHRDeleter deleter( *this, allocator );
29632 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
29633 }
29634#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29636#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
29637
29638#ifdef VK_USE_PLATFORM_WIN32_KHR
29639 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29640 {
29641 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29642 }
29643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29644 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29645 {
29646 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029647 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 -070029648 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
29649 }
29650#ifndef VULKAN_HPP_NO_SMART_HANDLE
29651 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29652 {
29653 SurfaceKHRDeleter deleter( *this, allocator );
29654 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
29655 }
29656#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29658#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29659
29660#ifdef VK_USE_PLATFORM_XLIB_KHR
29661 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29662 {
29663 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29664 }
29665#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29666 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29667 {
29668 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029669 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 -070029670 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
29671 }
29672#ifndef VULKAN_HPP_NO_SMART_HANDLE
29673 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29674 {
29675 SurfaceKHRDeleter deleter( *this, allocator );
29676 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
29677 }
29678#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29680#endif /*VK_USE_PLATFORM_XLIB_KHR*/
29681
29682#ifdef VK_USE_PLATFORM_XCB_KHR
29683 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29684 {
29685 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29686 }
29687#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29688 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29689 {
29690 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029691 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 -070029692 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
29693 }
29694#ifndef VULKAN_HPP_NO_SMART_HANDLE
29695 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29696 {
29697 SurfaceKHRDeleter deleter( *this, allocator );
29698 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
29699 }
29700#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29701#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29702#endif /*VK_USE_PLATFORM_XCB_KHR*/
29703
29704 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
29705 {
29706 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
29707 }
29708#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29709 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29710 {
29711 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029712 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 -070029713 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
29714 }
29715#ifndef VULKAN_HPP_NO_SMART_HANDLE
29716 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29717 {
29718 DebugReportCallbackEXTDeleter deleter( *this, allocator );
29719 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
29720 }
29721#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29722#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29723
29724 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
29725 {
29726 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29727 }
29728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29729 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
29730 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029731 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029732 }
29733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29734
29735 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
29736 {
29737 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
29738 }
29739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29740 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
29741 {
29742#ifdef VULKAN_HPP_NO_EXCEPTIONS
29743 assert( layerPrefix.size() == message.size() );
29744#else
29745 if ( layerPrefix.size() != message.size() )
29746 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029747 throw LogicError( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029748 }
29749#endif // VULKAN_HPP_NO_EXCEPTIONS
29750 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
29751 }
29752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029753
29754 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060029755 {
Mark Young0f183a82017-02-28 09:58:04 -070029756 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
29757 }
29758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29759 template <typename Allocator>
29760 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
29761 {
29762 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
29763 uint32_t physicalDeviceGroupCount;
29764 Result result;
29765 do
29766 {
29767 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
29768 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
29769 {
29770 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
29771 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
29772 }
29773 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029774 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
29775 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Young0f183a82017-02-28 09:58:04 -070029776 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
29777 }
29778#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29779
29780#ifdef VK_USE_PLATFORM_IOS_MVK
29781 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29782 {
29783 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29784 }
29785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29786 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29787 {
29788 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029789 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 -070029790 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
29791 }
29792#ifndef VULKAN_HPP_NO_SMART_HANDLE
29793 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29794 {
29795 SurfaceKHRDeleter deleter( *this, allocator );
29796 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
29797 }
29798#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29800#endif /*VK_USE_PLATFORM_IOS_MVK*/
29801
29802#ifdef VK_USE_PLATFORM_MACOS_MVK
29803 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29804 {
29805 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29806 }
29807#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29808 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29809 {
29810 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029811 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 -070029812 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
29813 }
29814#ifndef VULKAN_HPP_NO_SMART_HANDLE
29815 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29816 {
29817 SurfaceKHRDeleter deleter( *this, allocator );
29818 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
29819 }
29820#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29821#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29822#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029823
Mark Young0f183a82017-02-28 09:58:04 -070029824 struct DeviceGroupDeviceCreateInfoKHX
29825 {
29826 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
29827 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060029828 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070029829 , physicalDeviceCount( physicalDeviceCount_ )
29830 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029831 {
29832 }
29833
Mark Young0f183a82017-02-28 09:58:04 -070029834 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060029835 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029836 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060029837 }
29838
Mark Young0f183a82017-02-28 09:58:04 -070029839 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060029840 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029841 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060029842 return *this;
29843 }
Mark Young0f183a82017-02-28 09:58:04 -070029844 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029845 {
29846 pNext = pNext_;
29847 return *this;
29848 }
29849
Mark Young0f183a82017-02-28 09:58:04 -070029850 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029851 {
Mark Young0f183a82017-02-28 09:58:04 -070029852 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060029853 return *this;
29854 }
29855
Mark Young0f183a82017-02-28 09:58:04 -070029856 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029857 {
Mark Young0f183a82017-02-28 09:58:04 -070029858 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060029859 return *this;
29860 }
29861
Mark Young0f183a82017-02-28 09:58:04 -070029862 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060029863 {
Mark Young0f183a82017-02-28 09:58:04 -070029864 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060029865 }
29866
Mark Young0f183a82017-02-28 09:58:04 -070029867 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060029868 {
29869 return ( sType == rhs.sType )
29870 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070029871 && ( physicalDeviceCount == rhs.physicalDeviceCount )
29872 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060029873 }
29874
Mark Young0f183a82017-02-28 09:58:04 -070029875 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060029876 {
29877 return !operator==( rhs );
29878 }
29879
29880 private:
29881 StructureType sType;
29882
29883 public:
29884 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070029885 uint32_t physicalDeviceCount;
29886 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060029887 };
Mark Young0f183a82017-02-28 09:58:04 -070029888 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060029889
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029890#ifndef VULKAN_HPP_NO_SMART_HANDLE
29891 class InstanceDeleter;
29892 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
29893#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29894
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029895 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029897 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029898#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029899 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029900#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29901#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29902
29903#ifndef VULKAN_HPP_NO_SMART_HANDLE
29904 class InstanceDeleter
29905 {
29906 public:
29907 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
29908 : m_allocator( allocator )
29909 {}
29910
29911 void operator()( Instance instance )
29912 {
29913 instance.destroy( m_allocator );
29914 }
29915
29916 private:
29917 Optional<const AllocationCallbacks> m_allocator;
29918 };
29919#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29920
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029921 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029922 {
29923 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
29924 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029925#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029926 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029927 {
29928 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029929 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 -060029930 return createResultValue( result, instance, "vk::createInstance" );
29931 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029932#ifndef VULKAN_HPP_NO_SMART_HANDLE
29933 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
29934 {
29935 InstanceDeleter deleter( allocator );
29936 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
29937 }
29938#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029939#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29940
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029941
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029942 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029943 {
29944 return "(void)";
29945 }
29946
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029947 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029948 {
29949 return "{}";
29950 }
29951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029952 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029953 {
29954 return "(void)";
29955 }
29956
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029957 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029958 {
29959 return "{}";
29960 }
29961
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029962 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029963 {
29964 return "(void)";
29965 }
29966
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029967 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029968 {
29969 return "{}";
29970 }
29971
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029972 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029973 {
29974 return "(void)";
29975 }
29976
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029977 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029978 {
29979 return "{}";
29980 }
29981
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029982 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029983 {
29984 return "(void)";
29985 }
29986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029987 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029988 {
29989 return "{}";
29990 }
29991
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029992 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029993 {
29994 return "(void)";
29995 }
29996
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029997 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029998 {
29999 return "{}";
30000 }
30001
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030002 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030003 {
30004 return "(void)";
30005 }
30006
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030007 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030008 {
30009 return "{}";
30010 }
30011
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030012 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030013 {
30014 return "(void)";
30015 }
30016
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030017 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030018 {
30019 return "{}";
30020 }
30021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030022 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030023 {
30024 return "(void)";
30025 }
30026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030027 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030028 {
30029 return "{}";
30030 }
30031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030032 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030033 {
30034 return "(void)";
30035 }
30036
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030037 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030038 {
30039 return "{}";
30040 }
30041
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030042 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030043 {
30044 return "(void)";
30045 }
30046
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030047 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030048 {
30049 return "{}";
30050 }
30051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030052 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030053 {
30054 return "(void)";
30055 }
30056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030057 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030058 {
30059 return "{}";
30060 }
30061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030062 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030063 {
30064 return "(void)";
30065 }
30066
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030067 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030068 {
30069 return "{}";
30070 }
30071
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030072 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030073 {
30074 return "(void)";
30075 }
30076
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030077 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030078 {
30079 return "{}";
30080 }
30081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030082 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030083 {
30084 return "(void)";
30085 }
30086
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030087 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030088 {
30089 return "{}";
30090 }
30091
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030092 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030093 {
30094 return "(void)";
30095 }
30096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030097 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030098 {
30099 return "{}";
30100 }
30101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030102 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030103 {
30104 return "(void)";
30105 }
30106
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030107 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030108 {
30109 return "{}";
30110 }
30111
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030112 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030113 {
30114 return "(void)";
30115 }
30116
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030117 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030118 {
30119 return "{}";
30120 }
30121
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030122 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030123 {
30124 return "(void)";
30125 }
30126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030127 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030128 {
30129 return "{}";
30130 }
30131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030132 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030133 {
30134 return "(void)";
30135 }
30136
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030137 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030138 {
30139 return "{}";
30140 }
30141
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030142 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030143 {
30144 return "(void)";
30145 }
30146
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030147 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030148 {
30149 return "{}";
30150 }
30151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030152 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030153 {
30154 return "(void)";
30155 }
30156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030157 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030158 {
30159 return "{}";
30160 }
30161
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030162 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030163 {
30164 return "(void)";
30165 }
30166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030167 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030168 {
30169 return "{}";
30170 }
30171
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030172 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030173 {
30174 return "(void)";
30175 }
30176
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030177 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030178 {
30179 return "{}";
30180 }
30181
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030182 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030183 {
30184 return "(void)";
30185 }
30186
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030187 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030188 {
30189 return "{}";
30190 }
30191
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030192 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030193 {
30194 return "(void)";
30195 }
30196
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030197 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030198 {
30199 return "{}";
30200 }
30201
Mark Young0f183a82017-02-28 09:58:04 -070030202 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030203 {
30204 return "(void)";
30205 }
30206
Mark Young0f183a82017-02-28 09:58:04 -070030207 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030208 {
30209 return "{}";
30210 }
30211
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030212 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030213 {
30214 return "(void)";
30215 }
30216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030217 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030218 {
30219 return "{}";
30220 }
30221
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030222 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030223 {
30224 return "(void)";
30225 }
30226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030227 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030228 {
30229 return "{}";
30230 }
30231
30232#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030233 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030234 {
30235 return "(void)";
30236 }
30237#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
30238
30239#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030240 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030241 {
30242 return "{}";
30243 }
30244#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
30245
30246#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030247 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030248 {
30249 return "(void)";
30250 }
30251#endif /*VK_USE_PLATFORM_MIR_KHR*/
30252
30253#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030254 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030255 {
30256 return "{}";
30257 }
30258#endif /*VK_USE_PLATFORM_MIR_KHR*/
30259
Mark Young39389872017-01-19 21:10:49 -070030260#ifdef VK_USE_PLATFORM_VI_NN
30261 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
30262 {
30263 return "(void)";
30264 }
30265#endif /*VK_USE_PLATFORM_VI_NN*/
30266
30267#ifdef VK_USE_PLATFORM_VI_NN
30268 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
30269 {
30270 return "{}";
30271 }
30272#endif /*VK_USE_PLATFORM_VI_NN*/
30273
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030274#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030275 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030276 {
30277 return "(void)";
30278 }
30279#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30280
30281#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030282 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030283 {
30284 return "{}";
30285 }
30286#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30287
30288#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030289 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030290 {
30291 return "(void)";
30292 }
30293#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30294
30295#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030296 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030297 {
30298 return "{}";
30299 }
30300#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30301
30302#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030303 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030304 {
30305 return "(void)";
30306 }
30307#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30308
30309#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030310 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030311 {
30312 return "{}";
30313 }
30314#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30315
30316#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030317 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030318 {
30319 return "(void)";
30320 }
30321#endif /*VK_USE_PLATFORM_XCB_KHR*/
30322
30323#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030324 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030325 {
30326 return "{}";
30327 }
30328#endif /*VK_USE_PLATFORM_XCB_KHR*/
30329
Mark Young0f183a82017-02-28 09:58:04 -070030330#ifdef VK_USE_PLATFORM_IOS_MVK
30331 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
30332 {
30333 return "(void)";
30334 }
30335#endif /*VK_USE_PLATFORM_IOS_MVK*/
30336
30337#ifdef VK_USE_PLATFORM_IOS_MVK
30338 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
30339 {
30340 return "{}";
30341 }
30342#endif /*VK_USE_PLATFORM_IOS_MVK*/
30343
30344#ifdef VK_USE_PLATFORM_MACOS_MVK
30345 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
30346 {
30347 return "(void)";
30348 }
30349#endif /*VK_USE_PLATFORM_MACOS_MVK*/
30350
30351#ifdef VK_USE_PLATFORM_MACOS_MVK
30352 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
30353 {
30354 return "{}";
30355 }
30356#endif /*VK_USE_PLATFORM_MACOS_MVK*/
30357
Mark Young39389872017-01-19 21:10:49 -070030358 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
30359 {
30360 return "(void)";
30361 }
30362
30363 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
30364 {
30365 return "{}";
30366 }
30367
Mark Young0f183a82017-02-28 09:58:04 -070030368 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
30369 {
30370 return "(void)";
30371 }
30372
30373 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
30374 {
30375 return "{}";
30376 }
30377
30378 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
30379 {
30380 return "(void)";
30381 }
30382
30383 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
30384 {
30385 return "{}";
30386 }
30387
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030388 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
30389 {
30390 return "(void)";
30391 }
30392
30393 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
30394 {
30395 return "{}";
30396 }
30397
30398 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
30399 {
30400 return "(void)";
30401 }
30402
30403 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
30404 {
30405 return "{}";
30406 }
30407
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030408 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030409 {
30410 switch (value)
30411 {
30412 case ImageLayout::eUndefined: return "Undefined";
30413 case ImageLayout::eGeneral: return "General";
30414 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
30415 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
30416 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
30417 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
30418 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
30419 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
30420 case ImageLayout::ePreinitialized: return "Preinitialized";
30421 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060030422 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030423 default: return "invalid";
30424 }
30425 }
30426
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030427 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030428 {
30429 switch (value)
30430 {
30431 case AttachmentLoadOp::eLoad: return "Load";
30432 case AttachmentLoadOp::eClear: return "Clear";
30433 case AttachmentLoadOp::eDontCare: return "DontCare";
30434 default: return "invalid";
30435 }
30436 }
30437
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030438 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030439 {
30440 switch (value)
30441 {
30442 case AttachmentStoreOp::eStore: return "Store";
30443 case AttachmentStoreOp::eDontCare: return "DontCare";
30444 default: return "invalid";
30445 }
30446 }
30447
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030448 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030449 {
30450 switch (value)
30451 {
30452 case ImageType::e1D: return "1D";
30453 case ImageType::e2D: return "2D";
30454 case ImageType::e3D: return "3D";
30455 default: return "invalid";
30456 }
30457 }
30458
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030459 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030460 {
30461 switch (value)
30462 {
30463 case ImageTiling::eOptimal: return "Optimal";
30464 case ImageTiling::eLinear: return "Linear";
30465 default: return "invalid";
30466 }
30467 }
30468
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030469 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030470 {
30471 switch (value)
30472 {
30473 case ImageViewType::e1D: return "1D";
30474 case ImageViewType::e2D: return "2D";
30475 case ImageViewType::e3D: return "3D";
30476 case ImageViewType::eCube: return "Cube";
30477 case ImageViewType::e1DArray: return "1DArray";
30478 case ImageViewType::e2DArray: return "2DArray";
30479 case ImageViewType::eCubeArray: return "CubeArray";
30480 default: return "invalid";
30481 }
30482 }
30483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030484 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030485 {
30486 switch (value)
30487 {
30488 case CommandBufferLevel::ePrimary: return "Primary";
30489 case CommandBufferLevel::eSecondary: return "Secondary";
30490 default: return "invalid";
30491 }
30492 }
30493
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030494 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030495 {
30496 switch (value)
30497 {
30498 case ComponentSwizzle::eIdentity: return "Identity";
30499 case ComponentSwizzle::eZero: return "Zero";
30500 case ComponentSwizzle::eOne: return "One";
30501 case ComponentSwizzle::eR: return "R";
30502 case ComponentSwizzle::eG: return "G";
30503 case ComponentSwizzle::eB: return "B";
30504 case ComponentSwizzle::eA: return "A";
30505 default: return "invalid";
30506 }
30507 }
30508
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030509 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030510 {
30511 switch (value)
30512 {
30513 case DescriptorType::eSampler: return "Sampler";
30514 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
30515 case DescriptorType::eSampledImage: return "SampledImage";
30516 case DescriptorType::eStorageImage: return "StorageImage";
30517 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
30518 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
30519 case DescriptorType::eUniformBuffer: return "UniformBuffer";
30520 case DescriptorType::eStorageBuffer: return "StorageBuffer";
30521 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
30522 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
30523 case DescriptorType::eInputAttachment: return "InputAttachment";
30524 default: return "invalid";
30525 }
30526 }
30527
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030528 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030529 {
30530 switch (value)
30531 {
30532 case QueryType::eOcclusion: return "Occlusion";
30533 case QueryType::ePipelineStatistics: return "PipelineStatistics";
30534 case QueryType::eTimestamp: return "Timestamp";
30535 default: return "invalid";
30536 }
30537 }
30538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030539 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030540 {
30541 switch (value)
30542 {
30543 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
30544 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
30545 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
30546 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
30547 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
30548 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
30549 default: return "invalid";
30550 }
30551 }
30552
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030553 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030554 {
30555 switch (value)
30556 {
30557 case PipelineBindPoint::eGraphics: return "Graphics";
30558 case PipelineBindPoint::eCompute: return "Compute";
30559 default: return "invalid";
30560 }
30561 }
30562
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030563 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030564 {
30565 switch (value)
30566 {
30567 case PipelineCacheHeaderVersion::eOne: return "One";
30568 default: return "invalid";
30569 }
30570 }
30571
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030572 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030573 {
30574 switch (value)
30575 {
30576 case PrimitiveTopology::ePointList: return "PointList";
30577 case PrimitiveTopology::eLineList: return "LineList";
30578 case PrimitiveTopology::eLineStrip: return "LineStrip";
30579 case PrimitiveTopology::eTriangleList: return "TriangleList";
30580 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
30581 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
30582 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
30583 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
30584 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
30585 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
30586 case PrimitiveTopology::ePatchList: return "PatchList";
30587 default: return "invalid";
30588 }
30589 }
30590
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030591 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030592 {
30593 switch (value)
30594 {
30595 case SharingMode::eExclusive: return "Exclusive";
30596 case SharingMode::eConcurrent: return "Concurrent";
30597 default: return "invalid";
30598 }
30599 }
30600
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030601 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030602 {
30603 switch (value)
30604 {
30605 case IndexType::eUint16: return "Uint16";
30606 case IndexType::eUint32: return "Uint32";
30607 default: return "invalid";
30608 }
30609 }
30610
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030611 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030612 {
30613 switch (value)
30614 {
30615 case Filter::eNearest: return "Nearest";
30616 case Filter::eLinear: return "Linear";
30617 case Filter::eCubicIMG: return "CubicIMG";
30618 default: return "invalid";
30619 }
30620 }
30621
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030622 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030623 {
30624 switch (value)
30625 {
30626 case SamplerMipmapMode::eNearest: return "Nearest";
30627 case SamplerMipmapMode::eLinear: return "Linear";
30628 default: return "invalid";
30629 }
30630 }
30631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030632 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030633 {
30634 switch (value)
30635 {
30636 case SamplerAddressMode::eRepeat: return "Repeat";
30637 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
30638 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
30639 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
30640 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
30641 default: return "invalid";
30642 }
30643 }
30644
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030645 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030646 {
30647 switch (value)
30648 {
30649 case CompareOp::eNever: return "Never";
30650 case CompareOp::eLess: return "Less";
30651 case CompareOp::eEqual: return "Equal";
30652 case CompareOp::eLessOrEqual: return "LessOrEqual";
30653 case CompareOp::eGreater: return "Greater";
30654 case CompareOp::eNotEqual: return "NotEqual";
30655 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
30656 case CompareOp::eAlways: return "Always";
30657 default: return "invalid";
30658 }
30659 }
30660
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030661 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030662 {
30663 switch (value)
30664 {
30665 case PolygonMode::eFill: return "Fill";
30666 case PolygonMode::eLine: return "Line";
30667 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030668 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030669 default: return "invalid";
30670 }
30671 }
30672
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030673 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030674 {
30675 switch (value)
30676 {
30677 case CullModeFlagBits::eNone: return "None";
30678 case CullModeFlagBits::eFront: return "Front";
30679 case CullModeFlagBits::eBack: return "Back";
30680 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
30681 default: return "invalid";
30682 }
30683 }
30684
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030685 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030686 {
30687 if (!value) return "{}";
30688 std::string result;
30689 if (value & CullModeFlagBits::eNone) result += "None | ";
30690 if (value & CullModeFlagBits::eFront) result += "Front | ";
30691 if (value & CullModeFlagBits::eBack) result += "Back | ";
30692 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
30693 return "{" + result.substr(0, result.size() - 3) + "}";
30694 }
30695
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030696 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030697 {
30698 switch (value)
30699 {
30700 case FrontFace::eCounterClockwise: return "CounterClockwise";
30701 case FrontFace::eClockwise: return "Clockwise";
30702 default: return "invalid";
30703 }
30704 }
30705
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030706 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030707 {
30708 switch (value)
30709 {
30710 case BlendFactor::eZero: return "Zero";
30711 case BlendFactor::eOne: return "One";
30712 case BlendFactor::eSrcColor: return "SrcColor";
30713 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
30714 case BlendFactor::eDstColor: return "DstColor";
30715 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
30716 case BlendFactor::eSrcAlpha: return "SrcAlpha";
30717 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
30718 case BlendFactor::eDstAlpha: return "DstAlpha";
30719 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
30720 case BlendFactor::eConstantColor: return "ConstantColor";
30721 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
30722 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
30723 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
30724 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
30725 case BlendFactor::eSrc1Color: return "Src1Color";
30726 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
30727 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
30728 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
30729 default: return "invalid";
30730 }
30731 }
30732
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030733 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030734 {
30735 switch (value)
30736 {
30737 case BlendOp::eAdd: return "Add";
30738 case BlendOp::eSubtract: return "Subtract";
30739 case BlendOp::eReverseSubtract: return "ReverseSubtract";
30740 case BlendOp::eMin: return "Min";
30741 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030742 case BlendOp::eZeroEXT: return "ZeroEXT";
30743 case BlendOp::eSrcEXT: return "SrcEXT";
30744 case BlendOp::eDstEXT: return "DstEXT";
30745 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
30746 case BlendOp::eDstOverEXT: return "DstOverEXT";
30747 case BlendOp::eSrcInEXT: return "SrcInEXT";
30748 case BlendOp::eDstInEXT: return "DstInEXT";
30749 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
30750 case BlendOp::eDstOutEXT: return "DstOutEXT";
30751 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
30752 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
30753 case BlendOp::eXorEXT: return "XorEXT";
30754 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
30755 case BlendOp::eScreenEXT: return "ScreenEXT";
30756 case BlendOp::eOverlayEXT: return "OverlayEXT";
30757 case BlendOp::eDarkenEXT: return "DarkenEXT";
30758 case BlendOp::eLightenEXT: return "LightenEXT";
30759 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
30760 case BlendOp::eColorburnEXT: return "ColorburnEXT";
30761 case BlendOp::eHardlightEXT: return "HardlightEXT";
30762 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
30763 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
30764 case BlendOp::eExclusionEXT: return "ExclusionEXT";
30765 case BlendOp::eInvertEXT: return "InvertEXT";
30766 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
30767 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
30768 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
30769 case BlendOp::eVividlightEXT: return "VividlightEXT";
30770 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
30771 case BlendOp::ePinlightEXT: return "PinlightEXT";
30772 case BlendOp::eHardmixEXT: return "HardmixEXT";
30773 case BlendOp::eHslHueEXT: return "HslHueEXT";
30774 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
30775 case BlendOp::eHslColorEXT: return "HslColorEXT";
30776 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
30777 case BlendOp::ePlusEXT: return "PlusEXT";
30778 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
30779 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
30780 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
30781 case BlendOp::eMinusEXT: return "MinusEXT";
30782 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
30783 case BlendOp::eContrastEXT: return "ContrastEXT";
30784 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
30785 case BlendOp::eRedEXT: return "RedEXT";
30786 case BlendOp::eGreenEXT: return "GreenEXT";
30787 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030788 default: return "invalid";
30789 }
30790 }
30791
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030792 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030793 {
30794 switch (value)
30795 {
30796 case StencilOp::eKeep: return "Keep";
30797 case StencilOp::eZero: return "Zero";
30798 case StencilOp::eReplace: return "Replace";
30799 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
30800 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
30801 case StencilOp::eInvert: return "Invert";
30802 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
30803 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
30804 default: return "invalid";
30805 }
30806 }
30807
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030808 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030809 {
30810 switch (value)
30811 {
30812 case LogicOp::eClear: return "Clear";
30813 case LogicOp::eAnd: return "And";
30814 case LogicOp::eAndReverse: return "AndReverse";
30815 case LogicOp::eCopy: return "Copy";
30816 case LogicOp::eAndInverted: return "AndInverted";
30817 case LogicOp::eNoOp: return "NoOp";
30818 case LogicOp::eXor: return "Xor";
30819 case LogicOp::eOr: return "Or";
30820 case LogicOp::eNor: return "Nor";
30821 case LogicOp::eEquivalent: return "Equivalent";
30822 case LogicOp::eInvert: return "Invert";
30823 case LogicOp::eOrReverse: return "OrReverse";
30824 case LogicOp::eCopyInverted: return "CopyInverted";
30825 case LogicOp::eOrInverted: return "OrInverted";
30826 case LogicOp::eNand: return "Nand";
30827 case LogicOp::eSet: return "Set";
30828 default: return "invalid";
30829 }
30830 }
30831
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030832 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030833 {
30834 switch (value)
30835 {
30836 case InternalAllocationType::eExecutable: return "Executable";
30837 default: return "invalid";
30838 }
30839 }
30840
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030841 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030842 {
30843 switch (value)
30844 {
30845 case SystemAllocationScope::eCommand: return "Command";
30846 case SystemAllocationScope::eObject: return "Object";
30847 case SystemAllocationScope::eCache: return "Cache";
30848 case SystemAllocationScope::eDevice: return "Device";
30849 case SystemAllocationScope::eInstance: return "Instance";
30850 default: return "invalid";
30851 }
30852 }
30853
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030854 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030855 {
30856 switch (value)
30857 {
30858 case PhysicalDeviceType::eOther: return "Other";
30859 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
30860 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
30861 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
30862 case PhysicalDeviceType::eCpu: return "Cpu";
30863 default: return "invalid";
30864 }
30865 }
30866
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030867 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030868 {
30869 switch (value)
30870 {
30871 case VertexInputRate::eVertex: return "Vertex";
30872 case VertexInputRate::eInstance: return "Instance";
30873 default: return "invalid";
30874 }
30875 }
30876
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030877 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030878 {
30879 switch (value)
30880 {
30881 case Format::eUndefined: return "Undefined";
30882 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
30883 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
30884 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
30885 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
30886 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
30887 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
30888 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
30889 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
30890 case Format::eR8Unorm: return "R8Unorm";
30891 case Format::eR8Snorm: return "R8Snorm";
30892 case Format::eR8Uscaled: return "R8Uscaled";
30893 case Format::eR8Sscaled: return "R8Sscaled";
30894 case Format::eR8Uint: return "R8Uint";
30895 case Format::eR8Sint: return "R8Sint";
30896 case Format::eR8Srgb: return "R8Srgb";
30897 case Format::eR8G8Unorm: return "R8G8Unorm";
30898 case Format::eR8G8Snorm: return "R8G8Snorm";
30899 case Format::eR8G8Uscaled: return "R8G8Uscaled";
30900 case Format::eR8G8Sscaled: return "R8G8Sscaled";
30901 case Format::eR8G8Uint: return "R8G8Uint";
30902 case Format::eR8G8Sint: return "R8G8Sint";
30903 case Format::eR8G8Srgb: return "R8G8Srgb";
30904 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
30905 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
30906 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
30907 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
30908 case Format::eR8G8B8Uint: return "R8G8B8Uint";
30909 case Format::eR8G8B8Sint: return "R8G8B8Sint";
30910 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
30911 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
30912 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
30913 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
30914 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
30915 case Format::eB8G8R8Uint: return "B8G8R8Uint";
30916 case Format::eB8G8R8Sint: return "B8G8R8Sint";
30917 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
30918 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
30919 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
30920 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
30921 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
30922 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
30923 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
30924 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
30925 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
30926 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
30927 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
30928 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
30929 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
30930 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
30931 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
30932 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
30933 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
30934 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
30935 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
30936 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
30937 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
30938 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
30939 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
30940 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
30941 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
30942 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
30943 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
30944 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
30945 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
30946 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
30947 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
30948 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
30949 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
30950 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
30951 case Format::eR16Unorm: return "R16Unorm";
30952 case Format::eR16Snorm: return "R16Snorm";
30953 case Format::eR16Uscaled: return "R16Uscaled";
30954 case Format::eR16Sscaled: return "R16Sscaled";
30955 case Format::eR16Uint: return "R16Uint";
30956 case Format::eR16Sint: return "R16Sint";
30957 case Format::eR16Sfloat: return "R16Sfloat";
30958 case Format::eR16G16Unorm: return "R16G16Unorm";
30959 case Format::eR16G16Snorm: return "R16G16Snorm";
30960 case Format::eR16G16Uscaled: return "R16G16Uscaled";
30961 case Format::eR16G16Sscaled: return "R16G16Sscaled";
30962 case Format::eR16G16Uint: return "R16G16Uint";
30963 case Format::eR16G16Sint: return "R16G16Sint";
30964 case Format::eR16G16Sfloat: return "R16G16Sfloat";
30965 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
30966 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
30967 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
30968 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
30969 case Format::eR16G16B16Uint: return "R16G16B16Uint";
30970 case Format::eR16G16B16Sint: return "R16G16B16Sint";
30971 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
30972 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
30973 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
30974 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
30975 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
30976 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
30977 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
30978 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
30979 case Format::eR32Uint: return "R32Uint";
30980 case Format::eR32Sint: return "R32Sint";
30981 case Format::eR32Sfloat: return "R32Sfloat";
30982 case Format::eR32G32Uint: return "R32G32Uint";
30983 case Format::eR32G32Sint: return "R32G32Sint";
30984 case Format::eR32G32Sfloat: return "R32G32Sfloat";
30985 case Format::eR32G32B32Uint: return "R32G32B32Uint";
30986 case Format::eR32G32B32Sint: return "R32G32B32Sint";
30987 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
30988 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
30989 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
30990 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
30991 case Format::eR64Uint: return "R64Uint";
30992 case Format::eR64Sint: return "R64Sint";
30993 case Format::eR64Sfloat: return "R64Sfloat";
30994 case Format::eR64G64Uint: return "R64G64Uint";
30995 case Format::eR64G64Sint: return "R64G64Sint";
30996 case Format::eR64G64Sfloat: return "R64G64Sfloat";
30997 case Format::eR64G64B64Uint: return "R64G64B64Uint";
30998 case Format::eR64G64B64Sint: return "R64G64B64Sint";
30999 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
31000 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
31001 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
31002 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
31003 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
31004 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
31005 case Format::eD16Unorm: return "D16Unorm";
31006 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
31007 case Format::eD32Sfloat: return "D32Sfloat";
31008 case Format::eS8Uint: return "S8Uint";
31009 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
31010 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
31011 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
31012 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
31013 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
31014 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
31015 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
31016 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
31017 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
31018 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
31019 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
31020 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
31021 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
31022 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
31023 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
31024 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
31025 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
31026 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
31027 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
31028 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
31029 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
31030 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
31031 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
31032 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
31033 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
31034 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
31035 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
31036 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
31037 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
31038 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
31039 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
31040 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
31041 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
31042 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
31043 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
31044 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
31045 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
31046 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
31047 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
31048 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
31049 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
31050 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
31051 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
31052 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
31053 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
31054 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
31055 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
31056 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
31057 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
31058 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
31059 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
31060 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
31061 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
31062 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
31063 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
31064 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
31065 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060031066 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
31067 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
31068 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
31069 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
31070 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
31071 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
31072 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
31073 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031074 default: return "invalid";
31075 }
31076 }
31077
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031078 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031079 {
31080 switch (value)
31081 {
31082 case StructureType::eApplicationInfo: return "ApplicationInfo";
31083 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
31084 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
31085 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
31086 case StructureType::eSubmitInfo: return "SubmitInfo";
31087 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
31088 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
31089 case StructureType::eBindSparseInfo: return "BindSparseInfo";
31090 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
31091 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
31092 case StructureType::eEventCreateInfo: return "EventCreateInfo";
31093 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
31094 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
31095 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
31096 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
31097 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
31098 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
31099 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
31100 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
31101 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
31102 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
31103 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
31104 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
31105 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
31106 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
31107 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
31108 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
31109 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
31110 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
31111 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
31112 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
31113 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
31114 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
31115 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
31116 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
31117 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
31118 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
31119 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
31120 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
31121 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
31122 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
31123 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
31124 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
31125 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
31126 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
31127 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
31128 case StructureType::eMemoryBarrier: return "MemoryBarrier";
31129 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
31130 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
31131 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
31132 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
31133 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
31134 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
31135 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
31136 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
31137 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
31138 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
31139 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
31140 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
31141 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
31142 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
31143 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
31144 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
31145 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
31146 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
31147 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
31148 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
31149 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031150 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070031151 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
31152 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
31153 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060031154 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
31155 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
31156 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
31157 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
31158 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070031159 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
31160 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
31161 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
31162 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
31163 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
31164 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
31165 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
31166 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
31167 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070031168 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
31169 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
31170 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
31171 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
31172 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
31173 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
31174 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
31175 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
31176 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
31177 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
31178 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
31179 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
31180 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060031181 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070031182 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070031183 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
31184 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031185 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
31186 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
31187 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
31188 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
31189 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
31190 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
31191 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
31192 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
31193 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
31194 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
31195 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
31196 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
31197 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
31198 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
31199 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
31200 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
31201 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
31202 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
31203 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
31204 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
31205 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
31206 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
31207 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
31208 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
31209 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070031210 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031211 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060031212 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070031213 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031214 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
31215 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
31216 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
31217 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
31218 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
31219 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070031220 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070031221 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
31222 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
31223 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
31224 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
31225 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031226 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070031227 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
31228 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
31229 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
31230 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031231 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060031232 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031233 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
31234 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
31235 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
31236 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
31237 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
31238 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
31239 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
31240 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060031241 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
31242 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
31243 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031244 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070031245 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
31246 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031247 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
31248 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031249 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
31250 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031251 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
31252 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
31253 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
31254 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
31255 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031256 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
31257 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
31258 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
31259 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
31260 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031261 default: return "invalid";
31262 }
31263 }
31264
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031265 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031266 {
31267 switch (value)
31268 {
31269 case SubpassContents::eInline: return "Inline";
31270 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
31271 default: return "invalid";
31272 }
31273 }
31274
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031275 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031276 {
31277 switch (value)
31278 {
31279 case DynamicState::eViewport: return "Viewport";
31280 case DynamicState::eScissor: return "Scissor";
31281 case DynamicState::eLineWidth: return "LineWidth";
31282 case DynamicState::eDepthBias: return "DepthBias";
31283 case DynamicState::eBlendConstants: return "BlendConstants";
31284 case DynamicState::eDepthBounds: return "DepthBounds";
31285 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
31286 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
31287 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070031288 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
31289 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
31290 default: return "invalid";
31291 }
31292 }
31293
31294 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
31295 {
31296 switch (value)
31297 {
31298 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
31299 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031300 default: return "invalid";
31301 }
31302 }
31303
Mark Lobodzinski54385432017-05-15 10:27:52 -060031304 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
31305 {
31306 switch (value)
31307 {
31308 case ObjectType::eUnknown: return "Unknown";
31309 case ObjectType::eInstance: return "Instance";
31310 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
31311 case ObjectType::eDevice: return "Device";
31312 case ObjectType::eQueue: return "Queue";
31313 case ObjectType::eSemaphore: return "Semaphore";
31314 case ObjectType::eCommandBuffer: return "CommandBuffer";
31315 case ObjectType::eFence: return "Fence";
31316 case ObjectType::eDeviceMemory: return "DeviceMemory";
31317 case ObjectType::eBuffer: return "Buffer";
31318 case ObjectType::eImage: return "Image";
31319 case ObjectType::eEvent: return "Event";
31320 case ObjectType::eQueryPool: return "QueryPool";
31321 case ObjectType::eBufferView: return "BufferView";
31322 case ObjectType::eImageView: return "ImageView";
31323 case ObjectType::eShaderModule: return "ShaderModule";
31324 case ObjectType::ePipelineCache: return "PipelineCache";
31325 case ObjectType::ePipelineLayout: return "PipelineLayout";
31326 case ObjectType::eRenderPass: return "RenderPass";
31327 case ObjectType::ePipeline: return "Pipeline";
31328 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
31329 case ObjectType::eSampler: return "Sampler";
31330 case ObjectType::eDescriptorPool: return "DescriptorPool";
31331 case ObjectType::eDescriptorSet: return "DescriptorSet";
31332 case ObjectType::eFramebuffer: return "Framebuffer";
31333 case ObjectType::eCommandPool: return "CommandPool";
31334 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
31335 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
31336 case ObjectType::eDisplayKHR: return "DisplayKHR";
31337 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
31338 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
31339 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
31340 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
31341 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
31342 default: return "invalid";
31343 }
31344 }
31345
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031346 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031347 {
31348 switch (value)
31349 {
31350 case QueueFlagBits::eGraphics: return "Graphics";
31351 case QueueFlagBits::eCompute: return "Compute";
31352 case QueueFlagBits::eTransfer: return "Transfer";
31353 case QueueFlagBits::eSparseBinding: return "SparseBinding";
31354 default: return "invalid";
31355 }
31356 }
31357
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031358 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031359 {
31360 if (!value) return "{}";
31361 std::string result;
31362 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
31363 if (value & QueueFlagBits::eCompute) result += "Compute | ";
31364 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
31365 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
31366 return "{" + result.substr(0, result.size() - 3) + "}";
31367 }
31368
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031369 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031370 {
31371 switch (value)
31372 {
31373 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
31374 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
31375 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
31376 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
31377 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
31378 default: return "invalid";
31379 }
31380 }
31381
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031382 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031383 {
31384 if (!value) return "{}";
31385 std::string result;
31386 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
31387 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
31388 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
31389 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
31390 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
31391 return "{" + result.substr(0, result.size() - 3) + "}";
31392 }
31393
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031394 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031395 {
31396 switch (value)
31397 {
31398 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070031399 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031400 default: return "invalid";
31401 }
31402 }
31403
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031404 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031405 {
31406 if (!value) return "{}";
31407 std::string result;
31408 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070031409 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031410 return "{" + result.substr(0, result.size() - 3) + "}";
31411 }
31412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031413 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031414 {
31415 switch (value)
31416 {
31417 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
31418 case AccessFlagBits::eIndexRead: return "IndexRead";
31419 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
31420 case AccessFlagBits::eUniformRead: return "UniformRead";
31421 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
31422 case AccessFlagBits::eShaderRead: return "ShaderRead";
31423 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
31424 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
31425 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
31426 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
31427 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
31428 case AccessFlagBits::eTransferRead: return "TransferRead";
31429 case AccessFlagBits::eTransferWrite: return "TransferWrite";
31430 case AccessFlagBits::eHostRead: return "HostRead";
31431 case AccessFlagBits::eHostWrite: return "HostWrite";
31432 case AccessFlagBits::eMemoryRead: return "MemoryRead";
31433 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031434 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
31435 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031436 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031437 default: return "invalid";
31438 }
31439 }
31440
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031441 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031442 {
31443 if (!value) return "{}";
31444 std::string result;
31445 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
31446 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
31447 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
31448 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
31449 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
31450 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
31451 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
31452 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
31453 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
31454 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
31455 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
31456 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
31457 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
31458 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
31459 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
31460 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
31461 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031462 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
31463 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031464 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031465 return "{" + result.substr(0, result.size() - 3) + "}";
31466 }
31467
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031468 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031469 {
31470 switch (value)
31471 {
31472 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
31473 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
31474 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
31475 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
31476 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
31477 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
31478 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
31479 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
31480 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
31481 default: return "invalid";
31482 }
31483 }
31484
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031485 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031486 {
31487 if (!value) return "{}";
31488 std::string result;
31489 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
31490 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
31491 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
31492 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
31493 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
31494 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
31495 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
31496 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
31497 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
31498 return "{" + result.substr(0, result.size() - 3) + "}";
31499 }
31500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031501 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031502 {
31503 switch (value)
31504 {
31505 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
31506 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
31507 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
31508 default: return "invalid";
31509 }
31510 }
31511
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031512 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031513 {
31514 if (!value) return "{}";
31515 std::string result;
31516 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
31517 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
31518 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
31519 return "{" + result.substr(0, result.size() - 3) + "}";
31520 }
31521
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031522 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031523 {
31524 switch (value)
31525 {
31526 case ShaderStageFlagBits::eVertex: return "Vertex";
31527 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
31528 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
31529 case ShaderStageFlagBits::eGeometry: return "Geometry";
31530 case ShaderStageFlagBits::eFragment: return "Fragment";
31531 case ShaderStageFlagBits::eCompute: return "Compute";
31532 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
31533 case ShaderStageFlagBits::eAll: return "All";
31534 default: return "invalid";
31535 }
31536 }
31537
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031538 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031539 {
31540 if (!value) return "{}";
31541 std::string result;
31542 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
31543 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
31544 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
31545 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
31546 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
31547 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
31548 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
31549 if (value & ShaderStageFlagBits::eAll) result += "All | ";
31550 return "{" + result.substr(0, result.size() - 3) + "}";
31551 }
31552
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031553 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031554 {
31555 switch (value)
31556 {
31557 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
31558 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
31559 case ImageUsageFlagBits::eSampled: return "Sampled";
31560 case ImageUsageFlagBits::eStorage: return "Storage";
31561 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
31562 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
31563 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
31564 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
31565 default: return "invalid";
31566 }
31567 }
31568
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031569 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031570 {
31571 if (!value) return "{}";
31572 std::string result;
31573 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
31574 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
31575 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
31576 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
31577 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
31578 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
31579 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
31580 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
31581 return "{" + result.substr(0, result.size() - 3) + "}";
31582 }
31583
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031584 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031585 {
31586 switch (value)
31587 {
31588 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
31589 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
31590 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
31591 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
31592 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070031593 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070031594 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031595 default: return "invalid";
31596 }
31597 }
31598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031599 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031600 {
31601 if (!value) return "{}";
31602 std::string result;
31603 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
31604 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
31605 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
31606 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
31607 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070031608 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070031609 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031610 return "{" + result.substr(0, result.size() - 3) + "}";
31611 }
31612
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031613 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031614 {
31615 switch (value)
31616 {
31617 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
31618 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
31619 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070031620 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
31621 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031622 default: return "invalid";
31623 }
31624 }
31625
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031626 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031627 {
31628 if (!value) return "{}";
31629 std::string result;
31630 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
31631 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
31632 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070031633 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
31634 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031635 return "{" + result.substr(0, result.size() - 3) + "}";
31636 }
31637
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031638 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031639 {
31640 switch (value)
31641 {
31642 case ColorComponentFlagBits::eR: return "R";
31643 case ColorComponentFlagBits::eG: return "G";
31644 case ColorComponentFlagBits::eB: return "B";
31645 case ColorComponentFlagBits::eA: return "A";
31646 default: return "invalid";
31647 }
31648 }
31649
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031650 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031651 {
31652 if (!value) return "{}";
31653 std::string result;
31654 if (value & ColorComponentFlagBits::eR) result += "R | ";
31655 if (value & ColorComponentFlagBits::eG) result += "G | ";
31656 if (value & ColorComponentFlagBits::eB) result += "B | ";
31657 if (value & ColorComponentFlagBits::eA) result += "A | ";
31658 return "{" + result.substr(0, result.size() - 3) + "}";
31659 }
31660
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031661 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031662 {
31663 switch (value)
31664 {
31665 case FenceCreateFlagBits::eSignaled: return "Signaled";
31666 default: return "invalid";
31667 }
31668 }
31669
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031670 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031671 {
31672 if (!value) return "{}";
31673 std::string result;
31674 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
31675 return "{" + result.substr(0, result.size() - 3) + "}";
31676 }
31677
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031678 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031679 {
31680 switch (value)
31681 {
31682 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
31683 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
31684 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
31685 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
31686 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
31687 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
31688 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
31689 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
31690 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
31691 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
31692 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
31693 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
31694 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
31695 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070031696 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
31697 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031698 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031699 default: return "invalid";
31700 }
31701 }
31702
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031703 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031704 {
31705 if (!value) return "{}";
31706 std::string result;
31707 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
31708 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
31709 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
31710 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
31711 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
31712 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
31713 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
31714 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
31715 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
31716 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
31717 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
31718 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
31719 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
31720 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070031721 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
31722 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031723 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031724 return "{" + result.substr(0, result.size() - 3) + "}";
31725 }
31726
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031727 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031728 {
31729 switch (value)
31730 {
31731 case QueryControlFlagBits::ePrecise: return "Precise";
31732 default: return "invalid";
31733 }
31734 }
31735
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031736 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031737 {
31738 if (!value) return "{}";
31739 std::string result;
31740 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
31741 return "{" + result.substr(0, result.size() - 3) + "}";
31742 }
31743
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031744 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031745 {
31746 switch (value)
31747 {
31748 case QueryResultFlagBits::e64: return "64";
31749 case QueryResultFlagBits::eWait: return "Wait";
31750 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
31751 case QueryResultFlagBits::ePartial: return "Partial";
31752 default: return "invalid";
31753 }
31754 }
31755
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031756 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031757 {
31758 if (!value) return "{}";
31759 std::string result;
31760 if (value & QueryResultFlagBits::e64) result += "64 | ";
31761 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
31762 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
31763 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
31764 return "{" + result.substr(0, result.size() - 3) + "}";
31765 }
31766
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031767 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031768 {
31769 switch (value)
31770 {
31771 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
31772 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
31773 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
31774 default: return "invalid";
31775 }
31776 }
31777
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031778 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031779 {
31780 if (!value) return "{}";
31781 std::string result;
31782 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
31783 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
31784 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
31785 return "{" + result.substr(0, result.size() - 3) + "}";
31786 }
31787
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031788 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031789 {
31790 switch (value)
31791 {
31792 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
31793 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
31794 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
31795 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
31796 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
31797 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
31798 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
31799 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
31800 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
31801 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
31802 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
31803 default: return "invalid";
31804 }
31805 }
31806
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031807 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031808 {
31809 if (!value) return "{}";
31810 std::string result;
31811 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
31812 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
31813 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
31814 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
31815 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
31816 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
31817 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
31818 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
31819 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
31820 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
31821 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
31822 return "{" + result.substr(0, result.size() - 3) + "}";
31823 }
31824
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031825 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031826 {
31827 switch (value)
31828 {
31829 case ImageAspectFlagBits::eColor: return "Color";
31830 case ImageAspectFlagBits::eDepth: return "Depth";
31831 case ImageAspectFlagBits::eStencil: return "Stencil";
31832 case ImageAspectFlagBits::eMetadata: return "Metadata";
31833 default: return "invalid";
31834 }
31835 }
31836
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031837 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031838 {
31839 if (!value) return "{}";
31840 std::string result;
31841 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
31842 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
31843 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
31844 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
31845 return "{" + result.substr(0, result.size() - 3) + "}";
31846 }
31847
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031848 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031849 {
31850 switch (value)
31851 {
31852 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
31853 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
31854 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
31855 default: return "invalid";
31856 }
31857 }
31858
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031859 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031860 {
31861 if (!value) return "{}";
31862 std::string result;
31863 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
31864 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
31865 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
31866 return "{" + result.substr(0, result.size() - 3) + "}";
31867 }
31868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031869 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031870 {
31871 switch (value)
31872 {
31873 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
31874 default: return "invalid";
31875 }
31876 }
31877
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031878 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031879 {
31880 if (!value) return "{}";
31881 std::string result;
31882 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
31883 return "{" + result.substr(0, result.size() - 3) + "}";
31884 }
31885
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031886 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031887 {
31888 switch (value)
31889 {
31890 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
31891 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
31892 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
31893 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
31894 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
31895 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
31896 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
31897 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
31898 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
31899 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
31900 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
31901 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
31902 case PipelineStageFlagBits::eTransfer: return "Transfer";
31903 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
31904 case PipelineStageFlagBits::eHost: return "Host";
31905 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
31906 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031907 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031908 default: return "invalid";
31909 }
31910 }
31911
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031912 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031913 {
31914 if (!value) return "{}";
31915 std::string result;
31916 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
31917 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
31918 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
31919 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
31920 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
31921 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
31922 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
31923 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
31924 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
31925 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
31926 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
31927 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
31928 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
31929 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
31930 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
31931 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
31932 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031933 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031934 return "{" + result.substr(0, result.size() - 3) + "}";
31935 }
31936
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031937 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031938 {
31939 switch (value)
31940 {
31941 case CommandPoolCreateFlagBits::eTransient: return "Transient";
31942 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
31943 default: return "invalid";
31944 }
31945 }
31946
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031947 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031948 {
31949 if (!value) return "{}";
31950 std::string result;
31951 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
31952 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
31953 return "{" + result.substr(0, result.size() - 3) + "}";
31954 }
31955
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031956 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031957 {
31958 switch (value)
31959 {
31960 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
31961 default: return "invalid";
31962 }
31963 }
31964
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031965 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031966 {
31967 if (!value) return "{}";
31968 std::string result;
31969 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
31970 return "{" + result.substr(0, result.size() - 3) + "}";
31971 }
31972
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031973 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031974 {
31975 switch (value)
31976 {
31977 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
31978 default: return "invalid";
31979 }
31980 }
31981
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031982 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031983 {
31984 if (!value) return "{}";
31985 std::string result;
31986 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
31987 return "{" + result.substr(0, result.size() - 3) + "}";
31988 }
31989
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031990 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031991 {
31992 switch (value)
31993 {
31994 case SampleCountFlagBits::e1: return "1";
31995 case SampleCountFlagBits::e2: return "2";
31996 case SampleCountFlagBits::e4: return "4";
31997 case SampleCountFlagBits::e8: return "8";
31998 case SampleCountFlagBits::e16: return "16";
31999 case SampleCountFlagBits::e32: return "32";
32000 case SampleCountFlagBits::e64: return "64";
32001 default: return "invalid";
32002 }
32003 }
32004
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032005 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032006 {
32007 if (!value) return "{}";
32008 std::string result;
32009 if (value & SampleCountFlagBits::e1) result += "1 | ";
32010 if (value & SampleCountFlagBits::e2) result += "2 | ";
32011 if (value & SampleCountFlagBits::e4) result += "4 | ";
32012 if (value & SampleCountFlagBits::e8) result += "8 | ";
32013 if (value & SampleCountFlagBits::e16) result += "16 | ";
32014 if (value & SampleCountFlagBits::e32) result += "32 | ";
32015 if (value & SampleCountFlagBits::e64) result += "64 | ";
32016 return "{" + result.substr(0, result.size() - 3) + "}";
32017 }
32018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032019 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032020 {
32021 switch (value)
32022 {
32023 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
32024 default: return "invalid";
32025 }
32026 }
32027
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032028 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032029 {
32030 if (!value) return "{}";
32031 std::string result;
32032 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
32033 return "{" + result.substr(0, result.size() - 3) + "}";
32034 }
32035
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032036 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032037 {
32038 switch (value)
32039 {
32040 case StencilFaceFlagBits::eFront: return "Front";
32041 case StencilFaceFlagBits::eBack: return "Back";
32042 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
32043 default: return "invalid";
32044 }
32045 }
32046
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032047 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032048 {
32049 if (!value) return "{}";
32050 std::string result;
32051 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
32052 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
32053 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
32054 return "{" + result.substr(0, result.size() - 3) + "}";
32055 }
32056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032057 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032058 {
32059 switch (value)
32060 {
32061 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
32062 default: return "invalid";
32063 }
32064 }
32065
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032066 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032067 {
32068 if (!value) return "{}";
32069 std::string result;
32070 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
32071 return "{" + result.substr(0, result.size() - 3) + "}";
32072 }
32073
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032074 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032075 {
32076 switch (value)
32077 {
32078 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070032079 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
32080 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032081 default: return "invalid";
32082 }
32083 }
32084
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032085 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032086 {
32087 if (!value) return "{}";
32088 std::string result;
32089 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070032090 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
32091 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032092 return "{" + result.substr(0, result.size() - 3) + "}";
32093 }
32094
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032095 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032096 {
32097 switch (value)
32098 {
32099 case PresentModeKHR::eImmediate: return "Immediate";
32100 case PresentModeKHR::eMailbox: return "Mailbox";
32101 case PresentModeKHR::eFifo: return "Fifo";
32102 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032103 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
32104 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032105 default: return "invalid";
32106 }
32107 }
32108
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032109 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032110 {
32111 switch (value)
32112 {
32113 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060032114 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
32115 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
32116 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
32117 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
32118 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
32119 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
32120 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
32121 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
32122 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
32123 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
32124 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
32125 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
32126 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060032127 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032128 default: return "invalid";
32129 }
32130 }
32131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032132 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032133 {
32134 switch (value)
32135 {
32136 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
32137 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
32138 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
32139 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
32140 default: return "invalid";
32141 }
32142 }
32143
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032144 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032145 {
32146 if (!value) return "{}";
32147 std::string result;
32148 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
32149 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
32150 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
32151 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
32152 return "{" + result.substr(0, result.size() - 3) + "}";
32153 }
32154
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032155 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032156 {
32157 switch (value)
32158 {
32159 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
32160 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
32161 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
32162 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
32163 default: return "invalid";
32164 }
32165 }
32166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032167 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032168 {
32169 if (!value) return "{}";
32170 std::string result;
32171 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
32172 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
32173 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
32174 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
32175 return "{" + result.substr(0, result.size() - 3) + "}";
32176 }
32177
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032178 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032179 {
32180 switch (value)
32181 {
32182 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
32183 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
32184 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
32185 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
32186 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
32187 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
32188 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
32189 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
32190 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
32191 default: return "invalid";
32192 }
32193 }
32194
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032195 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032196 {
32197 if (!value) return "{}";
32198 std::string result;
32199 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
32200 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
32201 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
32202 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
32203 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
32204 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
32205 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
32206 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
32207 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
32208 return "{" + result.substr(0, result.size() - 3) + "}";
32209 }
32210
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032211 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032212 {
32213 switch (value)
32214 {
32215 case DebugReportFlagBitsEXT::eInformation: return "Information";
32216 case DebugReportFlagBitsEXT::eWarning: return "Warning";
32217 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
32218 case DebugReportFlagBitsEXT::eError: return "Error";
32219 case DebugReportFlagBitsEXT::eDebug: return "Debug";
32220 default: return "invalid";
32221 }
32222 }
32223
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032224 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032225 {
32226 if (!value) return "{}";
32227 std::string result;
32228 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
32229 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
32230 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
32231 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
32232 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
32233 return "{" + result.substr(0, result.size() - 3) + "}";
32234 }
32235
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032236 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032237 {
32238 switch (value)
32239 {
32240 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
32241 case DebugReportObjectTypeEXT::eInstance: return "Instance";
32242 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
32243 case DebugReportObjectTypeEXT::eDevice: return "Device";
32244 case DebugReportObjectTypeEXT::eQueue: return "Queue";
32245 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
32246 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
32247 case DebugReportObjectTypeEXT::eFence: return "Fence";
32248 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
32249 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
32250 case DebugReportObjectTypeEXT::eImage: return "Image";
32251 case DebugReportObjectTypeEXT::eEvent: return "Event";
32252 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
32253 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
32254 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
32255 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
32256 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
32257 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
32258 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
32259 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
32260 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
32261 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
32262 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
32263 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
32264 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
32265 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
32266 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
32267 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032268 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032269 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
32270 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
32271 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
32272 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032273 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032274 default: return "invalid";
32275 }
32276 }
32277
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032278 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032279 {
32280 switch (value)
32281 {
32282 case RasterizationOrderAMD::eStrict: return "Strict";
32283 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
32284 default: return "invalid";
32285 }
32286 }
32287
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032288 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032289 {
32290 switch (value)
32291 {
32292 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
32293 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32294 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
32295 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
32296 default: return "invalid";
32297 }
32298 }
32299
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032300 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032301 {
32302 if (!value) return "{}";
32303 std::string result;
32304 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
32305 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32306 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
32307 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
32308 return "{" + result.substr(0, result.size() - 3) + "}";
32309 }
32310
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032311 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032312 {
32313 switch (value)
32314 {
32315 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
32316 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
32317 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
32318 default: return "invalid";
32319 }
32320 }
32321
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032322 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032323 {
32324 if (!value) return "{}";
32325 std::string result;
32326 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
32327 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
32328 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
32329 return "{" + result.substr(0, result.size() - 3) + "}";
32330 }
32331
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032332 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060032333 {
32334 switch (value)
32335 {
32336 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032337 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060032338 default: return "invalid";
32339 }
32340 }
32341
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032342 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
32343 {
32344 switch (value)
32345 {
32346 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
32347 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
32348 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
32349 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
32350 default: return "invalid";
32351 }
32352 }
32353
32354 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
32355 {
32356 if (!value) return "{}";
32357 std::string result;
32358 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
32359 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
32360 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
32361 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
32362 return "{" + result.substr(0, result.size() - 3) + "}";
32363 }
32364
32365 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
32366 {
32367 switch (value)
32368 {
32369 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
32370 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
32371 default: return "invalid";
32372 }
32373 }
32374
32375 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
32376 {
32377 if (!value) return "{}";
32378 std::string result;
32379 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
32380 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
32381 return "{" + result.substr(0, result.size() - 3) + "}";
32382 }
32383
32384 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
32385 {
32386 switch (value)
32387 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060032388 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
32389 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
32390 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
32391 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
32392 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
32393 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
32394 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
32395 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032396 default: return "invalid";
32397 }
32398 }
32399
32400 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
32401 {
32402 switch (value)
32403 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060032404 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
32405 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
32406 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
32407 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
32408 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032409 default: return "invalid";
32410 }
32411 }
32412
Mark Young0f183a82017-02-28 09:58:04 -070032413 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
32414 {
32415 switch (value)
32416 {
32417 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
32418 default: return "invalid";
32419 }
32420 }
32421
32422 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
32423 {
32424 if (!value) return "{}";
32425 std::string result;
32426 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
32427 return "{" + result.substr(0, result.size() - 3) + "}";
32428 }
32429
Mark Youngabc2d6e2017-07-07 07:59:56 -060032430 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032431 {
32432 switch (value)
32433 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032434 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
32435 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
32436 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32437 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
32438 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
32439 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
32440 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Young0f183a82017-02-28 09:58:04 -070032441 default: return "invalid";
32442 }
32443 }
32444
Mark Youngabc2d6e2017-07-07 07:59:56 -060032445 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032446 {
32447 if (!value) return "{}";
32448 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032449 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
32450 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
32451 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32452 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
32453 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
32454 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
32455 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Young0f183a82017-02-28 09:58:04 -070032456 return "{" + result.substr(0, result.size() - 3) + "}";
32457 }
32458
Mark Youngabc2d6e2017-07-07 07:59:56 -060032459 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032460 {
32461 switch (value)
32462 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032463 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
32464 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
32465 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070032466 default: return "invalid";
32467 }
32468 }
32469
Mark Youngabc2d6e2017-07-07 07:59:56 -060032470 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032471 {
32472 if (!value) return "{}";
32473 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032474 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
32475 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
32476 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070032477 return "{" + result.substr(0, result.size() - 3) + "}";
32478 }
32479
Mark Youngabc2d6e2017-07-07 07:59:56 -060032480 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032481 {
32482 switch (value)
32483 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032484 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
32485 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
32486 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32487 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
32488 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070032489 default: return "invalid";
32490 }
32491 }
32492
Mark Youngabc2d6e2017-07-07 07:59:56 -060032493 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032494 {
32495 if (!value) return "{}";
32496 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032497 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
32498 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
32499 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32500 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
32501 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070032502 return "{" + result.substr(0, result.size() - 3) + "}";
32503 }
32504
Mark Youngabc2d6e2017-07-07 07:59:56 -060032505 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032506 {
32507 switch (value)
32508 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032509 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
32510 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070032511 default: return "invalid";
32512 }
32513 }
32514
Mark Youngabc2d6e2017-07-07 07:59:56 -060032515 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032516 {
32517 if (!value) return "{}";
32518 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032519 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
32520 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
32521 return "{" + result.substr(0, result.size() - 3) + "}";
32522 }
32523
32524 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
32525 {
32526 switch (value)
32527 {
32528 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
32529 default: return "invalid";
32530 }
32531 }
32532
32533 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
32534 {
32535 if (!value) return "{}";
32536 std::string result;
32537 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
32538 return "{" + result.substr(0, result.size() - 3) + "}";
32539 }
32540
32541 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
32542 {
32543 switch (value)
32544 {
32545 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
32546 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
32547 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32548 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
32549 default: return "invalid";
32550 }
32551 }
32552
32553 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
32554 {
32555 if (!value) return "{}";
32556 std::string result;
32557 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
32558 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
32559 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32560 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
32561 return "{" + result.substr(0, result.size() - 3) + "}";
32562 }
32563
32564 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
32565 {
32566 switch (value)
32567 {
32568 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
32569 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
32570 default: return "invalid";
32571 }
32572 }
32573
32574 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
32575 {
32576 if (!value) return "{}";
32577 std::string result;
32578 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
32579 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
32580 return "{" + result.substr(0, result.size() - 3) + "}";
32581 }
32582
32583 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
32584 {
32585 switch (value)
32586 {
32587 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
32588 default: return "invalid";
32589 }
32590 }
32591
32592 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
32593 {
32594 if (!value) return "{}";
32595 std::string result;
32596 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070032597 return "{" + result.substr(0, result.size() - 3) + "}";
32598 }
32599
Mark Young39389872017-01-19 21:10:49 -070032600 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
32601 {
32602 switch (value)
32603 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060032604 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070032605 default: return "invalid";
32606 }
32607 }
32608
32609 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
32610 {
32611 if (!value) return "{}";
32612 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060032613 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070032614 return "{" + result.substr(0, result.size() - 3) + "}";
32615 }
32616
32617 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
32618 {
32619 switch (value)
32620 {
32621 case DisplayPowerStateEXT::eOff: return "Off";
32622 case DisplayPowerStateEXT::eSuspend: return "Suspend";
32623 case DisplayPowerStateEXT::eOn: return "On";
32624 default: return "invalid";
32625 }
32626 }
32627
32628 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
32629 {
32630 switch (value)
32631 {
32632 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
32633 default: return "invalid";
32634 }
32635 }
32636
32637 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
32638 {
32639 switch (value)
32640 {
32641 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
32642 default: return "invalid";
32643 }
32644 }
32645
Mark Young0f183a82017-02-28 09:58:04 -070032646 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
32647 {
32648 switch (value)
32649 {
32650 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
32651 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
32652 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
32653 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
32654 default: return "invalid";
32655 }
32656 }
32657
32658 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
32659 {
32660 if (!value) return "{}";
32661 std::string result;
32662 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
32663 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
32664 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
32665 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
32666 return "{" + result.substr(0, result.size() - 3) + "}";
32667 }
32668
32669 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
32670 {
32671 switch (value)
32672 {
32673 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
32674 default: return "invalid";
32675 }
32676 }
32677
32678 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
32679 {
32680 if (!value) return "{}";
32681 std::string result;
32682 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
32683 return "{" + result.substr(0, result.size() - 3) + "}";
32684 }
32685
32686 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
32687 {
32688 switch (value)
32689 {
32690 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
32691 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
32692 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
32693 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
32694 default: return "invalid";
32695 }
32696 }
32697
32698 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
32699 {
32700 if (!value) return "{}";
32701 std::string result;
32702 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
32703 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
32704 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
32705 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
32706 return "{" + result.substr(0, result.size() - 3) + "}";
32707 }
32708
32709 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
32710 {
32711 switch (value)
32712 {
32713 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
32714 default: return "invalid";
32715 }
32716 }
32717
32718 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
32719 {
32720 if (!value) return "{}";
32721 std::string result;
32722 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
32723 return "{" + result.substr(0, result.size() - 3) + "}";
32724 }
32725
32726 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
32727 {
32728 switch (value)
32729 {
32730 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
32731 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
32732 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
32733 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
32734 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
32735 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
32736 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
32737 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
32738 default: return "invalid";
32739 }
32740 }
32741
32742 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
32743 {
32744 switch (value)
32745 {
32746 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
32747 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
32748 default: return "invalid";
32749 }
32750 }
32751
32752 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
32753 {
32754 switch (value)
32755 {
32756 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
32757 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
32758 default: return "invalid";
32759 }
32760 }
32761
32762 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
32763 {
32764 if (!value) return "{}";
32765 std::string result;
32766 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
32767 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
32768 return "{" + result.substr(0, result.size() - 3) + "}";
32769 }
32770
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032771 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
32772 {
32773 switch (value)
32774 {
32775 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
32776 case SamplerReductionModeEXT::eMin: return "Min";
32777 case SamplerReductionModeEXT::eMax: return "Max";
32778 default: return "invalid";
32779 }
32780 }
32781
32782 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
32783 {
32784 switch (value)
32785 {
32786 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
32787 case BlendOverlapEXT::eDisjoint: return "Disjoint";
32788 case BlendOverlapEXT::eConjoint: return "Conjoint";
32789 default: return "invalid";
32790 }
32791 }
32792
32793 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
32794 {
32795 switch (value)
32796 {
32797 case CoverageModulationModeNV::eNone: return "None";
32798 case CoverageModulationModeNV::eRgb: return "Rgb";
32799 case CoverageModulationModeNV::eAlpha: return "Alpha";
32800 case CoverageModulationModeNV::eRgba: return "Rgba";
32801 default: return "invalid";
32802 }
32803 }
32804
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032805} // namespace vk
32806
32807#endif