• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use crate::vk::aliases::*;
2 use crate::vk::bitflags::*;
3 use crate::vk::constants::*;
4 use crate::vk::enums::*;
5 use crate::vk::native::*;
6 use crate::vk::platform_types::*;
7 use crate::vk::{ptr_chain_iter, Handle};
8 use std::fmt;
9 use std::os::raw::*;
10 #[deprecated = "This define is deprecated. VK_MAKE_API_VERSION should be used instead."]
11 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_MAKE_VERSION.html>"]
make_version(major: u32, minor: u32, patch: u32) -> u3212 pub const fn make_version(major: u32, minor: u32, patch: u32) -> u32 {
13     ((major) << 22) | ((minor) << 12) | (patch)
14 }
15 #[deprecated = "This define is deprecated. VK_API_VERSION_MAJOR should be used instead."]
16 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_VERSION_MAJOR.html>"]
version_major(version: u32) -> u3217 pub const fn version_major(version: u32) -> u32 {
18     (version) >> 22
19 }
20 #[deprecated = "This define is deprecated. VK_API_VERSION_MINOR should be used instead."]
21 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_VERSION_MINOR.html>"]
version_minor(version: u32) -> u3222 pub const fn version_minor(version: u32) -> u32 {
23     ((version) >> 12) & 0x3ffu32
24 }
25 #[deprecated = "This define is deprecated. VK_API_VERSION_PATCH should be used instead."]
26 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_VERSION_PATCH.html>"]
version_patch(version: u32) -> u3227 pub const fn version_patch(version: u32) -> u32 {
28     (version) & 0xfffu32
29 }
30 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_MAKE_API_VERSION.html>"]
make_api_version(variant: u32, major: u32, minor: u32, patch: u32) -> u3231 pub const fn make_api_version(variant: u32, major: u32, minor: u32, patch: u32) -> u32 {
32     ((variant) << 29) | ((major) << 22) | ((minor) << 12) | (patch)
33 }
34 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_VARIANT.html>"]
api_version_variant(version: u32) -> u3235 pub const fn api_version_variant(version: u32) -> u32 {
36     (version) >> 29
37 }
38 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_MAJOR.html>"]
api_version_major(version: u32) -> u3239 pub const fn api_version_major(version: u32) -> u32 {
40     ((version) >> 22) & 0x7fu32
41 }
42 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_MINOR.html>"]
api_version_minor(version: u32) -> u3243 pub const fn api_version_minor(version: u32) -> u32 {
44     ((version) >> 12) & 0x3ffu32
45 }
46 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_PATCH.html>"]
api_version_patch(version: u32) -> u3247 pub const fn api_version_patch(version: u32) -> u32 {
48     (version) & 0xfffu32
49 }
50 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_1_0.html>"]
51 pub const API_VERSION_1_0: u32 = make_api_version(0, 1, 0, 0);
52 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_1_1.html>"]
53 pub const API_VERSION_1_1: u32 = make_api_version(0, 1, 1, 0);
54 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_1_2.html>"]
55 pub const API_VERSION_1_2: u32 = make_api_version(0, 1, 2, 0);
56 pub const HEADER_VERSION: u32 = 191u32;
57 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_HEADER_VERSION_COMPLETE.html>"]
58 pub const HEADER_VERSION_COMPLETE: u32 = make_api_version(0, 1, 2, HEADER_VERSION);
59 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleMask.html>"]
60 pub type SampleMask = u32;
61 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBool32.html>"]
62 pub type Bool32 = u32;
63 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFlags.html>"]
64 pub type Flags = u32;
65 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFlags64.html>"]
66 pub type Flags64 = u64;
67 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceSize.html>"]
68 pub type DeviceSize = u64;
69 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceAddress.html>"]
70 pub type DeviceAddress = u64;
71 #[repr(transparent)]
72 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
73 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolCreateFlags.html>"]
74 pub struct QueryPoolCreateFlags(pub(crate) Flags);
75 vk_bitflags_wrapped!(QueryPoolCreateFlags, 0b0, Flags);
76 #[repr(transparent)]
77 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
78 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDepthStencilStateCreateFlags.html>"]
79 pub struct PipelineDepthStencilStateCreateFlags(pub(crate) Flags);
80 vk_bitflags_wrapped!(PipelineDepthStencilStateCreateFlags, 0b0, Flags);
81 #[repr(transparent)]
82 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
83 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDynamicStateCreateFlags.html>"]
84 pub struct PipelineDynamicStateCreateFlags(pub(crate) Flags);
85 vk_bitflags_wrapped!(PipelineDynamicStateCreateFlags, 0b0, Flags);
86 #[repr(transparent)]
87 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
88 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendStateCreateFlags.html>"]
89 pub struct PipelineColorBlendStateCreateFlags(pub(crate) Flags);
90 vk_bitflags_wrapped!(PipelineColorBlendStateCreateFlags, 0b0, Flags);
91 #[repr(transparent)]
92 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
93 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateFlags.html>"]
94 pub struct PipelineMultisampleStateCreateFlags(pub(crate) Flags);
95 vk_bitflags_wrapped!(PipelineMultisampleStateCreateFlags, 0b0, Flags);
96 #[repr(transparent)]
97 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
98 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateCreateFlags.html>"]
99 pub struct PipelineRasterizationStateCreateFlags(pub(crate) Flags);
100 vk_bitflags_wrapped!(PipelineRasterizationStateCreateFlags, 0b0, Flags);
101 #[repr(transparent)]
102 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
103 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportStateCreateFlags.html>"]
104 pub struct PipelineViewportStateCreateFlags(pub(crate) Flags);
105 vk_bitflags_wrapped!(PipelineViewportStateCreateFlags, 0b0, Flags);
106 #[repr(transparent)]
107 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
108 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationStateCreateFlags.html>"]
109 pub struct PipelineTessellationStateCreateFlags(pub(crate) Flags);
110 vk_bitflags_wrapped!(PipelineTessellationStateCreateFlags, 0b0, Flags);
111 #[repr(transparent)]
112 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
113 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInputAssemblyStateCreateFlags.html>"]
114 pub struct PipelineInputAssemblyStateCreateFlags(pub(crate) Flags);
115 vk_bitflags_wrapped!(PipelineInputAssemblyStateCreateFlags, 0b0, Flags);
116 #[repr(transparent)]
117 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
118 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputStateCreateFlags.html>"]
119 pub struct PipelineVertexInputStateCreateFlags(pub(crate) Flags);
120 vk_bitflags_wrapped!(PipelineVertexInputStateCreateFlags, 0b0, Flags);
121 #[repr(transparent)]
122 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
123 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferViewCreateFlags.html>"]
124 pub struct BufferViewCreateFlags(pub(crate) Flags);
125 vk_bitflags_wrapped!(BufferViewCreateFlags, 0b0, Flags);
126 #[repr(transparent)]
127 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
128 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstanceCreateFlags.html>"]
129 pub struct InstanceCreateFlags(pub(crate) Flags);
130 vk_bitflags_wrapped!(InstanceCreateFlags, 0b0, Flags);
131 #[repr(transparent)]
132 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
133 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceCreateFlags.html>"]
134 pub struct DeviceCreateFlags(pub(crate) Flags);
135 vk_bitflags_wrapped!(DeviceCreateFlags, 0b0, Flags);
136 #[repr(transparent)]
137 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
138 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryMapFlags.html>"]
139 pub struct MemoryMapFlags(pub(crate) Flags);
140 vk_bitflags_wrapped!(MemoryMapFlags, 0b0, Flags);
141 #[repr(transparent)]
142 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
143 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolResetFlags.html>"]
144 pub struct DescriptorPoolResetFlags(pub(crate) Flags);
145 vk_bitflags_wrapped!(DescriptorPoolResetFlags, 0b0, Flags);
146 #[repr(transparent)]
147 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
148 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateCreateFlags.html>"]
149 pub struct DescriptorUpdateTemplateCreateFlags(pub(crate) Flags);
150 vk_bitflags_wrapped!(DescriptorUpdateTemplateCreateFlags, 0b0, Flags);
151 #[repr(transparent)]
152 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
153 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInfoFlagsNV.html>"]
154 pub struct AccelerationStructureMotionInfoFlagsNV(pub(crate) Flags);
155 vk_bitflags_wrapped!(AccelerationStructureMotionInfoFlagsNV, 0b0, Flags);
156 #[repr(transparent)]
157 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
158 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInstanceFlagsNV.html>"]
159 pub struct AccelerationStructureMotionInstanceFlagsNV(pub(crate) Flags);
160 vk_bitflags_wrapped!(AccelerationStructureMotionInstanceFlagsNV, 0b0, Flags);
161 #[repr(transparent)]
162 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
163 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeCreateFlagsKHR.html>"]
164 pub struct DisplayModeCreateFlagsKHR(pub(crate) Flags);
165 vk_bitflags_wrapped!(DisplayModeCreateFlagsKHR, 0b0, Flags);
166 #[repr(transparent)]
167 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
168 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplaySurfaceCreateFlagsKHR.html>"]
169 pub struct DisplaySurfaceCreateFlagsKHR(pub(crate) Flags);
170 vk_bitflags_wrapped!(DisplaySurfaceCreateFlagsKHR, 0b0, Flags);
171 #[repr(transparent)]
172 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
173 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidSurfaceCreateFlagsKHR.html>"]
174 pub struct AndroidSurfaceCreateFlagsKHR(pub(crate) Flags);
175 vk_bitflags_wrapped!(AndroidSurfaceCreateFlagsKHR, 0b0, Flags);
176 #[repr(transparent)]
177 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
178 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViSurfaceCreateFlagsNN.html>"]
179 pub struct ViSurfaceCreateFlagsNN(pub(crate) Flags);
180 vk_bitflags_wrapped!(ViSurfaceCreateFlagsNN, 0b0, Flags);
181 #[repr(transparent)]
182 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
183 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWaylandSurfaceCreateFlagsKHR.html>"]
184 pub struct WaylandSurfaceCreateFlagsKHR(pub(crate) Flags);
185 vk_bitflags_wrapped!(WaylandSurfaceCreateFlagsKHR, 0b0, Flags);
186 #[repr(transparent)]
187 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
188 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32SurfaceCreateFlagsKHR.html>"]
189 pub struct Win32SurfaceCreateFlagsKHR(pub(crate) Flags);
190 vk_bitflags_wrapped!(Win32SurfaceCreateFlagsKHR, 0b0, Flags);
191 #[repr(transparent)]
192 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
193 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXlibSurfaceCreateFlagsKHR.html>"]
194 pub struct XlibSurfaceCreateFlagsKHR(pub(crate) Flags);
195 vk_bitflags_wrapped!(XlibSurfaceCreateFlagsKHR, 0b0, Flags);
196 #[repr(transparent)]
197 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
198 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXcbSurfaceCreateFlagsKHR.html>"]
199 pub struct XcbSurfaceCreateFlagsKHR(pub(crate) Flags);
200 vk_bitflags_wrapped!(XcbSurfaceCreateFlagsKHR, 0b0, Flags);
201 #[repr(transparent)]
202 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
203 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDirectFBSurfaceCreateFlagsEXT.html>"]
204 pub struct DirectFBSurfaceCreateFlagsEXT(pub(crate) Flags);
205 vk_bitflags_wrapped!(DirectFBSurfaceCreateFlagsEXT, 0b0, Flags);
206 #[repr(transparent)]
207 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
208 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIOSSurfaceCreateFlagsMVK.html>"]
209 pub struct IOSSurfaceCreateFlagsMVK(pub(crate) Flags);
210 vk_bitflags_wrapped!(IOSSurfaceCreateFlagsMVK, 0b0, Flags);
211 #[repr(transparent)]
212 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
213 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMacOSSurfaceCreateFlagsMVK.html>"]
214 pub struct MacOSSurfaceCreateFlagsMVK(pub(crate) Flags);
215 vk_bitflags_wrapped!(MacOSSurfaceCreateFlagsMVK, 0b0, Flags);
216 #[repr(transparent)]
217 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
218 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMetalSurfaceCreateFlagsEXT.html>"]
219 pub struct MetalSurfaceCreateFlagsEXT(pub(crate) Flags);
220 vk_bitflags_wrapped!(MetalSurfaceCreateFlagsEXT, 0b0, Flags);
221 #[repr(transparent)]
222 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
223 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImagePipeSurfaceCreateFlagsFUCHSIA.html>"]
224 pub struct ImagePipeSurfaceCreateFlagsFUCHSIA(pub(crate) Flags);
225 vk_bitflags_wrapped!(ImagePipeSurfaceCreateFlagsFUCHSIA, 0b0, Flags);
226 #[repr(transparent)]
227 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
228 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStreamDescriptorSurfaceCreateFlagsGGP.html>"]
229 pub struct StreamDescriptorSurfaceCreateFlagsGGP(pub(crate) Flags);
230 vk_bitflags_wrapped!(StreamDescriptorSurfaceCreateFlagsGGP, 0b0, Flags);
231 #[repr(transparent)]
232 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
233 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkHeadlessSurfaceCreateFlagsEXT.html>"]
234 pub struct HeadlessSurfaceCreateFlagsEXT(pub(crate) Flags);
235 vk_bitflags_wrapped!(HeadlessSurfaceCreateFlagsEXT, 0b0, Flags);
236 #[repr(transparent)]
237 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
238 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkScreenSurfaceCreateFlagsQNX.html>"]
239 pub struct ScreenSurfaceCreateFlagsQNX(pub(crate) Flags);
240 vk_bitflags_wrapped!(ScreenSurfaceCreateFlagsQNX, 0b0, Flags);
241 #[repr(transparent)]
242 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
243 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolTrimFlags.html>"]
244 pub struct CommandPoolTrimFlags(pub(crate) Flags);
245 vk_bitflags_wrapped!(CommandPoolTrimFlags, 0b0, Flags);
246 #[repr(transparent)]
247 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
248 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportSwizzleStateCreateFlagsNV.html>"]
249 pub struct PipelineViewportSwizzleStateCreateFlagsNV(pub(crate) Flags);
250 vk_bitflags_wrapped!(PipelineViewportSwizzleStateCreateFlagsNV, 0b0, Flags);
251 #[repr(transparent)]
252 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
253 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDiscardRectangleStateCreateFlagsEXT.html>"]
254 pub struct PipelineDiscardRectangleStateCreateFlagsEXT(pub(crate) Flags);
255 vk_bitflags_wrapped!(PipelineDiscardRectangleStateCreateFlagsEXT, 0b0, Flags);
256 #[repr(transparent)]
257 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
258 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageToColorStateCreateFlagsNV.html>"]
259 pub struct PipelineCoverageToColorStateCreateFlagsNV(pub(crate) Flags);
260 vk_bitflags_wrapped!(PipelineCoverageToColorStateCreateFlagsNV, 0b0, Flags);
261 #[repr(transparent)]
262 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
263 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageModulationStateCreateFlagsNV.html>"]
264 pub struct PipelineCoverageModulationStateCreateFlagsNV(pub(crate) Flags);
265 vk_bitflags_wrapped!(PipelineCoverageModulationStateCreateFlagsNV, 0b0, Flags);
266 #[repr(transparent)]
267 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
268 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageReductionStateCreateFlagsNV.html>"]
269 pub struct PipelineCoverageReductionStateCreateFlagsNV(pub(crate) Flags);
270 vk_bitflags_wrapped!(PipelineCoverageReductionStateCreateFlagsNV, 0b0, Flags);
271 #[repr(transparent)]
272 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
273 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheCreateFlagsEXT.html>"]
274 pub struct ValidationCacheCreateFlagsEXT(pub(crate) Flags);
275 vk_bitflags_wrapped!(ValidationCacheCreateFlagsEXT, 0b0, Flags);
276 #[repr(transparent)]
277 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
278 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCreateFlagsEXT.html>"]
279 pub struct DebugUtilsMessengerCreateFlagsEXT(pub(crate) Flags);
280 vk_bitflags_wrapped!(DebugUtilsMessengerCreateFlagsEXT, 0b0, Flags);
281 #[repr(transparent)]
282 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
283 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCallbackDataFlagsEXT.html>"]
284 pub struct DebugUtilsMessengerCallbackDataFlagsEXT(pub(crate) Flags);
285 vk_bitflags_wrapped!(DebugUtilsMessengerCallbackDataFlagsEXT, 0b0, Flags);
286 #[repr(transparent)]
287 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
288 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryReportFlagsEXT.html>"]
289 pub struct DeviceMemoryReportFlagsEXT(pub(crate) Flags);
290 vk_bitflags_wrapped!(DeviceMemoryReportFlagsEXT, 0b0, Flags);
291 #[repr(transparent)]
292 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
293 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationConservativeStateCreateFlagsEXT.html>"]
294 pub struct PipelineRasterizationConservativeStateCreateFlagsEXT(pub(crate) Flags);
295 vk_bitflags_wrapped!(
296     PipelineRasterizationConservativeStateCreateFlagsEXT,
297     0b0,
298     Flags
299 );
300 #[repr(transparent)]
301 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
302 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateStreamCreateFlagsEXT.html>"]
303 pub struct PipelineRasterizationStateStreamCreateFlagsEXT(pub(crate) Flags);
304 vk_bitflags_wrapped!(PipelineRasterizationStateStreamCreateFlagsEXT, 0b0, Flags);
305 #[repr(transparent)]
306 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
307 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationDepthClipStateCreateFlagsEXT.html>"]
308 pub struct PipelineRasterizationDepthClipStateCreateFlagsEXT(pub(crate) Flags);
309 vk_bitflags_wrapped!(
310     PipelineRasterizationDepthClipStateCreateFlagsEXT,
311     0b0,
312     Flags
313 );
314 #[repr(transparent)]
315 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
316 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoBeginCodingFlagsKHR.html>"]
317 pub struct VideoBeginCodingFlagsKHR(pub(crate) Flags);
318 vk_bitflags_wrapped!(VideoBeginCodingFlagsKHR, 0b0, Flags);
319 #[repr(transparent)]
320 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
321 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEndCodingFlagsKHR.html>"]
322 pub struct VideoEndCodingFlagsKHR(pub(crate) Flags);
323 vk_bitflags_wrapped!(VideoEndCodingFlagsKHR, 0b0, Flags);
324 #[repr(transparent)]
325 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
326 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264CreateFlagsEXT.html>"]
327 pub struct VideoDecodeH264CreateFlagsEXT(pub(crate) Flags);
328 vk_bitflags_wrapped!(VideoDecodeH264CreateFlagsEXT, 0b0, Flags);
329 #[repr(transparent)]
330 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
331 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265CreateFlagsEXT.html>"]
332 pub struct VideoDecodeH265CreateFlagsEXT(pub(crate) Flags);
333 vk_bitflags_wrapped!(VideoDecodeH265CreateFlagsEXT, 0b0, Flags);
334 define_handle!(
335     Instance,
336     INSTANCE,
337     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstance.html>"
338 );
339 define_handle ! (PhysicalDevice , PHYSICAL_DEVICE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice.html>") ;
340 define_handle!(
341     Device,
342     DEVICE,
343     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDevice.html>"
344 );
345 define_handle!(
346     Queue,
347     QUEUE,
348     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueue.html>"
349 );
350 define_handle ! (CommandBuffer , COMMAND_BUFFER , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBuffer.html>") ;
351 handle_nondispatchable ! (DeviceMemory , DEVICE_MEMORY , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemory.html>") ;
352 handle_nondispatchable ! (CommandPool , COMMAND_POOL , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPool.html>") ;
353 handle_nondispatchable!(
354     Buffer,
355     BUFFER,
356     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBuffer.html>"
357 );
358 handle_nondispatchable!(
359     BufferView,
360     BUFFER_VIEW,
361     doc =
362         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferView.html>"
363 );
364 handle_nondispatchable!(
365     Image,
366     IMAGE,
367     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImage.html>"
368 );
369 handle_nondispatchable!(
370     ImageView,
371     IMAGE_VIEW,
372     doc =
373         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageView.html>"
374 );
375 handle_nondispatchable ! (ShaderModule , SHADER_MODULE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModule.html>") ;
376 handle_nondispatchable!(
377     Pipeline,
378     PIPELINE,
379     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipeline.html>"
380 );
381 handle_nondispatchable ! (PipelineLayout , PIPELINE_LAYOUT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayout.html>") ;
382 handle_nondispatchable!(
383     Sampler,
384     SAMPLER,
385     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampler.html>"
386 );
387 handle_nondispatchable ! (DescriptorSet , DESCRIPTOR_SET , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSet.html>") ;
388 handle_nondispatchable ! (DescriptorSetLayout , DESCRIPTOR_SET_LAYOUT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayout.html>") ;
389 handle_nondispatchable ! (DescriptorPool , DESCRIPTOR_POOL , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPool.html>") ;
390 handle_nondispatchable!(
391     Fence,
392     FENCE,
393     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFence.html>"
394 );
395 handle_nondispatchable!(
396     Semaphore,
397     SEMAPHORE,
398     doc =
399         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphore.html>"
400 );
401 handle_nondispatchable!(
402     Event,
403     EVENT,
404     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEvent.html>"
405 );
406 handle_nondispatchable!(
407     QueryPool,
408     QUERY_POOL,
409     doc =
410         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPool.html>"
411 );
412 handle_nondispatchable ! (Framebuffer , FRAMEBUFFER , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebuffer.html>") ;
413 handle_nondispatchable!(
414     RenderPass,
415     RENDER_PASS,
416     doc =
417         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPass.html>"
418 );
419 handle_nondispatchable ! (PipelineCache , PIPELINE_CACHE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCache.html>") ;
420 handle_nondispatchable ! (IndirectCommandsLayoutNV , INDIRECT_COMMANDS_LAYOUT_NV , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsLayoutNV.html>") ;
421 handle_nondispatchable ! (DescriptorUpdateTemplate , DESCRIPTOR_UPDATE_TEMPLATE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplate.html>") ;
422 handle_nondispatchable ! (SamplerYcbcrConversion , SAMPLER_YCBCR_CONVERSION , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversion.html>") ;
423 handle_nondispatchable ! (ValidationCacheEXT , VALIDATION_CACHE_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheEXT.html>") ;
424 handle_nondispatchable ! (AccelerationStructureKHR , ACCELERATION_STRUCTURE_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureKHR.html>") ;
425 handle_nondispatchable ! (AccelerationStructureNV , ACCELERATION_STRUCTURE_NV , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureNV.html>") ;
426 handle_nondispatchable ! (PerformanceConfigurationINTEL , PERFORMANCE_CONFIGURATION_INTEL , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceConfigurationINTEL.html>") ;
427 handle_nondispatchable ! (DeferredOperationKHR , DEFERRED_OPERATION_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeferredOperationKHR.html>") ;
428 handle_nondispatchable ! (PrivateDataSlotEXT , PRIVATE_DATA_SLOT_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPrivateDataSlotEXT.html>") ;
429 handle_nondispatchable ! (CuModuleNVX , CU_MODULE_NVX , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuModuleNVX.html>") ;
430 handle_nondispatchable ! (CuFunctionNVX , CU_FUNCTION_NVX , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuFunctionNVX.html>") ;
431 handle_nondispatchable!(
432     DisplayKHR,
433     DISPLAY_KHR,
434     doc =
435         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayKHR.html>"
436 );
437 handle_nondispatchable ! (DisplayModeKHR , DISPLAY_MODE_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeKHR.html>") ;
438 handle_nondispatchable!(
439     SurfaceKHR,
440     SURFACE_KHR,
441     doc =
442         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceKHR.html>"
443 );
444 handle_nondispatchable ! (SwapchainKHR , SWAPCHAIN_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainKHR.html>") ;
445 handle_nondispatchable ! (DebugReportCallbackEXT , DEBUG_REPORT_CALLBACK_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugReportCallbackEXT.html>") ;
446 handle_nondispatchable ! (DebugUtilsMessengerEXT , DEBUG_UTILS_MESSENGER_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerEXT.html>") ;
447 handle_nondispatchable ! (VideoSessionKHR , VIDEO_SESSION_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionKHR.html>") ;
448 handle_nondispatchable ! (VideoSessionParametersKHR , VIDEO_SESSION_PARAMETERS_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionParametersKHR.html>") ;
449 #[allow(non_camel_case_types)]
450 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkInternalAllocationNotification.html>"]
451 pub type PFN_vkInternalAllocationNotification = Option<
452     unsafe extern "system" fn(
453         p_user_data: *mut c_void,
454         size: usize,
455         allocation_type: InternalAllocationType,
456         allocation_scope: SystemAllocationScope,
457     ),
458 >;
459 #[allow(non_camel_case_types)]
460 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkInternalFreeNotification.html>"]
461 pub type PFN_vkInternalFreeNotification = Option<
462     unsafe extern "system" fn(
463         p_user_data: *mut c_void,
464         size: usize,
465         allocation_type: InternalAllocationType,
466         allocation_scope: SystemAllocationScope,
467     ),
468 >;
469 #[allow(non_camel_case_types)]
470 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkReallocationFunction.html>"]
471 pub type PFN_vkReallocationFunction = Option<
472     unsafe extern "system" fn(
473         p_user_data: *mut c_void,
474         p_original: *mut c_void,
475         size: usize,
476         alignment: usize,
477         allocation_scope: SystemAllocationScope,
478     ) -> *mut c_void,
479 >;
480 #[allow(non_camel_case_types)]
481 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkAllocationFunction.html>"]
482 pub type PFN_vkAllocationFunction = Option<
483     unsafe extern "system" fn(
484         p_user_data: *mut c_void,
485         size: usize,
486         alignment: usize,
487         allocation_scope: SystemAllocationScope,
488     ) -> *mut c_void,
489 >;
490 #[allow(non_camel_case_types)]
491 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkFreeFunction.html>"]
492 pub type PFN_vkFreeFunction =
493     Option<unsafe extern "system" fn(p_user_data: *mut c_void, p_memory: *mut c_void)>;
494 #[allow(non_camel_case_types)]
495 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkVoidFunction.html>"]
496 pub type PFN_vkVoidFunction = Option<unsafe extern "system" fn()>;
497 #[allow(non_camel_case_types)]
498 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkDebugReportCallbackEXT.html>"]
499 pub type PFN_vkDebugReportCallbackEXT = Option<
500     unsafe extern "system" fn(
501         flags: DebugReportFlagsEXT,
502         object_type: DebugReportObjectTypeEXT,
503         object: u64,
504         location: usize,
505         message_code: i32,
506         p_layer_prefix: *const c_char,
507         p_message: *const c_char,
508         p_user_data: *mut c_void,
509     ) -> Bool32,
510 >;
511 #[allow(non_camel_case_types)]
512 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkDebugUtilsMessengerCallbackEXT.html>"]
513 pub type PFN_vkDebugUtilsMessengerCallbackEXT = Option<
514     unsafe extern "system" fn(
515         message_severity: DebugUtilsMessageSeverityFlagsEXT,
516         message_types: DebugUtilsMessageTypeFlagsEXT,
517         p_callback_data: *const DebugUtilsMessengerCallbackDataEXT,
518         p_user_data: *mut c_void,
519     ) -> Bool32,
520 >;
521 #[allow(non_camel_case_types)]
522 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkDeviceMemoryReportCallbackEXT.html>"]
523 pub type PFN_vkDeviceMemoryReportCallbackEXT = Option<
524     unsafe extern "system" fn(
525         p_callback_data: *const DeviceMemoryReportCallbackDataEXT,
526         p_user_data: *mut c_void,
527     ),
528 >;
529 #[repr(C)]
530 #[derive(Copy, Clone, Debug)]
531 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseOutStructure.html>"]
532 pub struct BaseOutStructure {
533     pub s_type: StructureType,
534     pub p_next: *mut BaseOutStructure,
535 }
536 impl ::std::default::Default for BaseOutStructure {
default() -> BaseOutStructure537     fn default() -> BaseOutStructure {
538         BaseOutStructure {
539             s_type: unsafe { ::std::mem::zeroed() },
540             p_next: ::std::ptr::null_mut(),
541         }
542     }
543 }
544 #[repr(C)]
545 #[derive(Copy, Clone, Debug)]
546 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseInStructure.html>"]
547 pub struct BaseInStructure {
548     pub s_type: StructureType,
549     pub p_next: *const BaseInStructure,
550 }
551 impl ::std::default::Default for BaseInStructure {
default() -> BaseInStructure552     fn default() -> BaseInStructure {
553         BaseInStructure {
554             s_type: unsafe { ::std::mem::zeroed() },
555             p_next: ::std::ptr::null(),
556         }
557     }
558 }
559 #[repr(C)]
560 #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Hash)]
561 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset2D.html>"]
562 pub struct Offset2D {
563     pub x: i32,
564     pub y: i32,
565 }
566 impl Offset2D {
builder<'a>() -> Offset2DBuilder<'a>567     pub fn builder<'a>() -> Offset2DBuilder<'a> {
568         Offset2DBuilder {
569             inner: Offset2D::default(),
570             marker: ::std::marker::PhantomData,
571         }
572     }
573 }
574 #[repr(transparent)]
575 pub struct Offset2DBuilder<'a> {
576     inner: Offset2D,
577     marker: ::std::marker::PhantomData<&'a ()>,
578 }
579 impl<'a> ::std::ops::Deref for Offset2DBuilder<'a> {
580     type Target = Offset2D;
deref(&self) -> &Self::Target581     fn deref(&self) -> &Self::Target {
582         &self.inner
583     }
584 }
585 impl<'a> ::std::ops::DerefMut for Offset2DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target586     fn deref_mut(&mut self) -> &mut Self::Target {
587         &mut self.inner
588     }
589 }
590 impl<'a> Offset2DBuilder<'a> {
x(mut self, x: i32) -> Self591     pub fn x(mut self, x: i32) -> Self {
592         self.inner.x = x;
593         self
594     }
y(mut self, y: i32) -> Self595     pub fn y(mut self, y: i32) -> Self {
596         self.inner.y = y;
597         self
598     }
599     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
600     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
601     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Offset2D602     pub fn build(self) -> Offset2D {
603         self.inner
604     }
605 }
606 #[repr(C)]
607 #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Hash)]
608 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset3D.html>"]
609 pub struct Offset3D {
610     pub x: i32,
611     pub y: i32,
612     pub z: i32,
613 }
614 impl Offset3D {
builder<'a>() -> Offset3DBuilder<'a>615     pub fn builder<'a>() -> Offset3DBuilder<'a> {
616         Offset3DBuilder {
617             inner: Offset3D::default(),
618             marker: ::std::marker::PhantomData,
619         }
620     }
621 }
622 #[repr(transparent)]
623 pub struct Offset3DBuilder<'a> {
624     inner: Offset3D,
625     marker: ::std::marker::PhantomData<&'a ()>,
626 }
627 impl<'a> ::std::ops::Deref for Offset3DBuilder<'a> {
628     type Target = Offset3D;
deref(&self) -> &Self::Target629     fn deref(&self) -> &Self::Target {
630         &self.inner
631     }
632 }
633 impl<'a> ::std::ops::DerefMut for Offset3DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target634     fn deref_mut(&mut self) -> &mut Self::Target {
635         &mut self.inner
636     }
637 }
638 impl<'a> Offset3DBuilder<'a> {
x(mut self, x: i32) -> Self639     pub fn x(mut self, x: i32) -> Self {
640         self.inner.x = x;
641         self
642     }
y(mut self, y: i32) -> Self643     pub fn y(mut self, y: i32) -> Self {
644         self.inner.y = y;
645         self
646     }
z(mut self, z: i32) -> Self647     pub fn z(mut self, z: i32) -> Self {
648         self.inner.z = z;
649         self
650     }
651     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
652     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
653     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Offset3D654     pub fn build(self) -> Offset3D {
655         self.inner
656     }
657 }
658 #[repr(C)]
659 #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Hash)]
660 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtent2D.html>"]
661 pub struct Extent2D {
662     pub width: u32,
663     pub height: u32,
664 }
665 impl Extent2D {
builder<'a>() -> Extent2DBuilder<'a>666     pub fn builder<'a>() -> Extent2DBuilder<'a> {
667         Extent2DBuilder {
668             inner: Extent2D::default(),
669             marker: ::std::marker::PhantomData,
670         }
671     }
672 }
673 #[repr(transparent)]
674 pub struct Extent2DBuilder<'a> {
675     inner: Extent2D,
676     marker: ::std::marker::PhantomData<&'a ()>,
677 }
678 impl<'a> ::std::ops::Deref for Extent2DBuilder<'a> {
679     type Target = Extent2D;
deref(&self) -> &Self::Target680     fn deref(&self) -> &Self::Target {
681         &self.inner
682     }
683 }
684 impl<'a> ::std::ops::DerefMut for Extent2DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target685     fn deref_mut(&mut self) -> &mut Self::Target {
686         &mut self.inner
687     }
688 }
689 impl<'a> Extent2DBuilder<'a> {
width(mut self, width: u32) -> Self690     pub fn width(mut self, width: u32) -> Self {
691         self.inner.width = width;
692         self
693     }
height(mut self, height: u32) -> Self694     pub fn height(mut self, height: u32) -> Self {
695         self.inner.height = height;
696         self
697     }
698     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
699     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
700     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Extent2D701     pub fn build(self) -> Extent2D {
702         self.inner
703     }
704 }
705 #[repr(C)]
706 #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Hash)]
707 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtent3D.html>"]
708 pub struct Extent3D {
709     pub width: u32,
710     pub height: u32,
711     pub depth: u32,
712 }
713 impl Extent3D {
builder<'a>() -> Extent3DBuilder<'a>714     pub fn builder<'a>() -> Extent3DBuilder<'a> {
715         Extent3DBuilder {
716             inner: Extent3D::default(),
717             marker: ::std::marker::PhantomData,
718         }
719     }
720 }
721 #[repr(transparent)]
722 pub struct Extent3DBuilder<'a> {
723     inner: Extent3D,
724     marker: ::std::marker::PhantomData<&'a ()>,
725 }
726 impl<'a> ::std::ops::Deref for Extent3DBuilder<'a> {
727     type Target = Extent3D;
deref(&self) -> &Self::Target728     fn deref(&self) -> &Self::Target {
729         &self.inner
730     }
731 }
732 impl<'a> ::std::ops::DerefMut for Extent3DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target733     fn deref_mut(&mut self) -> &mut Self::Target {
734         &mut self.inner
735     }
736 }
737 impl<'a> Extent3DBuilder<'a> {
width(mut self, width: u32) -> Self738     pub fn width(mut self, width: u32) -> Self {
739         self.inner.width = width;
740         self
741     }
height(mut self, height: u32) -> Self742     pub fn height(mut self, height: u32) -> Self {
743         self.inner.height = height;
744         self
745     }
depth(mut self, depth: u32) -> Self746     pub fn depth(mut self, depth: u32) -> Self {
747         self.inner.depth = depth;
748         self
749     }
750     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
751     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
752     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Extent3D753     pub fn build(self) -> Extent3D {
754         self.inner
755     }
756 }
757 #[repr(C)]
758 #[derive(Copy, Clone, Default, Debug)]
759 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewport.html>"]
760 pub struct Viewport {
761     pub x: f32,
762     pub y: f32,
763     pub width: f32,
764     pub height: f32,
765     pub min_depth: f32,
766     pub max_depth: f32,
767 }
768 impl Viewport {
builder<'a>() -> ViewportBuilder<'a>769     pub fn builder<'a>() -> ViewportBuilder<'a> {
770         ViewportBuilder {
771             inner: Viewport::default(),
772             marker: ::std::marker::PhantomData,
773         }
774     }
775 }
776 #[repr(transparent)]
777 pub struct ViewportBuilder<'a> {
778     inner: Viewport,
779     marker: ::std::marker::PhantomData<&'a ()>,
780 }
781 impl<'a> ::std::ops::Deref for ViewportBuilder<'a> {
782     type Target = Viewport;
deref(&self) -> &Self::Target783     fn deref(&self) -> &Self::Target {
784         &self.inner
785     }
786 }
787 impl<'a> ::std::ops::DerefMut for ViewportBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target788     fn deref_mut(&mut self) -> &mut Self::Target {
789         &mut self.inner
790     }
791 }
792 impl<'a> ViewportBuilder<'a> {
x(mut self, x: f32) -> Self793     pub fn x(mut self, x: f32) -> Self {
794         self.inner.x = x;
795         self
796     }
y(mut self, y: f32) -> Self797     pub fn y(mut self, y: f32) -> Self {
798         self.inner.y = y;
799         self
800     }
width(mut self, width: f32) -> Self801     pub fn width(mut self, width: f32) -> Self {
802         self.inner.width = width;
803         self
804     }
height(mut self, height: f32) -> Self805     pub fn height(mut self, height: f32) -> Self {
806         self.inner.height = height;
807         self
808     }
min_depth(mut self, min_depth: f32) -> Self809     pub fn min_depth(mut self, min_depth: f32) -> Self {
810         self.inner.min_depth = min_depth;
811         self
812     }
max_depth(mut self, max_depth: f32) -> Self813     pub fn max_depth(mut self, max_depth: f32) -> Self {
814         self.inner.max_depth = max_depth;
815         self
816     }
817     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
818     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
819     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Viewport820     pub fn build(self) -> Viewport {
821         self.inner
822     }
823 }
824 #[repr(C)]
825 #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Hash)]
826 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRect2D.html>"]
827 pub struct Rect2D {
828     pub offset: Offset2D,
829     pub extent: Extent2D,
830 }
831 impl Rect2D {
builder<'a>() -> Rect2DBuilder<'a>832     pub fn builder<'a>() -> Rect2DBuilder<'a> {
833         Rect2DBuilder {
834             inner: Rect2D::default(),
835             marker: ::std::marker::PhantomData,
836         }
837     }
838 }
839 #[repr(transparent)]
840 pub struct Rect2DBuilder<'a> {
841     inner: Rect2D,
842     marker: ::std::marker::PhantomData<&'a ()>,
843 }
844 impl<'a> ::std::ops::Deref for Rect2DBuilder<'a> {
845     type Target = Rect2D;
deref(&self) -> &Self::Target846     fn deref(&self) -> &Self::Target {
847         &self.inner
848     }
849 }
850 impl<'a> ::std::ops::DerefMut for Rect2DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target851     fn deref_mut(&mut self) -> &mut Self::Target {
852         &mut self.inner
853     }
854 }
855 impl<'a> Rect2DBuilder<'a> {
offset(mut self, offset: Offset2D) -> Self856     pub fn offset(mut self, offset: Offset2D) -> Self {
857         self.inner.offset = offset;
858         self
859     }
extent(mut self, extent: Extent2D) -> Self860     pub fn extent(mut self, extent: Extent2D) -> Self {
861         self.inner.extent = extent;
862         self
863     }
864     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
865     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
866     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Rect2D867     pub fn build(self) -> Rect2D {
868         self.inner
869     }
870 }
871 #[repr(C)]
872 #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Hash)]
873 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearRect.html>"]
874 pub struct ClearRect {
875     pub rect: Rect2D,
876     pub base_array_layer: u32,
877     pub layer_count: u32,
878 }
879 impl ClearRect {
builder<'a>() -> ClearRectBuilder<'a>880     pub fn builder<'a>() -> ClearRectBuilder<'a> {
881         ClearRectBuilder {
882             inner: ClearRect::default(),
883             marker: ::std::marker::PhantomData,
884         }
885     }
886 }
887 #[repr(transparent)]
888 pub struct ClearRectBuilder<'a> {
889     inner: ClearRect,
890     marker: ::std::marker::PhantomData<&'a ()>,
891 }
892 impl<'a> ::std::ops::Deref for ClearRectBuilder<'a> {
893     type Target = ClearRect;
deref(&self) -> &Self::Target894     fn deref(&self) -> &Self::Target {
895         &self.inner
896     }
897 }
898 impl<'a> ::std::ops::DerefMut for ClearRectBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target899     fn deref_mut(&mut self) -> &mut Self::Target {
900         &mut self.inner
901     }
902 }
903 impl<'a> ClearRectBuilder<'a> {
rect(mut self, rect: Rect2D) -> Self904     pub fn rect(mut self, rect: Rect2D) -> Self {
905         self.inner.rect = rect;
906         self
907     }
base_array_layer(mut self, base_array_layer: u32) -> Self908     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
909         self.inner.base_array_layer = base_array_layer;
910         self
911     }
layer_count(mut self, layer_count: u32) -> Self912     pub fn layer_count(mut self, layer_count: u32) -> Self {
913         self.inner.layer_count = layer_count;
914         self
915     }
916     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
917     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
918     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ClearRect919     pub fn build(self) -> ClearRect {
920         self.inner
921     }
922 }
923 #[repr(C)]
924 #[derive(Copy, Clone, Default, Debug)]
925 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentMapping.html>"]
926 pub struct ComponentMapping {
927     pub r: ComponentSwizzle,
928     pub g: ComponentSwizzle,
929     pub b: ComponentSwizzle,
930     pub a: ComponentSwizzle,
931 }
932 impl ComponentMapping {
builder<'a>() -> ComponentMappingBuilder<'a>933     pub fn builder<'a>() -> ComponentMappingBuilder<'a> {
934         ComponentMappingBuilder {
935             inner: ComponentMapping::default(),
936             marker: ::std::marker::PhantomData,
937         }
938     }
939 }
940 #[repr(transparent)]
941 pub struct ComponentMappingBuilder<'a> {
942     inner: ComponentMapping,
943     marker: ::std::marker::PhantomData<&'a ()>,
944 }
945 impl<'a> ::std::ops::Deref for ComponentMappingBuilder<'a> {
946     type Target = ComponentMapping;
deref(&self) -> &Self::Target947     fn deref(&self) -> &Self::Target {
948         &self.inner
949     }
950 }
951 impl<'a> ::std::ops::DerefMut for ComponentMappingBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target952     fn deref_mut(&mut self) -> &mut Self::Target {
953         &mut self.inner
954     }
955 }
956 impl<'a> ComponentMappingBuilder<'a> {
r(mut self, r: ComponentSwizzle) -> Self957     pub fn r(mut self, r: ComponentSwizzle) -> Self {
958         self.inner.r = r;
959         self
960     }
g(mut self, g: ComponentSwizzle) -> Self961     pub fn g(mut self, g: ComponentSwizzle) -> Self {
962         self.inner.g = g;
963         self
964     }
b(mut self, b: ComponentSwizzle) -> Self965     pub fn b(mut self, b: ComponentSwizzle) -> Self {
966         self.inner.b = b;
967         self
968     }
a(mut self, a: ComponentSwizzle) -> Self969     pub fn a(mut self, a: ComponentSwizzle) -> Self {
970         self.inner.a = a;
971         self
972     }
973     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
974     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
975     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ComponentMapping976     pub fn build(self) -> ComponentMapping {
977         self.inner
978     }
979 }
980 #[repr(C)]
981 #[derive(Copy, Clone)]
982 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProperties.html>"]
983 pub struct PhysicalDeviceProperties {
984     pub api_version: u32,
985     pub driver_version: u32,
986     pub vendor_id: u32,
987     pub device_id: u32,
988     pub device_type: PhysicalDeviceType,
989     pub device_name: [c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE],
990     pub pipeline_cache_uuid: [u8; UUID_SIZE],
991     pub limits: PhysicalDeviceLimits,
992     pub sparse_properties: PhysicalDeviceSparseProperties,
993 }
994 impl fmt::Debug for PhysicalDeviceProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result995     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
996         fmt.debug_struct("PhysicalDeviceProperties")
997             .field("api_version", &self.api_version)
998             .field("driver_version", &self.driver_version)
999             .field("vendor_id", &self.vendor_id)
1000             .field("device_id", &self.device_id)
1001             .field("device_type", &self.device_type)
1002             .field("device_name", &unsafe {
1003                 ::std::ffi::CStr::from_ptr(self.device_name.as_ptr() as *const c_char)
1004             })
1005             .field("pipeline_cache_uuid", &self.pipeline_cache_uuid)
1006             .field("limits", &self.limits)
1007             .field("sparse_properties", &self.sparse_properties)
1008             .finish()
1009     }
1010 }
1011 impl ::std::default::Default for PhysicalDeviceProperties {
default() -> PhysicalDeviceProperties1012     fn default() -> PhysicalDeviceProperties {
1013         PhysicalDeviceProperties {
1014             api_version: u32::default(),
1015             driver_version: u32::default(),
1016             vendor_id: u32::default(),
1017             device_id: u32::default(),
1018             device_type: PhysicalDeviceType::default(),
1019             device_name: unsafe { ::std::mem::zeroed() },
1020             pipeline_cache_uuid: unsafe { ::std::mem::zeroed() },
1021             limits: PhysicalDeviceLimits::default(),
1022             sparse_properties: PhysicalDeviceSparseProperties::default(),
1023         }
1024     }
1025 }
1026 impl PhysicalDeviceProperties {
builder<'a>() -> PhysicalDevicePropertiesBuilder<'a>1027     pub fn builder<'a>() -> PhysicalDevicePropertiesBuilder<'a> {
1028         PhysicalDevicePropertiesBuilder {
1029             inner: PhysicalDeviceProperties::default(),
1030             marker: ::std::marker::PhantomData,
1031         }
1032     }
1033 }
1034 #[repr(transparent)]
1035 pub struct PhysicalDevicePropertiesBuilder<'a> {
1036     inner: PhysicalDeviceProperties,
1037     marker: ::std::marker::PhantomData<&'a ()>,
1038 }
1039 impl<'a> ::std::ops::Deref for PhysicalDevicePropertiesBuilder<'a> {
1040     type Target = PhysicalDeviceProperties;
deref(&self) -> &Self::Target1041     fn deref(&self) -> &Self::Target {
1042         &self.inner
1043     }
1044 }
1045 impl<'a> ::std::ops::DerefMut for PhysicalDevicePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1046     fn deref_mut(&mut self) -> &mut Self::Target {
1047         &mut self.inner
1048     }
1049 }
1050 impl<'a> PhysicalDevicePropertiesBuilder<'a> {
api_version(mut self, api_version: u32) -> Self1051     pub fn api_version(mut self, api_version: u32) -> Self {
1052         self.inner.api_version = api_version;
1053         self
1054     }
driver_version(mut self, driver_version: u32) -> Self1055     pub fn driver_version(mut self, driver_version: u32) -> Self {
1056         self.inner.driver_version = driver_version;
1057         self
1058     }
vendor_id(mut self, vendor_id: u32) -> Self1059     pub fn vendor_id(mut self, vendor_id: u32) -> Self {
1060         self.inner.vendor_id = vendor_id;
1061         self
1062     }
device_id(mut self, device_id: u32) -> Self1063     pub fn device_id(mut self, device_id: u32) -> Self {
1064         self.inner.device_id = device_id;
1065         self
1066     }
device_type(mut self, device_type: PhysicalDeviceType) -> Self1067     pub fn device_type(mut self, device_type: PhysicalDeviceType) -> Self {
1068         self.inner.device_type = device_type;
1069         self
1070     }
device_name(mut self, device_name: [c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE]) -> Self1071     pub fn device_name(mut self, device_name: [c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE]) -> Self {
1072         self.inner.device_name = device_name;
1073         self
1074     }
pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self1075     pub fn pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self {
1076         self.inner.pipeline_cache_uuid = pipeline_cache_uuid;
1077         self
1078     }
limits(mut self, limits: PhysicalDeviceLimits) -> Self1079     pub fn limits(mut self, limits: PhysicalDeviceLimits) -> Self {
1080         self.inner.limits = limits;
1081         self
1082     }
sparse_properties(mut self, sparse_properties: PhysicalDeviceSparseProperties) -> Self1083     pub fn sparse_properties(mut self, sparse_properties: PhysicalDeviceSparseProperties) -> Self {
1084         self.inner.sparse_properties = sparse_properties;
1085         self
1086     }
1087     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1088     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1089     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProperties1090     pub fn build(self) -> PhysicalDeviceProperties {
1091         self.inner
1092     }
1093 }
1094 #[repr(C)]
1095 #[derive(Copy, Clone)]
1096 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtensionProperties.html>"]
1097 pub struct ExtensionProperties {
1098     pub extension_name: [c_char; MAX_EXTENSION_NAME_SIZE],
1099     pub spec_version: u32,
1100 }
1101 impl fmt::Debug for ExtensionProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result1102     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
1103         fmt.debug_struct("ExtensionProperties")
1104             .field("extension_name", &unsafe {
1105                 ::std::ffi::CStr::from_ptr(self.extension_name.as_ptr() as *const c_char)
1106             })
1107             .field("spec_version", &self.spec_version)
1108             .finish()
1109     }
1110 }
1111 impl ::std::default::Default for ExtensionProperties {
default() -> ExtensionProperties1112     fn default() -> ExtensionProperties {
1113         ExtensionProperties {
1114             extension_name: unsafe { ::std::mem::zeroed() },
1115             spec_version: u32::default(),
1116         }
1117     }
1118 }
1119 impl ExtensionProperties {
builder<'a>() -> ExtensionPropertiesBuilder<'a>1120     pub fn builder<'a>() -> ExtensionPropertiesBuilder<'a> {
1121         ExtensionPropertiesBuilder {
1122             inner: ExtensionProperties::default(),
1123             marker: ::std::marker::PhantomData,
1124         }
1125     }
1126 }
1127 #[repr(transparent)]
1128 pub struct ExtensionPropertiesBuilder<'a> {
1129     inner: ExtensionProperties,
1130     marker: ::std::marker::PhantomData<&'a ()>,
1131 }
1132 impl<'a> ::std::ops::Deref for ExtensionPropertiesBuilder<'a> {
1133     type Target = ExtensionProperties;
deref(&self) -> &Self::Target1134     fn deref(&self) -> &Self::Target {
1135         &self.inner
1136     }
1137 }
1138 impl<'a> ::std::ops::DerefMut for ExtensionPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1139     fn deref_mut(&mut self) -> &mut Self::Target {
1140         &mut self.inner
1141     }
1142 }
1143 impl<'a> ExtensionPropertiesBuilder<'a> {
extension_name(mut self, extension_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self1144     pub fn extension_name(mut self, extension_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
1145         self.inner.extension_name = extension_name;
1146         self
1147     }
spec_version(mut self, spec_version: u32) -> Self1148     pub fn spec_version(mut self, spec_version: u32) -> Self {
1149         self.inner.spec_version = spec_version;
1150         self
1151     }
1152     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1153     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1154     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExtensionProperties1155     pub fn build(self) -> ExtensionProperties {
1156         self.inner
1157     }
1158 }
1159 #[repr(C)]
1160 #[derive(Copy, Clone)]
1161 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLayerProperties.html>"]
1162 pub struct LayerProperties {
1163     pub layer_name: [c_char; MAX_EXTENSION_NAME_SIZE],
1164     pub spec_version: u32,
1165     pub implementation_version: u32,
1166     pub description: [c_char; MAX_DESCRIPTION_SIZE],
1167 }
1168 impl fmt::Debug for LayerProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result1169     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
1170         fmt.debug_struct("LayerProperties")
1171             .field("layer_name", &unsafe {
1172                 ::std::ffi::CStr::from_ptr(self.layer_name.as_ptr() as *const c_char)
1173             })
1174             .field("spec_version", &self.spec_version)
1175             .field("implementation_version", &self.implementation_version)
1176             .field("description", &unsafe {
1177                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
1178             })
1179             .finish()
1180     }
1181 }
1182 impl ::std::default::Default for LayerProperties {
default() -> LayerProperties1183     fn default() -> LayerProperties {
1184         LayerProperties {
1185             layer_name: unsafe { ::std::mem::zeroed() },
1186             spec_version: u32::default(),
1187             implementation_version: u32::default(),
1188             description: unsafe { ::std::mem::zeroed() },
1189         }
1190     }
1191 }
1192 impl LayerProperties {
builder<'a>() -> LayerPropertiesBuilder<'a>1193     pub fn builder<'a>() -> LayerPropertiesBuilder<'a> {
1194         LayerPropertiesBuilder {
1195             inner: LayerProperties::default(),
1196             marker: ::std::marker::PhantomData,
1197         }
1198     }
1199 }
1200 #[repr(transparent)]
1201 pub struct LayerPropertiesBuilder<'a> {
1202     inner: LayerProperties,
1203     marker: ::std::marker::PhantomData<&'a ()>,
1204 }
1205 impl<'a> ::std::ops::Deref for LayerPropertiesBuilder<'a> {
1206     type Target = LayerProperties;
deref(&self) -> &Self::Target1207     fn deref(&self) -> &Self::Target {
1208         &self.inner
1209     }
1210 }
1211 impl<'a> ::std::ops::DerefMut for LayerPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1212     fn deref_mut(&mut self) -> &mut Self::Target {
1213         &mut self.inner
1214     }
1215 }
1216 impl<'a> LayerPropertiesBuilder<'a> {
layer_name(mut self, layer_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self1217     pub fn layer_name(mut self, layer_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
1218         self.inner.layer_name = layer_name;
1219         self
1220     }
spec_version(mut self, spec_version: u32) -> Self1221     pub fn spec_version(mut self, spec_version: u32) -> Self {
1222         self.inner.spec_version = spec_version;
1223         self
1224     }
implementation_version(mut self, implementation_version: u32) -> Self1225     pub fn implementation_version(mut self, implementation_version: u32) -> Self {
1226         self.inner.implementation_version = implementation_version;
1227         self
1228     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self1229     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
1230         self.inner.description = description;
1231         self
1232     }
1233     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1234     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1235     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> LayerProperties1236     pub fn build(self) -> LayerProperties {
1237         self.inner
1238     }
1239 }
1240 #[repr(C)]
1241 #[derive(Copy, Clone, Debug)]
1242 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkApplicationInfo.html>"]
1243 pub struct ApplicationInfo {
1244     pub s_type: StructureType,
1245     pub p_next: *const c_void,
1246     pub p_application_name: *const c_char,
1247     pub application_version: u32,
1248     pub p_engine_name: *const c_char,
1249     pub engine_version: u32,
1250     pub api_version: u32,
1251 }
1252 impl ::std::default::Default for ApplicationInfo {
default() -> ApplicationInfo1253     fn default() -> ApplicationInfo {
1254         ApplicationInfo {
1255             s_type: StructureType::APPLICATION_INFO,
1256             p_next: ::std::ptr::null(),
1257             p_application_name: ::std::ptr::null(),
1258             application_version: u32::default(),
1259             p_engine_name: ::std::ptr::null(),
1260             engine_version: u32::default(),
1261             api_version: u32::default(),
1262         }
1263     }
1264 }
1265 impl ApplicationInfo {
builder<'a>() -> ApplicationInfoBuilder<'a>1266     pub fn builder<'a>() -> ApplicationInfoBuilder<'a> {
1267         ApplicationInfoBuilder {
1268             inner: ApplicationInfo::default(),
1269             marker: ::std::marker::PhantomData,
1270         }
1271     }
1272 }
1273 #[repr(transparent)]
1274 pub struct ApplicationInfoBuilder<'a> {
1275     inner: ApplicationInfo,
1276     marker: ::std::marker::PhantomData<&'a ()>,
1277 }
1278 impl<'a> ::std::ops::Deref for ApplicationInfoBuilder<'a> {
1279     type Target = ApplicationInfo;
deref(&self) -> &Self::Target1280     fn deref(&self) -> &Self::Target {
1281         &self.inner
1282     }
1283 }
1284 impl<'a> ::std::ops::DerefMut for ApplicationInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1285     fn deref_mut(&mut self) -> &mut Self::Target {
1286         &mut self.inner
1287     }
1288 }
1289 impl<'a> ApplicationInfoBuilder<'a> {
application_name(mut self, application_name: &'a ::std::ffi::CStr) -> Self1290     pub fn application_name(mut self, application_name: &'a ::std::ffi::CStr) -> Self {
1291         self.inner.p_application_name = application_name.as_ptr();
1292         self
1293     }
application_version(mut self, application_version: u32) -> Self1294     pub fn application_version(mut self, application_version: u32) -> Self {
1295         self.inner.application_version = application_version;
1296         self
1297     }
engine_name(mut self, engine_name: &'a ::std::ffi::CStr) -> Self1298     pub fn engine_name(mut self, engine_name: &'a ::std::ffi::CStr) -> Self {
1299         self.inner.p_engine_name = engine_name.as_ptr();
1300         self
1301     }
engine_version(mut self, engine_version: u32) -> Self1302     pub fn engine_version(mut self, engine_version: u32) -> Self {
1303         self.inner.engine_version = engine_version;
1304         self
1305     }
api_version(mut self, api_version: u32) -> Self1306     pub fn api_version(mut self, api_version: u32) -> Self {
1307         self.inner.api_version = api_version;
1308         self
1309     }
1310     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1311     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1312     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ApplicationInfo1313     pub fn build(self) -> ApplicationInfo {
1314         self.inner
1315     }
1316 }
1317 #[repr(C)]
1318 #[derive(Copy, Clone)]
1319 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAllocationCallbacks.html>"]
1320 pub struct AllocationCallbacks {
1321     pub p_user_data: *mut c_void,
1322     pub pfn_allocation: PFN_vkAllocationFunction,
1323     pub pfn_reallocation: PFN_vkReallocationFunction,
1324     pub pfn_free: PFN_vkFreeFunction,
1325     pub pfn_internal_allocation: PFN_vkInternalAllocationNotification,
1326     pub pfn_internal_free: PFN_vkInternalFreeNotification,
1327 }
1328 impl fmt::Debug for AllocationCallbacks {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result1329     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
1330         fmt.debug_struct("AllocationCallbacks")
1331             .field("p_user_data", &self.p_user_data)
1332             .field(
1333                 "pfn_allocation",
1334                 &(self.pfn_allocation.map(|x| x as *const ())),
1335             )
1336             .field(
1337                 "pfn_reallocation",
1338                 &(self.pfn_reallocation.map(|x| x as *const ())),
1339             )
1340             .field("pfn_free", &(self.pfn_free.map(|x| x as *const ())))
1341             .field(
1342                 "pfn_internal_allocation",
1343                 &(self.pfn_internal_allocation.map(|x| x as *const ())),
1344             )
1345             .field(
1346                 "pfn_internal_free",
1347                 &(self.pfn_internal_free.map(|x| x as *const ())),
1348             )
1349             .finish()
1350     }
1351 }
1352 impl ::std::default::Default for AllocationCallbacks {
default() -> AllocationCallbacks1353     fn default() -> AllocationCallbacks {
1354         AllocationCallbacks {
1355             p_user_data: ::std::ptr::null_mut(),
1356             pfn_allocation: PFN_vkAllocationFunction::default(),
1357             pfn_reallocation: PFN_vkReallocationFunction::default(),
1358             pfn_free: PFN_vkFreeFunction::default(),
1359             pfn_internal_allocation: PFN_vkInternalAllocationNotification::default(),
1360             pfn_internal_free: PFN_vkInternalFreeNotification::default(),
1361         }
1362     }
1363 }
1364 impl AllocationCallbacks {
builder<'a>() -> AllocationCallbacksBuilder<'a>1365     pub fn builder<'a>() -> AllocationCallbacksBuilder<'a> {
1366         AllocationCallbacksBuilder {
1367             inner: AllocationCallbacks::default(),
1368             marker: ::std::marker::PhantomData,
1369         }
1370     }
1371 }
1372 #[repr(transparent)]
1373 pub struct AllocationCallbacksBuilder<'a> {
1374     inner: AllocationCallbacks,
1375     marker: ::std::marker::PhantomData<&'a ()>,
1376 }
1377 impl<'a> ::std::ops::Deref for AllocationCallbacksBuilder<'a> {
1378     type Target = AllocationCallbacks;
deref(&self) -> &Self::Target1379     fn deref(&self) -> &Self::Target {
1380         &self.inner
1381     }
1382 }
1383 impl<'a> ::std::ops::DerefMut for AllocationCallbacksBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1384     fn deref_mut(&mut self) -> &mut Self::Target {
1385         &mut self.inner
1386     }
1387 }
1388 impl<'a> AllocationCallbacksBuilder<'a> {
user_data(mut self, user_data: *mut c_void) -> Self1389     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
1390         self.inner.p_user_data = user_data;
1391         self
1392     }
pfn_allocation(mut self, pfn_allocation: PFN_vkAllocationFunction) -> Self1393     pub fn pfn_allocation(mut self, pfn_allocation: PFN_vkAllocationFunction) -> Self {
1394         self.inner.pfn_allocation = pfn_allocation;
1395         self
1396     }
pfn_reallocation(mut self, pfn_reallocation: PFN_vkReallocationFunction) -> Self1397     pub fn pfn_reallocation(mut self, pfn_reallocation: PFN_vkReallocationFunction) -> Self {
1398         self.inner.pfn_reallocation = pfn_reallocation;
1399         self
1400     }
pfn_free(mut self, pfn_free: PFN_vkFreeFunction) -> Self1401     pub fn pfn_free(mut self, pfn_free: PFN_vkFreeFunction) -> Self {
1402         self.inner.pfn_free = pfn_free;
1403         self
1404     }
pfn_internal_allocation( mut self, pfn_internal_allocation: PFN_vkInternalAllocationNotification, ) -> Self1405     pub fn pfn_internal_allocation(
1406         mut self,
1407         pfn_internal_allocation: PFN_vkInternalAllocationNotification,
1408     ) -> Self {
1409         self.inner.pfn_internal_allocation = pfn_internal_allocation;
1410         self
1411     }
pfn_internal_free(mut self, pfn_internal_free: PFN_vkInternalFreeNotification) -> Self1412     pub fn pfn_internal_free(mut self, pfn_internal_free: PFN_vkInternalFreeNotification) -> Self {
1413         self.inner.pfn_internal_free = pfn_internal_free;
1414         self
1415     }
1416     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1417     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1418     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AllocationCallbacks1419     pub fn build(self) -> AllocationCallbacks {
1420         self.inner
1421     }
1422 }
1423 #[repr(C)]
1424 #[derive(Copy, Clone, Debug)]
1425 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueCreateInfo.html>"]
1426 pub struct DeviceQueueCreateInfo {
1427     pub s_type: StructureType,
1428     pub p_next: *const c_void,
1429     pub flags: DeviceQueueCreateFlags,
1430     pub queue_family_index: u32,
1431     pub queue_count: u32,
1432     pub p_queue_priorities: *const f32,
1433 }
1434 impl ::std::default::Default for DeviceQueueCreateInfo {
default() -> DeviceQueueCreateInfo1435     fn default() -> DeviceQueueCreateInfo {
1436         DeviceQueueCreateInfo {
1437             s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
1438             p_next: ::std::ptr::null(),
1439             flags: DeviceQueueCreateFlags::default(),
1440             queue_family_index: u32::default(),
1441             queue_count: u32::default(),
1442             p_queue_priorities: ::std::ptr::null(),
1443         }
1444     }
1445 }
1446 impl DeviceQueueCreateInfo {
builder<'a>() -> DeviceQueueCreateInfoBuilder<'a>1447     pub fn builder<'a>() -> DeviceQueueCreateInfoBuilder<'a> {
1448         DeviceQueueCreateInfoBuilder {
1449             inner: DeviceQueueCreateInfo::default(),
1450             marker: ::std::marker::PhantomData,
1451         }
1452     }
1453 }
1454 #[repr(transparent)]
1455 pub struct DeviceQueueCreateInfoBuilder<'a> {
1456     inner: DeviceQueueCreateInfo,
1457     marker: ::std::marker::PhantomData<&'a ()>,
1458 }
1459 pub unsafe trait ExtendsDeviceQueueCreateInfo {}
1460 impl<'a> ::std::ops::Deref for DeviceQueueCreateInfoBuilder<'a> {
1461     type Target = DeviceQueueCreateInfo;
deref(&self) -> &Self::Target1462     fn deref(&self) -> &Self::Target {
1463         &self.inner
1464     }
1465 }
1466 impl<'a> ::std::ops::DerefMut for DeviceQueueCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1467     fn deref_mut(&mut self) -> &mut Self::Target {
1468         &mut self.inner
1469     }
1470 }
1471 impl<'a> DeviceQueueCreateInfoBuilder<'a> {
flags(mut self, flags: DeviceQueueCreateFlags) -> Self1472     pub fn flags(mut self, flags: DeviceQueueCreateFlags) -> Self {
1473         self.inner.flags = flags;
1474         self
1475     }
queue_family_index(mut self, queue_family_index: u32) -> Self1476     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
1477         self.inner.queue_family_index = queue_family_index;
1478         self
1479     }
queue_priorities(mut self, queue_priorities: &'a [f32]) -> Self1480     pub fn queue_priorities(mut self, queue_priorities: &'a [f32]) -> Self {
1481         self.inner.queue_count = queue_priorities.len() as _;
1482         self.inner.p_queue_priorities = queue_priorities.as_ptr();
1483         self
1484     }
1485     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1486     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1487     #[doc = r" valid extension structs can be pushed into the chain."]
1488     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1489     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDeviceQueueCreateInfo>(mut self, next: &'a mut T) -> Self1490     pub fn push_next<T: ExtendsDeviceQueueCreateInfo>(mut self, next: &'a mut T) -> Self {
1491         unsafe {
1492             let next_ptr = next as *mut T as *mut BaseOutStructure;
1493             let last_next = ptr_chain_iter(next).last().unwrap();
1494             (*last_next).p_next = self.inner.p_next as _;
1495             self.inner.p_next = next_ptr as _;
1496         }
1497         self
1498     }
1499     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1500     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1501     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceQueueCreateInfo1502     pub fn build(self) -> DeviceQueueCreateInfo {
1503         self.inner
1504     }
1505 }
1506 #[repr(C)]
1507 #[derive(Copy, Clone, Debug)]
1508 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceCreateInfo.html>"]
1509 pub struct DeviceCreateInfo {
1510     pub s_type: StructureType,
1511     pub p_next: *const c_void,
1512     pub flags: DeviceCreateFlags,
1513     pub queue_create_info_count: u32,
1514     pub p_queue_create_infos: *const DeviceQueueCreateInfo,
1515     pub enabled_layer_count: u32,
1516     pub pp_enabled_layer_names: *const *const c_char,
1517     pub enabled_extension_count: u32,
1518     pub pp_enabled_extension_names: *const *const c_char,
1519     pub p_enabled_features: *const PhysicalDeviceFeatures,
1520 }
1521 impl ::std::default::Default for DeviceCreateInfo {
default() -> DeviceCreateInfo1522     fn default() -> DeviceCreateInfo {
1523         DeviceCreateInfo {
1524             s_type: StructureType::DEVICE_CREATE_INFO,
1525             p_next: ::std::ptr::null(),
1526             flags: DeviceCreateFlags::default(),
1527             queue_create_info_count: u32::default(),
1528             p_queue_create_infos: ::std::ptr::null(),
1529             enabled_layer_count: u32::default(),
1530             pp_enabled_layer_names: ::std::ptr::null(),
1531             enabled_extension_count: u32::default(),
1532             pp_enabled_extension_names: ::std::ptr::null(),
1533             p_enabled_features: ::std::ptr::null(),
1534         }
1535     }
1536 }
1537 impl DeviceCreateInfo {
builder<'a>() -> DeviceCreateInfoBuilder<'a>1538     pub fn builder<'a>() -> DeviceCreateInfoBuilder<'a> {
1539         DeviceCreateInfoBuilder {
1540             inner: DeviceCreateInfo::default(),
1541             marker: ::std::marker::PhantomData,
1542         }
1543     }
1544 }
1545 #[repr(transparent)]
1546 pub struct DeviceCreateInfoBuilder<'a> {
1547     inner: DeviceCreateInfo,
1548     marker: ::std::marker::PhantomData<&'a ()>,
1549 }
1550 pub unsafe trait ExtendsDeviceCreateInfo {}
1551 impl<'a> ::std::ops::Deref for DeviceCreateInfoBuilder<'a> {
1552     type Target = DeviceCreateInfo;
deref(&self) -> &Self::Target1553     fn deref(&self) -> &Self::Target {
1554         &self.inner
1555     }
1556 }
1557 impl<'a> ::std::ops::DerefMut for DeviceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1558     fn deref_mut(&mut self) -> &mut Self::Target {
1559         &mut self.inner
1560     }
1561 }
1562 impl<'a> DeviceCreateInfoBuilder<'a> {
flags(mut self, flags: DeviceCreateFlags) -> Self1563     pub fn flags(mut self, flags: DeviceCreateFlags) -> Self {
1564         self.inner.flags = flags;
1565         self
1566     }
queue_create_infos(mut self, queue_create_infos: &'a [DeviceQueueCreateInfo]) -> Self1567     pub fn queue_create_infos(mut self, queue_create_infos: &'a [DeviceQueueCreateInfo]) -> Self {
1568         self.inner.queue_create_info_count = queue_create_infos.len() as _;
1569         self.inner.p_queue_create_infos = queue_create_infos.as_ptr();
1570         self
1571     }
enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self1572     pub fn enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self {
1573         self.inner.enabled_layer_count = enabled_layer_names.len() as _;
1574         self.inner.pp_enabled_layer_names = enabled_layer_names.as_ptr();
1575         self
1576     }
enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self1577     pub fn enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self {
1578         self.inner.enabled_extension_count = enabled_extension_names.len() as _;
1579         self.inner.pp_enabled_extension_names = enabled_extension_names.as_ptr();
1580         self
1581     }
enabled_features(mut self, enabled_features: &'a PhysicalDeviceFeatures) -> Self1582     pub fn enabled_features(mut self, enabled_features: &'a PhysicalDeviceFeatures) -> Self {
1583         self.inner.p_enabled_features = enabled_features;
1584         self
1585     }
1586     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1587     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1588     #[doc = r" valid extension structs can be pushed into the chain."]
1589     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1590     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDeviceCreateInfo>(mut self, next: &'a mut T) -> Self1591     pub fn push_next<T: ExtendsDeviceCreateInfo>(mut self, next: &'a mut T) -> Self {
1592         unsafe {
1593             let next_ptr = next as *mut T as *mut BaseOutStructure;
1594             let last_next = ptr_chain_iter(next).last().unwrap();
1595             (*last_next).p_next = self.inner.p_next as _;
1596             self.inner.p_next = next_ptr as _;
1597         }
1598         self
1599     }
1600     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1601     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1602     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceCreateInfo1603     pub fn build(self) -> DeviceCreateInfo {
1604         self.inner
1605     }
1606 }
1607 #[repr(C)]
1608 #[derive(Copy, Clone, Debug)]
1609 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstanceCreateInfo.html>"]
1610 pub struct InstanceCreateInfo {
1611     pub s_type: StructureType,
1612     pub p_next: *const c_void,
1613     pub flags: InstanceCreateFlags,
1614     pub p_application_info: *const ApplicationInfo,
1615     pub enabled_layer_count: u32,
1616     pub pp_enabled_layer_names: *const *const c_char,
1617     pub enabled_extension_count: u32,
1618     pub pp_enabled_extension_names: *const *const c_char,
1619 }
1620 impl ::std::default::Default for InstanceCreateInfo {
default() -> InstanceCreateInfo1621     fn default() -> InstanceCreateInfo {
1622         InstanceCreateInfo {
1623             s_type: StructureType::INSTANCE_CREATE_INFO,
1624             p_next: ::std::ptr::null(),
1625             flags: InstanceCreateFlags::default(),
1626             p_application_info: ::std::ptr::null(),
1627             enabled_layer_count: u32::default(),
1628             pp_enabled_layer_names: ::std::ptr::null(),
1629             enabled_extension_count: u32::default(),
1630             pp_enabled_extension_names: ::std::ptr::null(),
1631         }
1632     }
1633 }
1634 impl InstanceCreateInfo {
builder<'a>() -> InstanceCreateInfoBuilder<'a>1635     pub fn builder<'a>() -> InstanceCreateInfoBuilder<'a> {
1636         InstanceCreateInfoBuilder {
1637             inner: InstanceCreateInfo::default(),
1638             marker: ::std::marker::PhantomData,
1639         }
1640     }
1641 }
1642 #[repr(transparent)]
1643 pub struct InstanceCreateInfoBuilder<'a> {
1644     inner: InstanceCreateInfo,
1645     marker: ::std::marker::PhantomData<&'a ()>,
1646 }
1647 pub unsafe trait ExtendsInstanceCreateInfo {}
1648 impl<'a> ::std::ops::Deref for InstanceCreateInfoBuilder<'a> {
1649     type Target = InstanceCreateInfo;
deref(&self) -> &Self::Target1650     fn deref(&self) -> &Self::Target {
1651         &self.inner
1652     }
1653 }
1654 impl<'a> ::std::ops::DerefMut for InstanceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1655     fn deref_mut(&mut self) -> &mut Self::Target {
1656         &mut self.inner
1657     }
1658 }
1659 impl<'a> InstanceCreateInfoBuilder<'a> {
flags(mut self, flags: InstanceCreateFlags) -> Self1660     pub fn flags(mut self, flags: InstanceCreateFlags) -> Self {
1661         self.inner.flags = flags;
1662         self
1663     }
application_info(mut self, application_info: &'a ApplicationInfo) -> Self1664     pub fn application_info(mut self, application_info: &'a ApplicationInfo) -> Self {
1665         self.inner.p_application_info = application_info;
1666         self
1667     }
enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self1668     pub fn enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self {
1669         self.inner.enabled_layer_count = enabled_layer_names.len() as _;
1670         self.inner.pp_enabled_layer_names = enabled_layer_names.as_ptr();
1671         self
1672     }
enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self1673     pub fn enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self {
1674         self.inner.enabled_extension_count = enabled_extension_names.len() as _;
1675         self.inner.pp_enabled_extension_names = enabled_extension_names.as_ptr();
1676         self
1677     }
1678     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1679     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1680     #[doc = r" valid extension structs can be pushed into the chain."]
1681     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1682     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsInstanceCreateInfo>(mut self, next: &'a mut T) -> Self1683     pub fn push_next<T: ExtendsInstanceCreateInfo>(mut self, next: &'a mut T) -> Self {
1684         unsafe {
1685             let next_ptr = next as *mut T as *mut BaseOutStructure;
1686             let last_next = ptr_chain_iter(next).last().unwrap();
1687             (*last_next).p_next = self.inner.p_next as _;
1688             self.inner.p_next = next_ptr as _;
1689         }
1690         self
1691     }
1692     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1693     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1694     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> InstanceCreateInfo1695     pub fn build(self) -> InstanceCreateInfo {
1696         self.inner
1697     }
1698 }
1699 #[repr(C)]
1700 #[derive(Copy, Clone, Default, Debug)]
1701 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyProperties.html>"]
1702 pub struct QueueFamilyProperties {
1703     pub queue_flags: QueueFlags,
1704     pub queue_count: u32,
1705     pub timestamp_valid_bits: u32,
1706     pub min_image_transfer_granularity: Extent3D,
1707 }
1708 impl QueueFamilyProperties {
builder<'a>() -> QueueFamilyPropertiesBuilder<'a>1709     pub fn builder<'a>() -> QueueFamilyPropertiesBuilder<'a> {
1710         QueueFamilyPropertiesBuilder {
1711             inner: QueueFamilyProperties::default(),
1712             marker: ::std::marker::PhantomData,
1713         }
1714     }
1715 }
1716 #[repr(transparent)]
1717 pub struct QueueFamilyPropertiesBuilder<'a> {
1718     inner: QueueFamilyProperties,
1719     marker: ::std::marker::PhantomData<&'a ()>,
1720 }
1721 impl<'a> ::std::ops::Deref for QueueFamilyPropertiesBuilder<'a> {
1722     type Target = QueueFamilyProperties;
deref(&self) -> &Self::Target1723     fn deref(&self) -> &Self::Target {
1724         &self.inner
1725     }
1726 }
1727 impl<'a> ::std::ops::DerefMut for QueueFamilyPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1728     fn deref_mut(&mut self) -> &mut Self::Target {
1729         &mut self.inner
1730     }
1731 }
1732 impl<'a> QueueFamilyPropertiesBuilder<'a> {
queue_flags(mut self, queue_flags: QueueFlags) -> Self1733     pub fn queue_flags(mut self, queue_flags: QueueFlags) -> Self {
1734         self.inner.queue_flags = queue_flags;
1735         self
1736     }
queue_count(mut self, queue_count: u32) -> Self1737     pub fn queue_count(mut self, queue_count: u32) -> Self {
1738         self.inner.queue_count = queue_count;
1739         self
1740     }
timestamp_valid_bits(mut self, timestamp_valid_bits: u32) -> Self1741     pub fn timestamp_valid_bits(mut self, timestamp_valid_bits: u32) -> Self {
1742         self.inner.timestamp_valid_bits = timestamp_valid_bits;
1743         self
1744     }
min_image_transfer_granularity( mut self, min_image_transfer_granularity: Extent3D, ) -> Self1745     pub fn min_image_transfer_granularity(
1746         mut self,
1747         min_image_transfer_granularity: Extent3D,
1748     ) -> Self {
1749         self.inner.min_image_transfer_granularity = min_image_transfer_granularity;
1750         self
1751     }
1752     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1753     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1754     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyProperties1755     pub fn build(self) -> QueueFamilyProperties {
1756         self.inner
1757     }
1758 }
1759 #[repr(C)]
1760 #[derive(Copy, Clone, Debug)]
1761 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryProperties.html>"]
1762 pub struct PhysicalDeviceMemoryProperties {
1763     pub memory_type_count: u32,
1764     pub memory_types: [MemoryType; MAX_MEMORY_TYPES],
1765     pub memory_heap_count: u32,
1766     pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS],
1767 }
1768 impl ::std::default::Default for PhysicalDeviceMemoryProperties {
default() -> PhysicalDeviceMemoryProperties1769     fn default() -> PhysicalDeviceMemoryProperties {
1770         PhysicalDeviceMemoryProperties {
1771             memory_type_count: u32::default(),
1772             memory_types: unsafe { ::std::mem::zeroed() },
1773             memory_heap_count: u32::default(),
1774             memory_heaps: unsafe { ::std::mem::zeroed() },
1775         }
1776     }
1777 }
1778 impl PhysicalDeviceMemoryProperties {
builder<'a>() -> PhysicalDeviceMemoryPropertiesBuilder<'a>1779     pub fn builder<'a>() -> PhysicalDeviceMemoryPropertiesBuilder<'a> {
1780         PhysicalDeviceMemoryPropertiesBuilder {
1781             inner: PhysicalDeviceMemoryProperties::default(),
1782             marker: ::std::marker::PhantomData,
1783         }
1784     }
1785 }
1786 #[repr(transparent)]
1787 pub struct PhysicalDeviceMemoryPropertiesBuilder<'a> {
1788     inner: PhysicalDeviceMemoryProperties,
1789     marker: ::std::marker::PhantomData<&'a ()>,
1790 }
1791 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryPropertiesBuilder<'a> {
1792     type Target = PhysicalDeviceMemoryProperties;
deref(&self) -> &Self::Target1793     fn deref(&self) -> &Self::Target {
1794         &self.inner
1795     }
1796 }
1797 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1798     fn deref_mut(&mut self) -> &mut Self::Target {
1799         &mut self.inner
1800     }
1801 }
1802 impl<'a> PhysicalDeviceMemoryPropertiesBuilder<'a> {
memory_type_count(mut self, memory_type_count: u32) -> Self1803     pub fn memory_type_count(mut self, memory_type_count: u32) -> Self {
1804         self.inner.memory_type_count = memory_type_count;
1805         self
1806     }
memory_types(mut self, memory_types: [MemoryType; MAX_MEMORY_TYPES]) -> Self1807     pub fn memory_types(mut self, memory_types: [MemoryType; MAX_MEMORY_TYPES]) -> Self {
1808         self.inner.memory_types = memory_types;
1809         self
1810     }
memory_heap_count(mut self, memory_heap_count: u32) -> Self1811     pub fn memory_heap_count(mut self, memory_heap_count: u32) -> Self {
1812         self.inner.memory_heap_count = memory_heap_count;
1813         self
1814     }
memory_heaps(mut self, memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS]) -> Self1815     pub fn memory_heaps(mut self, memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS]) -> Self {
1816         self.inner.memory_heaps = memory_heaps;
1817         self
1818     }
1819     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1820     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1821     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryProperties1822     pub fn build(self) -> PhysicalDeviceMemoryProperties {
1823         self.inner
1824     }
1825 }
1826 #[repr(C)]
1827 #[derive(Copy, Clone, Debug)]
1828 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryAllocateInfo.html>"]
1829 pub struct MemoryAllocateInfo {
1830     pub s_type: StructureType,
1831     pub p_next: *const c_void,
1832     pub allocation_size: DeviceSize,
1833     pub memory_type_index: u32,
1834 }
1835 impl ::std::default::Default for MemoryAllocateInfo {
default() -> MemoryAllocateInfo1836     fn default() -> MemoryAllocateInfo {
1837         MemoryAllocateInfo {
1838             s_type: StructureType::MEMORY_ALLOCATE_INFO,
1839             p_next: ::std::ptr::null(),
1840             allocation_size: DeviceSize::default(),
1841             memory_type_index: u32::default(),
1842         }
1843     }
1844 }
1845 impl MemoryAllocateInfo {
builder<'a>() -> MemoryAllocateInfoBuilder<'a>1846     pub fn builder<'a>() -> MemoryAllocateInfoBuilder<'a> {
1847         MemoryAllocateInfoBuilder {
1848             inner: MemoryAllocateInfo::default(),
1849             marker: ::std::marker::PhantomData,
1850         }
1851     }
1852 }
1853 #[repr(transparent)]
1854 pub struct MemoryAllocateInfoBuilder<'a> {
1855     inner: MemoryAllocateInfo,
1856     marker: ::std::marker::PhantomData<&'a ()>,
1857 }
1858 pub unsafe trait ExtendsMemoryAllocateInfo {}
1859 impl<'a> ::std::ops::Deref for MemoryAllocateInfoBuilder<'a> {
1860     type Target = MemoryAllocateInfo;
deref(&self) -> &Self::Target1861     fn deref(&self) -> &Self::Target {
1862         &self.inner
1863     }
1864 }
1865 impl<'a> ::std::ops::DerefMut for MemoryAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1866     fn deref_mut(&mut self) -> &mut Self::Target {
1867         &mut self.inner
1868     }
1869 }
1870 impl<'a> MemoryAllocateInfoBuilder<'a> {
allocation_size(mut self, allocation_size: DeviceSize) -> Self1871     pub fn allocation_size(mut self, allocation_size: DeviceSize) -> Self {
1872         self.inner.allocation_size = allocation_size;
1873         self
1874     }
memory_type_index(mut self, memory_type_index: u32) -> Self1875     pub fn memory_type_index(mut self, memory_type_index: u32) -> Self {
1876         self.inner.memory_type_index = memory_type_index;
1877         self
1878     }
1879     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1880     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1881     #[doc = r" valid extension structs can be pushed into the chain."]
1882     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1883     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsMemoryAllocateInfo>(mut self, next: &'a mut T) -> Self1884     pub fn push_next<T: ExtendsMemoryAllocateInfo>(mut self, next: &'a mut T) -> Self {
1885         unsafe {
1886             let next_ptr = next as *mut T as *mut BaseOutStructure;
1887             let last_next = ptr_chain_iter(next).last().unwrap();
1888             (*last_next).p_next = self.inner.p_next as _;
1889             self.inner.p_next = next_ptr as _;
1890         }
1891         self
1892     }
1893     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1894     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1895     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryAllocateInfo1896     pub fn build(self) -> MemoryAllocateInfo {
1897         self.inner
1898     }
1899 }
1900 #[repr(C)]
1901 #[derive(Copy, Clone, Default, Debug)]
1902 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryRequirements.html>"]
1903 pub struct MemoryRequirements {
1904     pub size: DeviceSize,
1905     pub alignment: DeviceSize,
1906     pub memory_type_bits: u32,
1907 }
1908 impl MemoryRequirements {
builder<'a>() -> MemoryRequirementsBuilder<'a>1909     pub fn builder<'a>() -> MemoryRequirementsBuilder<'a> {
1910         MemoryRequirementsBuilder {
1911             inner: MemoryRequirements::default(),
1912             marker: ::std::marker::PhantomData,
1913         }
1914     }
1915 }
1916 #[repr(transparent)]
1917 pub struct MemoryRequirementsBuilder<'a> {
1918     inner: MemoryRequirements,
1919     marker: ::std::marker::PhantomData<&'a ()>,
1920 }
1921 impl<'a> ::std::ops::Deref for MemoryRequirementsBuilder<'a> {
1922     type Target = MemoryRequirements;
deref(&self) -> &Self::Target1923     fn deref(&self) -> &Self::Target {
1924         &self.inner
1925     }
1926 }
1927 impl<'a> ::std::ops::DerefMut for MemoryRequirementsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1928     fn deref_mut(&mut self) -> &mut Self::Target {
1929         &mut self.inner
1930     }
1931 }
1932 impl<'a> MemoryRequirementsBuilder<'a> {
size(mut self, size: DeviceSize) -> Self1933     pub fn size(mut self, size: DeviceSize) -> Self {
1934         self.inner.size = size;
1935         self
1936     }
alignment(mut self, alignment: DeviceSize) -> Self1937     pub fn alignment(mut self, alignment: DeviceSize) -> Self {
1938         self.inner.alignment = alignment;
1939         self
1940     }
memory_type_bits(mut self, memory_type_bits: u32) -> Self1941     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
1942         self.inner.memory_type_bits = memory_type_bits;
1943         self
1944     }
1945     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1946     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1947     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryRequirements1948     pub fn build(self) -> MemoryRequirements {
1949         self.inner
1950     }
1951 }
1952 #[repr(C)]
1953 #[derive(Copy, Clone, Default, Debug)]
1954 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatProperties.html>"]
1955 pub struct SparseImageFormatProperties {
1956     pub aspect_mask: ImageAspectFlags,
1957     pub image_granularity: Extent3D,
1958     pub flags: SparseImageFormatFlags,
1959 }
1960 impl SparseImageFormatProperties {
builder<'a>() -> SparseImageFormatPropertiesBuilder<'a>1961     pub fn builder<'a>() -> SparseImageFormatPropertiesBuilder<'a> {
1962         SparseImageFormatPropertiesBuilder {
1963             inner: SparseImageFormatProperties::default(),
1964             marker: ::std::marker::PhantomData,
1965         }
1966     }
1967 }
1968 #[repr(transparent)]
1969 pub struct SparseImageFormatPropertiesBuilder<'a> {
1970     inner: SparseImageFormatProperties,
1971     marker: ::std::marker::PhantomData<&'a ()>,
1972 }
1973 impl<'a> ::std::ops::Deref for SparseImageFormatPropertiesBuilder<'a> {
1974     type Target = SparseImageFormatProperties;
deref(&self) -> &Self::Target1975     fn deref(&self) -> &Self::Target {
1976         &self.inner
1977     }
1978 }
1979 impl<'a> ::std::ops::DerefMut for SparseImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1980     fn deref_mut(&mut self) -> &mut Self::Target {
1981         &mut self.inner
1982     }
1983 }
1984 impl<'a> SparseImageFormatPropertiesBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self1985     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
1986         self.inner.aspect_mask = aspect_mask;
1987         self
1988     }
image_granularity(mut self, image_granularity: Extent3D) -> Self1989     pub fn image_granularity(mut self, image_granularity: Extent3D) -> Self {
1990         self.inner.image_granularity = image_granularity;
1991         self
1992     }
flags(mut self, flags: SparseImageFormatFlags) -> Self1993     pub fn flags(mut self, flags: SparseImageFormatFlags) -> Self {
1994         self.inner.flags = flags;
1995         self
1996     }
1997     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1998     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1999     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageFormatProperties2000     pub fn build(self) -> SparseImageFormatProperties {
2001         self.inner
2002     }
2003 }
2004 #[repr(C)]
2005 #[derive(Copy, Clone, Default, Debug)]
2006 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryRequirements.html>"]
2007 pub struct SparseImageMemoryRequirements {
2008     pub format_properties: SparseImageFormatProperties,
2009     pub image_mip_tail_first_lod: u32,
2010     pub image_mip_tail_size: DeviceSize,
2011     pub image_mip_tail_offset: DeviceSize,
2012     pub image_mip_tail_stride: DeviceSize,
2013 }
2014 impl SparseImageMemoryRequirements {
builder<'a>() -> SparseImageMemoryRequirementsBuilder<'a>2015     pub fn builder<'a>() -> SparseImageMemoryRequirementsBuilder<'a> {
2016         SparseImageMemoryRequirementsBuilder {
2017             inner: SparseImageMemoryRequirements::default(),
2018             marker: ::std::marker::PhantomData,
2019         }
2020     }
2021 }
2022 #[repr(transparent)]
2023 pub struct SparseImageMemoryRequirementsBuilder<'a> {
2024     inner: SparseImageMemoryRequirements,
2025     marker: ::std::marker::PhantomData<&'a ()>,
2026 }
2027 impl<'a> ::std::ops::Deref for SparseImageMemoryRequirementsBuilder<'a> {
2028     type Target = SparseImageMemoryRequirements;
deref(&self) -> &Self::Target2029     fn deref(&self) -> &Self::Target {
2030         &self.inner
2031     }
2032 }
2033 impl<'a> ::std::ops::DerefMut for SparseImageMemoryRequirementsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2034     fn deref_mut(&mut self) -> &mut Self::Target {
2035         &mut self.inner
2036     }
2037 }
2038 impl<'a> SparseImageMemoryRequirementsBuilder<'a> {
format_properties(mut self, format_properties: SparseImageFormatProperties) -> Self2039     pub fn format_properties(mut self, format_properties: SparseImageFormatProperties) -> Self {
2040         self.inner.format_properties = format_properties;
2041         self
2042     }
image_mip_tail_first_lod(mut self, image_mip_tail_first_lod: u32) -> Self2043     pub fn image_mip_tail_first_lod(mut self, image_mip_tail_first_lod: u32) -> Self {
2044         self.inner.image_mip_tail_first_lod = image_mip_tail_first_lod;
2045         self
2046     }
image_mip_tail_size(mut self, image_mip_tail_size: DeviceSize) -> Self2047     pub fn image_mip_tail_size(mut self, image_mip_tail_size: DeviceSize) -> Self {
2048         self.inner.image_mip_tail_size = image_mip_tail_size;
2049         self
2050     }
image_mip_tail_offset(mut self, image_mip_tail_offset: DeviceSize) -> Self2051     pub fn image_mip_tail_offset(mut self, image_mip_tail_offset: DeviceSize) -> Self {
2052         self.inner.image_mip_tail_offset = image_mip_tail_offset;
2053         self
2054     }
image_mip_tail_stride(mut self, image_mip_tail_stride: DeviceSize) -> Self2055     pub fn image_mip_tail_stride(mut self, image_mip_tail_stride: DeviceSize) -> Self {
2056         self.inner.image_mip_tail_stride = image_mip_tail_stride;
2057         self
2058     }
2059     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2060     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2061     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryRequirements2062     pub fn build(self) -> SparseImageMemoryRequirements {
2063         self.inner
2064     }
2065 }
2066 #[repr(C)]
2067 #[derive(Copy, Clone, Default, Debug)]
2068 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryType.html>"]
2069 pub struct MemoryType {
2070     pub property_flags: MemoryPropertyFlags,
2071     pub heap_index: u32,
2072 }
2073 impl MemoryType {
builder<'a>() -> MemoryTypeBuilder<'a>2074     pub fn builder<'a>() -> MemoryTypeBuilder<'a> {
2075         MemoryTypeBuilder {
2076             inner: MemoryType::default(),
2077             marker: ::std::marker::PhantomData,
2078         }
2079     }
2080 }
2081 #[repr(transparent)]
2082 pub struct MemoryTypeBuilder<'a> {
2083     inner: MemoryType,
2084     marker: ::std::marker::PhantomData<&'a ()>,
2085 }
2086 impl<'a> ::std::ops::Deref for MemoryTypeBuilder<'a> {
2087     type Target = MemoryType;
deref(&self) -> &Self::Target2088     fn deref(&self) -> &Self::Target {
2089         &self.inner
2090     }
2091 }
2092 impl<'a> ::std::ops::DerefMut for MemoryTypeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2093     fn deref_mut(&mut self) -> &mut Self::Target {
2094         &mut self.inner
2095     }
2096 }
2097 impl<'a> MemoryTypeBuilder<'a> {
property_flags(mut self, property_flags: MemoryPropertyFlags) -> Self2098     pub fn property_flags(mut self, property_flags: MemoryPropertyFlags) -> Self {
2099         self.inner.property_flags = property_flags;
2100         self
2101     }
heap_index(mut self, heap_index: u32) -> Self2102     pub fn heap_index(mut self, heap_index: u32) -> Self {
2103         self.inner.heap_index = heap_index;
2104         self
2105     }
2106     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2107     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2108     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryType2109     pub fn build(self) -> MemoryType {
2110         self.inner
2111     }
2112 }
2113 #[repr(C)]
2114 #[derive(Copy, Clone, Default, Debug)]
2115 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHeap.html>"]
2116 pub struct MemoryHeap {
2117     pub size: DeviceSize,
2118     pub flags: MemoryHeapFlags,
2119 }
2120 impl MemoryHeap {
builder<'a>() -> MemoryHeapBuilder<'a>2121     pub fn builder<'a>() -> MemoryHeapBuilder<'a> {
2122         MemoryHeapBuilder {
2123             inner: MemoryHeap::default(),
2124             marker: ::std::marker::PhantomData,
2125         }
2126     }
2127 }
2128 #[repr(transparent)]
2129 pub struct MemoryHeapBuilder<'a> {
2130     inner: MemoryHeap,
2131     marker: ::std::marker::PhantomData<&'a ()>,
2132 }
2133 impl<'a> ::std::ops::Deref for MemoryHeapBuilder<'a> {
2134     type Target = MemoryHeap;
deref(&self) -> &Self::Target2135     fn deref(&self) -> &Self::Target {
2136         &self.inner
2137     }
2138 }
2139 impl<'a> ::std::ops::DerefMut for MemoryHeapBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2140     fn deref_mut(&mut self) -> &mut Self::Target {
2141         &mut self.inner
2142     }
2143 }
2144 impl<'a> MemoryHeapBuilder<'a> {
size(mut self, size: DeviceSize) -> Self2145     pub fn size(mut self, size: DeviceSize) -> Self {
2146         self.inner.size = size;
2147         self
2148     }
flags(mut self, flags: MemoryHeapFlags) -> Self2149     pub fn flags(mut self, flags: MemoryHeapFlags) -> Self {
2150         self.inner.flags = flags;
2151         self
2152     }
2153     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2154     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2155     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryHeap2156     pub fn build(self) -> MemoryHeap {
2157         self.inner
2158     }
2159 }
2160 #[repr(C)]
2161 #[derive(Copy, Clone, Debug)]
2162 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMappedMemoryRange.html>"]
2163 pub struct MappedMemoryRange {
2164     pub s_type: StructureType,
2165     pub p_next: *const c_void,
2166     pub memory: DeviceMemory,
2167     pub offset: DeviceSize,
2168     pub size: DeviceSize,
2169 }
2170 impl ::std::default::Default for MappedMemoryRange {
default() -> MappedMemoryRange2171     fn default() -> MappedMemoryRange {
2172         MappedMemoryRange {
2173             s_type: StructureType::MAPPED_MEMORY_RANGE,
2174             p_next: ::std::ptr::null(),
2175             memory: DeviceMemory::default(),
2176             offset: DeviceSize::default(),
2177             size: DeviceSize::default(),
2178         }
2179     }
2180 }
2181 impl MappedMemoryRange {
builder<'a>() -> MappedMemoryRangeBuilder<'a>2182     pub fn builder<'a>() -> MappedMemoryRangeBuilder<'a> {
2183         MappedMemoryRangeBuilder {
2184             inner: MappedMemoryRange::default(),
2185             marker: ::std::marker::PhantomData,
2186         }
2187     }
2188 }
2189 #[repr(transparent)]
2190 pub struct MappedMemoryRangeBuilder<'a> {
2191     inner: MappedMemoryRange,
2192     marker: ::std::marker::PhantomData<&'a ()>,
2193 }
2194 impl<'a> ::std::ops::Deref for MappedMemoryRangeBuilder<'a> {
2195     type Target = MappedMemoryRange;
deref(&self) -> &Self::Target2196     fn deref(&self) -> &Self::Target {
2197         &self.inner
2198     }
2199 }
2200 impl<'a> ::std::ops::DerefMut for MappedMemoryRangeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2201     fn deref_mut(&mut self) -> &mut Self::Target {
2202         &mut self.inner
2203     }
2204 }
2205 impl<'a> MappedMemoryRangeBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self2206     pub fn memory(mut self, memory: DeviceMemory) -> Self {
2207         self.inner.memory = memory;
2208         self
2209     }
offset(mut self, offset: DeviceSize) -> Self2210     pub fn offset(mut self, offset: DeviceSize) -> Self {
2211         self.inner.offset = offset;
2212         self
2213     }
size(mut self, size: DeviceSize) -> Self2214     pub fn size(mut self, size: DeviceSize) -> Self {
2215         self.inner.size = size;
2216         self
2217     }
2218     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2219     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2220     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MappedMemoryRange2221     pub fn build(self) -> MappedMemoryRange {
2222         self.inner
2223     }
2224 }
2225 #[repr(C)]
2226 #[derive(Copy, Clone, Default, Debug)]
2227 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatProperties.html>"]
2228 pub struct FormatProperties {
2229     pub linear_tiling_features: FormatFeatureFlags,
2230     pub optimal_tiling_features: FormatFeatureFlags,
2231     pub buffer_features: FormatFeatureFlags,
2232 }
2233 impl FormatProperties {
builder<'a>() -> FormatPropertiesBuilder<'a>2234     pub fn builder<'a>() -> FormatPropertiesBuilder<'a> {
2235         FormatPropertiesBuilder {
2236             inner: FormatProperties::default(),
2237             marker: ::std::marker::PhantomData,
2238         }
2239     }
2240 }
2241 #[repr(transparent)]
2242 pub struct FormatPropertiesBuilder<'a> {
2243     inner: FormatProperties,
2244     marker: ::std::marker::PhantomData<&'a ()>,
2245 }
2246 impl<'a> ::std::ops::Deref for FormatPropertiesBuilder<'a> {
2247     type Target = FormatProperties;
deref(&self) -> &Self::Target2248     fn deref(&self) -> &Self::Target {
2249         &self.inner
2250     }
2251 }
2252 impl<'a> ::std::ops::DerefMut for FormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2253     fn deref_mut(&mut self) -> &mut Self::Target {
2254         &mut self.inner
2255     }
2256 }
2257 impl<'a> FormatPropertiesBuilder<'a> {
linear_tiling_features(mut self, linear_tiling_features: FormatFeatureFlags) -> Self2258     pub fn linear_tiling_features(mut self, linear_tiling_features: FormatFeatureFlags) -> Self {
2259         self.inner.linear_tiling_features = linear_tiling_features;
2260         self
2261     }
optimal_tiling_features(mut self, optimal_tiling_features: FormatFeatureFlags) -> Self2262     pub fn optimal_tiling_features(mut self, optimal_tiling_features: FormatFeatureFlags) -> Self {
2263         self.inner.optimal_tiling_features = optimal_tiling_features;
2264         self
2265     }
buffer_features(mut self, buffer_features: FormatFeatureFlags) -> Self2266     pub fn buffer_features(mut self, buffer_features: FormatFeatureFlags) -> Self {
2267         self.inner.buffer_features = buffer_features;
2268         self
2269     }
2270     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2271     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2272     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FormatProperties2273     pub fn build(self) -> FormatProperties {
2274         self.inner
2275     }
2276 }
2277 #[repr(C)]
2278 #[derive(Copy, Clone, Default, Debug)]
2279 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatProperties.html>"]
2280 pub struct ImageFormatProperties {
2281     pub max_extent: Extent3D,
2282     pub max_mip_levels: u32,
2283     pub max_array_layers: u32,
2284     pub sample_counts: SampleCountFlags,
2285     pub max_resource_size: DeviceSize,
2286 }
2287 impl ImageFormatProperties {
builder<'a>() -> ImageFormatPropertiesBuilder<'a>2288     pub fn builder<'a>() -> ImageFormatPropertiesBuilder<'a> {
2289         ImageFormatPropertiesBuilder {
2290             inner: ImageFormatProperties::default(),
2291             marker: ::std::marker::PhantomData,
2292         }
2293     }
2294 }
2295 #[repr(transparent)]
2296 pub struct ImageFormatPropertiesBuilder<'a> {
2297     inner: ImageFormatProperties,
2298     marker: ::std::marker::PhantomData<&'a ()>,
2299 }
2300 impl<'a> ::std::ops::Deref for ImageFormatPropertiesBuilder<'a> {
2301     type Target = ImageFormatProperties;
deref(&self) -> &Self::Target2302     fn deref(&self) -> &Self::Target {
2303         &self.inner
2304     }
2305 }
2306 impl<'a> ::std::ops::DerefMut for ImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2307     fn deref_mut(&mut self) -> &mut Self::Target {
2308         &mut self.inner
2309     }
2310 }
2311 impl<'a> ImageFormatPropertiesBuilder<'a> {
max_extent(mut self, max_extent: Extent3D) -> Self2312     pub fn max_extent(mut self, max_extent: Extent3D) -> Self {
2313         self.inner.max_extent = max_extent;
2314         self
2315     }
max_mip_levels(mut self, max_mip_levels: u32) -> Self2316     pub fn max_mip_levels(mut self, max_mip_levels: u32) -> Self {
2317         self.inner.max_mip_levels = max_mip_levels;
2318         self
2319     }
max_array_layers(mut self, max_array_layers: u32) -> Self2320     pub fn max_array_layers(mut self, max_array_layers: u32) -> Self {
2321         self.inner.max_array_layers = max_array_layers;
2322         self
2323     }
sample_counts(mut self, sample_counts: SampleCountFlags) -> Self2324     pub fn sample_counts(mut self, sample_counts: SampleCountFlags) -> Self {
2325         self.inner.sample_counts = sample_counts;
2326         self
2327     }
max_resource_size(mut self, max_resource_size: DeviceSize) -> Self2328     pub fn max_resource_size(mut self, max_resource_size: DeviceSize) -> Self {
2329         self.inner.max_resource_size = max_resource_size;
2330         self
2331     }
2332     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2333     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2334     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageFormatProperties2335     pub fn build(self) -> ImageFormatProperties {
2336         self.inner
2337     }
2338 }
2339 #[repr(C)]
2340 #[derive(Copy, Clone, Default, Debug)]
2341 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorBufferInfo.html>"]
2342 pub struct DescriptorBufferInfo {
2343     pub buffer: Buffer,
2344     pub offset: DeviceSize,
2345     pub range: DeviceSize,
2346 }
2347 impl DescriptorBufferInfo {
builder<'a>() -> DescriptorBufferInfoBuilder<'a>2348     pub fn builder<'a>() -> DescriptorBufferInfoBuilder<'a> {
2349         DescriptorBufferInfoBuilder {
2350             inner: DescriptorBufferInfo::default(),
2351             marker: ::std::marker::PhantomData,
2352         }
2353     }
2354 }
2355 #[repr(transparent)]
2356 pub struct DescriptorBufferInfoBuilder<'a> {
2357     inner: DescriptorBufferInfo,
2358     marker: ::std::marker::PhantomData<&'a ()>,
2359 }
2360 impl<'a> ::std::ops::Deref for DescriptorBufferInfoBuilder<'a> {
2361     type Target = DescriptorBufferInfo;
deref(&self) -> &Self::Target2362     fn deref(&self) -> &Self::Target {
2363         &self.inner
2364     }
2365 }
2366 impl<'a> ::std::ops::DerefMut for DescriptorBufferInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2367     fn deref_mut(&mut self) -> &mut Self::Target {
2368         &mut self.inner
2369     }
2370 }
2371 impl<'a> DescriptorBufferInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self2372     pub fn buffer(mut self, buffer: Buffer) -> Self {
2373         self.inner.buffer = buffer;
2374         self
2375     }
offset(mut self, offset: DeviceSize) -> Self2376     pub fn offset(mut self, offset: DeviceSize) -> Self {
2377         self.inner.offset = offset;
2378         self
2379     }
range(mut self, range: DeviceSize) -> Self2380     pub fn range(mut self, range: DeviceSize) -> Self {
2381         self.inner.range = range;
2382         self
2383     }
2384     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2385     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2386     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorBufferInfo2387     pub fn build(self) -> DescriptorBufferInfo {
2388         self.inner
2389     }
2390 }
2391 #[repr(C)]
2392 #[derive(Copy, Clone, Default, Debug)]
2393 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorImageInfo.html>"]
2394 pub struct DescriptorImageInfo {
2395     pub sampler: Sampler,
2396     pub image_view: ImageView,
2397     pub image_layout: ImageLayout,
2398 }
2399 impl DescriptorImageInfo {
builder<'a>() -> DescriptorImageInfoBuilder<'a>2400     pub fn builder<'a>() -> DescriptorImageInfoBuilder<'a> {
2401         DescriptorImageInfoBuilder {
2402             inner: DescriptorImageInfo::default(),
2403             marker: ::std::marker::PhantomData,
2404         }
2405     }
2406 }
2407 #[repr(transparent)]
2408 pub struct DescriptorImageInfoBuilder<'a> {
2409     inner: DescriptorImageInfo,
2410     marker: ::std::marker::PhantomData<&'a ()>,
2411 }
2412 impl<'a> ::std::ops::Deref for DescriptorImageInfoBuilder<'a> {
2413     type Target = DescriptorImageInfo;
deref(&self) -> &Self::Target2414     fn deref(&self) -> &Self::Target {
2415         &self.inner
2416     }
2417 }
2418 impl<'a> ::std::ops::DerefMut for DescriptorImageInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2419     fn deref_mut(&mut self) -> &mut Self::Target {
2420         &mut self.inner
2421     }
2422 }
2423 impl<'a> DescriptorImageInfoBuilder<'a> {
sampler(mut self, sampler: Sampler) -> Self2424     pub fn sampler(mut self, sampler: Sampler) -> Self {
2425         self.inner.sampler = sampler;
2426         self
2427     }
image_view(mut self, image_view: ImageView) -> Self2428     pub fn image_view(mut self, image_view: ImageView) -> Self {
2429         self.inner.image_view = image_view;
2430         self
2431     }
image_layout(mut self, image_layout: ImageLayout) -> Self2432     pub fn image_layout(mut self, image_layout: ImageLayout) -> Self {
2433         self.inner.image_layout = image_layout;
2434         self
2435     }
2436     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2437     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2438     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorImageInfo2439     pub fn build(self) -> DescriptorImageInfo {
2440         self.inner
2441     }
2442 }
2443 #[repr(C)]
2444 #[derive(Copy, Clone, Debug)]
2445 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSet.html>"]
2446 pub struct WriteDescriptorSet {
2447     pub s_type: StructureType,
2448     pub p_next: *const c_void,
2449     pub dst_set: DescriptorSet,
2450     pub dst_binding: u32,
2451     pub dst_array_element: u32,
2452     pub descriptor_count: u32,
2453     pub descriptor_type: DescriptorType,
2454     pub p_image_info: *const DescriptorImageInfo,
2455     pub p_buffer_info: *const DescriptorBufferInfo,
2456     pub p_texel_buffer_view: *const BufferView,
2457 }
2458 impl ::std::default::Default for WriteDescriptorSet {
default() -> WriteDescriptorSet2459     fn default() -> WriteDescriptorSet {
2460         WriteDescriptorSet {
2461             s_type: StructureType::WRITE_DESCRIPTOR_SET,
2462             p_next: ::std::ptr::null(),
2463             dst_set: DescriptorSet::default(),
2464             dst_binding: u32::default(),
2465             dst_array_element: u32::default(),
2466             descriptor_count: u32::default(),
2467             descriptor_type: DescriptorType::default(),
2468             p_image_info: ::std::ptr::null(),
2469             p_buffer_info: ::std::ptr::null(),
2470             p_texel_buffer_view: ::std::ptr::null(),
2471         }
2472     }
2473 }
2474 impl WriteDescriptorSet {
builder<'a>() -> WriteDescriptorSetBuilder<'a>2475     pub fn builder<'a>() -> WriteDescriptorSetBuilder<'a> {
2476         WriteDescriptorSetBuilder {
2477             inner: WriteDescriptorSet::default(),
2478             marker: ::std::marker::PhantomData,
2479         }
2480     }
2481 }
2482 #[repr(transparent)]
2483 pub struct WriteDescriptorSetBuilder<'a> {
2484     inner: WriteDescriptorSet,
2485     marker: ::std::marker::PhantomData<&'a ()>,
2486 }
2487 pub unsafe trait ExtendsWriteDescriptorSet {}
2488 impl<'a> ::std::ops::Deref for WriteDescriptorSetBuilder<'a> {
2489     type Target = WriteDescriptorSet;
deref(&self) -> &Self::Target2490     fn deref(&self) -> &Self::Target {
2491         &self.inner
2492     }
2493 }
2494 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2495     fn deref_mut(&mut self) -> &mut Self::Target {
2496         &mut self.inner
2497     }
2498 }
2499 impl<'a> WriteDescriptorSetBuilder<'a> {
dst_set(mut self, dst_set: DescriptorSet) -> Self2500     pub fn dst_set(mut self, dst_set: DescriptorSet) -> Self {
2501         self.inner.dst_set = dst_set;
2502         self
2503     }
dst_binding(mut self, dst_binding: u32) -> Self2504     pub fn dst_binding(mut self, dst_binding: u32) -> Self {
2505         self.inner.dst_binding = dst_binding;
2506         self
2507     }
dst_array_element(mut self, dst_array_element: u32) -> Self2508     pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
2509         self.inner.dst_array_element = dst_array_element;
2510         self
2511     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self2512     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
2513         self.inner.descriptor_type = descriptor_type;
2514         self
2515     }
image_info(mut self, image_info: &'a [DescriptorImageInfo]) -> Self2516     pub fn image_info(mut self, image_info: &'a [DescriptorImageInfo]) -> Self {
2517         self.inner.descriptor_count = image_info.len() as _;
2518         self.inner.p_image_info = image_info.as_ptr();
2519         self
2520     }
buffer_info(mut self, buffer_info: &'a [DescriptorBufferInfo]) -> Self2521     pub fn buffer_info(mut self, buffer_info: &'a [DescriptorBufferInfo]) -> Self {
2522         self.inner.descriptor_count = buffer_info.len() as _;
2523         self.inner.p_buffer_info = buffer_info.as_ptr();
2524         self
2525     }
texel_buffer_view(mut self, texel_buffer_view: &'a [BufferView]) -> Self2526     pub fn texel_buffer_view(mut self, texel_buffer_view: &'a [BufferView]) -> Self {
2527         self.inner.descriptor_count = texel_buffer_view.len() as _;
2528         self.inner.p_texel_buffer_view = texel_buffer_view.as_ptr();
2529         self
2530     }
2531     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
2532     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
2533     #[doc = r" valid extension structs can be pushed into the chain."]
2534     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
2535     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsWriteDescriptorSet>(mut self, next: &'a mut T) -> Self2536     pub fn push_next<T: ExtendsWriteDescriptorSet>(mut self, next: &'a mut T) -> Self {
2537         unsafe {
2538             let next_ptr = next as *mut T as *mut BaseOutStructure;
2539             let last_next = ptr_chain_iter(next).last().unwrap();
2540             (*last_next).p_next = self.inner.p_next as _;
2541             self.inner.p_next = next_ptr as _;
2542         }
2543         self
2544     }
2545     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2546     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2547     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSet2548     pub fn build(self) -> WriteDescriptorSet {
2549         self.inner
2550     }
2551 }
2552 #[repr(C)]
2553 #[derive(Copy, Clone, Debug)]
2554 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyDescriptorSet.html>"]
2555 pub struct CopyDescriptorSet {
2556     pub s_type: StructureType,
2557     pub p_next: *const c_void,
2558     pub src_set: DescriptorSet,
2559     pub src_binding: u32,
2560     pub src_array_element: u32,
2561     pub dst_set: DescriptorSet,
2562     pub dst_binding: u32,
2563     pub dst_array_element: u32,
2564     pub descriptor_count: u32,
2565 }
2566 impl ::std::default::Default for CopyDescriptorSet {
default() -> CopyDescriptorSet2567     fn default() -> CopyDescriptorSet {
2568         CopyDescriptorSet {
2569             s_type: StructureType::COPY_DESCRIPTOR_SET,
2570             p_next: ::std::ptr::null(),
2571             src_set: DescriptorSet::default(),
2572             src_binding: u32::default(),
2573             src_array_element: u32::default(),
2574             dst_set: DescriptorSet::default(),
2575             dst_binding: u32::default(),
2576             dst_array_element: u32::default(),
2577             descriptor_count: u32::default(),
2578         }
2579     }
2580 }
2581 impl CopyDescriptorSet {
builder<'a>() -> CopyDescriptorSetBuilder<'a>2582     pub fn builder<'a>() -> CopyDescriptorSetBuilder<'a> {
2583         CopyDescriptorSetBuilder {
2584             inner: CopyDescriptorSet::default(),
2585             marker: ::std::marker::PhantomData,
2586         }
2587     }
2588 }
2589 #[repr(transparent)]
2590 pub struct CopyDescriptorSetBuilder<'a> {
2591     inner: CopyDescriptorSet,
2592     marker: ::std::marker::PhantomData<&'a ()>,
2593 }
2594 impl<'a> ::std::ops::Deref for CopyDescriptorSetBuilder<'a> {
2595     type Target = CopyDescriptorSet;
deref(&self) -> &Self::Target2596     fn deref(&self) -> &Self::Target {
2597         &self.inner
2598     }
2599 }
2600 impl<'a> ::std::ops::DerefMut for CopyDescriptorSetBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2601     fn deref_mut(&mut self) -> &mut Self::Target {
2602         &mut self.inner
2603     }
2604 }
2605 impl<'a> CopyDescriptorSetBuilder<'a> {
src_set(mut self, src_set: DescriptorSet) -> Self2606     pub fn src_set(mut self, src_set: DescriptorSet) -> Self {
2607         self.inner.src_set = src_set;
2608         self
2609     }
src_binding(mut self, src_binding: u32) -> Self2610     pub fn src_binding(mut self, src_binding: u32) -> Self {
2611         self.inner.src_binding = src_binding;
2612         self
2613     }
src_array_element(mut self, src_array_element: u32) -> Self2614     pub fn src_array_element(mut self, src_array_element: u32) -> Self {
2615         self.inner.src_array_element = src_array_element;
2616         self
2617     }
dst_set(mut self, dst_set: DescriptorSet) -> Self2618     pub fn dst_set(mut self, dst_set: DescriptorSet) -> Self {
2619         self.inner.dst_set = dst_set;
2620         self
2621     }
dst_binding(mut self, dst_binding: u32) -> Self2622     pub fn dst_binding(mut self, dst_binding: u32) -> Self {
2623         self.inner.dst_binding = dst_binding;
2624         self
2625     }
dst_array_element(mut self, dst_array_element: u32) -> Self2626     pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
2627         self.inner.dst_array_element = dst_array_element;
2628         self
2629     }
descriptor_count(mut self, descriptor_count: u32) -> Self2630     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
2631         self.inner.descriptor_count = descriptor_count;
2632         self
2633     }
2634     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2635     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2636     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyDescriptorSet2637     pub fn build(self) -> CopyDescriptorSet {
2638         self.inner
2639     }
2640 }
2641 #[repr(C)]
2642 #[derive(Copy, Clone, Debug)]
2643 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCreateInfo.html>"]
2644 pub struct BufferCreateInfo {
2645     pub s_type: StructureType,
2646     pub p_next: *const c_void,
2647     pub flags: BufferCreateFlags,
2648     pub size: DeviceSize,
2649     pub usage: BufferUsageFlags,
2650     pub sharing_mode: SharingMode,
2651     pub queue_family_index_count: u32,
2652     pub p_queue_family_indices: *const u32,
2653 }
2654 impl ::std::default::Default for BufferCreateInfo {
default() -> BufferCreateInfo2655     fn default() -> BufferCreateInfo {
2656         BufferCreateInfo {
2657             s_type: StructureType::BUFFER_CREATE_INFO,
2658             p_next: ::std::ptr::null(),
2659             flags: BufferCreateFlags::default(),
2660             size: DeviceSize::default(),
2661             usage: BufferUsageFlags::default(),
2662             sharing_mode: SharingMode::default(),
2663             queue_family_index_count: u32::default(),
2664             p_queue_family_indices: ::std::ptr::null(),
2665         }
2666     }
2667 }
2668 impl BufferCreateInfo {
builder<'a>() -> BufferCreateInfoBuilder<'a>2669     pub fn builder<'a>() -> BufferCreateInfoBuilder<'a> {
2670         BufferCreateInfoBuilder {
2671             inner: BufferCreateInfo::default(),
2672             marker: ::std::marker::PhantomData,
2673         }
2674     }
2675 }
2676 #[repr(transparent)]
2677 pub struct BufferCreateInfoBuilder<'a> {
2678     inner: BufferCreateInfo,
2679     marker: ::std::marker::PhantomData<&'a ()>,
2680 }
2681 pub unsafe trait ExtendsBufferCreateInfo {}
2682 impl<'a> ::std::ops::Deref for BufferCreateInfoBuilder<'a> {
2683     type Target = BufferCreateInfo;
deref(&self) -> &Self::Target2684     fn deref(&self) -> &Self::Target {
2685         &self.inner
2686     }
2687 }
2688 impl<'a> ::std::ops::DerefMut for BufferCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2689     fn deref_mut(&mut self) -> &mut Self::Target {
2690         &mut self.inner
2691     }
2692 }
2693 impl<'a> BufferCreateInfoBuilder<'a> {
flags(mut self, flags: BufferCreateFlags) -> Self2694     pub fn flags(mut self, flags: BufferCreateFlags) -> Self {
2695         self.inner.flags = flags;
2696         self
2697     }
size(mut self, size: DeviceSize) -> Self2698     pub fn size(mut self, size: DeviceSize) -> Self {
2699         self.inner.size = size;
2700         self
2701     }
usage(mut self, usage: BufferUsageFlags) -> Self2702     pub fn usage(mut self, usage: BufferUsageFlags) -> Self {
2703         self.inner.usage = usage;
2704         self
2705     }
sharing_mode(mut self, sharing_mode: SharingMode) -> Self2706     pub fn sharing_mode(mut self, sharing_mode: SharingMode) -> Self {
2707         self.inner.sharing_mode = sharing_mode;
2708         self
2709     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self2710     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
2711         self.inner.queue_family_index_count = queue_family_indices.len() as _;
2712         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
2713         self
2714     }
2715     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
2716     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
2717     #[doc = r" valid extension structs can be pushed into the chain."]
2718     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
2719     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBufferCreateInfo>(mut self, next: &'a mut T) -> Self2720     pub fn push_next<T: ExtendsBufferCreateInfo>(mut self, next: &'a mut T) -> Self {
2721         unsafe {
2722             let next_ptr = next as *mut T as *mut BaseOutStructure;
2723             let last_next = ptr_chain_iter(next).last().unwrap();
2724             (*last_next).p_next = self.inner.p_next as _;
2725             self.inner.p_next = next_ptr as _;
2726         }
2727         self
2728     }
2729     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2730     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2731     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCreateInfo2732     pub fn build(self) -> BufferCreateInfo {
2733         self.inner
2734     }
2735 }
2736 #[repr(C)]
2737 #[derive(Copy, Clone, Debug)]
2738 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferViewCreateInfo.html>"]
2739 pub struct BufferViewCreateInfo {
2740     pub s_type: StructureType,
2741     pub p_next: *const c_void,
2742     pub flags: BufferViewCreateFlags,
2743     pub buffer: Buffer,
2744     pub format: Format,
2745     pub offset: DeviceSize,
2746     pub range: DeviceSize,
2747 }
2748 impl ::std::default::Default for BufferViewCreateInfo {
default() -> BufferViewCreateInfo2749     fn default() -> BufferViewCreateInfo {
2750         BufferViewCreateInfo {
2751             s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2752             p_next: ::std::ptr::null(),
2753             flags: BufferViewCreateFlags::default(),
2754             buffer: Buffer::default(),
2755             format: Format::default(),
2756             offset: DeviceSize::default(),
2757             range: DeviceSize::default(),
2758         }
2759     }
2760 }
2761 impl BufferViewCreateInfo {
builder<'a>() -> BufferViewCreateInfoBuilder<'a>2762     pub fn builder<'a>() -> BufferViewCreateInfoBuilder<'a> {
2763         BufferViewCreateInfoBuilder {
2764             inner: BufferViewCreateInfo::default(),
2765             marker: ::std::marker::PhantomData,
2766         }
2767     }
2768 }
2769 #[repr(transparent)]
2770 pub struct BufferViewCreateInfoBuilder<'a> {
2771     inner: BufferViewCreateInfo,
2772     marker: ::std::marker::PhantomData<&'a ()>,
2773 }
2774 impl<'a> ::std::ops::Deref for BufferViewCreateInfoBuilder<'a> {
2775     type Target = BufferViewCreateInfo;
deref(&self) -> &Self::Target2776     fn deref(&self) -> &Self::Target {
2777         &self.inner
2778     }
2779 }
2780 impl<'a> ::std::ops::DerefMut for BufferViewCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2781     fn deref_mut(&mut self) -> &mut Self::Target {
2782         &mut self.inner
2783     }
2784 }
2785 impl<'a> BufferViewCreateInfoBuilder<'a> {
flags(mut self, flags: BufferViewCreateFlags) -> Self2786     pub fn flags(mut self, flags: BufferViewCreateFlags) -> Self {
2787         self.inner.flags = flags;
2788         self
2789     }
buffer(mut self, buffer: Buffer) -> Self2790     pub fn buffer(mut self, buffer: Buffer) -> Self {
2791         self.inner.buffer = buffer;
2792         self
2793     }
format(mut self, format: Format) -> Self2794     pub fn format(mut self, format: Format) -> Self {
2795         self.inner.format = format;
2796         self
2797     }
offset(mut self, offset: DeviceSize) -> Self2798     pub fn offset(mut self, offset: DeviceSize) -> Self {
2799         self.inner.offset = offset;
2800         self
2801     }
range(mut self, range: DeviceSize) -> Self2802     pub fn range(mut self, range: DeviceSize) -> Self {
2803         self.inner.range = range;
2804         self
2805     }
2806     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2807     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2808     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferViewCreateInfo2809     pub fn build(self) -> BufferViewCreateInfo {
2810         self.inner
2811     }
2812 }
2813 #[repr(C)]
2814 #[derive(Copy, Clone, Default, Debug)]
2815 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresource.html>"]
2816 pub struct ImageSubresource {
2817     pub aspect_mask: ImageAspectFlags,
2818     pub mip_level: u32,
2819     pub array_layer: u32,
2820 }
2821 impl ImageSubresource {
builder<'a>() -> ImageSubresourceBuilder<'a>2822     pub fn builder<'a>() -> ImageSubresourceBuilder<'a> {
2823         ImageSubresourceBuilder {
2824             inner: ImageSubresource::default(),
2825             marker: ::std::marker::PhantomData,
2826         }
2827     }
2828 }
2829 #[repr(transparent)]
2830 pub struct ImageSubresourceBuilder<'a> {
2831     inner: ImageSubresource,
2832     marker: ::std::marker::PhantomData<&'a ()>,
2833 }
2834 impl<'a> ::std::ops::Deref for ImageSubresourceBuilder<'a> {
2835     type Target = ImageSubresource;
deref(&self) -> &Self::Target2836     fn deref(&self) -> &Self::Target {
2837         &self.inner
2838     }
2839 }
2840 impl<'a> ::std::ops::DerefMut for ImageSubresourceBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2841     fn deref_mut(&mut self) -> &mut Self::Target {
2842         &mut self.inner
2843     }
2844 }
2845 impl<'a> ImageSubresourceBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self2846     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
2847         self.inner.aspect_mask = aspect_mask;
2848         self
2849     }
mip_level(mut self, mip_level: u32) -> Self2850     pub fn mip_level(mut self, mip_level: u32) -> Self {
2851         self.inner.mip_level = mip_level;
2852         self
2853     }
array_layer(mut self, array_layer: u32) -> Self2854     pub fn array_layer(mut self, array_layer: u32) -> Self {
2855         self.inner.array_layer = array_layer;
2856         self
2857     }
2858     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2859     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2860     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSubresource2861     pub fn build(self) -> ImageSubresource {
2862         self.inner
2863     }
2864 }
2865 #[repr(C)]
2866 #[derive(Copy, Clone, Default, Debug)]
2867 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceLayers.html>"]
2868 pub struct ImageSubresourceLayers {
2869     pub aspect_mask: ImageAspectFlags,
2870     pub mip_level: u32,
2871     pub base_array_layer: u32,
2872     pub layer_count: u32,
2873 }
2874 impl ImageSubresourceLayers {
builder<'a>() -> ImageSubresourceLayersBuilder<'a>2875     pub fn builder<'a>() -> ImageSubresourceLayersBuilder<'a> {
2876         ImageSubresourceLayersBuilder {
2877             inner: ImageSubresourceLayers::default(),
2878             marker: ::std::marker::PhantomData,
2879         }
2880     }
2881 }
2882 #[repr(transparent)]
2883 pub struct ImageSubresourceLayersBuilder<'a> {
2884     inner: ImageSubresourceLayers,
2885     marker: ::std::marker::PhantomData<&'a ()>,
2886 }
2887 impl<'a> ::std::ops::Deref for ImageSubresourceLayersBuilder<'a> {
2888     type Target = ImageSubresourceLayers;
deref(&self) -> &Self::Target2889     fn deref(&self) -> &Self::Target {
2890         &self.inner
2891     }
2892 }
2893 impl<'a> ::std::ops::DerefMut for ImageSubresourceLayersBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2894     fn deref_mut(&mut self) -> &mut Self::Target {
2895         &mut self.inner
2896     }
2897 }
2898 impl<'a> ImageSubresourceLayersBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self2899     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
2900         self.inner.aspect_mask = aspect_mask;
2901         self
2902     }
mip_level(mut self, mip_level: u32) -> Self2903     pub fn mip_level(mut self, mip_level: u32) -> Self {
2904         self.inner.mip_level = mip_level;
2905         self
2906     }
base_array_layer(mut self, base_array_layer: u32) -> Self2907     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
2908         self.inner.base_array_layer = base_array_layer;
2909         self
2910     }
layer_count(mut self, layer_count: u32) -> Self2911     pub fn layer_count(mut self, layer_count: u32) -> Self {
2912         self.inner.layer_count = layer_count;
2913         self
2914     }
2915     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2916     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2917     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSubresourceLayers2918     pub fn build(self) -> ImageSubresourceLayers {
2919         self.inner
2920     }
2921 }
2922 #[repr(C)]
2923 #[derive(Copy, Clone, Default, Debug)]
2924 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceRange.html>"]
2925 pub struct ImageSubresourceRange {
2926     pub aspect_mask: ImageAspectFlags,
2927     pub base_mip_level: u32,
2928     pub level_count: u32,
2929     pub base_array_layer: u32,
2930     pub layer_count: u32,
2931 }
2932 impl ImageSubresourceRange {
builder<'a>() -> ImageSubresourceRangeBuilder<'a>2933     pub fn builder<'a>() -> ImageSubresourceRangeBuilder<'a> {
2934         ImageSubresourceRangeBuilder {
2935             inner: ImageSubresourceRange::default(),
2936             marker: ::std::marker::PhantomData,
2937         }
2938     }
2939 }
2940 #[repr(transparent)]
2941 pub struct ImageSubresourceRangeBuilder<'a> {
2942     inner: ImageSubresourceRange,
2943     marker: ::std::marker::PhantomData<&'a ()>,
2944 }
2945 impl<'a> ::std::ops::Deref for ImageSubresourceRangeBuilder<'a> {
2946     type Target = ImageSubresourceRange;
deref(&self) -> &Self::Target2947     fn deref(&self) -> &Self::Target {
2948         &self.inner
2949     }
2950 }
2951 impl<'a> ::std::ops::DerefMut for ImageSubresourceRangeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2952     fn deref_mut(&mut self) -> &mut Self::Target {
2953         &mut self.inner
2954     }
2955 }
2956 impl<'a> ImageSubresourceRangeBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self2957     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
2958         self.inner.aspect_mask = aspect_mask;
2959         self
2960     }
base_mip_level(mut self, base_mip_level: u32) -> Self2961     pub fn base_mip_level(mut self, base_mip_level: u32) -> Self {
2962         self.inner.base_mip_level = base_mip_level;
2963         self
2964     }
level_count(mut self, level_count: u32) -> Self2965     pub fn level_count(mut self, level_count: u32) -> Self {
2966         self.inner.level_count = level_count;
2967         self
2968     }
base_array_layer(mut self, base_array_layer: u32) -> Self2969     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
2970         self.inner.base_array_layer = base_array_layer;
2971         self
2972     }
layer_count(mut self, layer_count: u32) -> Self2973     pub fn layer_count(mut self, layer_count: u32) -> Self {
2974         self.inner.layer_count = layer_count;
2975         self
2976     }
2977     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2978     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2979     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSubresourceRange2980     pub fn build(self) -> ImageSubresourceRange {
2981         self.inner
2982     }
2983 }
2984 #[repr(C)]
2985 #[derive(Copy, Clone, Debug)]
2986 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryBarrier.html>"]
2987 pub struct MemoryBarrier {
2988     pub s_type: StructureType,
2989     pub p_next: *const c_void,
2990     pub src_access_mask: AccessFlags,
2991     pub dst_access_mask: AccessFlags,
2992 }
2993 impl ::std::default::Default for MemoryBarrier {
default() -> MemoryBarrier2994     fn default() -> MemoryBarrier {
2995         MemoryBarrier {
2996             s_type: StructureType::MEMORY_BARRIER,
2997             p_next: ::std::ptr::null(),
2998             src_access_mask: AccessFlags::default(),
2999             dst_access_mask: AccessFlags::default(),
3000         }
3001     }
3002 }
3003 impl MemoryBarrier {
builder<'a>() -> MemoryBarrierBuilder<'a>3004     pub fn builder<'a>() -> MemoryBarrierBuilder<'a> {
3005         MemoryBarrierBuilder {
3006             inner: MemoryBarrier::default(),
3007             marker: ::std::marker::PhantomData,
3008         }
3009     }
3010 }
3011 #[repr(transparent)]
3012 pub struct MemoryBarrierBuilder<'a> {
3013     inner: MemoryBarrier,
3014     marker: ::std::marker::PhantomData<&'a ()>,
3015 }
3016 impl<'a> ::std::ops::Deref for MemoryBarrierBuilder<'a> {
3017     type Target = MemoryBarrier;
deref(&self) -> &Self::Target3018     fn deref(&self) -> &Self::Target {
3019         &self.inner
3020     }
3021 }
3022 impl<'a> ::std::ops::DerefMut for MemoryBarrierBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3023     fn deref_mut(&mut self) -> &mut Self::Target {
3024         &mut self.inner
3025     }
3026 }
3027 impl<'a> MemoryBarrierBuilder<'a> {
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self3028     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
3029         self.inner.src_access_mask = src_access_mask;
3030         self
3031     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self3032     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
3033         self.inner.dst_access_mask = dst_access_mask;
3034         self
3035     }
3036     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3037     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3038     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryBarrier3039     pub fn build(self) -> MemoryBarrier {
3040         self.inner
3041     }
3042 }
3043 #[repr(C)]
3044 #[derive(Copy, Clone, Debug)]
3045 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryBarrier.html>"]
3046 pub struct BufferMemoryBarrier {
3047     pub s_type: StructureType,
3048     pub p_next: *const c_void,
3049     pub src_access_mask: AccessFlags,
3050     pub dst_access_mask: AccessFlags,
3051     pub src_queue_family_index: u32,
3052     pub dst_queue_family_index: u32,
3053     pub buffer: Buffer,
3054     pub offset: DeviceSize,
3055     pub size: DeviceSize,
3056 }
3057 impl ::std::default::Default for BufferMemoryBarrier {
default() -> BufferMemoryBarrier3058     fn default() -> BufferMemoryBarrier {
3059         BufferMemoryBarrier {
3060             s_type: StructureType::BUFFER_MEMORY_BARRIER,
3061             p_next: ::std::ptr::null(),
3062             src_access_mask: AccessFlags::default(),
3063             dst_access_mask: AccessFlags::default(),
3064             src_queue_family_index: u32::default(),
3065             dst_queue_family_index: u32::default(),
3066             buffer: Buffer::default(),
3067             offset: DeviceSize::default(),
3068             size: DeviceSize::default(),
3069         }
3070     }
3071 }
3072 impl BufferMemoryBarrier {
builder<'a>() -> BufferMemoryBarrierBuilder<'a>3073     pub fn builder<'a>() -> BufferMemoryBarrierBuilder<'a> {
3074         BufferMemoryBarrierBuilder {
3075             inner: BufferMemoryBarrier::default(),
3076             marker: ::std::marker::PhantomData,
3077         }
3078     }
3079 }
3080 #[repr(transparent)]
3081 pub struct BufferMemoryBarrierBuilder<'a> {
3082     inner: BufferMemoryBarrier,
3083     marker: ::std::marker::PhantomData<&'a ()>,
3084 }
3085 impl<'a> ::std::ops::Deref for BufferMemoryBarrierBuilder<'a> {
3086     type Target = BufferMemoryBarrier;
deref(&self) -> &Self::Target3087     fn deref(&self) -> &Self::Target {
3088         &self.inner
3089     }
3090 }
3091 impl<'a> ::std::ops::DerefMut for BufferMemoryBarrierBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3092     fn deref_mut(&mut self) -> &mut Self::Target {
3093         &mut self.inner
3094     }
3095 }
3096 impl<'a> BufferMemoryBarrierBuilder<'a> {
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self3097     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
3098         self.inner.src_access_mask = src_access_mask;
3099         self
3100     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self3101     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
3102         self.inner.dst_access_mask = dst_access_mask;
3103         self
3104     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self3105     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
3106         self.inner.src_queue_family_index = src_queue_family_index;
3107         self
3108     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self3109     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
3110         self.inner.dst_queue_family_index = dst_queue_family_index;
3111         self
3112     }
buffer(mut self, buffer: Buffer) -> Self3113     pub fn buffer(mut self, buffer: Buffer) -> Self {
3114         self.inner.buffer = buffer;
3115         self
3116     }
offset(mut self, offset: DeviceSize) -> Self3117     pub fn offset(mut self, offset: DeviceSize) -> Self {
3118         self.inner.offset = offset;
3119         self
3120     }
size(mut self, size: DeviceSize) -> Self3121     pub fn size(mut self, size: DeviceSize) -> Self {
3122         self.inner.size = size;
3123         self
3124     }
3125     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3126     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3127     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferMemoryBarrier3128     pub fn build(self) -> BufferMemoryBarrier {
3129         self.inner
3130     }
3131 }
3132 #[repr(C)]
3133 #[derive(Copy, Clone, Debug)]
3134 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryBarrier.html>"]
3135 pub struct ImageMemoryBarrier {
3136     pub s_type: StructureType,
3137     pub p_next: *const c_void,
3138     pub src_access_mask: AccessFlags,
3139     pub dst_access_mask: AccessFlags,
3140     pub old_layout: ImageLayout,
3141     pub new_layout: ImageLayout,
3142     pub src_queue_family_index: u32,
3143     pub dst_queue_family_index: u32,
3144     pub image: Image,
3145     pub subresource_range: ImageSubresourceRange,
3146 }
3147 impl ::std::default::Default for ImageMemoryBarrier {
default() -> ImageMemoryBarrier3148     fn default() -> ImageMemoryBarrier {
3149         ImageMemoryBarrier {
3150             s_type: StructureType::IMAGE_MEMORY_BARRIER,
3151             p_next: ::std::ptr::null(),
3152             src_access_mask: AccessFlags::default(),
3153             dst_access_mask: AccessFlags::default(),
3154             old_layout: ImageLayout::default(),
3155             new_layout: ImageLayout::default(),
3156             src_queue_family_index: u32::default(),
3157             dst_queue_family_index: u32::default(),
3158             image: Image::default(),
3159             subresource_range: ImageSubresourceRange::default(),
3160         }
3161     }
3162 }
3163 impl ImageMemoryBarrier {
builder<'a>() -> ImageMemoryBarrierBuilder<'a>3164     pub fn builder<'a>() -> ImageMemoryBarrierBuilder<'a> {
3165         ImageMemoryBarrierBuilder {
3166             inner: ImageMemoryBarrier::default(),
3167             marker: ::std::marker::PhantomData,
3168         }
3169     }
3170 }
3171 #[repr(transparent)]
3172 pub struct ImageMemoryBarrierBuilder<'a> {
3173     inner: ImageMemoryBarrier,
3174     marker: ::std::marker::PhantomData<&'a ()>,
3175 }
3176 pub unsafe trait ExtendsImageMemoryBarrier {}
3177 impl<'a> ::std::ops::Deref for ImageMemoryBarrierBuilder<'a> {
3178     type Target = ImageMemoryBarrier;
deref(&self) -> &Self::Target3179     fn deref(&self) -> &Self::Target {
3180         &self.inner
3181     }
3182 }
3183 impl<'a> ::std::ops::DerefMut for ImageMemoryBarrierBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3184     fn deref_mut(&mut self) -> &mut Self::Target {
3185         &mut self.inner
3186     }
3187 }
3188 impl<'a> ImageMemoryBarrierBuilder<'a> {
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self3189     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
3190         self.inner.src_access_mask = src_access_mask;
3191         self
3192     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self3193     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
3194         self.inner.dst_access_mask = dst_access_mask;
3195         self
3196     }
old_layout(mut self, old_layout: ImageLayout) -> Self3197     pub fn old_layout(mut self, old_layout: ImageLayout) -> Self {
3198         self.inner.old_layout = old_layout;
3199         self
3200     }
new_layout(mut self, new_layout: ImageLayout) -> Self3201     pub fn new_layout(mut self, new_layout: ImageLayout) -> Self {
3202         self.inner.new_layout = new_layout;
3203         self
3204     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self3205     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
3206         self.inner.src_queue_family_index = src_queue_family_index;
3207         self
3208     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self3209     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
3210         self.inner.dst_queue_family_index = dst_queue_family_index;
3211         self
3212     }
image(mut self, image: Image) -> Self3213     pub fn image(mut self, image: Image) -> Self {
3214         self.inner.image = image;
3215         self
3216     }
subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self3217     pub fn subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self {
3218         self.inner.subresource_range = subresource_range;
3219         self
3220     }
3221     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
3222     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
3223     #[doc = r" valid extension structs can be pushed into the chain."]
3224     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
3225     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageMemoryBarrier>(mut self, next: &'a mut T) -> Self3226     pub fn push_next<T: ExtendsImageMemoryBarrier>(mut self, next: &'a mut T) -> Self {
3227         unsafe {
3228             let next_ptr = next as *mut T as *mut BaseOutStructure;
3229             let last_next = ptr_chain_iter(next).last().unwrap();
3230             (*last_next).p_next = self.inner.p_next as _;
3231             self.inner.p_next = next_ptr as _;
3232         }
3233         self
3234     }
3235     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3236     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3237     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageMemoryBarrier3238     pub fn build(self) -> ImageMemoryBarrier {
3239         self.inner
3240     }
3241 }
3242 #[repr(C)]
3243 #[derive(Copy, Clone, Debug)]
3244 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCreateInfo.html>"]
3245 pub struct ImageCreateInfo {
3246     pub s_type: StructureType,
3247     pub p_next: *const c_void,
3248     pub flags: ImageCreateFlags,
3249     pub image_type: ImageType,
3250     pub format: Format,
3251     pub extent: Extent3D,
3252     pub mip_levels: u32,
3253     pub array_layers: u32,
3254     pub samples: SampleCountFlags,
3255     pub tiling: ImageTiling,
3256     pub usage: ImageUsageFlags,
3257     pub sharing_mode: SharingMode,
3258     pub queue_family_index_count: u32,
3259     pub p_queue_family_indices: *const u32,
3260     pub initial_layout: ImageLayout,
3261 }
3262 impl ::std::default::Default for ImageCreateInfo {
default() -> ImageCreateInfo3263     fn default() -> ImageCreateInfo {
3264         ImageCreateInfo {
3265             s_type: StructureType::IMAGE_CREATE_INFO,
3266             p_next: ::std::ptr::null(),
3267             flags: ImageCreateFlags::default(),
3268             image_type: ImageType::default(),
3269             format: Format::default(),
3270             extent: Extent3D::default(),
3271             mip_levels: u32::default(),
3272             array_layers: u32::default(),
3273             samples: SampleCountFlags::default(),
3274             tiling: ImageTiling::default(),
3275             usage: ImageUsageFlags::default(),
3276             sharing_mode: SharingMode::default(),
3277             queue_family_index_count: u32::default(),
3278             p_queue_family_indices: ::std::ptr::null(),
3279             initial_layout: ImageLayout::default(),
3280         }
3281     }
3282 }
3283 impl ImageCreateInfo {
builder<'a>() -> ImageCreateInfoBuilder<'a>3284     pub fn builder<'a>() -> ImageCreateInfoBuilder<'a> {
3285         ImageCreateInfoBuilder {
3286             inner: ImageCreateInfo::default(),
3287             marker: ::std::marker::PhantomData,
3288         }
3289     }
3290 }
3291 #[repr(transparent)]
3292 pub struct ImageCreateInfoBuilder<'a> {
3293     inner: ImageCreateInfo,
3294     marker: ::std::marker::PhantomData<&'a ()>,
3295 }
3296 pub unsafe trait ExtendsImageCreateInfo {}
3297 impl<'a> ::std::ops::Deref for ImageCreateInfoBuilder<'a> {
3298     type Target = ImageCreateInfo;
deref(&self) -> &Self::Target3299     fn deref(&self) -> &Self::Target {
3300         &self.inner
3301     }
3302 }
3303 impl<'a> ::std::ops::DerefMut for ImageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3304     fn deref_mut(&mut self) -> &mut Self::Target {
3305         &mut self.inner
3306     }
3307 }
3308 impl<'a> ImageCreateInfoBuilder<'a> {
flags(mut self, flags: ImageCreateFlags) -> Self3309     pub fn flags(mut self, flags: ImageCreateFlags) -> Self {
3310         self.inner.flags = flags;
3311         self
3312     }
image_type(mut self, image_type: ImageType) -> Self3313     pub fn image_type(mut self, image_type: ImageType) -> Self {
3314         self.inner.image_type = image_type;
3315         self
3316     }
format(mut self, format: Format) -> Self3317     pub fn format(mut self, format: Format) -> Self {
3318         self.inner.format = format;
3319         self
3320     }
extent(mut self, extent: Extent3D) -> Self3321     pub fn extent(mut self, extent: Extent3D) -> Self {
3322         self.inner.extent = extent;
3323         self
3324     }
mip_levels(mut self, mip_levels: u32) -> Self3325     pub fn mip_levels(mut self, mip_levels: u32) -> Self {
3326         self.inner.mip_levels = mip_levels;
3327         self
3328     }
array_layers(mut self, array_layers: u32) -> Self3329     pub fn array_layers(mut self, array_layers: u32) -> Self {
3330         self.inner.array_layers = array_layers;
3331         self
3332     }
samples(mut self, samples: SampleCountFlags) -> Self3333     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
3334         self.inner.samples = samples;
3335         self
3336     }
tiling(mut self, tiling: ImageTiling) -> Self3337     pub fn tiling(mut self, tiling: ImageTiling) -> Self {
3338         self.inner.tiling = tiling;
3339         self
3340     }
usage(mut self, usage: ImageUsageFlags) -> Self3341     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
3342         self.inner.usage = usage;
3343         self
3344     }
sharing_mode(mut self, sharing_mode: SharingMode) -> Self3345     pub fn sharing_mode(mut self, sharing_mode: SharingMode) -> Self {
3346         self.inner.sharing_mode = sharing_mode;
3347         self
3348     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self3349     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
3350         self.inner.queue_family_index_count = queue_family_indices.len() as _;
3351         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
3352         self
3353     }
initial_layout(mut self, initial_layout: ImageLayout) -> Self3354     pub fn initial_layout(mut self, initial_layout: ImageLayout) -> Self {
3355         self.inner.initial_layout = initial_layout;
3356         self
3357     }
3358     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
3359     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
3360     #[doc = r" valid extension structs can be pushed into the chain."]
3361     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
3362     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageCreateInfo>(mut self, next: &'a mut T) -> Self3363     pub fn push_next<T: ExtendsImageCreateInfo>(mut self, next: &'a mut T) -> Self {
3364         unsafe {
3365             let next_ptr = next as *mut T as *mut BaseOutStructure;
3366             let last_next = ptr_chain_iter(next).last().unwrap();
3367             (*last_next).p_next = self.inner.p_next as _;
3368             self.inner.p_next = next_ptr as _;
3369         }
3370         self
3371     }
3372     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3373     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3374     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageCreateInfo3375     pub fn build(self) -> ImageCreateInfo {
3376         self.inner
3377     }
3378 }
3379 #[repr(C)]
3380 #[derive(Copy, Clone, Default, Debug)]
3381 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubresourceLayout.html>"]
3382 pub struct SubresourceLayout {
3383     pub offset: DeviceSize,
3384     pub size: DeviceSize,
3385     pub row_pitch: DeviceSize,
3386     pub array_pitch: DeviceSize,
3387     pub depth_pitch: DeviceSize,
3388 }
3389 impl SubresourceLayout {
builder<'a>() -> SubresourceLayoutBuilder<'a>3390     pub fn builder<'a>() -> SubresourceLayoutBuilder<'a> {
3391         SubresourceLayoutBuilder {
3392             inner: SubresourceLayout::default(),
3393             marker: ::std::marker::PhantomData,
3394         }
3395     }
3396 }
3397 #[repr(transparent)]
3398 pub struct SubresourceLayoutBuilder<'a> {
3399     inner: SubresourceLayout,
3400     marker: ::std::marker::PhantomData<&'a ()>,
3401 }
3402 impl<'a> ::std::ops::Deref for SubresourceLayoutBuilder<'a> {
3403     type Target = SubresourceLayout;
deref(&self) -> &Self::Target3404     fn deref(&self) -> &Self::Target {
3405         &self.inner
3406     }
3407 }
3408 impl<'a> ::std::ops::DerefMut for SubresourceLayoutBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3409     fn deref_mut(&mut self) -> &mut Self::Target {
3410         &mut self.inner
3411     }
3412 }
3413 impl<'a> SubresourceLayoutBuilder<'a> {
offset(mut self, offset: DeviceSize) -> Self3414     pub fn offset(mut self, offset: DeviceSize) -> Self {
3415         self.inner.offset = offset;
3416         self
3417     }
size(mut self, size: DeviceSize) -> Self3418     pub fn size(mut self, size: DeviceSize) -> Self {
3419         self.inner.size = size;
3420         self
3421     }
row_pitch(mut self, row_pitch: DeviceSize) -> Self3422     pub fn row_pitch(mut self, row_pitch: DeviceSize) -> Self {
3423         self.inner.row_pitch = row_pitch;
3424         self
3425     }
array_pitch(mut self, array_pitch: DeviceSize) -> Self3426     pub fn array_pitch(mut self, array_pitch: DeviceSize) -> Self {
3427         self.inner.array_pitch = array_pitch;
3428         self
3429     }
depth_pitch(mut self, depth_pitch: DeviceSize) -> Self3430     pub fn depth_pitch(mut self, depth_pitch: DeviceSize) -> Self {
3431         self.inner.depth_pitch = depth_pitch;
3432         self
3433     }
3434     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3435     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3436     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubresourceLayout3437     pub fn build(self) -> SubresourceLayout {
3438         self.inner
3439     }
3440 }
3441 #[repr(C)]
3442 #[derive(Copy, Clone, Debug)]
3443 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewCreateInfo.html>"]
3444 pub struct ImageViewCreateInfo {
3445     pub s_type: StructureType,
3446     pub p_next: *const c_void,
3447     pub flags: ImageViewCreateFlags,
3448     pub image: Image,
3449     pub view_type: ImageViewType,
3450     pub format: Format,
3451     pub components: ComponentMapping,
3452     pub subresource_range: ImageSubresourceRange,
3453 }
3454 impl ::std::default::Default for ImageViewCreateInfo {
default() -> ImageViewCreateInfo3455     fn default() -> ImageViewCreateInfo {
3456         ImageViewCreateInfo {
3457             s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
3458             p_next: ::std::ptr::null(),
3459             flags: ImageViewCreateFlags::default(),
3460             image: Image::default(),
3461             view_type: ImageViewType::default(),
3462             format: Format::default(),
3463             components: ComponentMapping::default(),
3464             subresource_range: ImageSubresourceRange::default(),
3465         }
3466     }
3467 }
3468 impl ImageViewCreateInfo {
builder<'a>() -> ImageViewCreateInfoBuilder<'a>3469     pub fn builder<'a>() -> ImageViewCreateInfoBuilder<'a> {
3470         ImageViewCreateInfoBuilder {
3471             inner: ImageViewCreateInfo::default(),
3472             marker: ::std::marker::PhantomData,
3473         }
3474     }
3475 }
3476 #[repr(transparent)]
3477 pub struct ImageViewCreateInfoBuilder<'a> {
3478     inner: ImageViewCreateInfo,
3479     marker: ::std::marker::PhantomData<&'a ()>,
3480 }
3481 pub unsafe trait ExtendsImageViewCreateInfo {}
3482 impl<'a> ::std::ops::Deref for ImageViewCreateInfoBuilder<'a> {
3483     type Target = ImageViewCreateInfo;
deref(&self) -> &Self::Target3484     fn deref(&self) -> &Self::Target {
3485         &self.inner
3486     }
3487 }
3488 impl<'a> ::std::ops::DerefMut for ImageViewCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3489     fn deref_mut(&mut self) -> &mut Self::Target {
3490         &mut self.inner
3491     }
3492 }
3493 impl<'a> ImageViewCreateInfoBuilder<'a> {
flags(mut self, flags: ImageViewCreateFlags) -> Self3494     pub fn flags(mut self, flags: ImageViewCreateFlags) -> Self {
3495         self.inner.flags = flags;
3496         self
3497     }
image(mut self, image: Image) -> Self3498     pub fn image(mut self, image: Image) -> Self {
3499         self.inner.image = image;
3500         self
3501     }
view_type(mut self, view_type: ImageViewType) -> Self3502     pub fn view_type(mut self, view_type: ImageViewType) -> Self {
3503         self.inner.view_type = view_type;
3504         self
3505     }
format(mut self, format: Format) -> Self3506     pub fn format(mut self, format: Format) -> Self {
3507         self.inner.format = format;
3508         self
3509     }
components(mut self, components: ComponentMapping) -> Self3510     pub fn components(mut self, components: ComponentMapping) -> Self {
3511         self.inner.components = components;
3512         self
3513     }
subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self3514     pub fn subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self {
3515         self.inner.subresource_range = subresource_range;
3516         self
3517     }
3518     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
3519     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
3520     #[doc = r" valid extension structs can be pushed into the chain."]
3521     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
3522     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageViewCreateInfo>(mut self, next: &'a mut T) -> Self3523     pub fn push_next<T: ExtendsImageViewCreateInfo>(mut self, next: &'a mut T) -> Self {
3524         unsafe {
3525             let next_ptr = next as *mut T as *mut BaseOutStructure;
3526             let last_next = ptr_chain_iter(next).last().unwrap();
3527             (*last_next).p_next = self.inner.p_next as _;
3528             self.inner.p_next = next_ptr as _;
3529         }
3530         self
3531     }
3532     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3533     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3534     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewCreateInfo3535     pub fn build(self) -> ImageViewCreateInfo {
3536         self.inner
3537     }
3538 }
3539 #[repr(C)]
3540 #[derive(Copy, Clone, Default, Debug)]
3541 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCopy.html>"]
3542 pub struct BufferCopy {
3543     pub src_offset: DeviceSize,
3544     pub dst_offset: DeviceSize,
3545     pub size: DeviceSize,
3546 }
3547 impl BufferCopy {
builder<'a>() -> BufferCopyBuilder<'a>3548     pub fn builder<'a>() -> BufferCopyBuilder<'a> {
3549         BufferCopyBuilder {
3550             inner: BufferCopy::default(),
3551             marker: ::std::marker::PhantomData,
3552         }
3553     }
3554 }
3555 #[repr(transparent)]
3556 pub struct BufferCopyBuilder<'a> {
3557     inner: BufferCopy,
3558     marker: ::std::marker::PhantomData<&'a ()>,
3559 }
3560 impl<'a> ::std::ops::Deref for BufferCopyBuilder<'a> {
3561     type Target = BufferCopy;
deref(&self) -> &Self::Target3562     fn deref(&self) -> &Self::Target {
3563         &self.inner
3564     }
3565 }
3566 impl<'a> ::std::ops::DerefMut for BufferCopyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3567     fn deref_mut(&mut self) -> &mut Self::Target {
3568         &mut self.inner
3569     }
3570 }
3571 impl<'a> BufferCopyBuilder<'a> {
src_offset(mut self, src_offset: DeviceSize) -> Self3572     pub fn src_offset(mut self, src_offset: DeviceSize) -> Self {
3573         self.inner.src_offset = src_offset;
3574         self
3575     }
dst_offset(mut self, dst_offset: DeviceSize) -> Self3576     pub fn dst_offset(mut self, dst_offset: DeviceSize) -> Self {
3577         self.inner.dst_offset = dst_offset;
3578         self
3579     }
size(mut self, size: DeviceSize) -> Self3580     pub fn size(mut self, size: DeviceSize) -> Self {
3581         self.inner.size = size;
3582         self
3583     }
3584     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3585     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3586     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCopy3587     pub fn build(self) -> BufferCopy {
3588         self.inner
3589     }
3590 }
3591 #[repr(C)]
3592 #[derive(Copy, Clone, Default, Debug)]
3593 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseMemoryBind.html>"]
3594 pub struct SparseMemoryBind {
3595     pub resource_offset: DeviceSize,
3596     pub size: DeviceSize,
3597     pub memory: DeviceMemory,
3598     pub memory_offset: DeviceSize,
3599     pub flags: SparseMemoryBindFlags,
3600 }
3601 impl SparseMemoryBind {
builder<'a>() -> SparseMemoryBindBuilder<'a>3602     pub fn builder<'a>() -> SparseMemoryBindBuilder<'a> {
3603         SparseMemoryBindBuilder {
3604             inner: SparseMemoryBind::default(),
3605             marker: ::std::marker::PhantomData,
3606         }
3607     }
3608 }
3609 #[repr(transparent)]
3610 pub struct SparseMemoryBindBuilder<'a> {
3611     inner: SparseMemoryBind,
3612     marker: ::std::marker::PhantomData<&'a ()>,
3613 }
3614 impl<'a> ::std::ops::Deref for SparseMemoryBindBuilder<'a> {
3615     type Target = SparseMemoryBind;
deref(&self) -> &Self::Target3616     fn deref(&self) -> &Self::Target {
3617         &self.inner
3618     }
3619 }
3620 impl<'a> ::std::ops::DerefMut for SparseMemoryBindBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3621     fn deref_mut(&mut self) -> &mut Self::Target {
3622         &mut self.inner
3623     }
3624 }
3625 impl<'a> SparseMemoryBindBuilder<'a> {
resource_offset(mut self, resource_offset: DeviceSize) -> Self3626     pub fn resource_offset(mut self, resource_offset: DeviceSize) -> Self {
3627         self.inner.resource_offset = resource_offset;
3628         self
3629     }
size(mut self, size: DeviceSize) -> Self3630     pub fn size(mut self, size: DeviceSize) -> Self {
3631         self.inner.size = size;
3632         self
3633     }
memory(mut self, memory: DeviceMemory) -> Self3634     pub fn memory(mut self, memory: DeviceMemory) -> Self {
3635         self.inner.memory = memory;
3636         self
3637     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self3638     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
3639         self.inner.memory_offset = memory_offset;
3640         self
3641     }
flags(mut self, flags: SparseMemoryBindFlags) -> Self3642     pub fn flags(mut self, flags: SparseMemoryBindFlags) -> Self {
3643         self.inner.flags = flags;
3644         self
3645     }
3646     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3647     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3648     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseMemoryBind3649     pub fn build(self) -> SparseMemoryBind {
3650         self.inner
3651     }
3652 }
3653 #[repr(C)]
3654 #[derive(Copy, Clone, Default, Debug)]
3655 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBind.html>"]
3656 pub struct SparseImageMemoryBind {
3657     pub subresource: ImageSubresource,
3658     pub offset: Offset3D,
3659     pub extent: Extent3D,
3660     pub memory: DeviceMemory,
3661     pub memory_offset: DeviceSize,
3662     pub flags: SparseMemoryBindFlags,
3663 }
3664 impl SparseImageMemoryBind {
builder<'a>() -> SparseImageMemoryBindBuilder<'a>3665     pub fn builder<'a>() -> SparseImageMemoryBindBuilder<'a> {
3666         SparseImageMemoryBindBuilder {
3667             inner: SparseImageMemoryBind::default(),
3668             marker: ::std::marker::PhantomData,
3669         }
3670     }
3671 }
3672 #[repr(transparent)]
3673 pub struct SparseImageMemoryBindBuilder<'a> {
3674     inner: SparseImageMemoryBind,
3675     marker: ::std::marker::PhantomData<&'a ()>,
3676 }
3677 impl<'a> ::std::ops::Deref for SparseImageMemoryBindBuilder<'a> {
3678     type Target = SparseImageMemoryBind;
deref(&self) -> &Self::Target3679     fn deref(&self) -> &Self::Target {
3680         &self.inner
3681     }
3682 }
3683 impl<'a> ::std::ops::DerefMut for SparseImageMemoryBindBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3684     fn deref_mut(&mut self) -> &mut Self::Target {
3685         &mut self.inner
3686     }
3687 }
3688 impl<'a> SparseImageMemoryBindBuilder<'a> {
subresource(mut self, subresource: ImageSubresource) -> Self3689     pub fn subresource(mut self, subresource: ImageSubresource) -> Self {
3690         self.inner.subresource = subresource;
3691         self
3692     }
offset(mut self, offset: Offset3D) -> Self3693     pub fn offset(mut self, offset: Offset3D) -> Self {
3694         self.inner.offset = offset;
3695         self
3696     }
extent(mut self, extent: Extent3D) -> Self3697     pub fn extent(mut self, extent: Extent3D) -> Self {
3698         self.inner.extent = extent;
3699         self
3700     }
memory(mut self, memory: DeviceMemory) -> Self3701     pub fn memory(mut self, memory: DeviceMemory) -> Self {
3702         self.inner.memory = memory;
3703         self
3704     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self3705     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
3706         self.inner.memory_offset = memory_offset;
3707         self
3708     }
flags(mut self, flags: SparseMemoryBindFlags) -> Self3709     pub fn flags(mut self, flags: SparseMemoryBindFlags) -> Self {
3710         self.inner.flags = flags;
3711         self
3712     }
3713     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3714     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3715     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryBind3716     pub fn build(self) -> SparseImageMemoryBind {
3717         self.inner
3718     }
3719 }
3720 #[repr(C)]
3721 #[derive(Copy, Clone, Debug)]
3722 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseBufferMemoryBindInfo.html>"]
3723 pub struct SparseBufferMemoryBindInfo {
3724     pub buffer: Buffer,
3725     pub bind_count: u32,
3726     pub p_binds: *const SparseMemoryBind,
3727 }
3728 impl ::std::default::Default for SparseBufferMemoryBindInfo {
default() -> SparseBufferMemoryBindInfo3729     fn default() -> SparseBufferMemoryBindInfo {
3730         SparseBufferMemoryBindInfo {
3731             buffer: Buffer::default(),
3732             bind_count: u32::default(),
3733             p_binds: ::std::ptr::null(),
3734         }
3735     }
3736 }
3737 impl SparseBufferMemoryBindInfo {
builder<'a>() -> SparseBufferMemoryBindInfoBuilder<'a>3738     pub fn builder<'a>() -> SparseBufferMemoryBindInfoBuilder<'a> {
3739         SparseBufferMemoryBindInfoBuilder {
3740             inner: SparseBufferMemoryBindInfo::default(),
3741             marker: ::std::marker::PhantomData,
3742         }
3743     }
3744 }
3745 #[repr(transparent)]
3746 pub struct SparseBufferMemoryBindInfoBuilder<'a> {
3747     inner: SparseBufferMemoryBindInfo,
3748     marker: ::std::marker::PhantomData<&'a ()>,
3749 }
3750 impl<'a> ::std::ops::Deref for SparseBufferMemoryBindInfoBuilder<'a> {
3751     type Target = SparseBufferMemoryBindInfo;
deref(&self) -> &Self::Target3752     fn deref(&self) -> &Self::Target {
3753         &self.inner
3754     }
3755 }
3756 impl<'a> ::std::ops::DerefMut for SparseBufferMemoryBindInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3757     fn deref_mut(&mut self) -> &mut Self::Target {
3758         &mut self.inner
3759     }
3760 }
3761 impl<'a> SparseBufferMemoryBindInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self3762     pub fn buffer(mut self, buffer: Buffer) -> Self {
3763         self.inner.buffer = buffer;
3764         self
3765     }
binds(mut self, binds: &'a [SparseMemoryBind]) -> Self3766     pub fn binds(mut self, binds: &'a [SparseMemoryBind]) -> Self {
3767         self.inner.bind_count = binds.len() as _;
3768         self.inner.p_binds = binds.as_ptr();
3769         self
3770     }
3771     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3772     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3773     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseBufferMemoryBindInfo3774     pub fn build(self) -> SparseBufferMemoryBindInfo {
3775         self.inner
3776     }
3777 }
3778 #[repr(C)]
3779 #[derive(Copy, Clone, Debug)]
3780 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageOpaqueMemoryBindInfo.html>"]
3781 pub struct SparseImageOpaqueMemoryBindInfo {
3782     pub image: Image,
3783     pub bind_count: u32,
3784     pub p_binds: *const SparseMemoryBind,
3785 }
3786 impl ::std::default::Default for SparseImageOpaqueMemoryBindInfo {
default() -> SparseImageOpaqueMemoryBindInfo3787     fn default() -> SparseImageOpaqueMemoryBindInfo {
3788         SparseImageOpaqueMemoryBindInfo {
3789             image: Image::default(),
3790             bind_count: u32::default(),
3791             p_binds: ::std::ptr::null(),
3792         }
3793     }
3794 }
3795 impl SparseImageOpaqueMemoryBindInfo {
builder<'a>() -> SparseImageOpaqueMemoryBindInfoBuilder<'a>3796     pub fn builder<'a>() -> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
3797         SparseImageOpaqueMemoryBindInfoBuilder {
3798             inner: SparseImageOpaqueMemoryBindInfo::default(),
3799             marker: ::std::marker::PhantomData,
3800         }
3801     }
3802 }
3803 #[repr(transparent)]
3804 pub struct SparseImageOpaqueMemoryBindInfoBuilder<'a> {
3805     inner: SparseImageOpaqueMemoryBindInfo,
3806     marker: ::std::marker::PhantomData<&'a ()>,
3807 }
3808 impl<'a> ::std::ops::Deref for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
3809     type Target = SparseImageOpaqueMemoryBindInfo;
deref(&self) -> &Self::Target3810     fn deref(&self) -> &Self::Target {
3811         &self.inner
3812     }
3813 }
3814 impl<'a> ::std::ops::DerefMut for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3815     fn deref_mut(&mut self) -> &mut Self::Target {
3816         &mut self.inner
3817     }
3818 }
3819 impl<'a> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
image(mut self, image: Image) -> Self3820     pub fn image(mut self, image: Image) -> Self {
3821         self.inner.image = image;
3822         self
3823     }
binds(mut self, binds: &'a [SparseMemoryBind]) -> Self3824     pub fn binds(mut self, binds: &'a [SparseMemoryBind]) -> Self {
3825         self.inner.bind_count = binds.len() as _;
3826         self.inner.p_binds = binds.as_ptr();
3827         self
3828     }
3829     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3830     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3831     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageOpaqueMemoryBindInfo3832     pub fn build(self) -> SparseImageOpaqueMemoryBindInfo {
3833         self.inner
3834     }
3835 }
3836 #[repr(C)]
3837 #[derive(Copy, Clone, Debug)]
3838 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBindInfo.html>"]
3839 pub struct SparseImageMemoryBindInfo {
3840     pub image: Image,
3841     pub bind_count: u32,
3842     pub p_binds: *const SparseImageMemoryBind,
3843 }
3844 impl ::std::default::Default for SparseImageMemoryBindInfo {
default() -> SparseImageMemoryBindInfo3845     fn default() -> SparseImageMemoryBindInfo {
3846         SparseImageMemoryBindInfo {
3847             image: Image::default(),
3848             bind_count: u32::default(),
3849             p_binds: ::std::ptr::null(),
3850         }
3851     }
3852 }
3853 impl SparseImageMemoryBindInfo {
builder<'a>() -> SparseImageMemoryBindInfoBuilder<'a>3854     pub fn builder<'a>() -> SparseImageMemoryBindInfoBuilder<'a> {
3855         SparseImageMemoryBindInfoBuilder {
3856             inner: SparseImageMemoryBindInfo::default(),
3857             marker: ::std::marker::PhantomData,
3858         }
3859     }
3860 }
3861 #[repr(transparent)]
3862 pub struct SparseImageMemoryBindInfoBuilder<'a> {
3863     inner: SparseImageMemoryBindInfo,
3864     marker: ::std::marker::PhantomData<&'a ()>,
3865 }
3866 impl<'a> ::std::ops::Deref for SparseImageMemoryBindInfoBuilder<'a> {
3867     type Target = SparseImageMemoryBindInfo;
deref(&self) -> &Self::Target3868     fn deref(&self) -> &Self::Target {
3869         &self.inner
3870     }
3871 }
3872 impl<'a> ::std::ops::DerefMut for SparseImageMemoryBindInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3873     fn deref_mut(&mut self) -> &mut Self::Target {
3874         &mut self.inner
3875     }
3876 }
3877 impl<'a> SparseImageMemoryBindInfoBuilder<'a> {
image(mut self, image: Image) -> Self3878     pub fn image(mut self, image: Image) -> Self {
3879         self.inner.image = image;
3880         self
3881     }
binds(mut self, binds: &'a [SparseImageMemoryBind]) -> Self3882     pub fn binds(mut self, binds: &'a [SparseImageMemoryBind]) -> Self {
3883         self.inner.bind_count = binds.len() as _;
3884         self.inner.p_binds = binds.as_ptr();
3885         self
3886     }
3887     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3888     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3889     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryBindInfo3890     pub fn build(self) -> SparseImageMemoryBindInfo {
3891         self.inner
3892     }
3893 }
3894 #[repr(C)]
3895 #[derive(Copy, Clone, Debug)]
3896 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindSparseInfo.html>"]
3897 pub struct BindSparseInfo {
3898     pub s_type: StructureType,
3899     pub p_next: *const c_void,
3900     pub wait_semaphore_count: u32,
3901     pub p_wait_semaphores: *const Semaphore,
3902     pub buffer_bind_count: u32,
3903     pub p_buffer_binds: *const SparseBufferMemoryBindInfo,
3904     pub image_opaque_bind_count: u32,
3905     pub p_image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
3906     pub image_bind_count: u32,
3907     pub p_image_binds: *const SparseImageMemoryBindInfo,
3908     pub signal_semaphore_count: u32,
3909     pub p_signal_semaphores: *const Semaphore,
3910 }
3911 impl ::std::default::Default for BindSparseInfo {
default() -> BindSparseInfo3912     fn default() -> BindSparseInfo {
3913         BindSparseInfo {
3914             s_type: StructureType::BIND_SPARSE_INFO,
3915             p_next: ::std::ptr::null(),
3916             wait_semaphore_count: u32::default(),
3917             p_wait_semaphores: ::std::ptr::null(),
3918             buffer_bind_count: u32::default(),
3919             p_buffer_binds: ::std::ptr::null(),
3920             image_opaque_bind_count: u32::default(),
3921             p_image_opaque_binds: ::std::ptr::null(),
3922             image_bind_count: u32::default(),
3923             p_image_binds: ::std::ptr::null(),
3924             signal_semaphore_count: u32::default(),
3925             p_signal_semaphores: ::std::ptr::null(),
3926         }
3927     }
3928 }
3929 impl BindSparseInfo {
builder<'a>() -> BindSparseInfoBuilder<'a>3930     pub fn builder<'a>() -> BindSparseInfoBuilder<'a> {
3931         BindSparseInfoBuilder {
3932             inner: BindSparseInfo::default(),
3933             marker: ::std::marker::PhantomData,
3934         }
3935     }
3936 }
3937 #[repr(transparent)]
3938 pub struct BindSparseInfoBuilder<'a> {
3939     inner: BindSparseInfo,
3940     marker: ::std::marker::PhantomData<&'a ()>,
3941 }
3942 pub unsafe trait ExtendsBindSparseInfo {}
3943 impl<'a> ::std::ops::Deref for BindSparseInfoBuilder<'a> {
3944     type Target = BindSparseInfo;
deref(&self) -> &Self::Target3945     fn deref(&self) -> &Self::Target {
3946         &self.inner
3947     }
3948 }
3949 impl<'a> ::std::ops::DerefMut for BindSparseInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3950     fn deref_mut(&mut self) -> &mut Self::Target {
3951         &mut self.inner
3952     }
3953 }
3954 impl<'a> BindSparseInfoBuilder<'a> {
wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self3955     pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self {
3956         self.inner.wait_semaphore_count = wait_semaphores.len() as _;
3957         self.inner.p_wait_semaphores = wait_semaphores.as_ptr();
3958         self
3959     }
buffer_binds(mut self, buffer_binds: &'a [SparseBufferMemoryBindInfo]) -> Self3960     pub fn buffer_binds(mut self, buffer_binds: &'a [SparseBufferMemoryBindInfo]) -> Self {
3961         self.inner.buffer_bind_count = buffer_binds.len() as _;
3962         self.inner.p_buffer_binds = buffer_binds.as_ptr();
3963         self
3964     }
image_opaque_binds( mut self, image_opaque_binds: &'a [SparseImageOpaqueMemoryBindInfo], ) -> Self3965     pub fn image_opaque_binds(
3966         mut self,
3967         image_opaque_binds: &'a [SparseImageOpaqueMemoryBindInfo],
3968     ) -> Self {
3969         self.inner.image_opaque_bind_count = image_opaque_binds.len() as _;
3970         self.inner.p_image_opaque_binds = image_opaque_binds.as_ptr();
3971         self
3972     }
image_binds(mut self, image_binds: &'a [SparseImageMemoryBindInfo]) -> Self3973     pub fn image_binds(mut self, image_binds: &'a [SparseImageMemoryBindInfo]) -> Self {
3974         self.inner.image_bind_count = image_binds.len() as _;
3975         self.inner.p_image_binds = image_binds.as_ptr();
3976         self
3977     }
signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self3978     pub fn signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self {
3979         self.inner.signal_semaphore_count = signal_semaphores.len() as _;
3980         self.inner.p_signal_semaphores = signal_semaphores.as_ptr();
3981         self
3982     }
3983     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
3984     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
3985     #[doc = r" valid extension structs can be pushed into the chain."]
3986     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
3987     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBindSparseInfo>(mut self, next: &'a mut T) -> Self3988     pub fn push_next<T: ExtendsBindSparseInfo>(mut self, next: &'a mut T) -> Self {
3989         unsafe {
3990             let next_ptr = next as *mut T as *mut BaseOutStructure;
3991             let last_next = ptr_chain_iter(next).last().unwrap();
3992             (*last_next).p_next = self.inner.p_next as _;
3993             self.inner.p_next = next_ptr as _;
3994         }
3995         self
3996     }
3997     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3998     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3999     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindSparseInfo4000     pub fn build(self) -> BindSparseInfo {
4001         self.inner
4002     }
4003 }
4004 #[repr(C)]
4005 #[derive(Copy, Clone, Default, Debug)]
4006 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCopy.html>"]
4007 pub struct ImageCopy {
4008     pub src_subresource: ImageSubresourceLayers,
4009     pub src_offset: Offset3D,
4010     pub dst_subresource: ImageSubresourceLayers,
4011     pub dst_offset: Offset3D,
4012     pub extent: Extent3D,
4013 }
4014 impl ImageCopy {
builder<'a>() -> ImageCopyBuilder<'a>4015     pub fn builder<'a>() -> ImageCopyBuilder<'a> {
4016         ImageCopyBuilder {
4017             inner: ImageCopy::default(),
4018             marker: ::std::marker::PhantomData,
4019         }
4020     }
4021 }
4022 #[repr(transparent)]
4023 pub struct ImageCopyBuilder<'a> {
4024     inner: ImageCopy,
4025     marker: ::std::marker::PhantomData<&'a ()>,
4026 }
4027 impl<'a> ::std::ops::Deref for ImageCopyBuilder<'a> {
4028     type Target = ImageCopy;
deref(&self) -> &Self::Target4029     fn deref(&self) -> &Self::Target {
4030         &self.inner
4031     }
4032 }
4033 impl<'a> ::std::ops::DerefMut for ImageCopyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4034     fn deref_mut(&mut self) -> &mut Self::Target {
4035         &mut self.inner
4036     }
4037 }
4038 impl<'a> ImageCopyBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self4039     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
4040         self.inner.src_subresource = src_subresource;
4041         self
4042     }
src_offset(mut self, src_offset: Offset3D) -> Self4043     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
4044         self.inner.src_offset = src_offset;
4045         self
4046     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self4047     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
4048         self.inner.dst_subresource = dst_subresource;
4049         self
4050     }
dst_offset(mut self, dst_offset: Offset3D) -> Self4051     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
4052         self.inner.dst_offset = dst_offset;
4053         self
4054     }
extent(mut self, extent: Extent3D) -> Self4055     pub fn extent(mut self, extent: Extent3D) -> Self {
4056         self.inner.extent = extent;
4057         self
4058     }
4059     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4060     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4061     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageCopy4062     pub fn build(self) -> ImageCopy {
4063         self.inner
4064     }
4065 }
4066 #[repr(C)]
4067 #[derive(Copy, Clone, Debug)]
4068 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageBlit.html>"]
4069 pub struct ImageBlit {
4070     pub src_subresource: ImageSubresourceLayers,
4071     pub src_offsets: [Offset3D; 2],
4072     pub dst_subresource: ImageSubresourceLayers,
4073     pub dst_offsets: [Offset3D; 2],
4074 }
4075 impl ::std::default::Default for ImageBlit {
default() -> ImageBlit4076     fn default() -> ImageBlit {
4077         ImageBlit {
4078             src_subresource: ImageSubresourceLayers::default(),
4079             src_offsets: unsafe { ::std::mem::zeroed() },
4080             dst_subresource: ImageSubresourceLayers::default(),
4081             dst_offsets: unsafe { ::std::mem::zeroed() },
4082         }
4083     }
4084 }
4085 impl ImageBlit {
builder<'a>() -> ImageBlitBuilder<'a>4086     pub fn builder<'a>() -> ImageBlitBuilder<'a> {
4087         ImageBlitBuilder {
4088             inner: ImageBlit::default(),
4089             marker: ::std::marker::PhantomData,
4090         }
4091     }
4092 }
4093 #[repr(transparent)]
4094 pub struct ImageBlitBuilder<'a> {
4095     inner: ImageBlit,
4096     marker: ::std::marker::PhantomData<&'a ()>,
4097 }
4098 impl<'a> ::std::ops::Deref for ImageBlitBuilder<'a> {
4099     type Target = ImageBlit;
deref(&self) -> &Self::Target4100     fn deref(&self) -> &Self::Target {
4101         &self.inner
4102     }
4103 }
4104 impl<'a> ::std::ops::DerefMut for ImageBlitBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4105     fn deref_mut(&mut self) -> &mut Self::Target {
4106         &mut self.inner
4107     }
4108 }
4109 impl<'a> ImageBlitBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self4110     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
4111         self.inner.src_subresource = src_subresource;
4112         self
4113     }
src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self4114     pub fn src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self {
4115         self.inner.src_offsets = src_offsets;
4116         self
4117     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self4118     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
4119         self.inner.dst_subresource = dst_subresource;
4120         self
4121     }
dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self4122     pub fn dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self {
4123         self.inner.dst_offsets = dst_offsets;
4124         self
4125     }
4126     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4127     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4128     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageBlit4129     pub fn build(self) -> ImageBlit {
4130         self.inner
4131     }
4132 }
4133 #[repr(C)]
4134 #[derive(Copy, Clone, Default, Debug)]
4135 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferImageCopy.html>"]
4136 pub struct BufferImageCopy {
4137     pub buffer_offset: DeviceSize,
4138     pub buffer_row_length: u32,
4139     pub buffer_image_height: u32,
4140     pub image_subresource: ImageSubresourceLayers,
4141     pub image_offset: Offset3D,
4142     pub image_extent: Extent3D,
4143 }
4144 impl BufferImageCopy {
builder<'a>() -> BufferImageCopyBuilder<'a>4145     pub fn builder<'a>() -> BufferImageCopyBuilder<'a> {
4146         BufferImageCopyBuilder {
4147             inner: BufferImageCopy::default(),
4148             marker: ::std::marker::PhantomData,
4149         }
4150     }
4151 }
4152 #[repr(transparent)]
4153 pub struct BufferImageCopyBuilder<'a> {
4154     inner: BufferImageCopy,
4155     marker: ::std::marker::PhantomData<&'a ()>,
4156 }
4157 impl<'a> ::std::ops::Deref for BufferImageCopyBuilder<'a> {
4158     type Target = BufferImageCopy;
deref(&self) -> &Self::Target4159     fn deref(&self) -> &Self::Target {
4160         &self.inner
4161     }
4162 }
4163 impl<'a> ::std::ops::DerefMut for BufferImageCopyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4164     fn deref_mut(&mut self) -> &mut Self::Target {
4165         &mut self.inner
4166     }
4167 }
4168 impl<'a> BufferImageCopyBuilder<'a> {
buffer_offset(mut self, buffer_offset: DeviceSize) -> Self4169     pub fn buffer_offset(mut self, buffer_offset: DeviceSize) -> Self {
4170         self.inner.buffer_offset = buffer_offset;
4171         self
4172     }
buffer_row_length(mut self, buffer_row_length: u32) -> Self4173     pub fn buffer_row_length(mut self, buffer_row_length: u32) -> Self {
4174         self.inner.buffer_row_length = buffer_row_length;
4175         self
4176     }
buffer_image_height(mut self, buffer_image_height: u32) -> Self4177     pub fn buffer_image_height(mut self, buffer_image_height: u32) -> Self {
4178         self.inner.buffer_image_height = buffer_image_height;
4179         self
4180     }
image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self4181     pub fn image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self {
4182         self.inner.image_subresource = image_subresource;
4183         self
4184     }
image_offset(mut self, image_offset: Offset3D) -> Self4185     pub fn image_offset(mut self, image_offset: Offset3D) -> Self {
4186         self.inner.image_offset = image_offset;
4187         self
4188     }
image_extent(mut self, image_extent: Extent3D) -> Self4189     pub fn image_extent(mut self, image_extent: Extent3D) -> Self {
4190         self.inner.image_extent = image_extent;
4191         self
4192     }
4193     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4194     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4195     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferImageCopy4196     pub fn build(self) -> BufferImageCopy {
4197         self.inner
4198     }
4199 }
4200 #[repr(C)]
4201 #[derive(Copy, Clone, Default, Debug)]
4202 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageResolve.html>"]
4203 pub struct ImageResolve {
4204     pub src_subresource: ImageSubresourceLayers,
4205     pub src_offset: Offset3D,
4206     pub dst_subresource: ImageSubresourceLayers,
4207     pub dst_offset: Offset3D,
4208     pub extent: Extent3D,
4209 }
4210 impl ImageResolve {
builder<'a>() -> ImageResolveBuilder<'a>4211     pub fn builder<'a>() -> ImageResolveBuilder<'a> {
4212         ImageResolveBuilder {
4213             inner: ImageResolve::default(),
4214             marker: ::std::marker::PhantomData,
4215         }
4216     }
4217 }
4218 #[repr(transparent)]
4219 pub struct ImageResolveBuilder<'a> {
4220     inner: ImageResolve,
4221     marker: ::std::marker::PhantomData<&'a ()>,
4222 }
4223 impl<'a> ::std::ops::Deref for ImageResolveBuilder<'a> {
4224     type Target = ImageResolve;
deref(&self) -> &Self::Target4225     fn deref(&self) -> &Self::Target {
4226         &self.inner
4227     }
4228 }
4229 impl<'a> ::std::ops::DerefMut for ImageResolveBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4230     fn deref_mut(&mut self) -> &mut Self::Target {
4231         &mut self.inner
4232     }
4233 }
4234 impl<'a> ImageResolveBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self4235     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
4236         self.inner.src_subresource = src_subresource;
4237         self
4238     }
src_offset(mut self, src_offset: Offset3D) -> Self4239     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
4240         self.inner.src_offset = src_offset;
4241         self
4242     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self4243     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
4244         self.inner.dst_subresource = dst_subresource;
4245         self
4246     }
dst_offset(mut self, dst_offset: Offset3D) -> Self4247     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
4248         self.inner.dst_offset = dst_offset;
4249         self
4250     }
extent(mut self, extent: Extent3D) -> Self4251     pub fn extent(mut self, extent: Extent3D) -> Self {
4252         self.inner.extent = extent;
4253         self
4254     }
4255     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4256     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4257     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageResolve4258     pub fn build(self) -> ImageResolve {
4259         self.inner
4260     }
4261 }
4262 #[repr(C)]
4263 #[derive(Copy, Clone, Debug)]
4264 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModuleCreateInfo.html>"]
4265 pub struct ShaderModuleCreateInfo {
4266     pub s_type: StructureType,
4267     pub p_next: *const c_void,
4268     pub flags: ShaderModuleCreateFlags,
4269     pub code_size: usize,
4270     pub p_code: *const u32,
4271 }
4272 impl ::std::default::Default for ShaderModuleCreateInfo {
default() -> ShaderModuleCreateInfo4273     fn default() -> ShaderModuleCreateInfo {
4274         ShaderModuleCreateInfo {
4275             s_type: StructureType::SHADER_MODULE_CREATE_INFO,
4276             p_next: ::std::ptr::null(),
4277             flags: ShaderModuleCreateFlags::default(),
4278             code_size: usize::default(),
4279             p_code: ::std::ptr::null(),
4280         }
4281     }
4282 }
4283 impl ShaderModuleCreateInfo {
builder<'a>() -> ShaderModuleCreateInfoBuilder<'a>4284     pub fn builder<'a>() -> ShaderModuleCreateInfoBuilder<'a> {
4285         ShaderModuleCreateInfoBuilder {
4286             inner: ShaderModuleCreateInfo::default(),
4287             marker: ::std::marker::PhantomData,
4288         }
4289     }
4290 }
4291 #[repr(transparent)]
4292 pub struct ShaderModuleCreateInfoBuilder<'a> {
4293     inner: ShaderModuleCreateInfo,
4294     marker: ::std::marker::PhantomData<&'a ()>,
4295 }
4296 pub unsafe trait ExtendsShaderModuleCreateInfo {}
4297 impl<'a> ::std::ops::Deref for ShaderModuleCreateInfoBuilder<'a> {
4298     type Target = ShaderModuleCreateInfo;
deref(&self) -> &Self::Target4299     fn deref(&self) -> &Self::Target {
4300         &self.inner
4301     }
4302 }
4303 impl<'a> ::std::ops::DerefMut for ShaderModuleCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4304     fn deref_mut(&mut self) -> &mut Self::Target {
4305         &mut self.inner
4306     }
4307 }
4308 impl<'a> ShaderModuleCreateInfoBuilder<'a> {
flags(mut self, flags: ShaderModuleCreateFlags) -> Self4309     pub fn flags(mut self, flags: ShaderModuleCreateFlags) -> Self {
4310         self.inner.flags = flags;
4311         self
4312     }
code(mut self, code: &'a [u32]) -> Self4313     pub fn code(mut self, code: &'a [u32]) -> Self {
4314         self.inner.code_size = code.len() * 4;
4315         self.inner.p_code = code.as_ptr() as *const u32;
4316         self
4317     }
4318     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4319     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4320     #[doc = r" valid extension structs can be pushed into the chain."]
4321     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4322     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsShaderModuleCreateInfo>(mut self, next: &'a mut T) -> Self4323     pub fn push_next<T: ExtendsShaderModuleCreateInfo>(mut self, next: &'a mut T) -> Self {
4324         unsafe {
4325             let next_ptr = next as *mut T as *mut BaseOutStructure;
4326             let last_next = ptr_chain_iter(next).last().unwrap();
4327             (*last_next).p_next = self.inner.p_next as _;
4328             self.inner.p_next = next_ptr as _;
4329         }
4330         self
4331     }
4332     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4333     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4334     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderModuleCreateInfo4335     pub fn build(self) -> ShaderModuleCreateInfo {
4336         self.inner
4337     }
4338 }
4339 #[repr(C)]
4340 #[derive(Copy, Clone, Debug)]
4341 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutBinding.html>"]
4342 pub struct DescriptorSetLayoutBinding {
4343     pub binding: u32,
4344     pub descriptor_type: DescriptorType,
4345     pub descriptor_count: u32,
4346     pub stage_flags: ShaderStageFlags,
4347     pub p_immutable_samplers: *const Sampler,
4348 }
4349 impl ::std::default::Default for DescriptorSetLayoutBinding {
default() -> DescriptorSetLayoutBinding4350     fn default() -> DescriptorSetLayoutBinding {
4351         DescriptorSetLayoutBinding {
4352             binding: u32::default(),
4353             descriptor_type: DescriptorType::default(),
4354             descriptor_count: u32::default(),
4355             stage_flags: ShaderStageFlags::default(),
4356             p_immutable_samplers: ::std::ptr::null(),
4357         }
4358     }
4359 }
4360 impl DescriptorSetLayoutBinding {
builder<'a>() -> DescriptorSetLayoutBindingBuilder<'a>4361     pub fn builder<'a>() -> DescriptorSetLayoutBindingBuilder<'a> {
4362         DescriptorSetLayoutBindingBuilder {
4363             inner: DescriptorSetLayoutBinding::default(),
4364             marker: ::std::marker::PhantomData,
4365         }
4366     }
4367 }
4368 #[repr(transparent)]
4369 pub struct DescriptorSetLayoutBindingBuilder<'a> {
4370     inner: DescriptorSetLayoutBinding,
4371     marker: ::std::marker::PhantomData<&'a ()>,
4372 }
4373 impl<'a> ::std::ops::Deref for DescriptorSetLayoutBindingBuilder<'a> {
4374     type Target = DescriptorSetLayoutBinding;
deref(&self) -> &Self::Target4375     fn deref(&self) -> &Self::Target {
4376         &self.inner
4377     }
4378 }
4379 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutBindingBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4380     fn deref_mut(&mut self) -> &mut Self::Target {
4381         &mut self.inner
4382     }
4383 }
4384 impl<'a> DescriptorSetLayoutBindingBuilder<'a> {
binding(mut self, binding: u32) -> Self4385     pub fn binding(mut self, binding: u32) -> Self {
4386         self.inner.binding = binding;
4387         self
4388     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self4389     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
4390         self.inner.descriptor_type = descriptor_type;
4391         self
4392     }
descriptor_count(mut self, descriptor_count: u32) -> Self4393     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
4394         self.inner.descriptor_count = descriptor_count;
4395         self
4396     }
stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self4397     pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self {
4398         self.inner.stage_flags = stage_flags;
4399         self
4400     }
immutable_samplers(mut self, immutable_samplers: &'a [Sampler]) -> Self4401     pub fn immutable_samplers(mut self, immutable_samplers: &'a [Sampler]) -> Self {
4402         self.inner.descriptor_count = immutable_samplers.len() as _;
4403         self.inner.p_immutable_samplers = immutable_samplers.as_ptr();
4404         self
4405     }
4406     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4407     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4408     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutBinding4409     pub fn build(self) -> DescriptorSetLayoutBinding {
4410         self.inner
4411     }
4412 }
4413 #[repr(C)]
4414 #[derive(Copy, Clone, Debug)]
4415 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html>"]
4416 pub struct DescriptorSetLayoutCreateInfo {
4417     pub s_type: StructureType,
4418     pub p_next: *const c_void,
4419     pub flags: DescriptorSetLayoutCreateFlags,
4420     pub binding_count: u32,
4421     pub p_bindings: *const DescriptorSetLayoutBinding,
4422 }
4423 impl ::std::default::Default for DescriptorSetLayoutCreateInfo {
default() -> DescriptorSetLayoutCreateInfo4424     fn default() -> DescriptorSetLayoutCreateInfo {
4425         DescriptorSetLayoutCreateInfo {
4426             s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
4427             p_next: ::std::ptr::null(),
4428             flags: DescriptorSetLayoutCreateFlags::default(),
4429             binding_count: u32::default(),
4430             p_bindings: ::std::ptr::null(),
4431         }
4432     }
4433 }
4434 impl DescriptorSetLayoutCreateInfo {
builder<'a>() -> DescriptorSetLayoutCreateInfoBuilder<'a>4435     pub fn builder<'a>() -> DescriptorSetLayoutCreateInfoBuilder<'a> {
4436         DescriptorSetLayoutCreateInfoBuilder {
4437             inner: DescriptorSetLayoutCreateInfo::default(),
4438             marker: ::std::marker::PhantomData,
4439         }
4440     }
4441 }
4442 #[repr(transparent)]
4443 pub struct DescriptorSetLayoutCreateInfoBuilder<'a> {
4444     inner: DescriptorSetLayoutCreateInfo,
4445     marker: ::std::marker::PhantomData<&'a ()>,
4446 }
4447 pub unsafe trait ExtendsDescriptorSetLayoutCreateInfo {}
4448 impl<'a> ::std::ops::Deref for DescriptorSetLayoutCreateInfoBuilder<'a> {
4449     type Target = DescriptorSetLayoutCreateInfo;
deref(&self) -> &Self::Target4450     fn deref(&self) -> &Self::Target {
4451         &self.inner
4452     }
4453 }
4454 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4455     fn deref_mut(&mut self) -> &mut Self::Target {
4456         &mut self.inner
4457     }
4458 }
4459 impl<'a> DescriptorSetLayoutCreateInfoBuilder<'a> {
flags(mut self, flags: DescriptorSetLayoutCreateFlags) -> Self4460     pub fn flags(mut self, flags: DescriptorSetLayoutCreateFlags) -> Self {
4461         self.inner.flags = flags;
4462         self
4463     }
bindings(mut self, bindings: &'a [DescriptorSetLayoutBinding]) -> Self4464     pub fn bindings(mut self, bindings: &'a [DescriptorSetLayoutBinding]) -> Self {
4465         self.inner.binding_count = bindings.len() as _;
4466         self.inner.p_bindings = bindings.as_ptr();
4467         self
4468     }
4469     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4470     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4471     #[doc = r" valid extension structs can be pushed into the chain."]
4472     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4473     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorSetLayoutCreateInfo>(mut self, next: &'a mut T) -> Self4474     pub fn push_next<T: ExtendsDescriptorSetLayoutCreateInfo>(mut self, next: &'a mut T) -> Self {
4475         unsafe {
4476             let next_ptr = next as *mut T as *mut BaseOutStructure;
4477             let last_next = ptr_chain_iter(next).last().unwrap();
4478             (*last_next).p_next = self.inner.p_next as _;
4479             self.inner.p_next = next_ptr as _;
4480         }
4481         self
4482     }
4483     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4484     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4485     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutCreateInfo4486     pub fn build(self) -> DescriptorSetLayoutCreateInfo {
4487         self.inner
4488     }
4489 }
4490 #[repr(C)]
4491 #[derive(Copy, Clone, Default, Debug)]
4492 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolSize.html>"]
4493 pub struct DescriptorPoolSize {
4494     pub ty: DescriptorType,
4495     pub descriptor_count: u32,
4496 }
4497 impl DescriptorPoolSize {
builder<'a>() -> DescriptorPoolSizeBuilder<'a>4498     pub fn builder<'a>() -> DescriptorPoolSizeBuilder<'a> {
4499         DescriptorPoolSizeBuilder {
4500             inner: DescriptorPoolSize::default(),
4501             marker: ::std::marker::PhantomData,
4502         }
4503     }
4504 }
4505 #[repr(transparent)]
4506 pub struct DescriptorPoolSizeBuilder<'a> {
4507     inner: DescriptorPoolSize,
4508     marker: ::std::marker::PhantomData<&'a ()>,
4509 }
4510 impl<'a> ::std::ops::Deref for DescriptorPoolSizeBuilder<'a> {
4511     type Target = DescriptorPoolSize;
deref(&self) -> &Self::Target4512     fn deref(&self) -> &Self::Target {
4513         &self.inner
4514     }
4515 }
4516 impl<'a> ::std::ops::DerefMut for DescriptorPoolSizeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4517     fn deref_mut(&mut self) -> &mut Self::Target {
4518         &mut self.inner
4519     }
4520 }
4521 impl<'a> DescriptorPoolSizeBuilder<'a> {
ty(mut self, ty: DescriptorType) -> Self4522     pub fn ty(mut self, ty: DescriptorType) -> Self {
4523         self.inner.ty = ty;
4524         self
4525     }
descriptor_count(mut self, descriptor_count: u32) -> Self4526     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
4527         self.inner.descriptor_count = descriptor_count;
4528         self
4529     }
4530     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4531     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4532     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorPoolSize4533     pub fn build(self) -> DescriptorPoolSize {
4534         self.inner
4535     }
4536 }
4537 #[repr(C)]
4538 #[derive(Copy, Clone, Debug)]
4539 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolCreateInfo.html>"]
4540 pub struct DescriptorPoolCreateInfo {
4541     pub s_type: StructureType,
4542     pub p_next: *const c_void,
4543     pub flags: DescriptorPoolCreateFlags,
4544     pub max_sets: u32,
4545     pub pool_size_count: u32,
4546     pub p_pool_sizes: *const DescriptorPoolSize,
4547 }
4548 impl ::std::default::Default for DescriptorPoolCreateInfo {
default() -> DescriptorPoolCreateInfo4549     fn default() -> DescriptorPoolCreateInfo {
4550         DescriptorPoolCreateInfo {
4551             s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
4552             p_next: ::std::ptr::null(),
4553             flags: DescriptorPoolCreateFlags::default(),
4554             max_sets: u32::default(),
4555             pool_size_count: u32::default(),
4556             p_pool_sizes: ::std::ptr::null(),
4557         }
4558     }
4559 }
4560 impl DescriptorPoolCreateInfo {
builder<'a>() -> DescriptorPoolCreateInfoBuilder<'a>4561     pub fn builder<'a>() -> DescriptorPoolCreateInfoBuilder<'a> {
4562         DescriptorPoolCreateInfoBuilder {
4563             inner: DescriptorPoolCreateInfo::default(),
4564             marker: ::std::marker::PhantomData,
4565         }
4566     }
4567 }
4568 #[repr(transparent)]
4569 pub struct DescriptorPoolCreateInfoBuilder<'a> {
4570     inner: DescriptorPoolCreateInfo,
4571     marker: ::std::marker::PhantomData<&'a ()>,
4572 }
4573 pub unsafe trait ExtendsDescriptorPoolCreateInfo {}
4574 impl<'a> ::std::ops::Deref for DescriptorPoolCreateInfoBuilder<'a> {
4575     type Target = DescriptorPoolCreateInfo;
deref(&self) -> &Self::Target4576     fn deref(&self) -> &Self::Target {
4577         &self.inner
4578     }
4579 }
4580 impl<'a> ::std::ops::DerefMut for DescriptorPoolCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4581     fn deref_mut(&mut self) -> &mut Self::Target {
4582         &mut self.inner
4583     }
4584 }
4585 impl<'a> DescriptorPoolCreateInfoBuilder<'a> {
flags(mut self, flags: DescriptorPoolCreateFlags) -> Self4586     pub fn flags(mut self, flags: DescriptorPoolCreateFlags) -> Self {
4587         self.inner.flags = flags;
4588         self
4589     }
max_sets(mut self, max_sets: u32) -> Self4590     pub fn max_sets(mut self, max_sets: u32) -> Self {
4591         self.inner.max_sets = max_sets;
4592         self
4593     }
pool_sizes(mut self, pool_sizes: &'a [DescriptorPoolSize]) -> Self4594     pub fn pool_sizes(mut self, pool_sizes: &'a [DescriptorPoolSize]) -> Self {
4595         self.inner.pool_size_count = pool_sizes.len() as _;
4596         self.inner.p_pool_sizes = pool_sizes.as_ptr();
4597         self
4598     }
4599     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4600     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4601     #[doc = r" valid extension structs can be pushed into the chain."]
4602     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4603     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorPoolCreateInfo>(mut self, next: &'a mut T) -> Self4604     pub fn push_next<T: ExtendsDescriptorPoolCreateInfo>(mut self, next: &'a mut T) -> Self {
4605         unsafe {
4606             let next_ptr = next as *mut T as *mut BaseOutStructure;
4607             let last_next = ptr_chain_iter(next).last().unwrap();
4608             (*last_next).p_next = self.inner.p_next as _;
4609             self.inner.p_next = next_ptr as _;
4610         }
4611         self
4612     }
4613     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4614     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4615     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorPoolCreateInfo4616     pub fn build(self) -> DescriptorPoolCreateInfo {
4617         self.inner
4618     }
4619 }
4620 #[repr(C)]
4621 #[derive(Copy, Clone, Debug)]
4622 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetAllocateInfo.html>"]
4623 pub struct DescriptorSetAllocateInfo {
4624     pub s_type: StructureType,
4625     pub p_next: *const c_void,
4626     pub descriptor_pool: DescriptorPool,
4627     pub descriptor_set_count: u32,
4628     pub p_set_layouts: *const DescriptorSetLayout,
4629 }
4630 impl ::std::default::Default for DescriptorSetAllocateInfo {
default() -> DescriptorSetAllocateInfo4631     fn default() -> DescriptorSetAllocateInfo {
4632         DescriptorSetAllocateInfo {
4633             s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
4634             p_next: ::std::ptr::null(),
4635             descriptor_pool: DescriptorPool::default(),
4636             descriptor_set_count: u32::default(),
4637             p_set_layouts: ::std::ptr::null(),
4638         }
4639     }
4640 }
4641 impl DescriptorSetAllocateInfo {
builder<'a>() -> DescriptorSetAllocateInfoBuilder<'a>4642     pub fn builder<'a>() -> DescriptorSetAllocateInfoBuilder<'a> {
4643         DescriptorSetAllocateInfoBuilder {
4644             inner: DescriptorSetAllocateInfo::default(),
4645             marker: ::std::marker::PhantomData,
4646         }
4647     }
4648 }
4649 #[repr(transparent)]
4650 pub struct DescriptorSetAllocateInfoBuilder<'a> {
4651     inner: DescriptorSetAllocateInfo,
4652     marker: ::std::marker::PhantomData<&'a ()>,
4653 }
4654 pub unsafe trait ExtendsDescriptorSetAllocateInfo {}
4655 impl<'a> ::std::ops::Deref for DescriptorSetAllocateInfoBuilder<'a> {
4656     type Target = DescriptorSetAllocateInfo;
deref(&self) -> &Self::Target4657     fn deref(&self) -> &Self::Target {
4658         &self.inner
4659     }
4660 }
4661 impl<'a> ::std::ops::DerefMut for DescriptorSetAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4662     fn deref_mut(&mut self) -> &mut Self::Target {
4663         &mut self.inner
4664     }
4665 }
4666 impl<'a> DescriptorSetAllocateInfoBuilder<'a> {
descriptor_pool(mut self, descriptor_pool: DescriptorPool) -> Self4667     pub fn descriptor_pool(mut self, descriptor_pool: DescriptorPool) -> Self {
4668         self.inner.descriptor_pool = descriptor_pool;
4669         self
4670     }
set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self4671     pub fn set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self {
4672         self.inner.descriptor_set_count = set_layouts.len() as _;
4673         self.inner.p_set_layouts = set_layouts.as_ptr();
4674         self
4675     }
4676     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4677     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4678     #[doc = r" valid extension structs can be pushed into the chain."]
4679     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4680     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorSetAllocateInfo>(mut self, next: &'a mut T) -> Self4681     pub fn push_next<T: ExtendsDescriptorSetAllocateInfo>(mut self, next: &'a mut T) -> Self {
4682         unsafe {
4683             let next_ptr = next as *mut T as *mut BaseOutStructure;
4684             let last_next = ptr_chain_iter(next).last().unwrap();
4685             (*last_next).p_next = self.inner.p_next as _;
4686             self.inner.p_next = next_ptr as _;
4687         }
4688         self
4689     }
4690     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4691     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4692     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetAllocateInfo4693     pub fn build(self) -> DescriptorSetAllocateInfo {
4694         self.inner
4695     }
4696 }
4697 #[repr(C)]
4698 #[derive(Copy, Clone, Default, Debug)]
4699 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationMapEntry.html>"]
4700 pub struct SpecializationMapEntry {
4701     pub constant_id: u32,
4702     pub offset: u32,
4703     pub size: usize,
4704 }
4705 impl SpecializationMapEntry {
builder<'a>() -> SpecializationMapEntryBuilder<'a>4706     pub fn builder<'a>() -> SpecializationMapEntryBuilder<'a> {
4707         SpecializationMapEntryBuilder {
4708             inner: SpecializationMapEntry::default(),
4709             marker: ::std::marker::PhantomData,
4710         }
4711     }
4712 }
4713 #[repr(transparent)]
4714 pub struct SpecializationMapEntryBuilder<'a> {
4715     inner: SpecializationMapEntry,
4716     marker: ::std::marker::PhantomData<&'a ()>,
4717 }
4718 impl<'a> ::std::ops::Deref for SpecializationMapEntryBuilder<'a> {
4719     type Target = SpecializationMapEntry;
deref(&self) -> &Self::Target4720     fn deref(&self) -> &Self::Target {
4721         &self.inner
4722     }
4723 }
4724 impl<'a> ::std::ops::DerefMut for SpecializationMapEntryBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4725     fn deref_mut(&mut self) -> &mut Self::Target {
4726         &mut self.inner
4727     }
4728 }
4729 impl<'a> SpecializationMapEntryBuilder<'a> {
constant_id(mut self, constant_id: u32) -> Self4730     pub fn constant_id(mut self, constant_id: u32) -> Self {
4731         self.inner.constant_id = constant_id;
4732         self
4733     }
offset(mut self, offset: u32) -> Self4734     pub fn offset(mut self, offset: u32) -> Self {
4735         self.inner.offset = offset;
4736         self
4737     }
size(mut self, size: usize) -> Self4738     pub fn size(mut self, size: usize) -> Self {
4739         self.inner.size = size;
4740         self
4741     }
4742     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4743     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4744     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SpecializationMapEntry4745     pub fn build(self) -> SpecializationMapEntry {
4746         self.inner
4747     }
4748 }
4749 #[repr(C)]
4750 #[derive(Copy, Clone, Debug)]
4751 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationInfo.html>"]
4752 pub struct SpecializationInfo {
4753     pub map_entry_count: u32,
4754     pub p_map_entries: *const SpecializationMapEntry,
4755     pub data_size: usize,
4756     pub p_data: *const c_void,
4757 }
4758 impl ::std::default::Default for SpecializationInfo {
default() -> SpecializationInfo4759     fn default() -> SpecializationInfo {
4760         SpecializationInfo {
4761             map_entry_count: u32::default(),
4762             p_map_entries: ::std::ptr::null(),
4763             data_size: usize::default(),
4764             p_data: ::std::ptr::null(),
4765         }
4766     }
4767 }
4768 impl SpecializationInfo {
builder<'a>() -> SpecializationInfoBuilder<'a>4769     pub fn builder<'a>() -> SpecializationInfoBuilder<'a> {
4770         SpecializationInfoBuilder {
4771             inner: SpecializationInfo::default(),
4772             marker: ::std::marker::PhantomData,
4773         }
4774     }
4775 }
4776 #[repr(transparent)]
4777 pub struct SpecializationInfoBuilder<'a> {
4778     inner: SpecializationInfo,
4779     marker: ::std::marker::PhantomData<&'a ()>,
4780 }
4781 impl<'a> ::std::ops::Deref for SpecializationInfoBuilder<'a> {
4782     type Target = SpecializationInfo;
deref(&self) -> &Self::Target4783     fn deref(&self) -> &Self::Target {
4784         &self.inner
4785     }
4786 }
4787 impl<'a> ::std::ops::DerefMut for SpecializationInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4788     fn deref_mut(&mut self) -> &mut Self::Target {
4789         &mut self.inner
4790     }
4791 }
4792 impl<'a> SpecializationInfoBuilder<'a> {
map_entries(mut self, map_entries: &'a [SpecializationMapEntry]) -> Self4793     pub fn map_entries(mut self, map_entries: &'a [SpecializationMapEntry]) -> Self {
4794         self.inner.map_entry_count = map_entries.len() as _;
4795         self.inner.p_map_entries = map_entries.as_ptr();
4796         self
4797     }
data(mut self, data: &'a [u8]) -> Self4798     pub fn data(mut self, data: &'a [u8]) -> Self {
4799         self.inner.data_size = data.len() as _;
4800         self.inner.p_data = data.as_ptr() as *const c_void;
4801         self
4802     }
4803     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4804     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4805     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SpecializationInfo4806     pub fn build(self) -> SpecializationInfo {
4807         self.inner
4808     }
4809 }
4810 #[repr(C)]
4811 #[derive(Copy, Clone, Debug)]
4812 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageCreateInfo.html>"]
4813 pub struct PipelineShaderStageCreateInfo {
4814     pub s_type: StructureType,
4815     pub p_next: *const c_void,
4816     pub flags: PipelineShaderStageCreateFlags,
4817     pub stage: ShaderStageFlags,
4818     pub module: ShaderModule,
4819     pub p_name: *const c_char,
4820     pub p_specialization_info: *const SpecializationInfo,
4821 }
4822 impl ::std::default::Default for PipelineShaderStageCreateInfo {
default() -> PipelineShaderStageCreateInfo4823     fn default() -> PipelineShaderStageCreateInfo {
4824         PipelineShaderStageCreateInfo {
4825             s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
4826             p_next: ::std::ptr::null(),
4827             flags: PipelineShaderStageCreateFlags::default(),
4828             stage: ShaderStageFlags::default(),
4829             module: ShaderModule::default(),
4830             p_name: ::std::ptr::null(),
4831             p_specialization_info: ::std::ptr::null(),
4832         }
4833     }
4834 }
4835 impl PipelineShaderStageCreateInfo {
builder<'a>() -> PipelineShaderStageCreateInfoBuilder<'a>4836     pub fn builder<'a>() -> PipelineShaderStageCreateInfoBuilder<'a> {
4837         PipelineShaderStageCreateInfoBuilder {
4838             inner: PipelineShaderStageCreateInfo::default(),
4839             marker: ::std::marker::PhantomData,
4840         }
4841     }
4842 }
4843 #[repr(transparent)]
4844 pub struct PipelineShaderStageCreateInfoBuilder<'a> {
4845     inner: PipelineShaderStageCreateInfo,
4846     marker: ::std::marker::PhantomData<&'a ()>,
4847 }
4848 pub unsafe trait ExtendsPipelineShaderStageCreateInfo {}
4849 impl<'a> ::std::ops::Deref for PipelineShaderStageCreateInfoBuilder<'a> {
4850     type Target = PipelineShaderStageCreateInfo;
deref(&self) -> &Self::Target4851     fn deref(&self) -> &Self::Target {
4852         &self.inner
4853     }
4854 }
4855 impl<'a> ::std::ops::DerefMut for PipelineShaderStageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4856     fn deref_mut(&mut self) -> &mut Self::Target {
4857         &mut self.inner
4858     }
4859 }
4860 impl<'a> PipelineShaderStageCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineShaderStageCreateFlags) -> Self4861     pub fn flags(mut self, flags: PipelineShaderStageCreateFlags) -> Self {
4862         self.inner.flags = flags;
4863         self
4864     }
stage(mut self, stage: ShaderStageFlags) -> Self4865     pub fn stage(mut self, stage: ShaderStageFlags) -> Self {
4866         self.inner.stage = stage;
4867         self
4868     }
module(mut self, module: ShaderModule) -> Self4869     pub fn module(mut self, module: ShaderModule) -> Self {
4870         self.inner.module = module;
4871         self
4872     }
name(mut self, name: &'a ::std::ffi::CStr) -> Self4873     pub fn name(mut self, name: &'a ::std::ffi::CStr) -> Self {
4874         self.inner.p_name = name.as_ptr();
4875         self
4876     }
specialization_info(mut self, specialization_info: &'a SpecializationInfo) -> Self4877     pub fn specialization_info(mut self, specialization_info: &'a SpecializationInfo) -> Self {
4878         self.inner.p_specialization_info = specialization_info;
4879         self
4880     }
4881     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4882     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4883     #[doc = r" valid extension structs can be pushed into the chain."]
4884     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4885     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineShaderStageCreateInfo>(mut self, next: &'a mut T) -> Self4886     pub fn push_next<T: ExtendsPipelineShaderStageCreateInfo>(mut self, next: &'a mut T) -> Self {
4887         unsafe {
4888             let next_ptr = next as *mut T as *mut BaseOutStructure;
4889             let last_next = ptr_chain_iter(next).last().unwrap();
4890             (*last_next).p_next = self.inner.p_next as _;
4891             self.inner.p_next = next_ptr as _;
4892         }
4893         self
4894     }
4895     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4896     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4897     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineShaderStageCreateInfo4898     pub fn build(self) -> PipelineShaderStageCreateInfo {
4899         self.inner
4900     }
4901 }
4902 #[repr(C)]
4903 #[derive(Copy, Clone, Debug)]
4904 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComputePipelineCreateInfo.html>"]
4905 pub struct ComputePipelineCreateInfo {
4906     pub s_type: StructureType,
4907     pub p_next: *const c_void,
4908     pub flags: PipelineCreateFlags,
4909     pub stage: PipelineShaderStageCreateInfo,
4910     pub layout: PipelineLayout,
4911     pub base_pipeline_handle: Pipeline,
4912     pub base_pipeline_index: i32,
4913 }
4914 impl ::std::default::Default for ComputePipelineCreateInfo {
default() -> ComputePipelineCreateInfo4915     fn default() -> ComputePipelineCreateInfo {
4916         ComputePipelineCreateInfo {
4917             s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
4918             p_next: ::std::ptr::null(),
4919             flags: PipelineCreateFlags::default(),
4920             stage: PipelineShaderStageCreateInfo::default(),
4921             layout: PipelineLayout::default(),
4922             base_pipeline_handle: Pipeline::default(),
4923             base_pipeline_index: i32::default(),
4924         }
4925     }
4926 }
4927 impl ComputePipelineCreateInfo {
builder<'a>() -> ComputePipelineCreateInfoBuilder<'a>4928     pub fn builder<'a>() -> ComputePipelineCreateInfoBuilder<'a> {
4929         ComputePipelineCreateInfoBuilder {
4930             inner: ComputePipelineCreateInfo::default(),
4931             marker: ::std::marker::PhantomData,
4932         }
4933     }
4934 }
4935 #[repr(transparent)]
4936 pub struct ComputePipelineCreateInfoBuilder<'a> {
4937     inner: ComputePipelineCreateInfo,
4938     marker: ::std::marker::PhantomData<&'a ()>,
4939 }
4940 pub unsafe trait ExtendsComputePipelineCreateInfo {}
4941 impl<'a> ::std::ops::Deref for ComputePipelineCreateInfoBuilder<'a> {
4942     type Target = ComputePipelineCreateInfo;
deref(&self) -> &Self::Target4943     fn deref(&self) -> &Self::Target {
4944         &self.inner
4945     }
4946 }
4947 impl<'a> ::std::ops::DerefMut for ComputePipelineCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4948     fn deref_mut(&mut self) -> &mut Self::Target {
4949         &mut self.inner
4950     }
4951 }
4952 impl<'a> ComputePipelineCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self4953     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
4954         self.inner.flags = flags;
4955         self
4956     }
stage(mut self, stage: PipelineShaderStageCreateInfo) -> Self4957     pub fn stage(mut self, stage: PipelineShaderStageCreateInfo) -> Self {
4958         self.inner.stage = stage;
4959         self
4960     }
layout(mut self, layout: PipelineLayout) -> Self4961     pub fn layout(mut self, layout: PipelineLayout) -> Self {
4962         self.inner.layout = layout;
4963         self
4964     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self4965     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
4966         self.inner.base_pipeline_handle = base_pipeline_handle;
4967         self
4968     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self4969     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
4970         self.inner.base_pipeline_index = base_pipeline_index;
4971         self
4972     }
4973     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4974     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4975     #[doc = r" valid extension structs can be pushed into the chain."]
4976     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4977     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsComputePipelineCreateInfo>(mut self, next: &'a mut T) -> Self4978     pub fn push_next<T: ExtendsComputePipelineCreateInfo>(mut self, next: &'a mut T) -> Self {
4979         unsafe {
4980             let next_ptr = next as *mut T as *mut BaseOutStructure;
4981             let last_next = ptr_chain_iter(next).last().unwrap();
4982             (*last_next).p_next = self.inner.p_next as _;
4983             self.inner.p_next = next_ptr as _;
4984         }
4985         self
4986     }
4987     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4988     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4989     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ComputePipelineCreateInfo4990     pub fn build(self) -> ComputePipelineCreateInfo {
4991         self.inner
4992     }
4993 }
4994 #[repr(C)]
4995 #[derive(Copy, Clone, Default, Debug)]
4996 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDescription.html>"]
4997 pub struct VertexInputBindingDescription {
4998     pub binding: u32,
4999     pub stride: u32,
5000     pub input_rate: VertexInputRate,
5001 }
5002 impl VertexInputBindingDescription {
builder<'a>() -> VertexInputBindingDescriptionBuilder<'a>5003     pub fn builder<'a>() -> VertexInputBindingDescriptionBuilder<'a> {
5004         VertexInputBindingDescriptionBuilder {
5005             inner: VertexInputBindingDescription::default(),
5006             marker: ::std::marker::PhantomData,
5007         }
5008     }
5009 }
5010 #[repr(transparent)]
5011 pub struct VertexInputBindingDescriptionBuilder<'a> {
5012     inner: VertexInputBindingDescription,
5013     marker: ::std::marker::PhantomData<&'a ()>,
5014 }
5015 impl<'a> ::std::ops::Deref for VertexInputBindingDescriptionBuilder<'a> {
5016     type Target = VertexInputBindingDescription;
deref(&self) -> &Self::Target5017     fn deref(&self) -> &Self::Target {
5018         &self.inner
5019     }
5020 }
5021 impl<'a> ::std::ops::DerefMut for VertexInputBindingDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5022     fn deref_mut(&mut self) -> &mut Self::Target {
5023         &mut self.inner
5024     }
5025 }
5026 impl<'a> VertexInputBindingDescriptionBuilder<'a> {
binding(mut self, binding: u32) -> Self5027     pub fn binding(mut self, binding: u32) -> Self {
5028         self.inner.binding = binding;
5029         self
5030     }
stride(mut self, stride: u32) -> Self5031     pub fn stride(mut self, stride: u32) -> Self {
5032         self.inner.stride = stride;
5033         self
5034     }
input_rate(mut self, input_rate: VertexInputRate) -> Self5035     pub fn input_rate(mut self, input_rate: VertexInputRate) -> Self {
5036         self.inner.input_rate = input_rate;
5037         self
5038     }
5039     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5040     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5041     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputBindingDescription5042     pub fn build(self) -> VertexInputBindingDescription {
5043         self.inner
5044     }
5045 }
5046 #[repr(C)]
5047 #[derive(Copy, Clone, Default, Debug)]
5048 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputAttributeDescription.html>"]
5049 pub struct VertexInputAttributeDescription {
5050     pub location: u32,
5051     pub binding: u32,
5052     pub format: Format,
5053     pub offset: u32,
5054 }
5055 impl VertexInputAttributeDescription {
builder<'a>() -> VertexInputAttributeDescriptionBuilder<'a>5056     pub fn builder<'a>() -> VertexInputAttributeDescriptionBuilder<'a> {
5057         VertexInputAttributeDescriptionBuilder {
5058             inner: VertexInputAttributeDescription::default(),
5059             marker: ::std::marker::PhantomData,
5060         }
5061     }
5062 }
5063 #[repr(transparent)]
5064 pub struct VertexInputAttributeDescriptionBuilder<'a> {
5065     inner: VertexInputAttributeDescription,
5066     marker: ::std::marker::PhantomData<&'a ()>,
5067 }
5068 impl<'a> ::std::ops::Deref for VertexInputAttributeDescriptionBuilder<'a> {
5069     type Target = VertexInputAttributeDescription;
deref(&self) -> &Self::Target5070     fn deref(&self) -> &Self::Target {
5071         &self.inner
5072     }
5073 }
5074 impl<'a> ::std::ops::DerefMut for VertexInputAttributeDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5075     fn deref_mut(&mut self) -> &mut Self::Target {
5076         &mut self.inner
5077     }
5078 }
5079 impl<'a> VertexInputAttributeDescriptionBuilder<'a> {
location(mut self, location: u32) -> Self5080     pub fn location(mut self, location: u32) -> Self {
5081         self.inner.location = location;
5082         self
5083     }
binding(mut self, binding: u32) -> Self5084     pub fn binding(mut self, binding: u32) -> Self {
5085         self.inner.binding = binding;
5086         self
5087     }
format(mut self, format: Format) -> Self5088     pub fn format(mut self, format: Format) -> Self {
5089         self.inner.format = format;
5090         self
5091     }
offset(mut self, offset: u32) -> Self5092     pub fn offset(mut self, offset: u32) -> Self {
5093         self.inner.offset = offset;
5094         self
5095     }
5096     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5097     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5098     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputAttributeDescription5099     pub fn build(self) -> VertexInputAttributeDescription {
5100         self.inner
5101     }
5102 }
5103 #[repr(C)]
5104 #[derive(Copy, Clone, Debug)]
5105 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputStateCreateInfo.html>"]
5106 pub struct PipelineVertexInputStateCreateInfo {
5107     pub s_type: StructureType,
5108     pub p_next: *const c_void,
5109     pub flags: PipelineVertexInputStateCreateFlags,
5110     pub vertex_binding_description_count: u32,
5111     pub p_vertex_binding_descriptions: *const VertexInputBindingDescription,
5112     pub vertex_attribute_description_count: u32,
5113     pub p_vertex_attribute_descriptions: *const VertexInputAttributeDescription,
5114 }
5115 impl ::std::default::Default for PipelineVertexInputStateCreateInfo {
default() -> PipelineVertexInputStateCreateInfo5116     fn default() -> PipelineVertexInputStateCreateInfo {
5117         PipelineVertexInputStateCreateInfo {
5118             s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
5119             p_next: ::std::ptr::null(),
5120             flags: PipelineVertexInputStateCreateFlags::default(),
5121             vertex_binding_description_count: u32::default(),
5122             p_vertex_binding_descriptions: ::std::ptr::null(),
5123             vertex_attribute_description_count: u32::default(),
5124             p_vertex_attribute_descriptions: ::std::ptr::null(),
5125         }
5126     }
5127 }
5128 impl PipelineVertexInputStateCreateInfo {
builder<'a>() -> PipelineVertexInputStateCreateInfoBuilder<'a>5129     pub fn builder<'a>() -> PipelineVertexInputStateCreateInfoBuilder<'a> {
5130         PipelineVertexInputStateCreateInfoBuilder {
5131             inner: PipelineVertexInputStateCreateInfo::default(),
5132             marker: ::std::marker::PhantomData,
5133         }
5134     }
5135 }
5136 #[repr(transparent)]
5137 pub struct PipelineVertexInputStateCreateInfoBuilder<'a> {
5138     inner: PipelineVertexInputStateCreateInfo,
5139     marker: ::std::marker::PhantomData<&'a ()>,
5140 }
5141 pub unsafe trait ExtendsPipelineVertexInputStateCreateInfo {}
5142 impl<'a> ::std::ops::Deref for PipelineVertexInputStateCreateInfoBuilder<'a> {
5143     type Target = PipelineVertexInputStateCreateInfo;
deref(&self) -> &Self::Target5144     fn deref(&self) -> &Self::Target {
5145         &self.inner
5146     }
5147 }
5148 impl<'a> ::std::ops::DerefMut for PipelineVertexInputStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5149     fn deref_mut(&mut self) -> &mut Self::Target {
5150         &mut self.inner
5151     }
5152 }
5153 impl<'a> PipelineVertexInputStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineVertexInputStateCreateFlags) -> Self5154     pub fn flags(mut self, flags: PipelineVertexInputStateCreateFlags) -> Self {
5155         self.inner.flags = flags;
5156         self
5157     }
vertex_binding_descriptions( mut self, vertex_binding_descriptions: &'a [VertexInputBindingDescription], ) -> Self5158     pub fn vertex_binding_descriptions(
5159         mut self,
5160         vertex_binding_descriptions: &'a [VertexInputBindingDescription],
5161     ) -> Self {
5162         self.inner.vertex_binding_description_count = vertex_binding_descriptions.len() as _;
5163         self.inner.p_vertex_binding_descriptions = vertex_binding_descriptions.as_ptr();
5164         self
5165     }
vertex_attribute_descriptions( mut self, vertex_attribute_descriptions: &'a [VertexInputAttributeDescription], ) -> Self5166     pub fn vertex_attribute_descriptions(
5167         mut self,
5168         vertex_attribute_descriptions: &'a [VertexInputAttributeDescription],
5169     ) -> Self {
5170         self.inner.vertex_attribute_description_count = vertex_attribute_descriptions.len() as _;
5171         self.inner.p_vertex_attribute_descriptions = vertex_attribute_descriptions.as_ptr();
5172         self
5173     }
5174     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5175     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5176     #[doc = r" valid extension structs can be pushed into the chain."]
5177     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5178     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineVertexInputStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5179     pub fn push_next<T: ExtendsPipelineVertexInputStateCreateInfo>(
5180         mut self,
5181         next: &'a mut T,
5182     ) -> Self {
5183         unsafe {
5184             let next_ptr = next as *mut T as *mut BaseOutStructure;
5185             let last_next = ptr_chain_iter(next).last().unwrap();
5186             (*last_next).p_next = self.inner.p_next as _;
5187             self.inner.p_next = next_ptr as _;
5188         }
5189         self
5190     }
5191     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5192     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5193     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineVertexInputStateCreateInfo5194     pub fn build(self) -> PipelineVertexInputStateCreateInfo {
5195         self.inner
5196     }
5197 }
5198 #[repr(C)]
5199 #[derive(Copy, Clone, Debug)]
5200 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInputAssemblyStateCreateInfo.html>"]
5201 pub struct PipelineInputAssemblyStateCreateInfo {
5202     pub s_type: StructureType,
5203     pub p_next: *const c_void,
5204     pub flags: PipelineInputAssemblyStateCreateFlags,
5205     pub topology: PrimitiveTopology,
5206     pub primitive_restart_enable: Bool32,
5207 }
5208 impl ::std::default::Default for PipelineInputAssemblyStateCreateInfo {
default() -> PipelineInputAssemblyStateCreateInfo5209     fn default() -> PipelineInputAssemblyStateCreateInfo {
5210         PipelineInputAssemblyStateCreateInfo {
5211             s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
5212             p_next: ::std::ptr::null(),
5213             flags: PipelineInputAssemblyStateCreateFlags::default(),
5214             topology: PrimitiveTopology::default(),
5215             primitive_restart_enable: Bool32::default(),
5216         }
5217     }
5218 }
5219 impl PipelineInputAssemblyStateCreateInfo {
builder<'a>() -> PipelineInputAssemblyStateCreateInfoBuilder<'a>5220     pub fn builder<'a>() -> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
5221         PipelineInputAssemblyStateCreateInfoBuilder {
5222             inner: PipelineInputAssemblyStateCreateInfo::default(),
5223             marker: ::std::marker::PhantomData,
5224         }
5225     }
5226 }
5227 #[repr(transparent)]
5228 pub struct PipelineInputAssemblyStateCreateInfoBuilder<'a> {
5229     inner: PipelineInputAssemblyStateCreateInfo,
5230     marker: ::std::marker::PhantomData<&'a ()>,
5231 }
5232 impl<'a> ::std::ops::Deref for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
5233     type Target = PipelineInputAssemblyStateCreateInfo;
deref(&self) -> &Self::Target5234     fn deref(&self) -> &Self::Target {
5235         &self.inner
5236     }
5237 }
5238 impl<'a> ::std::ops::DerefMut for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5239     fn deref_mut(&mut self) -> &mut Self::Target {
5240         &mut self.inner
5241     }
5242 }
5243 impl<'a> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineInputAssemblyStateCreateFlags) -> Self5244     pub fn flags(mut self, flags: PipelineInputAssemblyStateCreateFlags) -> Self {
5245         self.inner.flags = flags;
5246         self
5247     }
topology(mut self, topology: PrimitiveTopology) -> Self5248     pub fn topology(mut self, topology: PrimitiveTopology) -> Self {
5249         self.inner.topology = topology;
5250         self
5251     }
primitive_restart_enable(mut self, primitive_restart_enable: bool) -> Self5252     pub fn primitive_restart_enable(mut self, primitive_restart_enable: bool) -> Self {
5253         self.inner.primitive_restart_enable = primitive_restart_enable.into();
5254         self
5255     }
5256     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5257     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5258     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineInputAssemblyStateCreateInfo5259     pub fn build(self) -> PipelineInputAssemblyStateCreateInfo {
5260         self.inner
5261     }
5262 }
5263 #[repr(C)]
5264 #[derive(Copy, Clone, Debug)]
5265 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationStateCreateInfo.html>"]
5266 pub struct PipelineTessellationStateCreateInfo {
5267     pub s_type: StructureType,
5268     pub p_next: *const c_void,
5269     pub flags: PipelineTessellationStateCreateFlags,
5270     pub patch_control_points: u32,
5271 }
5272 impl ::std::default::Default for PipelineTessellationStateCreateInfo {
default() -> PipelineTessellationStateCreateInfo5273     fn default() -> PipelineTessellationStateCreateInfo {
5274         PipelineTessellationStateCreateInfo {
5275             s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
5276             p_next: ::std::ptr::null(),
5277             flags: PipelineTessellationStateCreateFlags::default(),
5278             patch_control_points: u32::default(),
5279         }
5280     }
5281 }
5282 impl PipelineTessellationStateCreateInfo {
builder<'a>() -> PipelineTessellationStateCreateInfoBuilder<'a>5283     pub fn builder<'a>() -> PipelineTessellationStateCreateInfoBuilder<'a> {
5284         PipelineTessellationStateCreateInfoBuilder {
5285             inner: PipelineTessellationStateCreateInfo::default(),
5286             marker: ::std::marker::PhantomData,
5287         }
5288     }
5289 }
5290 #[repr(transparent)]
5291 pub struct PipelineTessellationStateCreateInfoBuilder<'a> {
5292     inner: PipelineTessellationStateCreateInfo,
5293     marker: ::std::marker::PhantomData<&'a ()>,
5294 }
5295 pub unsafe trait ExtendsPipelineTessellationStateCreateInfo {}
5296 impl<'a> ::std::ops::Deref for PipelineTessellationStateCreateInfoBuilder<'a> {
5297     type Target = PipelineTessellationStateCreateInfo;
deref(&self) -> &Self::Target5298     fn deref(&self) -> &Self::Target {
5299         &self.inner
5300     }
5301 }
5302 impl<'a> ::std::ops::DerefMut for PipelineTessellationStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5303     fn deref_mut(&mut self) -> &mut Self::Target {
5304         &mut self.inner
5305     }
5306 }
5307 impl<'a> PipelineTessellationStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineTessellationStateCreateFlags) -> Self5308     pub fn flags(mut self, flags: PipelineTessellationStateCreateFlags) -> Self {
5309         self.inner.flags = flags;
5310         self
5311     }
patch_control_points(mut self, patch_control_points: u32) -> Self5312     pub fn patch_control_points(mut self, patch_control_points: u32) -> Self {
5313         self.inner.patch_control_points = patch_control_points;
5314         self
5315     }
5316     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5317     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5318     #[doc = r" valid extension structs can be pushed into the chain."]
5319     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5320     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineTessellationStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5321     pub fn push_next<T: ExtendsPipelineTessellationStateCreateInfo>(
5322         mut self,
5323         next: &'a mut T,
5324     ) -> Self {
5325         unsafe {
5326             let next_ptr = next as *mut T as *mut BaseOutStructure;
5327             let last_next = ptr_chain_iter(next).last().unwrap();
5328             (*last_next).p_next = self.inner.p_next as _;
5329             self.inner.p_next = next_ptr as _;
5330         }
5331         self
5332     }
5333     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5334     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5335     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineTessellationStateCreateInfo5336     pub fn build(self) -> PipelineTessellationStateCreateInfo {
5337         self.inner
5338     }
5339 }
5340 #[repr(C)]
5341 #[derive(Copy, Clone, Debug)]
5342 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportStateCreateInfo.html>"]
5343 pub struct PipelineViewportStateCreateInfo {
5344     pub s_type: StructureType,
5345     pub p_next: *const c_void,
5346     pub flags: PipelineViewportStateCreateFlags,
5347     pub viewport_count: u32,
5348     pub p_viewports: *const Viewport,
5349     pub scissor_count: u32,
5350     pub p_scissors: *const Rect2D,
5351 }
5352 impl ::std::default::Default for PipelineViewportStateCreateInfo {
default() -> PipelineViewportStateCreateInfo5353     fn default() -> PipelineViewportStateCreateInfo {
5354         PipelineViewportStateCreateInfo {
5355             s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
5356             p_next: ::std::ptr::null(),
5357             flags: PipelineViewportStateCreateFlags::default(),
5358             viewport_count: u32::default(),
5359             p_viewports: ::std::ptr::null(),
5360             scissor_count: u32::default(),
5361             p_scissors: ::std::ptr::null(),
5362         }
5363     }
5364 }
5365 impl PipelineViewportStateCreateInfo {
builder<'a>() -> PipelineViewportStateCreateInfoBuilder<'a>5366     pub fn builder<'a>() -> PipelineViewportStateCreateInfoBuilder<'a> {
5367         PipelineViewportStateCreateInfoBuilder {
5368             inner: PipelineViewportStateCreateInfo::default(),
5369             marker: ::std::marker::PhantomData,
5370         }
5371     }
5372 }
5373 #[repr(transparent)]
5374 pub struct PipelineViewportStateCreateInfoBuilder<'a> {
5375     inner: PipelineViewportStateCreateInfo,
5376     marker: ::std::marker::PhantomData<&'a ()>,
5377 }
5378 pub unsafe trait ExtendsPipelineViewportStateCreateInfo {}
5379 impl<'a> ::std::ops::Deref for PipelineViewportStateCreateInfoBuilder<'a> {
5380     type Target = PipelineViewportStateCreateInfo;
deref(&self) -> &Self::Target5381     fn deref(&self) -> &Self::Target {
5382         &self.inner
5383     }
5384 }
5385 impl<'a> ::std::ops::DerefMut for PipelineViewportStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5386     fn deref_mut(&mut self) -> &mut Self::Target {
5387         &mut self.inner
5388     }
5389 }
5390 impl<'a> PipelineViewportStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineViewportStateCreateFlags) -> Self5391     pub fn flags(mut self, flags: PipelineViewportStateCreateFlags) -> Self {
5392         self.inner.flags = flags;
5393         self
5394     }
viewport_count(mut self, viewport_count: u32) -> Self5395     pub fn viewport_count(mut self, viewport_count: u32) -> Self {
5396         self.inner.viewport_count = viewport_count;
5397         self
5398     }
viewports(mut self, viewports: &'a [Viewport]) -> Self5399     pub fn viewports(mut self, viewports: &'a [Viewport]) -> Self {
5400         self.inner.viewport_count = viewports.len() as _;
5401         self.inner.p_viewports = viewports.as_ptr();
5402         self
5403     }
scissor_count(mut self, scissor_count: u32) -> Self5404     pub fn scissor_count(mut self, scissor_count: u32) -> Self {
5405         self.inner.scissor_count = scissor_count;
5406         self
5407     }
scissors(mut self, scissors: &'a [Rect2D]) -> Self5408     pub fn scissors(mut self, scissors: &'a [Rect2D]) -> Self {
5409         self.inner.scissor_count = scissors.len() as _;
5410         self.inner.p_scissors = scissors.as_ptr();
5411         self
5412     }
5413     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5414     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5415     #[doc = r" valid extension structs can be pushed into the chain."]
5416     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5417     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineViewportStateCreateInfo>(mut self, next: &'a mut T) -> Self5418     pub fn push_next<T: ExtendsPipelineViewportStateCreateInfo>(mut self, next: &'a mut T) -> Self {
5419         unsafe {
5420             let next_ptr = next as *mut T as *mut BaseOutStructure;
5421             let last_next = ptr_chain_iter(next).last().unwrap();
5422             (*last_next).p_next = self.inner.p_next as _;
5423             self.inner.p_next = next_ptr as _;
5424         }
5425         self
5426     }
5427     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5428     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5429     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportStateCreateInfo5430     pub fn build(self) -> PipelineViewportStateCreateInfo {
5431         self.inner
5432     }
5433 }
5434 #[repr(C)]
5435 #[derive(Copy, Clone, Debug)]
5436 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateCreateInfo.html>"]
5437 pub struct PipelineRasterizationStateCreateInfo {
5438     pub s_type: StructureType,
5439     pub p_next: *const c_void,
5440     pub flags: PipelineRasterizationStateCreateFlags,
5441     pub depth_clamp_enable: Bool32,
5442     pub rasterizer_discard_enable: Bool32,
5443     pub polygon_mode: PolygonMode,
5444     pub cull_mode: CullModeFlags,
5445     pub front_face: FrontFace,
5446     pub depth_bias_enable: Bool32,
5447     pub depth_bias_constant_factor: f32,
5448     pub depth_bias_clamp: f32,
5449     pub depth_bias_slope_factor: f32,
5450     pub line_width: f32,
5451 }
5452 impl ::std::default::Default for PipelineRasterizationStateCreateInfo {
default() -> PipelineRasterizationStateCreateInfo5453     fn default() -> PipelineRasterizationStateCreateInfo {
5454         PipelineRasterizationStateCreateInfo {
5455             s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
5456             p_next: ::std::ptr::null(),
5457             flags: PipelineRasterizationStateCreateFlags::default(),
5458             depth_clamp_enable: Bool32::default(),
5459             rasterizer_discard_enable: Bool32::default(),
5460             polygon_mode: PolygonMode::default(),
5461             cull_mode: CullModeFlags::default(),
5462             front_face: FrontFace::default(),
5463             depth_bias_enable: Bool32::default(),
5464             depth_bias_constant_factor: f32::default(),
5465             depth_bias_clamp: f32::default(),
5466             depth_bias_slope_factor: f32::default(),
5467             line_width: f32::default(),
5468         }
5469     }
5470 }
5471 impl PipelineRasterizationStateCreateInfo {
builder<'a>() -> PipelineRasterizationStateCreateInfoBuilder<'a>5472     pub fn builder<'a>() -> PipelineRasterizationStateCreateInfoBuilder<'a> {
5473         PipelineRasterizationStateCreateInfoBuilder {
5474             inner: PipelineRasterizationStateCreateInfo::default(),
5475             marker: ::std::marker::PhantomData,
5476         }
5477     }
5478 }
5479 #[repr(transparent)]
5480 pub struct PipelineRasterizationStateCreateInfoBuilder<'a> {
5481     inner: PipelineRasterizationStateCreateInfo,
5482     marker: ::std::marker::PhantomData<&'a ()>,
5483 }
5484 pub unsafe trait ExtendsPipelineRasterizationStateCreateInfo {}
5485 impl<'a> ::std::ops::Deref for PipelineRasterizationStateCreateInfoBuilder<'a> {
5486     type Target = PipelineRasterizationStateCreateInfo;
deref(&self) -> &Self::Target5487     fn deref(&self) -> &Self::Target {
5488         &self.inner
5489     }
5490 }
5491 impl<'a> ::std::ops::DerefMut for PipelineRasterizationStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5492     fn deref_mut(&mut self) -> &mut Self::Target {
5493         &mut self.inner
5494     }
5495 }
5496 impl<'a> PipelineRasterizationStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineRasterizationStateCreateFlags) -> Self5497     pub fn flags(mut self, flags: PipelineRasterizationStateCreateFlags) -> Self {
5498         self.inner.flags = flags;
5499         self
5500     }
depth_clamp_enable(mut self, depth_clamp_enable: bool) -> Self5501     pub fn depth_clamp_enable(mut self, depth_clamp_enable: bool) -> Self {
5502         self.inner.depth_clamp_enable = depth_clamp_enable.into();
5503         self
5504     }
rasterizer_discard_enable(mut self, rasterizer_discard_enable: bool) -> Self5505     pub fn rasterizer_discard_enable(mut self, rasterizer_discard_enable: bool) -> Self {
5506         self.inner.rasterizer_discard_enable = rasterizer_discard_enable.into();
5507         self
5508     }
polygon_mode(mut self, polygon_mode: PolygonMode) -> Self5509     pub fn polygon_mode(mut self, polygon_mode: PolygonMode) -> Self {
5510         self.inner.polygon_mode = polygon_mode;
5511         self
5512     }
cull_mode(mut self, cull_mode: CullModeFlags) -> Self5513     pub fn cull_mode(mut self, cull_mode: CullModeFlags) -> Self {
5514         self.inner.cull_mode = cull_mode;
5515         self
5516     }
front_face(mut self, front_face: FrontFace) -> Self5517     pub fn front_face(mut self, front_face: FrontFace) -> Self {
5518         self.inner.front_face = front_face;
5519         self
5520     }
depth_bias_enable(mut self, depth_bias_enable: bool) -> Self5521     pub fn depth_bias_enable(mut self, depth_bias_enable: bool) -> Self {
5522         self.inner.depth_bias_enable = depth_bias_enable.into();
5523         self
5524     }
depth_bias_constant_factor(mut self, depth_bias_constant_factor: f32) -> Self5525     pub fn depth_bias_constant_factor(mut self, depth_bias_constant_factor: f32) -> Self {
5526         self.inner.depth_bias_constant_factor = depth_bias_constant_factor;
5527         self
5528     }
depth_bias_clamp(mut self, depth_bias_clamp: f32) -> Self5529     pub fn depth_bias_clamp(mut self, depth_bias_clamp: f32) -> Self {
5530         self.inner.depth_bias_clamp = depth_bias_clamp;
5531         self
5532     }
depth_bias_slope_factor(mut self, depth_bias_slope_factor: f32) -> Self5533     pub fn depth_bias_slope_factor(mut self, depth_bias_slope_factor: f32) -> Self {
5534         self.inner.depth_bias_slope_factor = depth_bias_slope_factor;
5535         self
5536     }
line_width(mut self, line_width: f32) -> Self5537     pub fn line_width(mut self, line_width: f32) -> Self {
5538         self.inner.line_width = line_width;
5539         self
5540     }
5541     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5542     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5543     #[doc = r" valid extension structs can be pushed into the chain."]
5544     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5545     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineRasterizationStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5546     pub fn push_next<T: ExtendsPipelineRasterizationStateCreateInfo>(
5547         mut self,
5548         next: &'a mut T,
5549     ) -> Self {
5550         unsafe {
5551             let next_ptr = next as *mut T as *mut BaseOutStructure;
5552             let last_next = ptr_chain_iter(next).last().unwrap();
5553             (*last_next).p_next = self.inner.p_next as _;
5554             self.inner.p_next = next_ptr as _;
5555         }
5556         self
5557     }
5558     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5559     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5560     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationStateCreateInfo5561     pub fn build(self) -> PipelineRasterizationStateCreateInfo {
5562         self.inner
5563     }
5564 }
5565 #[repr(C)]
5566 #[derive(Copy, Clone, Debug)]
5567 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html>"]
5568 pub struct PipelineMultisampleStateCreateInfo {
5569     pub s_type: StructureType,
5570     pub p_next: *const c_void,
5571     pub flags: PipelineMultisampleStateCreateFlags,
5572     pub rasterization_samples: SampleCountFlags,
5573     pub sample_shading_enable: Bool32,
5574     pub min_sample_shading: f32,
5575     pub p_sample_mask: *const SampleMask,
5576     pub alpha_to_coverage_enable: Bool32,
5577     pub alpha_to_one_enable: Bool32,
5578 }
5579 impl ::std::default::Default for PipelineMultisampleStateCreateInfo {
default() -> PipelineMultisampleStateCreateInfo5580     fn default() -> PipelineMultisampleStateCreateInfo {
5581         PipelineMultisampleStateCreateInfo {
5582             s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
5583             p_next: ::std::ptr::null(),
5584             flags: PipelineMultisampleStateCreateFlags::default(),
5585             rasterization_samples: SampleCountFlags::default(),
5586             sample_shading_enable: Bool32::default(),
5587             min_sample_shading: f32::default(),
5588             p_sample_mask: ::std::ptr::null(),
5589             alpha_to_coverage_enable: Bool32::default(),
5590             alpha_to_one_enable: Bool32::default(),
5591         }
5592     }
5593 }
5594 impl PipelineMultisampleStateCreateInfo {
builder<'a>() -> PipelineMultisampleStateCreateInfoBuilder<'a>5595     pub fn builder<'a>() -> PipelineMultisampleStateCreateInfoBuilder<'a> {
5596         PipelineMultisampleStateCreateInfoBuilder {
5597             inner: PipelineMultisampleStateCreateInfo::default(),
5598             marker: ::std::marker::PhantomData,
5599         }
5600     }
5601 }
5602 #[repr(transparent)]
5603 pub struct PipelineMultisampleStateCreateInfoBuilder<'a> {
5604     inner: PipelineMultisampleStateCreateInfo,
5605     marker: ::std::marker::PhantomData<&'a ()>,
5606 }
5607 pub unsafe trait ExtendsPipelineMultisampleStateCreateInfo {}
5608 impl<'a> ::std::ops::Deref for PipelineMultisampleStateCreateInfoBuilder<'a> {
5609     type Target = PipelineMultisampleStateCreateInfo;
deref(&self) -> &Self::Target5610     fn deref(&self) -> &Self::Target {
5611         &self.inner
5612     }
5613 }
5614 impl<'a> ::std::ops::DerefMut for PipelineMultisampleStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5615     fn deref_mut(&mut self) -> &mut Self::Target {
5616         &mut self.inner
5617     }
5618 }
5619 impl<'a> PipelineMultisampleStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineMultisampleStateCreateFlags) -> Self5620     pub fn flags(mut self, flags: PipelineMultisampleStateCreateFlags) -> Self {
5621         self.inner.flags = flags;
5622         self
5623     }
rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self5624     pub fn rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self {
5625         self.inner.rasterization_samples = rasterization_samples;
5626         self
5627     }
sample_shading_enable(mut self, sample_shading_enable: bool) -> Self5628     pub fn sample_shading_enable(mut self, sample_shading_enable: bool) -> Self {
5629         self.inner.sample_shading_enable = sample_shading_enable.into();
5630         self
5631     }
min_sample_shading(mut self, min_sample_shading: f32) -> Self5632     pub fn min_sample_shading(mut self, min_sample_shading: f32) -> Self {
5633         self.inner.min_sample_shading = min_sample_shading;
5634         self
5635     }
5636     #[doc = r" Sets `p_sample_mask` to `null` if the slice is empty. The mask will"]
5637     #[doc = r" be treated as if it has all bits set to `1`."]
5638     #[doc = r""]
5639     #[doc = r" See <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html#_description>"]
5640     #[doc = r" for more details."]
sample_mask(mut self, sample_mask: &'a [SampleMask]) -> Self5641     pub fn sample_mask(mut self, sample_mask: &'a [SampleMask]) -> Self {
5642         self.inner.p_sample_mask = if sample_mask.is_empty() {
5643             std::ptr::null()
5644         } else {
5645             sample_mask.as_ptr() as *const SampleMask
5646         };
5647         self
5648     }
alpha_to_coverage_enable(mut self, alpha_to_coverage_enable: bool) -> Self5649     pub fn alpha_to_coverage_enable(mut self, alpha_to_coverage_enable: bool) -> Self {
5650         self.inner.alpha_to_coverage_enable = alpha_to_coverage_enable.into();
5651         self
5652     }
alpha_to_one_enable(mut self, alpha_to_one_enable: bool) -> Self5653     pub fn alpha_to_one_enable(mut self, alpha_to_one_enable: bool) -> Self {
5654         self.inner.alpha_to_one_enable = alpha_to_one_enable.into();
5655         self
5656     }
5657     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5658     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5659     #[doc = r" valid extension structs can be pushed into the chain."]
5660     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5661     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineMultisampleStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5662     pub fn push_next<T: ExtendsPipelineMultisampleStateCreateInfo>(
5663         mut self,
5664         next: &'a mut T,
5665     ) -> Self {
5666         unsafe {
5667             let next_ptr = next as *mut T as *mut BaseOutStructure;
5668             let last_next = ptr_chain_iter(next).last().unwrap();
5669             (*last_next).p_next = self.inner.p_next as _;
5670             self.inner.p_next = next_ptr as _;
5671         }
5672         self
5673     }
5674     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5675     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5676     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineMultisampleStateCreateInfo5677     pub fn build(self) -> PipelineMultisampleStateCreateInfo {
5678         self.inner
5679     }
5680 }
5681 #[repr(C)]
5682 #[derive(Copy, Clone, Default, Debug)]
5683 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendAttachmentState.html>"]
5684 pub struct PipelineColorBlendAttachmentState {
5685     pub blend_enable: Bool32,
5686     pub src_color_blend_factor: BlendFactor,
5687     pub dst_color_blend_factor: BlendFactor,
5688     pub color_blend_op: BlendOp,
5689     pub src_alpha_blend_factor: BlendFactor,
5690     pub dst_alpha_blend_factor: BlendFactor,
5691     pub alpha_blend_op: BlendOp,
5692     pub color_write_mask: ColorComponentFlags,
5693 }
5694 impl PipelineColorBlendAttachmentState {
builder<'a>() -> PipelineColorBlendAttachmentStateBuilder<'a>5695     pub fn builder<'a>() -> PipelineColorBlendAttachmentStateBuilder<'a> {
5696         PipelineColorBlendAttachmentStateBuilder {
5697             inner: PipelineColorBlendAttachmentState::default(),
5698             marker: ::std::marker::PhantomData,
5699         }
5700     }
5701 }
5702 #[repr(transparent)]
5703 pub struct PipelineColorBlendAttachmentStateBuilder<'a> {
5704     inner: PipelineColorBlendAttachmentState,
5705     marker: ::std::marker::PhantomData<&'a ()>,
5706 }
5707 impl<'a> ::std::ops::Deref for PipelineColorBlendAttachmentStateBuilder<'a> {
5708     type Target = PipelineColorBlendAttachmentState;
deref(&self) -> &Self::Target5709     fn deref(&self) -> &Self::Target {
5710         &self.inner
5711     }
5712 }
5713 impl<'a> ::std::ops::DerefMut for PipelineColorBlendAttachmentStateBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5714     fn deref_mut(&mut self) -> &mut Self::Target {
5715         &mut self.inner
5716     }
5717 }
5718 impl<'a> PipelineColorBlendAttachmentStateBuilder<'a> {
blend_enable(mut self, blend_enable: bool) -> Self5719     pub fn blend_enable(mut self, blend_enable: bool) -> Self {
5720         self.inner.blend_enable = blend_enable.into();
5721         self
5722     }
src_color_blend_factor(mut self, src_color_blend_factor: BlendFactor) -> Self5723     pub fn src_color_blend_factor(mut self, src_color_blend_factor: BlendFactor) -> Self {
5724         self.inner.src_color_blend_factor = src_color_blend_factor;
5725         self
5726     }
dst_color_blend_factor(mut self, dst_color_blend_factor: BlendFactor) -> Self5727     pub fn dst_color_blend_factor(mut self, dst_color_blend_factor: BlendFactor) -> Self {
5728         self.inner.dst_color_blend_factor = dst_color_blend_factor;
5729         self
5730     }
color_blend_op(mut self, color_blend_op: BlendOp) -> Self5731     pub fn color_blend_op(mut self, color_blend_op: BlendOp) -> Self {
5732         self.inner.color_blend_op = color_blend_op;
5733         self
5734     }
src_alpha_blend_factor(mut self, src_alpha_blend_factor: BlendFactor) -> Self5735     pub fn src_alpha_blend_factor(mut self, src_alpha_blend_factor: BlendFactor) -> Self {
5736         self.inner.src_alpha_blend_factor = src_alpha_blend_factor;
5737         self
5738     }
dst_alpha_blend_factor(mut self, dst_alpha_blend_factor: BlendFactor) -> Self5739     pub fn dst_alpha_blend_factor(mut self, dst_alpha_blend_factor: BlendFactor) -> Self {
5740         self.inner.dst_alpha_blend_factor = dst_alpha_blend_factor;
5741         self
5742     }
alpha_blend_op(mut self, alpha_blend_op: BlendOp) -> Self5743     pub fn alpha_blend_op(mut self, alpha_blend_op: BlendOp) -> Self {
5744         self.inner.alpha_blend_op = alpha_blend_op;
5745         self
5746     }
color_write_mask(mut self, color_write_mask: ColorComponentFlags) -> Self5747     pub fn color_write_mask(mut self, color_write_mask: ColorComponentFlags) -> Self {
5748         self.inner.color_write_mask = color_write_mask;
5749         self
5750     }
5751     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5752     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5753     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorBlendAttachmentState5754     pub fn build(self) -> PipelineColorBlendAttachmentState {
5755         self.inner
5756     }
5757 }
5758 #[repr(C)]
5759 #[derive(Copy, Clone, Debug)]
5760 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendStateCreateInfo.html>"]
5761 pub struct PipelineColorBlendStateCreateInfo {
5762     pub s_type: StructureType,
5763     pub p_next: *const c_void,
5764     pub flags: PipelineColorBlendStateCreateFlags,
5765     pub logic_op_enable: Bool32,
5766     pub logic_op: LogicOp,
5767     pub attachment_count: u32,
5768     pub p_attachments: *const PipelineColorBlendAttachmentState,
5769     pub blend_constants: [f32; 4],
5770 }
5771 impl ::std::default::Default for PipelineColorBlendStateCreateInfo {
default() -> PipelineColorBlendStateCreateInfo5772     fn default() -> PipelineColorBlendStateCreateInfo {
5773         PipelineColorBlendStateCreateInfo {
5774             s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
5775             p_next: ::std::ptr::null(),
5776             flags: PipelineColorBlendStateCreateFlags::default(),
5777             logic_op_enable: Bool32::default(),
5778             logic_op: LogicOp::default(),
5779             attachment_count: u32::default(),
5780             p_attachments: ::std::ptr::null(),
5781             blend_constants: unsafe { ::std::mem::zeroed() },
5782         }
5783     }
5784 }
5785 impl PipelineColorBlendStateCreateInfo {
builder<'a>() -> PipelineColorBlendStateCreateInfoBuilder<'a>5786     pub fn builder<'a>() -> PipelineColorBlendStateCreateInfoBuilder<'a> {
5787         PipelineColorBlendStateCreateInfoBuilder {
5788             inner: PipelineColorBlendStateCreateInfo::default(),
5789             marker: ::std::marker::PhantomData,
5790         }
5791     }
5792 }
5793 #[repr(transparent)]
5794 pub struct PipelineColorBlendStateCreateInfoBuilder<'a> {
5795     inner: PipelineColorBlendStateCreateInfo,
5796     marker: ::std::marker::PhantomData<&'a ()>,
5797 }
5798 pub unsafe trait ExtendsPipelineColorBlendStateCreateInfo {}
5799 impl<'a> ::std::ops::Deref for PipelineColorBlendStateCreateInfoBuilder<'a> {
5800     type Target = PipelineColorBlendStateCreateInfo;
deref(&self) -> &Self::Target5801     fn deref(&self) -> &Self::Target {
5802         &self.inner
5803     }
5804 }
5805 impl<'a> ::std::ops::DerefMut for PipelineColorBlendStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5806     fn deref_mut(&mut self) -> &mut Self::Target {
5807         &mut self.inner
5808     }
5809 }
5810 impl<'a> PipelineColorBlendStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineColorBlendStateCreateFlags) -> Self5811     pub fn flags(mut self, flags: PipelineColorBlendStateCreateFlags) -> Self {
5812         self.inner.flags = flags;
5813         self
5814     }
logic_op_enable(mut self, logic_op_enable: bool) -> Self5815     pub fn logic_op_enable(mut self, logic_op_enable: bool) -> Self {
5816         self.inner.logic_op_enable = logic_op_enable.into();
5817         self
5818     }
logic_op(mut self, logic_op: LogicOp) -> Self5819     pub fn logic_op(mut self, logic_op: LogicOp) -> Self {
5820         self.inner.logic_op = logic_op;
5821         self
5822     }
attachments(mut self, attachments: &'a [PipelineColorBlendAttachmentState]) -> Self5823     pub fn attachments(mut self, attachments: &'a [PipelineColorBlendAttachmentState]) -> Self {
5824         self.inner.attachment_count = attachments.len() as _;
5825         self.inner.p_attachments = attachments.as_ptr();
5826         self
5827     }
blend_constants(mut self, blend_constants: [f32; 4]) -> Self5828     pub fn blend_constants(mut self, blend_constants: [f32; 4]) -> Self {
5829         self.inner.blend_constants = blend_constants;
5830         self
5831     }
5832     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5833     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5834     #[doc = r" valid extension structs can be pushed into the chain."]
5835     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5836     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineColorBlendStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5837     pub fn push_next<T: ExtendsPipelineColorBlendStateCreateInfo>(
5838         mut self,
5839         next: &'a mut T,
5840     ) -> Self {
5841         unsafe {
5842             let next_ptr = next as *mut T as *mut BaseOutStructure;
5843             let last_next = ptr_chain_iter(next).last().unwrap();
5844             (*last_next).p_next = self.inner.p_next as _;
5845             self.inner.p_next = next_ptr as _;
5846         }
5847         self
5848     }
5849     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5850     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5851     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorBlendStateCreateInfo5852     pub fn build(self) -> PipelineColorBlendStateCreateInfo {
5853         self.inner
5854     }
5855 }
5856 #[repr(C)]
5857 #[derive(Copy, Clone, Debug)]
5858 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDynamicStateCreateInfo.html>"]
5859 pub struct PipelineDynamicStateCreateInfo {
5860     pub s_type: StructureType,
5861     pub p_next: *const c_void,
5862     pub flags: PipelineDynamicStateCreateFlags,
5863     pub dynamic_state_count: u32,
5864     pub p_dynamic_states: *const DynamicState,
5865 }
5866 impl ::std::default::Default for PipelineDynamicStateCreateInfo {
default() -> PipelineDynamicStateCreateInfo5867     fn default() -> PipelineDynamicStateCreateInfo {
5868         PipelineDynamicStateCreateInfo {
5869             s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
5870             p_next: ::std::ptr::null(),
5871             flags: PipelineDynamicStateCreateFlags::default(),
5872             dynamic_state_count: u32::default(),
5873             p_dynamic_states: ::std::ptr::null(),
5874         }
5875     }
5876 }
5877 impl PipelineDynamicStateCreateInfo {
builder<'a>() -> PipelineDynamicStateCreateInfoBuilder<'a>5878     pub fn builder<'a>() -> PipelineDynamicStateCreateInfoBuilder<'a> {
5879         PipelineDynamicStateCreateInfoBuilder {
5880             inner: PipelineDynamicStateCreateInfo::default(),
5881             marker: ::std::marker::PhantomData,
5882         }
5883     }
5884 }
5885 #[repr(transparent)]
5886 pub struct PipelineDynamicStateCreateInfoBuilder<'a> {
5887     inner: PipelineDynamicStateCreateInfo,
5888     marker: ::std::marker::PhantomData<&'a ()>,
5889 }
5890 impl<'a> ::std::ops::Deref for PipelineDynamicStateCreateInfoBuilder<'a> {
5891     type Target = PipelineDynamicStateCreateInfo;
deref(&self) -> &Self::Target5892     fn deref(&self) -> &Self::Target {
5893         &self.inner
5894     }
5895 }
5896 impl<'a> ::std::ops::DerefMut for PipelineDynamicStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5897     fn deref_mut(&mut self) -> &mut Self::Target {
5898         &mut self.inner
5899     }
5900 }
5901 impl<'a> PipelineDynamicStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineDynamicStateCreateFlags) -> Self5902     pub fn flags(mut self, flags: PipelineDynamicStateCreateFlags) -> Self {
5903         self.inner.flags = flags;
5904         self
5905     }
dynamic_states(mut self, dynamic_states: &'a [DynamicState]) -> Self5906     pub fn dynamic_states(mut self, dynamic_states: &'a [DynamicState]) -> Self {
5907         self.inner.dynamic_state_count = dynamic_states.len() as _;
5908         self.inner.p_dynamic_states = dynamic_states.as_ptr();
5909         self
5910     }
5911     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5912     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5913     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineDynamicStateCreateInfo5914     pub fn build(self) -> PipelineDynamicStateCreateInfo {
5915         self.inner
5916     }
5917 }
5918 #[repr(C)]
5919 #[derive(Copy, Clone, Default, Debug)]
5920 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilOpState.html>"]
5921 pub struct StencilOpState {
5922     pub fail_op: StencilOp,
5923     pub pass_op: StencilOp,
5924     pub depth_fail_op: StencilOp,
5925     pub compare_op: CompareOp,
5926     pub compare_mask: u32,
5927     pub write_mask: u32,
5928     pub reference: u32,
5929 }
5930 impl StencilOpState {
builder<'a>() -> StencilOpStateBuilder<'a>5931     pub fn builder<'a>() -> StencilOpStateBuilder<'a> {
5932         StencilOpStateBuilder {
5933             inner: StencilOpState::default(),
5934             marker: ::std::marker::PhantomData,
5935         }
5936     }
5937 }
5938 #[repr(transparent)]
5939 pub struct StencilOpStateBuilder<'a> {
5940     inner: StencilOpState,
5941     marker: ::std::marker::PhantomData<&'a ()>,
5942 }
5943 impl<'a> ::std::ops::Deref for StencilOpStateBuilder<'a> {
5944     type Target = StencilOpState;
deref(&self) -> &Self::Target5945     fn deref(&self) -> &Self::Target {
5946         &self.inner
5947     }
5948 }
5949 impl<'a> ::std::ops::DerefMut for StencilOpStateBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5950     fn deref_mut(&mut self) -> &mut Self::Target {
5951         &mut self.inner
5952     }
5953 }
5954 impl<'a> StencilOpStateBuilder<'a> {
fail_op(mut self, fail_op: StencilOp) -> Self5955     pub fn fail_op(mut self, fail_op: StencilOp) -> Self {
5956         self.inner.fail_op = fail_op;
5957         self
5958     }
pass_op(mut self, pass_op: StencilOp) -> Self5959     pub fn pass_op(mut self, pass_op: StencilOp) -> Self {
5960         self.inner.pass_op = pass_op;
5961         self
5962     }
depth_fail_op(mut self, depth_fail_op: StencilOp) -> Self5963     pub fn depth_fail_op(mut self, depth_fail_op: StencilOp) -> Self {
5964         self.inner.depth_fail_op = depth_fail_op;
5965         self
5966     }
compare_op(mut self, compare_op: CompareOp) -> Self5967     pub fn compare_op(mut self, compare_op: CompareOp) -> Self {
5968         self.inner.compare_op = compare_op;
5969         self
5970     }
compare_mask(mut self, compare_mask: u32) -> Self5971     pub fn compare_mask(mut self, compare_mask: u32) -> Self {
5972         self.inner.compare_mask = compare_mask;
5973         self
5974     }
write_mask(mut self, write_mask: u32) -> Self5975     pub fn write_mask(mut self, write_mask: u32) -> Self {
5976         self.inner.write_mask = write_mask;
5977         self
5978     }
reference(mut self, reference: u32) -> Self5979     pub fn reference(mut self, reference: u32) -> Self {
5980         self.inner.reference = reference;
5981         self
5982     }
5983     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5984     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5985     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> StencilOpState5986     pub fn build(self) -> StencilOpState {
5987         self.inner
5988     }
5989 }
5990 #[repr(C)]
5991 #[derive(Copy, Clone, Debug)]
5992 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDepthStencilStateCreateInfo.html>"]
5993 pub struct PipelineDepthStencilStateCreateInfo {
5994     pub s_type: StructureType,
5995     pub p_next: *const c_void,
5996     pub flags: PipelineDepthStencilStateCreateFlags,
5997     pub depth_test_enable: Bool32,
5998     pub depth_write_enable: Bool32,
5999     pub depth_compare_op: CompareOp,
6000     pub depth_bounds_test_enable: Bool32,
6001     pub stencil_test_enable: Bool32,
6002     pub front: StencilOpState,
6003     pub back: StencilOpState,
6004     pub min_depth_bounds: f32,
6005     pub max_depth_bounds: f32,
6006 }
6007 impl ::std::default::Default for PipelineDepthStencilStateCreateInfo {
default() -> PipelineDepthStencilStateCreateInfo6008     fn default() -> PipelineDepthStencilStateCreateInfo {
6009         PipelineDepthStencilStateCreateInfo {
6010             s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6011             p_next: ::std::ptr::null(),
6012             flags: PipelineDepthStencilStateCreateFlags::default(),
6013             depth_test_enable: Bool32::default(),
6014             depth_write_enable: Bool32::default(),
6015             depth_compare_op: CompareOp::default(),
6016             depth_bounds_test_enable: Bool32::default(),
6017             stencil_test_enable: Bool32::default(),
6018             front: StencilOpState::default(),
6019             back: StencilOpState::default(),
6020             min_depth_bounds: f32::default(),
6021             max_depth_bounds: f32::default(),
6022         }
6023     }
6024 }
6025 impl PipelineDepthStencilStateCreateInfo {
builder<'a>() -> PipelineDepthStencilStateCreateInfoBuilder<'a>6026     pub fn builder<'a>() -> PipelineDepthStencilStateCreateInfoBuilder<'a> {
6027         PipelineDepthStencilStateCreateInfoBuilder {
6028             inner: PipelineDepthStencilStateCreateInfo::default(),
6029             marker: ::std::marker::PhantomData,
6030         }
6031     }
6032 }
6033 #[repr(transparent)]
6034 pub struct PipelineDepthStencilStateCreateInfoBuilder<'a> {
6035     inner: PipelineDepthStencilStateCreateInfo,
6036     marker: ::std::marker::PhantomData<&'a ()>,
6037 }
6038 impl<'a> ::std::ops::Deref for PipelineDepthStencilStateCreateInfoBuilder<'a> {
6039     type Target = PipelineDepthStencilStateCreateInfo;
deref(&self) -> &Self::Target6040     fn deref(&self) -> &Self::Target {
6041         &self.inner
6042     }
6043 }
6044 impl<'a> ::std::ops::DerefMut for PipelineDepthStencilStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6045     fn deref_mut(&mut self) -> &mut Self::Target {
6046         &mut self.inner
6047     }
6048 }
6049 impl<'a> PipelineDepthStencilStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineDepthStencilStateCreateFlags) -> Self6050     pub fn flags(mut self, flags: PipelineDepthStencilStateCreateFlags) -> Self {
6051         self.inner.flags = flags;
6052         self
6053     }
depth_test_enable(mut self, depth_test_enable: bool) -> Self6054     pub fn depth_test_enable(mut self, depth_test_enable: bool) -> Self {
6055         self.inner.depth_test_enable = depth_test_enable.into();
6056         self
6057     }
depth_write_enable(mut self, depth_write_enable: bool) -> Self6058     pub fn depth_write_enable(mut self, depth_write_enable: bool) -> Self {
6059         self.inner.depth_write_enable = depth_write_enable.into();
6060         self
6061     }
depth_compare_op(mut self, depth_compare_op: CompareOp) -> Self6062     pub fn depth_compare_op(mut self, depth_compare_op: CompareOp) -> Self {
6063         self.inner.depth_compare_op = depth_compare_op;
6064         self
6065     }
depth_bounds_test_enable(mut self, depth_bounds_test_enable: bool) -> Self6066     pub fn depth_bounds_test_enable(mut self, depth_bounds_test_enable: bool) -> Self {
6067         self.inner.depth_bounds_test_enable = depth_bounds_test_enable.into();
6068         self
6069     }
stencil_test_enable(mut self, stencil_test_enable: bool) -> Self6070     pub fn stencil_test_enable(mut self, stencil_test_enable: bool) -> Self {
6071         self.inner.stencil_test_enable = stencil_test_enable.into();
6072         self
6073     }
front(mut self, front: StencilOpState) -> Self6074     pub fn front(mut self, front: StencilOpState) -> Self {
6075         self.inner.front = front;
6076         self
6077     }
back(mut self, back: StencilOpState) -> Self6078     pub fn back(mut self, back: StencilOpState) -> Self {
6079         self.inner.back = back;
6080         self
6081     }
min_depth_bounds(mut self, min_depth_bounds: f32) -> Self6082     pub fn min_depth_bounds(mut self, min_depth_bounds: f32) -> Self {
6083         self.inner.min_depth_bounds = min_depth_bounds;
6084         self
6085     }
max_depth_bounds(mut self, max_depth_bounds: f32) -> Self6086     pub fn max_depth_bounds(mut self, max_depth_bounds: f32) -> Self {
6087         self.inner.max_depth_bounds = max_depth_bounds;
6088         self
6089     }
6090     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6091     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6092     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineDepthStencilStateCreateInfo6093     pub fn build(self) -> PipelineDepthStencilStateCreateInfo {
6094         self.inner
6095     }
6096 }
6097 #[repr(C)]
6098 #[derive(Copy, Clone, Debug)]
6099 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsPipelineCreateInfo.html>"]
6100 pub struct GraphicsPipelineCreateInfo {
6101     pub s_type: StructureType,
6102     pub p_next: *const c_void,
6103     pub flags: PipelineCreateFlags,
6104     pub stage_count: u32,
6105     pub p_stages: *const PipelineShaderStageCreateInfo,
6106     pub p_vertex_input_state: *const PipelineVertexInputStateCreateInfo,
6107     pub p_input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
6108     pub p_tessellation_state: *const PipelineTessellationStateCreateInfo,
6109     pub p_viewport_state: *const PipelineViewportStateCreateInfo,
6110     pub p_rasterization_state: *const PipelineRasterizationStateCreateInfo,
6111     pub p_multisample_state: *const PipelineMultisampleStateCreateInfo,
6112     pub p_depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
6113     pub p_color_blend_state: *const PipelineColorBlendStateCreateInfo,
6114     pub p_dynamic_state: *const PipelineDynamicStateCreateInfo,
6115     pub layout: PipelineLayout,
6116     pub render_pass: RenderPass,
6117     pub subpass: u32,
6118     pub base_pipeline_handle: Pipeline,
6119     pub base_pipeline_index: i32,
6120 }
6121 impl ::std::default::Default for GraphicsPipelineCreateInfo {
default() -> GraphicsPipelineCreateInfo6122     fn default() -> GraphicsPipelineCreateInfo {
6123         GraphicsPipelineCreateInfo {
6124             s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
6125             p_next: ::std::ptr::null(),
6126             flags: PipelineCreateFlags::default(),
6127             stage_count: u32::default(),
6128             p_stages: ::std::ptr::null(),
6129             p_vertex_input_state: ::std::ptr::null(),
6130             p_input_assembly_state: ::std::ptr::null(),
6131             p_tessellation_state: ::std::ptr::null(),
6132             p_viewport_state: ::std::ptr::null(),
6133             p_rasterization_state: ::std::ptr::null(),
6134             p_multisample_state: ::std::ptr::null(),
6135             p_depth_stencil_state: ::std::ptr::null(),
6136             p_color_blend_state: ::std::ptr::null(),
6137             p_dynamic_state: ::std::ptr::null(),
6138             layout: PipelineLayout::default(),
6139             render_pass: RenderPass::default(),
6140             subpass: u32::default(),
6141             base_pipeline_handle: Pipeline::default(),
6142             base_pipeline_index: i32::default(),
6143         }
6144     }
6145 }
6146 impl GraphicsPipelineCreateInfo {
builder<'a>() -> GraphicsPipelineCreateInfoBuilder<'a>6147     pub fn builder<'a>() -> GraphicsPipelineCreateInfoBuilder<'a> {
6148         GraphicsPipelineCreateInfoBuilder {
6149             inner: GraphicsPipelineCreateInfo::default(),
6150             marker: ::std::marker::PhantomData,
6151         }
6152     }
6153 }
6154 #[repr(transparent)]
6155 pub struct GraphicsPipelineCreateInfoBuilder<'a> {
6156     inner: GraphicsPipelineCreateInfo,
6157     marker: ::std::marker::PhantomData<&'a ()>,
6158 }
6159 pub unsafe trait ExtendsGraphicsPipelineCreateInfo {}
6160 impl<'a> ::std::ops::Deref for GraphicsPipelineCreateInfoBuilder<'a> {
6161     type Target = GraphicsPipelineCreateInfo;
deref(&self) -> &Self::Target6162     fn deref(&self) -> &Self::Target {
6163         &self.inner
6164     }
6165 }
6166 impl<'a> ::std::ops::DerefMut for GraphicsPipelineCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6167     fn deref_mut(&mut self) -> &mut Self::Target {
6168         &mut self.inner
6169     }
6170 }
6171 impl<'a> GraphicsPipelineCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self6172     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
6173         self.inner.flags = flags;
6174         self
6175     }
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self6176     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
6177         self.inner.stage_count = stages.len() as _;
6178         self.inner.p_stages = stages.as_ptr();
6179         self
6180     }
vertex_input_state( mut self, vertex_input_state: &'a PipelineVertexInputStateCreateInfo, ) -> Self6181     pub fn vertex_input_state(
6182         mut self,
6183         vertex_input_state: &'a PipelineVertexInputStateCreateInfo,
6184     ) -> Self {
6185         self.inner.p_vertex_input_state = vertex_input_state;
6186         self
6187     }
input_assembly_state( mut self, input_assembly_state: &'a PipelineInputAssemblyStateCreateInfo, ) -> Self6188     pub fn input_assembly_state(
6189         mut self,
6190         input_assembly_state: &'a PipelineInputAssemblyStateCreateInfo,
6191     ) -> Self {
6192         self.inner.p_input_assembly_state = input_assembly_state;
6193         self
6194     }
tessellation_state( mut self, tessellation_state: &'a PipelineTessellationStateCreateInfo, ) -> Self6195     pub fn tessellation_state(
6196         mut self,
6197         tessellation_state: &'a PipelineTessellationStateCreateInfo,
6198     ) -> Self {
6199         self.inner.p_tessellation_state = tessellation_state;
6200         self
6201     }
viewport_state(mut self, viewport_state: &'a PipelineViewportStateCreateInfo) -> Self6202     pub fn viewport_state(mut self, viewport_state: &'a PipelineViewportStateCreateInfo) -> Self {
6203         self.inner.p_viewport_state = viewport_state;
6204         self
6205     }
rasterization_state( mut self, rasterization_state: &'a PipelineRasterizationStateCreateInfo, ) -> Self6206     pub fn rasterization_state(
6207         mut self,
6208         rasterization_state: &'a PipelineRasterizationStateCreateInfo,
6209     ) -> Self {
6210         self.inner.p_rasterization_state = rasterization_state;
6211         self
6212     }
multisample_state( mut self, multisample_state: &'a PipelineMultisampleStateCreateInfo, ) -> Self6213     pub fn multisample_state(
6214         mut self,
6215         multisample_state: &'a PipelineMultisampleStateCreateInfo,
6216     ) -> Self {
6217         self.inner.p_multisample_state = multisample_state;
6218         self
6219     }
depth_stencil_state( mut self, depth_stencil_state: &'a PipelineDepthStencilStateCreateInfo, ) -> Self6220     pub fn depth_stencil_state(
6221         mut self,
6222         depth_stencil_state: &'a PipelineDepthStencilStateCreateInfo,
6223     ) -> Self {
6224         self.inner.p_depth_stencil_state = depth_stencil_state;
6225         self
6226     }
color_blend_state( mut self, color_blend_state: &'a PipelineColorBlendStateCreateInfo, ) -> Self6227     pub fn color_blend_state(
6228         mut self,
6229         color_blend_state: &'a PipelineColorBlendStateCreateInfo,
6230     ) -> Self {
6231         self.inner.p_color_blend_state = color_blend_state;
6232         self
6233     }
dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self6234     pub fn dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self {
6235         self.inner.p_dynamic_state = dynamic_state;
6236         self
6237     }
layout(mut self, layout: PipelineLayout) -> Self6238     pub fn layout(mut self, layout: PipelineLayout) -> Self {
6239         self.inner.layout = layout;
6240         self
6241     }
render_pass(mut self, render_pass: RenderPass) -> Self6242     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
6243         self.inner.render_pass = render_pass;
6244         self
6245     }
subpass(mut self, subpass: u32) -> Self6246     pub fn subpass(mut self, subpass: u32) -> Self {
6247         self.inner.subpass = subpass;
6248         self
6249     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self6250     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
6251         self.inner.base_pipeline_handle = base_pipeline_handle;
6252         self
6253     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self6254     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
6255         self.inner.base_pipeline_index = base_pipeline_index;
6256         self
6257     }
6258     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
6259     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
6260     #[doc = r" valid extension structs can be pushed into the chain."]
6261     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
6262     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsGraphicsPipelineCreateInfo>(mut self, next: &'a mut T) -> Self6263     pub fn push_next<T: ExtendsGraphicsPipelineCreateInfo>(mut self, next: &'a mut T) -> Self {
6264         unsafe {
6265             let next_ptr = next as *mut T as *mut BaseOutStructure;
6266             let last_next = ptr_chain_iter(next).last().unwrap();
6267             (*last_next).p_next = self.inner.p_next as _;
6268             self.inner.p_next = next_ptr as _;
6269         }
6270         self
6271     }
6272     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6273     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6274     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GraphicsPipelineCreateInfo6275     pub fn build(self) -> GraphicsPipelineCreateInfo {
6276         self.inner
6277     }
6278 }
6279 #[repr(C)]
6280 #[derive(Copy, Clone, Debug)]
6281 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheCreateInfo.html>"]
6282 pub struct PipelineCacheCreateInfo {
6283     pub s_type: StructureType,
6284     pub p_next: *const c_void,
6285     pub flags: PipelineCacheCreateFlags,
6286     pub initial_data_size: usize,
6287     pub p_initial_data: *const c_void,
6288 }
6289 impl ::std::default::Default for PipelineCacheCreateInfo {
default() -> PipelineCacheCreateInfo6290     fn default() -> PipelineCacheCreateInfo {
6291         PipelineCacheCreateInfo {
6292             s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
6293             p_next: ::std::ptr::null(),
6294             flags: PipelineCacheCreateFlags::default(),
6295             initial_data_size: usize::default(),
6296             p_initial_data: ::std::ptr::null(),
6297         }
6298     }
6299 }
6300 impl PipelineCacheCreateInfo {
builder<'a>() -> PipelineCacheCreateInfoBuilder<'a>6301     pub fn builder<'a>() -> PipelineCacheCreateInfoBuilder<'a> {
6302         PipelineCacheCreateInfoBuilder {
6303             inner: PipelineCacheCreateInfo::default(),
6304             marker: ::std::marker::PhantomData,
6305         }
6306     }
6307 }
6308 #[repr(transparent)]
6309 pub struct PipelineCacheCreateInfoBuilder<'a> {
6310     inner: PipelineCacheCreateInfo,
6311     marker: ::std::marker::PhantomData<&'a ()>,
6312 }
6313 impl<'a> ::std::ops::Deref for PipelineCacheCreateInfoBuilder<'a> {
6314     type Target = PipelineCacheCreateInfo;
deref(&self) -> &Self::Target6315     fn deref(&self) -> &Self::Target {
6316         &self.inner
6317     }
6318 }
6319 impl<'a> ::std::ops::DerefMut for PipelineCacheCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6320     fn deref_mut(&mut self) -> &mut Self::Target {
6321         &mut self.inner
6322     }
6323 }
6324 impl<'a> PipelineCacheCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineCacheCreateFlags) -> Self6325     pub fn flags(mut self, flags: PipelineCacheCreateFlags) -> Self {
6326         self.inner.flags = flags;
6327         self
6328     }
initial_data(mut self, initial_data: &'a [u8]) -> Self6329     pub fn initial_data(mut self, initial_data: &'a [u8]) -> Self {
6330         self.inner.initial_data_size = initial_data.len() as _;
6331         self.inner.p_initial_data = initial_data.as_ptr() as *const c_void;
6332         self
6333     }
6334     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6335     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6336     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCacheCreateInfo6337     pub fn build(self) -> PipelineCacheCreateInfo {
6338         self.inner
6339     }
6340 }
6341 #[repr(C)]
6342 #[derive(Copy, Clone, Debug)]
6343 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheHeaderVersionOne.html>"]
6344 pub struct PipelineCacheHeaderVersionOne {
6345     pub header_size: u32,
6346     pub header_version: PipelineCacheHeaderVersion,
6347     pub vendor_id: u32,
6348     pub device_id: u32,
6349     pub pipeline_cache_uuid: [u8; UUID_SIZE],
6350 }
6351 impl ::std::default::Default for PipelineCacheHeaderVersionOne {
default() -> PipelineCacheHeaderVersionOne6352     fn default() -> PipelineCacheHeaderVersionOne {
6353         PipelineCacheHeaderVersionOne {
6354             header_size: u32::default(),
6355             header_version: PipelineCacheHeaderVersion::default(),
6356             vendor_id: u32::default(),
6357             device_id: u32::default(),
6358             pipeline_cache_uuid: unsafe { ::std::mem::zeroed() },
6359         }
6360     }
6361 }
6362 impl PipelineCacheHeaderVersionOne {
builder<'a>() -> PipelineCacheHeaderVersionOneBuilder<'a>6363     pub fn builder<'a>() -> PipelineCacheHeaderVersionOneBuilder<'a> {
6364         PipelineCacheHeaderVersionOneBuilder {
6365             inner: PipelineCacheHeaderVersionOne::default(),
6366             marker: ::std::marker::PhantomData,
6367         }
6368     }
6369 }
6370 #[repr(transparent)]
6371 pub struct PipelineCacheHeaderVersionOneBuilder<'a> {
6372     inner: PipelineCacheHeaderVersionOne,
6373     marker: ::std::marker::PhantomData<&'a ()>,
6374 }
6375 impl<'a> ::std::ops::Deref for PipelineCacheHeaderVersionOneBuilder<'a> {
6376     type Target = PipelineCacheHeaderVersionOne;
deref(&self) -> &Self::Target6377     fn deref(&self) -> &Self::Target {
6378         &self.inner
6379     }
6380 }
6381 impl<'a> ::std::ops::DerefMut for PipelineCacheHeaderVersionOneBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6382     fn deref_mut(&mut self) -> &mut Self::Target {
6383         &mut self.inner
6384     }
6385 }
6386 impl<'a> PipelineCacheHeaderVersionOneBuilder<'a> {
header_size(mut self, header_size: u32) -> Self6387     pub fn header_size(mut self, header_size: u32) -> Self {
6388         self.inner.header_size = header_size;
6389         self
6390     }
header_version(mut self, header_version: PipelineCacheHeaderVersion) -> Self6391     pub fn header_version(mut self, header_version: PipelineCacheHeaderVersion) -> Self {
6392         self.inner.header_version = header_version;
6393         self
6394     }
vendor_id(mut self, vendor_id: u32) -> Self6395     pub fn vendor_id(mut self, vendor_id: u32) -> Self {
6396         self.inner.vendor_id = vendor_id;
6397         self
6398     }
device_id(mut self, device_id: u32) -> Self6399     pub fn device_id(mut self, device_id: u32) -> Self {
6400         self.inner.device_id = device_id;
6401         self
6402     }
pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self6403     pub fn pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self {
6404         self.inner.pipeline_cache_uuid = pipeline_cache_uuid;
6405         self
6406     }
6407     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6408     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6409     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCacheHeaderVersionOne6410     pub fn build(self) -> PipelineCacheHeaderVersionOne {
6411         self.inner
6412     }
6413 }
6414 #[repr(C)]
6415 #[derive(Copy, Clone, Default, Debug)]
6416 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPushConstantRange.html>"]
6417 pub struct PushConstantRange {
6418     pub stage_flags: ShaderStageFlags,
6419     pub offset: u32,
6420     pub size: u32,
6421 }
6422 impl PushConstantRange {
builder<'a>() -> PushConstantRangeBuilder<'a>6423     pub fn builder<'a>() -> PushConstantRangeBuilder<'a> {
6424         PushConstantRangeBuilder {
6425             inner: PushConstantRange::default(),
6426             marker: ::std::marker::PhantomData,
6427         }
6428     }
6429 }
6430 #[repr(transparent)]
6431 pub struct PushConstantRangeBuilder<'a> {
6432     inner: PushConstantRange,
6433     marker: ::std::marker::PhantomData<&'a ()>,
6434 }
6435 impl<'a> ::std::ops::Deref for PushConstantRangeBuilder<'a> {
6436     type Target = PushConstantRange;
deref(&self) -> &Self::Target6437     fn deref(&self) -> &Self::Target {
6438         &self.inner
6439     }
6440 }
6441 impl<'a> ::std::ops::DerefMut for PushConstantRangeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6442     fn deref_mut(&mut self) -> &mut Self::Target {
6443         &mut self.inner
6444     }
6445 }
6446 impl<'a> PushConstantRangeBuilder<'a> {
stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self6447     pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self {
6448         self.inner.stage_flags = stage_flags;
6449         self
6450     }
offset(mut self, offset: u32) -> Self6451     pub fn offset(mut self, offset: u32) -> Self {
6452         self.inner.offset = offset;
6453         self
6454     }
size(mut self, size: u32) -> Self6455     pub fn size(mut self, size: u32) -> Self {
6456         self.inner.size = size;
6457         self
6458     }
6459     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6460     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6461     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PushConstantRange6462     pub fn build(self) -> PushConstantRange {
6463         self.inner
6464     }
6465 }
6466 #[repr(C)]
6467 #[derive(Copy, Clone, Debug)]
6468 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayoutCreateInfo.html>"]
6469 pub struct PipelineLayoutCreateInfo {
6470     pub s_type: StructureType,
6471     pub p_next: *const c_void,
6472     pub flags: PipelineLayoutCreateFlags,
6473     pub set_layout_count: u32,
6474     pub p_set_layouts: *const DescriptorSetLayout,
6475     pub push_constant_range_count: u32,
6476     pub p_push_constant_ranges: *const PushConstantRange,
6477 }
6478 impl ::std::default::Default for PipelineLayoutCreateInfo {
default() -> PipelineLayoutCreateInfo6479     fn default() -> PipelineLayoutCreateInfo {
6480         PipelineLayoutCreateInfo {
6481             s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
6482             p_next: ::std::ptr::null(),
6483             flags: PipelineLayoutCreateFlags::default(),
6484             set_layout_count: u32::default(),
6485             p_set_layouts: ::std::ptr::null(),
6486             push_constant_range_count: u32::default(),
6487             p_push_constant_ranges: ::std::ptr::null(),
6488         }
6489     }
6490 }
6491 impl PipelineLayoutCreateInfo {
builder<'a>() -> PipelineLayoutCreateInfoBuilder<'a>6492     pub fn builder<'a>() -> PipelineLayoutCreateInfoBuilder<'a> {
6493         PipelineLayoutCreateInfoBuilder {
6494             inner: PipelineLayoutCreateInfo::default(),
6495             marker: ::std::marker::PhantomData,
6496         }
6497     }
6498 }
6499 #[repr(transparent)]
6500 pub struct PipelineLayoutCreateInfoBuilder<'a> {
6501     inner: PipelineLayoutCreateInfo,
6502     marker: ::std::marker::PhantomData<&'a ()>,
6503 }
6504 impl<'a> ::std::ops::Deref for PipelineLayoutCreateInfoBuilder<'a> {
6505     type Target = PipelineLayoutCreateInfo;
deref(&self) -> &Self::Target6506     fn deref(&self) -> &Self::Target {
6507         &self.inner
6508     }
6509 }
6510 impl<'a> ::std::ops::DerefMut for PipelineLayoutCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6511     fn deref_mut(&mut self) -> &mut Self::Target {
6512         &mut self.inner
6513     }
6514 }
6515 impl<'a> PipelineLayoutCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineLayoutCreateFlags) -> Self6516     pub fn flags(mut self, flags: PipelineLayoutCreateFlags) -> Self {
6517         self.inner.flags = flags;
6518         self
6519     }
set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self6520     pub fn set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self {
6521         self.inner.set_layout_count = set_layouts.len() as _;
6522         self.inner.p_set_layouts = set_layouts.as_ptr();
6523         self
6524     }
push_constant_ranges(mut self, push_constant_ranges: &'a [PushConstantRange]) -> Self6525     pub fn push_constant_ranges(mut self, push_constant_ranges: &'a [PushConstantRange]) -> Self {
6526         self.inner.push_constant_range_count = push_constant_ranges.len() as _;
6527         self.inner.p_push_constant_ranges = push_constant_ranges.as_ptr();
6528         self
6529     }
6530     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6531     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6532     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineLayoutCreateInfo6533     pub fn build(self) -> PipelineLayoutCreateInfo {
6534         self.inner
6535     }
6536 }
6537 #[repr(C)]
6538 #[derive(Copy, Clone, Debug)]
6539 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCreateInfo.html>"]
6540 pub struct SamplerCreateInfo {
6541     pub s_type: StructureType,
6542     pub p_next: *const c_void,
6543     pub flags: SamplerCreateFlags,
6544     pub mag_filter: Filter,
6545     pub min_filter: Filter,
6546     pub mipmap_mode: SamplerMipmapMode,
6547     pub address_mode_u: SamplerAddressMode,
6548     pub address_mode_v: SamplerAddressMode,
6549     pub address_mode_w: SamplerAddressMode,
6550     pub mip_lod_bias: f32,
6551     pub anisotropy_enable: Bool32,
6552     pub max_anisotropy: f32,
6553     pub compare_enable: Bool32,
6554     pub compare_op: CompareOp,
6555     pub min_lod: f32,
6556     pub max_lod: f32,
6557     pub border_color: BorderColor,
6558     pub unnormalized_coordinates: Bool32,
6559 }
6560 impl ::std::default::Default for SamplerCreateInfo {
default() -> SamplerCreateInfo6561     fn default() -> SamplerCreateInfo {
6562         SamplerCreateInfo {
6563             s_type: StructureType::SAMPLER_CREATE_INFO,
6564             p_next: ::std::ptr::null(),
6565             flags: SamplerCreateFlags::default(),
6566             mag_filter: Filter::default(),
6567             min_filter: Filter::default(),
6568             mipmap_mode: SamplerMipmapMode::default(),
6569             address_mode_u: SamplerAddressMode::default(),
6570             address_mode_v: SamplerAddressMode::default(),
6571             address_mode_w: SamplerAddressMode::default(),
6572             mip_lod_bias: f32::default(),
6573             anisotropy_enable: Bool32::default(),
6574             max_anisotropy: f32::default(),
6575             compare_enable: Bool32::default(),
6576             compare_op: CompareOp::default(),
6577             min_lod: f32::default(),
6578             max_lod: f32::default(),
6579             border_color: BorderColor::default(),
6580             unnormalized_coordinates: Bool32::default(),
6581         }
6582     }
6583 }
6584 impl SamplerCreateInfo {
builder<'a>() -> SamplerCreateInfoBuilder<'a>6585     pub fn builder<'a>() -> SamplerCreateInfoBuilder<'a> {
6586         SamplerCreateInfoBuilder {
6587             inner: SamplerCreateInfo::default(),
6588             marker: ::std::marker::PhantomData,
6589         }
6590     }
6591 }
6592 #[repr(transparent)]
6593 pub struct SamplerCreateInfoBuilder<'a> {
6594     inner: SamplerCreateInfo,
6595     marker: ::std::marker::PhantomData<&'a ()>,
6596 }
6597 pub unsafe trait ExtendsSamplerCreateInfo {}
6598 impl<'a> ::std::ops::Deref for SamplerCreateInfoBuilder<'a> {
6599     type Target = SamplerCreateInfo;
deref(&self) -> &Self::Target6600     fn deref(&self) -> &Self::Target {
6601         &self.inner
6602     }
6603 }
6604 impl<'a> ::std::ops::DerefMut for SamplerCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6605     fn deref_mut(&mut self) -> &mut Self::Target {
6606         &mut self.inner
6607     }
6608 }
6609 impl<'a> SamplerCreateInfoBuilder<'a> {
flags(mut self, flags: SamplerCreateFlags) -> Self6610     pub fn flags(mut self, flags: SamplerCreateFlags) -> Self {
6611         self.inner.flags = flags;
6612         self
6613     }
mag_filter(mut self, mag_filter: Filter) -> Self6614     pub fn mag_filter(mut self, mag_filter: Filter) -> Self {
6615         self.inner.mag_filter = mag_filter;
6616         self
6617     }
min_filter(mut self, min_filter: Filter) -> Self6618     pub fn min_filter(mut self, min_filter: Filter) -> Self {
6619         self.inner.min_filter = min_filter;
6620         self
6621     }
mipmap_mode(mut self, mipmap_mode: SamplerMipmapMode) -> Self6622     pub fn mipmap_mode(mut self, mipmap_mode: SamplerMipmapMode) -> Self {
6623         self.inner.mipmap_mode = mipmap_mode;
6624         self
6625     }
address_mode_u(mut self, address_mode_u: SamplerAddressMode) -> Self6626     pub fn address_mode_u(mut self, address_mode_u: SamplerAddressMode) -> Self {
6627         self.inner.address_mode_u = address_mode_u;
6628         self
6629     }
address_mode_v(mut self, address_mode_v: SamplerAddressMode) -> Self6630     pub fn address_mode_v(mut self, address_mode_v: SamplerAddressMode) -> Self {
6631         self.inner.address_mode_v = address_mode_v;
6632         self
6633     }
address_mode_w(mut self, address_mode_w: SamplerAddressMode) -> Self6634     pub fn address_mode_w(mut self, address_mode_w: SamplerAddressMode) -> Self {
6635         self.inner.address_mode_w = address_mode_w;
6636         self
6637     }
mip_lod_bias(mut self, mip_lod_bias: f32) -> Self6638     pub fn mip_lod_bias(mut self, mip_lod_bias: f32) -> Self {
6639         self.inner.mip_lod_bias = mip_lod_bias;
6640         self
6641     }
anisotropy_enable(mut self, anisotropy_enable: bool) -> Self6642     pub fn anisotropy_enable(mut self, anisotropy_enable: bool) -> Self {
6643         self.inner.anisotropy_enable = anisotropy_enable.into();
6644         self
6645     }
max_anisotropy(mut self, max_anisotropy: f32) -> Self6646     pub fn max_anisotropy(mut self, max_anisotropy: f32) -> Self {
6647         self.inner.max_anisotropy = max_anisotropy;
6648         self
6649     }
compare_enable(mut self, compare_enable: bool) -> Self6650     pub fn compare_enable(mut self, compare_enable: bool) -> Self {
6651         self.inner.compare_enable = compare_enable.into();
6652         self
6653     }
compare_op(mut self, compare_op: CompareOp) -> Self6654     pub fn compare_op(mut self, compare_op: CompareOp) -> Self {
6655         self.inner.compare_op = compare_op;
6656         self
6657     }
min_lod(mut self, min_lod: f32) -> Self6658     pub fn min_lod(mut self, min_lod: f32) -> Self {
6659         self.inner.min_lod = min_lod;
6660         self
6661     }
max_lod(mut self, max_lod: f32) -> Self6662     pub fn max_lod(mut self, max_lod: f32) -> Self {
6663         self.inner.max_lod = max_lod;
6664         self
6665     }
border_color(mut self, border_color: BorderColor) -> Self6666     pub fn border_color(mut self, border_color: BorderColor) -> Self {
6667         self.inner.border_color = border_color;
6668         self
6669     }
unnormalized_coordinates(mut self, unnormalized_coordinates: bool) -> Self6670     pub fn unnormalized_coordinates(mut self, unnormalized_coordinates: bool) -> Self {
6671         self.inner.unnormalized_coordinates = unnormalized_coordinates.into();
6672         self
6673     }
6674     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
6675     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
6676     #[doc = r" valid extension structs can be pushed into the chain."]
6677     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
6678     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSamplerCreateInfo>(mut self, next: &'a mut T) -> Self6679     pub fn push_next<T: ExtendsSamplerCreateInfo>(mut self, next: &'a mut T) -> Self {
6680         unsafe {
6681             let next_ptr = next as *mut T as *mut BaseOutStructure;
6682             let last_next = ptr_chain_iter(next).last().unwrap();
6683             (*last_next).p_next = self.inner.p_next as _;
6684             self.inner.p_next = next_ptr as _;
6685         }
6686         self
6687     }
6688     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6689     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6690     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerCreateInfo6691     pub fn build(self) -> SamplerCreateInfo {
6692         self.inner
6693     }
6694 }
6695 #[repr(C)]
6696 #[derive(Copy, Clone, Debug)]
6697 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolCreateInfo.html>"]
6698 pub struct CommandPoolCreateInfo {
6699     pub s_type: StructureType,
6700     pub p_next: *const c_void,
6701     pub flags: CommandPoolCreateFlags,
6702     pub queue_family_index: u32,
6703 }
6704 impl ::std::default::Default for CommandPoolCreateInfo {
default() -> CommandPoolCreateInfo6705     fn default() -> CommandPoolCreateInfo {
6706         CommandPoolCreateInfo {
6707             s_type: StructureType::COMMAND_POOL_CREATE_INFO,
6708             p_next: ::std::ptr::null(),
6709             flags: CommandPoolCreateFlags::default(),
6710             queue_family_index: u32::default(),
6711         }
6712     }
6713 }
6714 impl CommandPoolCreateInfo {
builder<'a>() -> CommandPoolCreateInfoBuilder<'a>6715     pub fn builder<'a>() -> CommandPoolCreateInfoBuilder<'a> {
6716         CommandPoolCreateInfoBuilder {
6717             inner: CommandPoolCreateInfo::default(),
6718             marker: ::std::marker::PhantomData,
6719         }
6720     }
6721 }
6722 #[repr(transparent)]
6723 pub struct CommandPoolCreateInfoBuilder<'a> {
6724     inner: CommandPoolCreateInfo,
6725     marker: ::std::marker::PhantomData<&'a ()>,
6726 }
6727 impl<'a> ::std::ops::Deref for CommandPoolCreateInfoBuilder<'a> {
6728     type Target = CommandPoolCreateInfo;
deref(&self) -> &Self::Target6729     fn deref(&self) -> &Self::Target {
6730         &self.inner
6731     }
6732 }
6733 impl<'a> ::std::ops::DerefMut for CommandPoolCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6734     fn deref_mut(&mut self) -> &mut Self::Target {
6735         &mut self.inner
6736     }
6737 }
6738 impl<'a> CommandPoolCreateInfoBuilder<'a> {
flags(mut self, flags: CommandPoolCreateFlags) -> Self6739     pub fn flags(mut self, flags: CommandPoolCreateFlags) -> Self {
6740         self.inner.flags = flags;
6741         self
6742     }
queue_family_index(mut self, queue_family_index: u32) -> Self6743     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
6744         self.inner.queue_family_index = queue_family_index;
6745         self
6746     }
6747     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6748     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6749     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandPoolCreateInfo6750     pub fn build(self) -> CommandPoolCreateInfo {
6751         self.inner
6752     }
6753 }
6754 #[repr(C)]
6755 #[derive(Copy, Clone, Debug)]
6756 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferAllocateInfo.html>"]
6757 pub struct CommandBufferAllocateInfo {
6758     pub s_type: StructureType,
6759     pub p_next: *const c_void,
6760     pub command_pool: CommandPool,
6761     pub level: CommandBufferLevel,
6762     pub command_buffer_count: u32,
6763 }
6764 impl ::std::default::Default for CommandBufferAllocateInfo {
default() -> CommandBufferAllocateInfo6765     fn default() -> CommandBufferAllocateInfo {
6766         CommandBufferAllocateInfo {
6767             s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
6768             p_next: ::std::ptr::null(),
6769             command_pool: CommandPool::default(),
6770             level: CommandBufferLevel::default(),
6771             command_buffer_count: u32::default(),
6772         }
6773     }
6774 }
6775 impl CommandBufferAllocateInfo {
builder<'a>() -> CommandBufferAllocateInfoBuilder<'a>6776     pub fn builder<'a>() -> CommandBufferAllocateInfoBuilder<'a> {
6777         CommandBufferAllocateInfoBuilder {
6778             inner: CommandBufferAllocateInfo::default(),
6779             marker: ::std::marker::PhantomData,
6780         }
6781     }
6782 }
6783 #[repr(transparent)]
6784 pub struct CommandBufferAllocateInfoBuilder<'a> {
6785     inner: CommandBufferAllocateInfo,
6786     marker: ::std::marker::PhantomData<&'a ()>,
6787 }
6788 impl<'a> ::std::ops::Deref for CommandBufferAllocateInfoBuilder<'a> {
6789     type Target = CommandBufferAllocateInfo;
deref(&self) -> &Self::Target6790     fn deref(&self) -> &Self::Target {
6791         &self.inner
6792     }
6793 }
6794 impl<'a> ::std::ops::DerefMut for CommandBufferAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6795     fn deref_mut(&mut self) -> &mut Self::Target {
6796         &mut self.inner
6797     }
6798 }
6799 impl<'a> CommandBufferAllocateInfoBuilder<'a> {
command_pool(mut self, command_pool: CommandPool) -> Self6800     pub fn command_pool(mut self, command_pool: CommandPool) -> Self {
6801         self.inner.command_pool = command_pool;
6802         self
6803     }
level(mut self, level: CommandBufferLevel) -> Self6804     pub fn level(mut self, level: CommandBufferLevel) -> Self {
6805         self.inner.level = level;
6806         self
6807     }
command_buffer_count(mut self, command_buffer_count: u32) -> Self6808     pub fn command_buffer_count(mut self, command_buffer_count: u32) -> Self {
6809         self.inner.command_buffer_count = command_buffer_count;
6810         self
6811     }
6812     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6813     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6814     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferAllocateInfo6815     pub fn build(self) -> CommandBufferAllocateInfo {
6816         self.inner
6817     }
6818 }
6819 #[repr(C)]
6820 #[derive(Copy, Clone, Debug)]
6821 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceInfo.html>"]
6822 pub struct CommandBufferInheritanceInfo {
6823     pub s_type: StructureType,
6824     pub p_next: *const c_void,
6825     pub render_pass: RenderPass,
6826     pub subpass: u32,
6827     pub framebuffer: Framebuffer,
6828     pub occlusion_query_enable: Bool32,
6829     pub query_flags: QueryControlFlags,
6830     pub pipeline_statistics: QueryPipelineStatisticFlags,
6831 }
6832 impl ::std::default::Default for CommandBufferInheritanceInfo {
default() -> CommandBufferInheritanceInfo6833     fn default() -> CommandBufferInheritanceInfo {
6834         CommandBufferInheritanceInfo {
6835             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
6836             p_next: ::std::ptr::null(),
6837             render_pass: RenderPass::default(),
6838             subpass: u32::default(),
6839             framebuffer: Framebuffer::default(),
6840             occlusion_query_enable: Bool32::default(),
6841             query_flags: QueryControlFlags::default(),
6842             pipeline_statistics: QueryPipelineStatisticFlags::default(),
6843         }
6844     }
6845 }
6846 impl CommandBufferInheritanceInfo {
builder<'a>() -> CommandBufferInheritanceInfoBuilder<'a>6847     pub fn builder<'a>() -> CommandBufferInheritanceInfoBuilder<'a> {
6848         CommandBufferInheritanceInfoBuilder {
6849             inner: CommandBufferInheritanceInfo::default(),
6850             marker: ::std::marker::PhantomData,
6851         }
6852     }
6853 }
6854 #[repr(transparent)]
6855 pub struct CommandBufferInheritanceInfoBuilder<'a> {
6856     inner: CommandBufferInheritanceInfo,
6857     marker: ::std::marker::PhantomData<&'a ()>,
6858 }
6859 pub unsafe trait ExtendsCommandBufferInheritanceInfo {}
6860 impl<'a> ::std::ops::Deref for CommandBufferInheritanceInfoBuilder<'a> {
6861     type Target = CommandBufferInheritanceInfo;
deref(&self) -> &Self::Target6862     fn deref(&self) -> &Self::Target {
6863         &self.inner
6864     }
6865 }
6866 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6867     fn deref_mut(&mut self) -> &mut Self::Target {
6868         &mut self.inner
6869     }
6870 }
6871 impl<'a> CommandBufferInheritanceInfoBuilder<'a> {
render_pass(mut self, render_pass: RenderPass) -> Self6872     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
6873         self.inner.render_pass = render_pass;
6874         self
6875     }
subpass(mut self, subpass: u32) -> Self6876     pub fn subpass(mut self, subpass: u32) -> Self {
6877         self.inner.subpass = subpass;
6878         self
6879     }
framebuffer(mut self, framebuffer: Framebuffer) -> Self6880     pub fn framebuffer(mut self, framebuffer: Framebuffer) -> Self {
6881         self.inner.framebuffer = framebuffer;
6882         self
6883     }
occlusion_query_enable(mut self, occlusion_query_enable: bool) -> Self6884     pub fn occlusion_query_enable(mut self, occlusion_query_enable: bool) -> Self {
6885         self.inner.occlusion_query_enable = occlusion_query_enable.into();
6886         self
6887     }
query_flags(mut self, query_flags: QueryControlFlags) -> Self6888     pub fn query_flags(mut self, query_flags: QueryControlFlags) -> Self {
6889         self.inner.query_flags = query_flags;
6890         self
6891     }
pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self6892     pub fn pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self {
6893         self.inner.pipeline_statistics = pipeline_statistics;
6894         self
6895     }
6896     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
6897     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
6898     #[doc = r" valid extension structs can be pushed into the chain."]
6899     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
6900     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsCommandBufferInheritanceInfo>(mut self, next: &'a mut T) -> Self6901     pub fn push_next<T: ExtendsCommandBufferInheritanceInfo>(mut self, next: &'a mut T) -> Self {
6902         unsafe {
6903             let next_ptr = next as *mut T as *mut BaseOutStructure;
6904             let last_next = ptr_chain_iter(next).last().unwrap();
6905             (*last_next).p_next = self.inner.p_next as _;
6906             self.inner.p_next = next_ptr as _;
6907         }
6908         self
6909     }
6910     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6911     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6912     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceInfo6913     pub fn build(self) -> CommandBufferInheritanceInfo {
6914         self.inner
6915     }
6916 }
6917 #[repr(C)]
6918 #[derive(Copy, Clone, Debug)]
6919 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferBeginInfo.html>"]
6920 pub struct CommandBufferBeginInfo {
6921     pub s_type: StructureType,
6922     pub p_next: *const c_void,
6923     pub flags: CommandBufferUsageFlags,
6924     pub p_inheritance_info: *const CommandBufferInheritanceInfo,
6925 }
6926 impl ::std::default::Default for CommandBufferBeginInfo {
default() -> CommandBufferBeginInfo6927     fn default() -> CommandBufferBeginInfo {
6928         CommandBufferBeginInfo {
6929             s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
6930             p_next: ::std::ptr::null(),
6931             flags: CommandBufferUsageFlags::default(),
6932             p_inheritance_info: ::std::ptr::null(),
6933         }
6934     }
6935 }
6936 impl CommandBufferBeginInfo {
builder<'a>() -> CommandBufferBeginInfoBuilder<'a>6937     pub fn builder<'a>() -> CommandBufferBeginInfoBuilder<'a> {
6938         CommandBufferBeginInfoBuilder {
6939             inner: CommandBufferBeginInfo::default(),
6940             marker: ::std::marker::PhantomData,
6941         }
6942     }
6943 }
6944 #[repr(transparent)]
6945 pub struct CommandBufferBeginInfoBuilder<'a> {
6946     inner: CommandBufferBeginInfo,
6947     marker: ::std::marker::PhantomData<&'a ()>,
6948 }
6949 pub unsafe trait ExtendsCommandBufferBeginInfo {}
6950 impl<'a> ::std::ops::Deref for CommandBufferBeginInfoBuilder<'a> {
6951     type Target = CommandBufferBeginInfo;
deref(&self) -> &Self::Target6952     fn deref(&self) -> &Self::Target {
6953         &self.inner
6954     }
6955 }
6956 impl<'a> ::std::ops::DerefMut for CommandBufferBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6957     fn deref_mut(&mut self) -> &mut Self::Target {
6958         &mut self.inner
6959     }
6960 }
6961 impl<'a> CommandBufferBeginInfoBuilder<'a> {
flags(mut self, flags: CommandBufferUsageFlags) -> Self6962     pub fn flags(mut self, flags: CommandBufferUsageFlags) -> Self {
6963         self.inner.flags = flags;
6964         self
6965     }
inheritance_info(mut self, inheritance_info: &'a CommandBufferInheritanceInfo) -> Self6966     pub fn inheritance_info(mut self, inheritance_info: &'a CommandBufferInheritanceInfo) -> Self {
6967         self.inner.p_inheritance_info = inheritance_info;
6968         self
6969     }
6970     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
6971     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
6972     #[doc = r" valid extension structs can be pushed into the chain."]
6973     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
6974     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsCommandBufferBeginInfo>(mut self, next: &'a mut T) -> Self6975     pub fn push_next<T: ExtendsCommandBufferBeginInfo>(mut self, next: &'a mut T) -> Self {
6976         unsafe {
6977             let next_ptr = next as *mut T as *mut BaseOutStructure;
6978             let last_next = ptr_chain_iter(next).last().unwrap();
6979             (*last_next).p_next = self.inner.p_next as _;
6980             self.inner.p_next = next_ptr as _;
6981         }
6982         self
6983     }
6984     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6985     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6986     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferBeginInfo6987     pub fn build(self) -> CommandBufferBeginInfo {
6988         self.inner
6989     }
6990 }
6991 #[repr(C)]
6992 #[derive(Copy, Clone)]
6993 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassBeginInfo.html>"]
6994 pub struct RenderPassBeginInfo {
6995     pub s_type: StructureType,
6996     pub p_next: *const c_void,
6997     pub render_pass: RenderPass,
6998     pub framebuffer: Framebuffer,
6999     pub render_area: Rect2D,
7000     pub clear_value_count: u32,
7001     pub p_clear_values: *const ClearValue,
7002 }
7003 impl fmt::Debug for RenderPassBeginInfo {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result7004     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
7005         fmt.debug_struct("RenderPassBeginInfo")
7006             .field("s_type", &self.s_type)
7007             .field("p_next", &self.p_next)
7008             .field("render_pass", &self.render_pass)
7009             .field("framebuffer", &self.framebuffer)
7010             .field("render_area", &self.render_area)
7011             .field("clear_value_count", &self.clear_value_count)
7012             .field("p_clear_values", &"union")
7013             .finish()
7014     }
7015 }
7016 impl ::std::default::Default for RenderPassBeginInfo {
default() -> RenderPassBeginInfo7017     fn default() -> RenderPassBeginInfo {
7018         RenderPassBeginInfo {
7019             s_type: StructureType::RENDER_PASS_BEGIN_INFO,
7020             p_next: ::std::ptr::null(),
7021             render_pass: RenderPass::default(),
7022             framebuffer: Framebuffer::default(),
7023             render_area: Rect2D::default(),
7024             clear_value_count: u32::default(),
7025             p_clear_values: ::std::ptr::null(),
7026         }
7027     }
7028 }
7029 impl RenderPassBeginInfo {
builder<'a>() -> RenderPassBeginInfoBuilder<'a>7030     pub fn builder<'a>() -> RenderPassBeginInfoBuilder<'a> {
7031         RenderPassBeginInfoBuilder {
7032             inner: RenderPassBeginInfo::default(),
7033             marker: ::std::marker::PhantomData,
7034         }
7035     }
7036 }
7037 #[repr(transparent)]
7038 pub struct RenderPassBeginInfoBuilder<'a> {
7039     inner: RenderPassBeginInfo,
7040     marker: ::std::marker::PhantomData<&'a ()>,
7041 }
7042 pub unsafe trait ExtendsRenderPassBeginInfo {}
7043 impl<'a> ::std::ops::Deref for RenderPassBeginInfoBuilder<'a> {
7044     type Target = RenderPassBeginInfo;
deref(&self) -> &Self::Target7045     fn deref(&self) -> &Self::Target {
7046         &self.inner
7047     }
7048 }
7049 impl<'a> ::std::ops::DerefMut for RenderPassBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7050     fn deref_mut(&mut self) -> &mut Self::Target {
7051         &mut self.inner
7052     }
7053 }
7054 impl<'a> RenderPassBeginInfoBuilder<'a> {
render_pass(mut self, render_pass: RenderPass) -> Self7055     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
7056         self.inner.render_pass = render_pass;
7057         self
7058     }
framebuffer(mut self, framebuffer: Framebuffer) -> Self7059     pub fn framebuffer(mut self, framebuffer: Framebuffer) -> Self {
7060         self.inner.framebuffer = framebuffer;
7061         self
7062     }
render_area(mut self, render_area: Rect2D) -> Self7063     pub fn render_area(mut self, render_area: Rect2D) -> Self {
7064         self.inner.render_area = render_area;
7065         self
7066     }
clear_values(mut self, clear_values: &'a [ClearValue]) -> Self7067     pub fn clear_values(mut self, clear_values: &'a [ClearValue]) -> Self {
7068         self.inner.clear_value_count = clear_values.len() as _;
7069         self.inner.p_clear_values = clear_values.as_ptr();
7070         self
7071     }
7072     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
7073     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
7074     #[doc = r" valid extension structs can be pushed into the chain."]
7075     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
7076     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRenderPassBeginInfo>(mut self, next: &'a mut T) -> Self7077     pub fn push_next<T: ExtendsRenderPassBeginInfo>(mut self, next: &'a mut T) -> Self {
7078         unsafe {
7079             let next_ptr = next as *mut T as *mut BaseOutStructure;
7080             let last_next = ptr_chain_iter(next).last().unwrap();
7081             (*last_next).p_next = self.inner.p_next as _;
7082             self.inner.p_next = next_ptr as _;
7083         }
7084         self
7085     }
7086     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7087     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7088     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassBeginInfo7089     pub fn build(self) -> RenderPassBeginInfo {
7090         self.inner
7091     }
7092 }
7093 #[repr(C)]
7094 #[derive(Copy, Clone)]
7095 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearColorValue.html>"]
7096 pub union ClearColorValue {
7097     pub float32: [f32; 4],
7098     pub int32: [i32; 4],
7099     pub uint32: [u32; 4],
7100 }
7101 impl ::std::default::Default for ClearColorValue {
default() -> ClearColorValue7102     fn default() -> ClearColorValue {
7103         unsafe { ::std::mem::zeroed() }
7104     }
7105 }
7106 #[repr(C)]
7107 #[derive(Copy, Clone, Default, Debug)]
7108 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearDepthStencilValue.html>"]
7109 pub struct ClearDepthStencilValue {
7110     pub depth: f32,
7111     pub stencil: u32,
7112 }
7113 impl ClearDepthStencilValue {
builder<'a>() -> ClearDepthStencilValueBuilder<'a>7114     pub fn builder<'a>() -> ClearDepthStencilValueBuilder<'a> {
7115         ClearDepthStencilValueBuilder {
7116             inner: ClearDepthStencilValue::default(),
7117             marker: ::std::marker::PhantomData,
7118         }
7119     }
7120 }
7121 #[repr(transparent)]
7122 pub struct ClearDepthStencilValueBuilder<'a> {
7123     inner: ClearDepthStencilValue,
7124     marker: ::std::marker::PhantomData<&'a ()>,
7125 }
7126 impl<'a> ::std::ops::Deref for ClearDepthStencilValueBuilder<'a> {
7127     type Target = ClearDepthStencilValue;
deref(&self) -> &Self::Target7128     fn deref(&self) -> &Self::Target {
7129         &self.inner
7130     }
7131 }
7132 impl<'a> ::std::ops::DerefMut for ClearDepthStencilValueBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7133     fn deref_mut(&mut self) -> &mut Self::Target {
7134         &mut self.inner
7135     }
7136 }
7137 impl<'a> ClearDepthStencilValueBuilder<'a> {
depth(mut self, depth: f32) -> Self7138     pub fn depth(mut self, depth: f32) -> Self {
7139         self.inner.depth = depth;
7140         self
7141     }
stencil(mut self, stencil: u32) -> Self7142     pub fn stencil(mut self, stencil: u32) -> Self {
7143         self.inner.stencil = stencil;
7144         self
7145     }
7146     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7147     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7148     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ClearDepthStencilValue7149     pub fn build(self) -> ClearDepthStencilValue {
7150         self.inner
7151     }
7152 }
7153 #[repr(C)]
7154 #[derive(Copy, Clone)]
7155 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearValue.html>"]
7156 pub union ClearValue {
7157     pub color: ClearColorValue,
7158     pub depth_stencil: ClearDepthStencilValue,
7159 }
7160 impl ::std::default::Default for ClearValue {
default() -> ClearValue7161     fn default() -> ClearValue {
7162         unsafe { ::std::mem::zeroed() }
7163     }
7164 }
7165 #[repr(C)]
7166 #[derive(Copy, Clone, Default)]
7167 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearAttachment.html>"]
7168 pub struct ClearAttachment {
7169     pub aspect_mask: ImageAspectFlags,
7170     pub color_attachment: u32,
7171     pub clear_value: ClearValue,
7172 }
7173 impl fmt::Debug for ClearAttachment {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result7174     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
7175         fmt.debug_struct("ClearAttachment")
7176             .field("aspect_mask", &self.aspect_mask)
7177             .field("color_attachment", &self.color_attachment)
7178             .field("clear_value", &"union")
7179             .finish()
7180     }
7181 }
7182 impl ClearAttachment {
builder<'a>() -> ClearAttachmentBuilder<'a>7183     pub fn builder<'a>() -> ClearAttachmentBuilder<'a> {
7184         ClearAttachmentBuilder {
7185             inner: ClearAttachment::default(),
7186             marker: ::std::marker::PhantomData,
7187         }
7188     }
7189 }
7190 #[repr(transparent)]
7191 pub struct ClearAttachmentBuilder<'a> {
7192     inner: ClearAttachment,
7193     marker: ::std::marker::PhantomData<&'a ()>,
7194 }
7195 impl<'a> ::std::ops::Deref for ClearAttachmentBuilder<'a> {
7196     type Target = ClearAttachment;
deref(&self) -> &Self::Target7197     fn deref(&self) -> &Self::Target {
7198         &self.inner
7199     }
7200 }
7201 impl<'a> ::std::ops::DerefMut for ClearAttachmentBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7202     fn deref_mut(&mut self) -> &mut Self::Target {
7203         &mut self.inner
7204     }
7205 }
7206 impl<'a> ClearAttachmentBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self7207     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
7208         self.inner.aspect_mask = aspect_mask;
7209         self
7210     }
color_attachment(mut self, color_attachment: u32) -> Self7211     pub fn color_attachment(mut self, color_attachment: u32) -> Self {
7212         self.inner.color_attachment = color_attachment;
7213         self
7214     }
clear_value(mut self, clear_value: ClearValue) -> Self7215     pub fn clear_value(mut self, clear_value: ClearValue) -> Self {
7216         self.inner.clear_value = clear_value;
7217         self
7218     }
7219     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7220     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7221     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ClearAttachment7222     pub fn build(self) -> ClearAttachment {
7223         self.inner
7224     }
7225 }
7226 #[repr(C)]
7227 #[derive(Copy, Clone, Default, Debug)]
7228 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescription.html>"]
7229 pub struct AttachmentDescription {
7230     pub flags: AttachmentDescriptionFlags,
7231     pub format: Format,
7232     pub samples: SampleCountFlags,
7233     pub load_op: AttachmentLoadOp,
7234     pub store_op: AttachmentStoreOp,
7235     pub stencil_load_op: AttachmentLoadOp,
7236     pub stencil_store_op: AttachmentStoreOp,
7237     pub initial_layout: ImageLayout,
7238     pub final_layout: ImageLayout,
7239 }
7240 impl AttachmentDescription {
builder<'a>() -> AttachmentDescriptionBuilder<'a>7241     pub fn builder<'a>() -> AttachmentDescriptionBuilder<'a> {
7242         AttachmentDescriptionBuilder {
7243             inner: AttachmentDescription::default(),
7244             marker: ::std::marker::PhantomData,
7245         }
7246     }
7247 }
7248 #[repr(transparent)]
7249 pub struct AttachmentDescriptionBuilder<'a> {
7250     inner: AttachmentDescription,
7251     marker: ::std::marker::PhantomData<&'a ()>,
7252 }
7253 impl<'a> ::std::ops::Deref for AttachmentDescriptionBuilder<'a> {
7254     type Target = AttachmentDescription;
deref(&self) -> &Self::Target7255     fn deref(&self) -> &Self::Target {
7256         &self.inner
7257     }
7258 }
7259 impl<'a> ::std::ops::DerefMut for AttachmentDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7260     fn deref_mut(&mut self) -> &mut Self::Target {
7261         &mut self.inner
7262     }
7263 }
7264 impl<'a> AttachmentDescriptionBuilder<'a> {
flags(mut self, flags: AttachmentDescriptionFlags) -> Self7265     pub fn flags(mut self, flags: AttachmentDescriptionFlags) -> Self {
7266         self.inner.flags = flags;
7267         self
7268     }
format(mut self, format: Format) -> Self7269     pub fn format(mut self, format: Format) -> Self {
7270         self.inner.format = format;
7271         self
7272     }
samples(mut self, samples: SampleCountFlags) -> Self7273     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
7274         self.inner.samples = samples;
7275         self
7276     }
load_op(mut self, load_op: AttachmentLoadOp) -> Self7277     pub fn load_op(mut self, load_op: AttachmentLoadOp) -> Self {
7278         self.inner.load_op = load_op;
7279         self
7280     }
store_op(mut self, store_op: AttachmentStoreOp) -> Self7281     pub fn store_op(mut self, store_op: AttachmentStoreOp) -> Self {
7282         self.inner.store_op = store_op;
7283         self
7284     }
stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self7285     pub fn stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self {
7286         self.inner.stencil_load_op = stencil_load_op;
7287         self
7288     }
stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self7289     pub fn stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self {
7290         self.inner.stencil_store_op = stencil_store_op;
7291         self
7292     }
initial_layout(mut self, initial_layout: ImageLayout) -> Self7293     pub fn initial_layout(mut self, initial_layout: ImageLayout) -> Self {
7294         self.inner.initial_layout = initial_layout;
7295         self
7296     }
final_layout(mut self, final_layout: ImageLayout) -> Self7297     pub fn final_layout(mut self, final_layout: ImageLayout) -> Self {
7298         self.inner.final_layout = final_layout;
7299         self
7300     }
7301     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7302     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7303     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentDescription7304     pub fn build(self) -> AttachmentDescription {
7305         self.inner
7306     }
7307 }
7308 #[repr(C)]
7309 #[derive(Copy, Clone, Default, Debug)]
7310 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReference.html>"]
7311 pub struct AttachmentReference {
7312     pub attachment: u32,
7313     pub layout: ImageLayout,
7314 }
7315 impl AttachmentReference {
builder<'a>() -> AttachmentReferenceBuilder<'a>7316     pub fn builder<'a>() -> AttachmentReferenceBuilder<'a> {
7317         AttachmentReferenceBuilder {
7318             inner: AttachmentReference::default(),
7319             marker: ::std::marker::PhantomData,
7320         }
7321     }
7322 }
7323 #[repr(transparent)]
7324 pub struct AttachmentReferenceBuilder<'a> {
7325     inner: AttachmentReference,
7326     marker: ::std::marker::PhantomData<&'a ()>,
7327 }
7328 impl<'a> ::std::ops::Deref for AttachmentReferenceBuilder<'a> {
7329     type Target = AttachmentReference;
deref(&self) -> &Self::Target7330     fn deref(&self) -> &Self::Target {
7331         &self.inner
7332     }
7333 }
7334 impl<'a> ::std::ops::DerefMut for AttachmentReferenceBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7335     fn deref_mut(&mut self) -> &mut Self::Target {
7336         &mut self.inner
7337     }
7338 }
7339 impl<'a> AttachmentReferenceBuilder<'a> {
attachment(mut self, attachment: u32) -> Self7340     pub fn attachment(mut self, attachment: u32) -> Self {
7341         self.inner.attachment = attachment;
7342         self
7343     }
layout(mut self, layout: ImageLayout) -> Self7344     pub fn layout(mut self, layout: ImageLayout) -> Self {
7345         self.inner.layout = layout;
7346         self
7347     }
7348     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7349     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7350     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentReference7351     pub fn build(self) -> AttachmentReference {
7352         self.inner
7353     }
7354 }
7355 #[repr(C)]
7356 #[derive(Copy, Clone, Debug)]
7357 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescription.html>"]
7358 pub struct SubpassDescription {
7359     pub flags: SubpassDescriptionFlags,
7360     pub pipeline_bind_point: PipelineBindPoint,
7361     pub input_attachment_count: u32,
7362     pub p_input_attachments: *const AttachmentReference,
7363     pub color_attachment_count: u32,
7364     pub p_color_attachments: *const AttachmentReference,
7365     pub p_resolve_attachments: *const AttachmentReference,
7366     pub p_depth_stencil_attachment: *const AttachmentReference,
7367     pub preserve_attachment_count: u32,
7368     pub p_preserve_attachments: *const u32,
7369 }
7370 impl ::std::default::Default for SubpassDescription {
default() -> SubpassDescription7371     fn default() -> SubpassDescription {
7372         SubpassDescription {
7373             flags: SubpassDescriptionFlags::default(),
7374             pipeline_bind_point: PipelineBindPoint::default(),
7375             input_attachment_count: u32::default(),
7376             p_input_attachments: ::std::ptr::null(),
7377             color_attachment_count: u32::default(),
7378             p_color_attachments: ::std::ptr::null(),
7379             p_resolve_attachments: ::std::ptr::null(),
7380             p_depth_stencil_attachment: ::std::ptr::null(),
7381             preserve_attachment_count: u32::default(),
7382             p_preserve_attachments: ::std::ptr::null(),
7383         }
7384     }
7385 }
7386 impl SubpassDescription {
builder<'a>() -> SubpassDescriptionBuilder<'a>7387     pub fn builder<'a>() -> SubpassDescriptionBuilder<'a> {
7388         SubpassDescriptionBuilder {
7389             inner: SubpassDescription::default(),
7390             marker: ::std::marker::PhantomData,
7391         }
7392     }
7393 }
7394 #[repr(transparent)]
7395 pub struct SubpassDescriptionBuilder<'a> {
7396     inner: SubpassDescription,
7397     marker: ::std::marker::PhantomData<&'a ()>,
7398 }
7399 impl<'a> ::std::ops::Deref for SubpassDescriptionBuilder<'a> {
7400     type Target = SubpassDescription;
deref(&self) -> &Self::Target7401     fn deref(&self) -> &Self::Target {
7402         &self.inner
7403     }
7404 }
7405 impl<'a> ::std::ops::DerefMut for SubpassDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7406     fn deref_mut(&mut self) -> &mut Self::Target {
7407         &mut self.inner
7408     }
7409 }
7410 impl<'a> SubpassDescriptionBuilder<'a> {
flags(mut self, flags: SubpassDescriptionFlags) -> Self7411     pub fn flags(mut self, flags: SubpassDescriptionFlags) -> Self {
7412         self.inner.flags = flags;
7413         self
7414     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self7415     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
7416         self.inner.pipeline_bind_point = pipeline_bind_point;
7417         self
7418     }
input_attachments(mut self, input_attachments: &'a [AttachmentReference]) -> Self7419     pub fn input_attachments(mut self, input_attachments: &'a [AttachmentReference]) -> Self {
7420         self.inner.input_attachment_count = input_attachments.len() as _;
7421         self.inner.p_input_attachments = input_attachments.as_ptr();
7422         self
7423     }
color_attachments(mut self, color_attachments: &'a [AttachmentReference]) -> Self7424     pub fn color_attachments(mut self, color_attachments: &'a [AttachmentReference]) -> Self {
7425         self.inner.color_attachment_count = color_attachments.len() as _;
7426         self.inner.p_color_attachments = color_attachments.as_ptr();
7427         self
7428     }
resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference]) -> Self7429     pub fn resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference]) -> Self {
7430         self.inner.color_attachment_count = resolve_attachments.len() as _;
7431         self.inner.p_resolve_attachments = resolve_attachments.as_ptr();
7432         self
7433     }
depth_stencil_attachment( mut self, depth_stencil_attachment: &'a AttachmentReference, ) -> Self7434     pub fn depth_stencil_attachment(
7435         mut self,
7436         depth_stencil_attachment: &'a AttachmentReference,
7437     ) -> Self {
7438         self.inner.p_depth_stencil_attachment = depth_stencil_attachment;
7439         self
7440     }
preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self7441     pub fn preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self {
7442         self.inner.preserve_attachment_count = preserve_attachments.len() as _;
7443         self.inner.p_preserve_attachments = preserve_attachments.as_ptr();
7444         self
7445     }
7446     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7447     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7448     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDescription7449     pub fn build(self) -> SubpassDescription {
7450         self.inner
7451     }
7452 }
7453 #[repr(C)]
7454 #[derive(Copy, Clone, Default, Debug)]
7455 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDependency.html>"]
7456 pub struct SubpassDependency {
7457     pub src_subpass: u32,
7458     pub dst_subpass: u32,
7459     pub src_stage_mask: PipelineStageFlags,
7460     pub dst_stage_mask: PipelineStageFlags,
7461     pub src_access_mask: AccessFlags,
7462     pub dst_access_mask: AccessFlags,
7463     pub dependency_flags: DependencyFlags,
7464 }
7465 impl SubpassDependency {
builder<'a>() -> SubpassDependencyBuilder<'a>7466     pub fn builder<'a>() -> SubpassDependencyBuilder<'a> {
7467         SubpassDependencyBuilder {
7468             inner: SubpassDependency::default(),
7469             marker: ::std::marker::PhantomData,
7470         }
7471     }
7472 }
7473 #[repr(transparent)]
7474 pub struct SubpassDependencyBuilder<'a> {
7475     inner: SubpassDependency,
7476     marker: ::std::marker::PhantomData<&'a ()>,
7477 }
7478 impl<'a> ::std::ops::Deref for SubpassDependencyBuilder<'a> {
7479     type Target = SubpassDependency;
deref(&self) -> &Self::Target7480     fn deref(&self) -> &Self::Target {
7481         &self.inner
7482     }
7483 }
7484 impl<'a> ::std::ops::DerefMut for SubpassDependencyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7485     fn deref_mut(&mut self) -> &mut Self::Target {
7486         &mut self.inner
7487     }
7488 }
7489 impl<'a> SubpassDependencyBuilder<'a> {
src_subpass(mut self, src_subpass: u32) -> Self7490     pub fn src_subpass(mut self, src_subpass: u32) -> Self {
7491         self.inner.src_subpass = src_subpass;
7492         self
7493     }
dst_subpass(mut self, dst_subpass: u32) -> Self7494     pub fn dst_subpass(mut self, dst_subpass: u32) -> Self {
7495         self.inner.dst_subpass = dst_subpass;
7496         self
7497     }
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self7498     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self {
7499         self.inner.src_stage_mask = src_stage_mask;
7500         self
7501     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self7502     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self {
7503         self.inner.dst_stage_mask = dst_stage_mask;
7504         self
7505     }
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self7506     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
7507         self.inner.src_access_mask = src_access_mask;
7508         self
7509     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self7510     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
7511         self.inner.dst_access_mask = dst_access_mask;
7512         self
7513     }
dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self7514     pub fn dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self {
7515         self.inner.dependency_flags = dependency_flags;
7516         self
7517     }
7518     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7519     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7520     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDependency7521     pub fn build(self) -> SubpassDependency {
7522         self.inner
7523     }
7524 }
7525 #[repr(C)]
7526 #[derive(Copy, Clone, Debug)]
7527 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateInfo.html>"]
7528 pub struct RenderPassCreateInfo {
7529     pub s_type: StructureType,
7530     pub p_next: *const c_void,
7531     pub flags: RenderPassCreateFlags,
7532     pub attachment_count: u32,
7533     pub p_attachments: *const AttachmentDescription,
7534     pub subpass_count: u32,
7535     pub p_subpasses: *const SubpassDescription,
7536     pub dependency_count: u32,
7537     pub p_dependencies: *const SubpassDependency,
7538 }
7539 impl ::std::default::Default for RenderPassCreateInfo {
default() -> RenderPassCreateInfo7540     fn default() -> RenderPassCreateInfo {
7541         RenderPassCreateInfo {
7542             s_type: StructureType::RENDER_PASS_CREATE_INFO,
7543             p_next: ::std::ptr::null(),
7544             flags: RenderPassCreateFlags::default(),
7545             attachment_count: u32::default(),
7546             p_attachments: ::std::ptr::null(),
7547             subpass_count: u32::default(),
7548             p_subpasses: ::std::ptr::null(),
7549             dependency_count: u32::default(),
7550             p_dependencies: ::std::ptr::null(),
7551         }
7552     }
7553 }
7554 impl RenderPassCreateInfo {
builder<'a>() -> RenderPassCreateInfoBuilder<'a>7555     pub fn builder<'a>() -> RenderPassCreateInfoBuilder<'a> {
7556         RenderPassCreateInfoBuilder {
7557             inner: RenderPassCreateInfo::default(),
7558             marker: ::std::marker::PhantomData,
7559         }
7560     }
7561 }
7562 #[repr(transparent)]
7563 pub struct RenderPassCreateInfoBuilder<'a> {
7564     inner: RenderPassCreateInfo,
7565     marker: ::std::marker::PhantomData<&'a ()>,
7566 }
7567 pub unsafe trait ExtendsRenderPassCreateInfo {}
7568 impl<'a> ::std::ops::Deref for RenderPassCreateInfoBuilder<'a> {
7569     type Target = RenderPassCreateInfo;
deref(&self) -> &Self::Target7570     fn deref(&self) -> &Self::Target {
7571         &self.inner
7572     }
7573 }
7574 impl<'a> ::std::ops::DerefMut for RenderPassCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7575     fn deref_mut(&mut self) -> &mut Self::Target {
7576         &mut self.inner
7577     }
7578 }
7579 impl<'a> RenderPassCreateInfoBuilder<'a> {
flags(mut self, flags: RenderPassCreateFlags) -> Self7580     pub fn flags(mut self, flags: RenderPassCreateFlags) -> Self {
7581         self.inner.flags = flags;
7582         self
7583     }
attachments(mut self, attachments: &'a [AttachmentDescription]) -> Self7584     pub fn attachments(mut self, attachments: &'a [AttachmentDescription]) -> Self {
7585         self.inner.attachment_count = attachments.len() as _;
7586         self.inner.p_attachments = attachments.as_ptr();
7587         self
7588     }
subpasses(mut self, subpasses: &'a [SubpassDescription]) -> Self7589     pub fn subpasses(mut self, subpasses: &'a [SubpassDescription]) -> Self {
7590         self.inner.subpass_count = subpasses.len() as _;
7591         self.inner.p_subpasses = subpasses.as_ptr();
7592         self
7593     }
dependencies(mut self, dependencies: &'a [SubpassDependency]) -> Self7594     pub fn dependencies(mut self, dependencies: &'a [SubpassDependency]) -> Self {
7595         self.inner.dependency_count = dependencies.len() as _;
7596         self.inner.p_dependencies = dependencies.as_ptr();
7597         self
7598     }
7599     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
7600     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
7601     #[doc = r" valid extension structs can be pushed into the chain."]
7602     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
7603     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRenderPassCreateInfo>(mut self, next: &'a mut T) -> Self7604     pub fn push_next<T: ExtendsRenderPassCreateInfo>(mut self, next: &'a mut T) -> Self {
7605         unsafe {
7606             let next_ptr = next as *mut T as *mut BaseOutStructure;
7607             let last_next = ptr_chain_iter(next).last().unwrap();
7608             (*last_next).p_next = self.inner.p_next as _;
7609             self.inner.p_next = next_ptr as _;
7610         }
7611         self
7612     }
7613     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7614     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7615     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassCreateInfo7616     pub fn build(self) -> RenderPassCreateInfo {
7617         self.inner
7618     }
7619 }
7620 #[repr(C)]
7621 #[derive(Copy, Clone, Debug)]
7622 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEventCreateInfo.html>"]
7623 pub struct EventCreateInfo {
7624     pub s_type: StructureType,
7625     pub p_next: *const c_void,
7626     pub flags: EventCreateFlags,
7627 }
7628 impl ::std::default::Default for EventCreateInfo {
default() -> EventCreateInfo7629     fn default() -> EventCreateInfo {
7630         EventCreateInfo {
7631             s_type: StructureType::EVENT_CREATE_INFO,
7632             p_next: ::std::ptr::null(),
7633             flags: EventCreateFlags::default(),
7634         }
7635     }
7636 }
7637 impl EventCreateInfo {
builder<'a>() -> EventCreateInfoBuilder<'a>7638     pub fn builder<'a>() -> EventCreateInfoBuilder<'a> {
7639         EventCreateInfoBuilder {
7640             inner: EventCreateInfo::default(),
7641             marker: ::std::marker::PhantomData,
7642         }
7643     }
7644 }
7645 #[repr(transparent)]
7646 pub struct EventCreateInfoBuilder<'a> {
7647     inner: EventCreateInfo,
7648     marker: ::std::marker::PhantomData<&'a ()>,
7649 }
7650 impl<'a> ::std::ops::Deref for EventCreateInfoBuilder<'a> {
7651     type Target = EventCreateInfo;
deref(&self) -> &Self::Target7652     fn deref(&self) -> &Self::Target {
7653         &self.inner
7654     }
7655 }
7656 impl<'a> ::std::ops::DerefMut for EventCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7657     fn deref_mut(&mut self) -> &mut Self::Target {
7658         &mut self.inner
7659     }
7660 }
7661 impl<'a> EventCreateInfoBuilder<'a> {
flags(mut self, flags: EventCreateFlags) -> Self7662     pub fn flags(mut self, flags: EventCreateFlags) -> Self {
7663         self.inner.flags = flags;
7664         self
7665     }
7666     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7667     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7668     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> EventCreateInfo7669     pub fn build(self) -> EventCreateInfo {
7670         self.inner
7671     }
7672 }
7673 #[repr(C)]
7674 #[derive(Copy, Clone, Debug)]
7675 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceCreateInfo.html>"]
7676 pub struct FenceCreateInfo {
7677     pub s_type: StructureType,
7678     pub p_next: *const c_void,
7679     pub flags: FenceCreateFlags,
7680 }
7681 impl ::std::default::Default for FenceCreateInfo {
default() -> FenceCreateInfo7682     fn default() -> FenceCreateInfo {
7683         FenceCreateInfo {
7684             s_type: StructureType::FENCE_CREATE_INFO,
7685             p_next: ::std::ptr::null(),
7686             flags: FenceCreateFlags::default(),
7687         }
7688     }
7689 }
7690 impl FenceCreateInfo {
builder<'a>() -> FenceCreateInfoBuilder<'a>7691     pub fn builder<'a>() -> FenceCreateInfoBuilder<'a> {
7692         FenceCreateInfoBuilder {
7693             inner: FenceCreateInfo::default(),
7694             marker: ::std::marker::PhantomData,
7695         }
7696     }
7697 }
7698 #[repr(transparent)]
7699 pub struct FenceCreateInfoBuilder<'a> {
7700     inner: FenceCreateInfo,
7701     marker: ::std::marker::PhantomData<&'a ()>,
7702 }
7703 pub unsafe trait ExtendsFenceCreateInfo {}
7704 impl<'a> ::std::ops::Deref for FenceCreateInfoBuilder<'a> {
7705     type Target = FenceCreateInfo;
deref(&self) -> &Self::Target7706     fn deref(&self) -> &Self::Target {
7707         &self.inner
7708     }
7709 }
7710 impl<'a> ::std::ops::DerefMut for FenceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7711     fn deref_mut(&mut self) -> &mut Self::Target {
7712         &mut self.inner
7713     }
7714 }
7715 impl<'a> FenceCreateInfoBuilder<'a> {
flags(mut self, flags: FenceCreateFlags) -> Self7716     pub fn flags(mut self, flags: FenceCreateFlags) -> Self {
7717         self.inner.flags = flags;
7718         self
7719     }
7720     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
7721     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
7722     #[doc = r" valid extension structs can be pushed into the chain."]
7723     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
7724     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsFenceCreateInfo>(mut self, next: &'a mut T) -> Self7725     pub fn push_next<T: ExtendsFenceCreateInfo>(mut self, next: &'a mut T) -> Self {
7726         unsafe {
7727             let next_ptr = next as *mut T as *mut BaseOutStructure;
7728             let last_next = ptr_chain_iter(next).last().unwrap();
7729             (*last_next).p_next = self.inner.p_next as _;
7730             self.inner.p_next = next_ptr as _;
7731         }
7732         self
7733     }
7734     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7735     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7736     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FenceCreateInfo7737     pub fn build(self) -> FenceCreateInfo {
7738         self.inner
7739     }
7740 }
7741 #[repr(C)]
7742 #[derive(Copy, Clone, Default, Debug)]
7743 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFeatures.html>"]
7744 pub struct PhysicalDeviceFeatures {
7745     pub robust_buffer_access: Bool32,
7746     pub full_draw_index_uint32: Bool32,
7747     pub image_cube_array: Bool32,
7748     pub independent_blend: Bool32,
7749     pub geometry_shader: Bool32,
7750     pub tessellation_shader: Bool32,
7751     pub sample_rate_shading: Bool32,
7752     pub dual_src_blend: Bool32,
7753     pub logic_op: Bool32,
7754     pub multi_draw_indirect: Bool32,
7755     pub draw_indirect_first_instance: Bool32,
7756     pub depth_clamp: Bool32,
7757     pub depth_bias_clamp: Bool32,
7758     pub fill_mode_non_solid: Bool32,
7759     pub depth_bounds: Bool32,
7760     pub wide_lines: Bool32,
7761     pub large_points: Bool32,
7762     pub alpha_to_one: Bool32,
7763     pub multi_viewport: Bool32,
7764     pub sampler_anisotropy: Bool32,
7765     pub texture_compression_etc2: Bool32,
7766     pub texture_compression_astc_ldr: Bool32,
7767     pub texture_compression_bc: Bool32,
7768     pub occlusion_query_precise: Bool32,
7769     pub pipeline_statistics_query: Bool32,
7770     pub vertex_pipeline_stores_and_atomics: Bool32,
7771     pub fragment_stores_and_atomics: Bool32,
7772     pub shader_tessellation_and_geometry_point_size: Bool32,
7773     pub shader_image_gather_extended: Bool32,
7774     pub shader_storage_image_extended_formats: Bool32,
7775     pub shader_storage_image_multisample: Bool32,
7776     pub shader_storage_image_read_without_format: Bool32,
7777     pub shader_storage_image_write_without_format: Bool32,
7778     pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
7779     pub shader_sampled_image_array_dynamic_indexing: Bool32,
7780     pub shader_storage_buffer_array_dynamic_indexing: Bool32,
7781     pub shader_storage_image_array_dynamic_indexing: Bool32,
7782     pub shader_clip_distance: Bool32,
7783     pub shader_cull_distance: Bool32,
7784     pub shader_float64: Bool32,
7785     pub shader_int64: Bool32,
7786     pub shader_int16: Bool32,
7787     pub shader_resource_residency: Bool32,
7788     pub shader_resource_min_lod: Bool32,
7789     pub sparse_binding: Bool32,
7790     pub sparse_residency_buffer: Bool32,
7791     pub sparse_residency_image2_d: Bool32,
7792     pub sparse_residency_image3_d: Bool32,
7793     pub sparse_residency2_samples: Bool32,
7794     pub sparse_residency4_samples: Bool32,
7795     pub sparse_residency8_samples: Bool32,
7796     pub sparse_residency16_samples: Bool32,
7797     pub sparse_residency_aliased: Bool32,
7798     pub variable_multisample_rate: Bool32,
7799     pub inherited_queries: Bool32,
7800 }
7801 impl PhysicalDeviceFeatures {
builder<'a>() -> PhysicalDeviceFeaturesBuilder<'a>7802     pub fn builder<'a>() -> PhysicalDeviceFeaturesBuilder<'a> {
7803         PhysicalDeviceFeaturesBuilder {
7804             inner: PhysicalDeviceFeatures::default(),
7805             marker: ::std::marker::PhantomData,
7806         }
7807     }
7808 }
7809 #[repr(transparent)]
7810 pub struct PhysicalDeviceFeaturesBuilder<'a> {
7811     inner: PhysicalDeviceFeatures,
7812     marker: ::std::marker::PhantomData<&'a ()>,
7813 }
7814 impl<'a> ::std::ops::Deref for PhysicalDeviceFeaturesBuilder<'a> {
7815     type Target = PhysicalDeviceFeatures;
deref(&self) -> &Self::Target7816     fn deref(&self) -> &Self::Target {
7817         &self.inner
7818     }
7819 }
7820 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7821     fn deref_mut(&mut self) -> &mut Self::Target {
7822         &mut self.inner
7823     }
7824 }
7825 impl<'a> PhysicalDeviceFeaturesBuilder<'a> {
robust_buffer_access(mut self, robust_buffer_access: bool) -> Self7826     pub fn robust_buffer_access(mut self, robust_buffer_access: bool) -> Self {
7827         self.inner.robust_buffer_access = robust_buffer_access.into();
7828         self
7829     }
full_draw_index_uint32(mut self, full_draw_index_uint32: bool) -> Self7830     pub fn full_draw_index_uint32(mut self, full_draw_index_uint32: bool) -> Self {
7831         self.inner.full_draw_index_uint32 = full_draw_index_uint32.into();
7832         self
7833     }
image_cube_array(mut self, image_cube_array: bool) -> Self7834     pub fn image_cube_array(mut self, image_cube_array: bool) -> Self {
7835         self.inner.image_cube_array = image_cube_array.into();
7836         self
7837     }
independent_blend(mut self, independent_blend: bool) -> Self7838     pub fn independent_blend(mut self, independent_blend: bool) -> Self {
7839         self.inner.independent_blend = independent_blend.into();
7840         self
7841     }
geometry_shader(mut self, geometry_shader: bool) -> Self7842     pub fn geometry_shader(mut self, geometry_shader: bool) -> Self {
7843         self.inner.geometry_shader = geometry_shader.into();
7844         self
7845     }
tessellation_shader(mut self, tessellation_shader: bool) -> Self7846     pub fn tessellation_shader(mut self, tessellation_shader: bool) -> Self {
7847         self.inner.tessellation_shader = tessellation_shader.into();
7848         self
7849     }
sample_rate_shading(mut self, sample_rate_shading: bool) -> Self7850     pub fn sample_rate_shading(mut self, sample_rate_shading: bool) -> Self {
7851         self.inner.sample_rate_shading = sample_rate_shading.into();
7852         self
7853     }
dual_src_blend(mut self, dual_src_blend: bool) -> Self7854     pub fn dual_src_blend(mut self, dual_src_blend: bool) -> Self {
7855         self.inner.dual_src_blend = dual_src_blend.into();
7856         self
7857     }
logic_op(mut self, logic_op: bool) -> Self7858     pub fn logic_op(mut self, logic_op: bool) -> Self {
7859         self.inner.logic_op = logic_op.into();
7860         self
7861     }
multi_draw_indirect(mut self, multi_draw_indirect: bool) -> Self7862     pub fn multi_draw_indirect(mut self, multi_draw_indirect: bool) -> Self {
7863         self.inner.multi_draw_indirect = multi_draw_indirect.into();
7864         self
7865     }
draw_indirect_first_instance(mut self, draw_indirect_first_instance: bool) -> Self7866     pub fn draw_indirect_first_instance(mut self, draw_indirect_first_instance: bool) -> Self {
7867         self.inner.draw_indirect_first_instance = draw_indirect_first_instance.into();
7868         self
7869     }
depth_clamp(mut self, depth_clamp: bool) -> Self7870     pub fn depth_clamp(mut self, depth_clamp: bool) -> Self {
7871         self.inner.depth_clamp = depth_clamp.into();
7872         self
7873     }
depth_bias_clamp(mut self, depth_bias_clamp: bool) -> Self7874     pub fn depth_bias_clamp(mut self, depth_bias_clamp: bool) -> Self {
7875         self.inner.depth_bias_clamp = depth_bias_clamp.into();
7876         self
7877     }
fill_mode_non_solid(mut self, fill_mode_non_solid: bool) -> Self7878     pub fn fill_mode_non_solid(mut self, fill_mode_non_solid: bool) -> Self {
7879         self.inner.fill_mode_non_solid = fill_mode_non_solid.into();
7880         self
7881     }
depth_bounds(mut self, depth_bounds: bool) -> Self7882     pub fn depth_bounds(mut self, depth_bounds: bool) -> Self {
7883         self.inner.depth_bounds = depth_bounds.into();
7884         self
7885     }
wide_lines(mut self, wide_lines: bool) -> Self7886     pub fn wide_lines(mut self, wide_lines: bool) -> Self {
7887         self.inner.wide_lines = wide_lines.into();
7888         self
7889     }
large_points(mut self, large_points: bool) -> Self7890     pub fn large_points(mut self, large_points: bool) -> Self {
7891         self.inner.large_points = large_points.into();
7892         self
7893     }
alpha_to_one(mut self, alpha_to_one: bool) -> Self7894     pub fn alpha_to_one(mut self, alpha_to_one: bool) -> Self {
7895         self.inner.alpha_to_one = alpha_to_one.into();
7896         self
7897     }
multi_viewport(mut self, multi_viewport: bool) -> Self7898     pub fn multi_viewport(mut self, multi_viewport: bool) -> Self {
7899         self.inner.multi_viewport = multi_viewport.into();
7900         self
7901     }
sampler_anisotropy(mut self, sampler_anisotropy: bool) -> Self7902     pub fn sampler_anisotropy(mut self, sampler_anisotropy: bool) -> Self {
7903         self.inner.sampler_anisotropy = sampler_anisotropy.into();
7904         self
7905     }
texture_compression_etc2(mut self, texture_compression_etc2: bool) -> Self7906     pub fn texture_compression_etc2(mut self, texture_compression_etc2: bool) -> Self {
7907         self.inner.texture_compression_etc2 = texture_compression_etc2.into();
7908         self
7909     }
texture_compression_astc_ldr(mut self, texture_compression_astc_ldr: bool) -> Self7910     pub fn texture_compression_astc_ldr(mut self, texture_compression_astc_ldr: bool) -> Self {
7911         self.inner.texture_compression_astc_ldr = texture_compression_astc_ldr.into();
7912         self
7913     }
texture_compression_bc(mut self, texture_compression_bc: bool) -> Self7914     pub fn texture_compression_bc(mut self, texture_compression_bc: bool) -> Self {
7915         self.inner.texture_compression_bc = texture_compression_bc.into();
7916         self
7917     }
occlusion_query_precise(mut self, occlusion_query_precise: bool) -> Self7918     pub fn occlusion_query_precise(mut self, occlusion_query_precise: bool) -> Self {
7919         self.inner.occlusion_query_precise = occlusion_query_precise.into();
7920         self
7921     }
pipeline_statistics_query(mut self, pipeline_statistics_query: bool) -> Self7922     pub fn pipeline_statistics_query(mut self, pipeline_statistics_query: bool) -> Self {
7923         self.inner.pipeline_statistics_query = pipeline_statistics_query.into();
7924         self
7925     }
vertex_pipeline_stores_and_atomics( mut self, vertex_pipeline_stores_and_atomics: bool, ) -> Self7926     pub fn vertex_pipeline_stores_and_atomics(
7927         mut self,
7928         vertex_pipeline_stores_and_atomics: bool,
7929     ) -> Self {
7930         self.inner.vertex_pipeline_stores_and_atomics = vertex_pipeline_stores_and_atomics.into();
7931         self
7932     }
fragment_stores_and_atomics(mut self, fragment_stores_and_atomics: bool) -> Self7933     pub fn fragment_stores_and_atomics(mut self, fragment_stores_and_atomics: bool) -> Self {
7934         self.inner.fragment_stores_and_atomics = fragment_stores_and_atomics.into();
7935         self
7936     }
shader_tessellation_and_geometry_point_size( mut self, shader_tessellation_and_geometry_point_size: bool, ) -> Self7937     pub fn shader_tessellation_and_geometry_point_size(
7938         mut self,
7939         shader_tessellation_and_geometry_point_size: bool,
7940     ) -> Self {
7941         self.inner.shader_tessellation_and_geometry_point_size =
7942             shader_tessellation_and_geometry_point_size.into();
7943         self
7944     }
shader_image_gather_extended(mut self, shader_image_gather_extended: bool) -> Self7945     pub fn shader_image_gather_extended(mut self, shader_image_gather_extended: bool) -> Self {
7946         self.inner.shader_image_gather_extended = shader_image_gather_extended.into();
7947         self
7948     }
shader_storage_image_extended_formats( mut self, shader_storage_image_extended_formats: bool, ) -> Self7949     pub fn shader_storage_image_extended_formats(
7950         mut self,
7951         shader_storage_image_extended_formats: bool,
7952     ) -> Self {
7953         self.inner.shader_storage_image_extended_formats =
7954             shader_storage_image_extended_formats.into();
7955         self
7956     }
shader_storage_image_multisample( mut self, shader_storage_image_multisample: bool, ) -> Self7957     pub fn shader_storage_image_multisample(
7958         mut self,
7959         shader_storage_image_multisample: bool,
7960     ) -> Self {
7961         self.inner.shader_storage_image_multisample = shader_storage_image_multisample.into();
7962         self
7963     }
shader_storage_image_read_without_format( mut self, shader_storage_image_read_without_format: bool, ) -> Self7964     pub fn shader_storage_image_read_without_format(
7965         mut self,
7966         shader_storage_image_read_without_format: bool,
7967     ) -> Self {
7968         self.inner.shader_storage_image_read_without_format =
7969             shader_storage_image_read_without_format.into();
7970         self
7971     }
shader_storage_image_write_without_format( mut self, shader_storage_image_write_without_format: bool, ) -> Self7972     pub fn shader_storage_image_write_without_format(
7973         mut self,
7974         shader_storage_image_write_without_format: bool,
7975     ) -> Self {
7976         self.inner.shader_storage_image_write_without_format =
7977             shader_storage_image_write_without_format.into();
7978         self
7979     }
shader_uniform_buffer_array_dynamic_indexing( mut self, shader_uniform_buffer_array_dynamic_indexing: bool, ) -> Self7980     pub fn shader_uniform_buffer_array_dynamic_indexing(
7981         mut self,
7982         shader_uniform_buffer_array_dynamic_indexing: bool,
7983     ) -> Self {
7984         self.inner.shader_uniform_buffer_array_dynamic_indexing =
7985             shader_uniform_buffer_array_dynamic_indexing.into();
7986         self
7987     }
shader_sampled_image_array_dynamic_indexing( mut self, shader_sampled_image_array_dynamic_indexing: bool, ) -> Self7988     pub fn shader_sampled_image_array_dynamic_indexing(
7989         mut self,
7990         shader_sampled_image_array_dynamic_indexing: bool,
7991     ) -> Self {
7992         self.inner.shader_sampled_image_array_dynamic_indexing =
7993             shader_sampled_image_array_dynamic_indexing.into();
7994         self
7995     }
shader_storage_buffer_array_dynamic_indexing( mut self, shader_storage_buffer_array_dynamic_indexing: bool, ) -> Self7996     pub fn shader_storage_buffer_array_dynamic_indexing(
7997         mut self,
7998         shader_storage_buffer_array_dynamic_indexing: bool,
7999     ) -> Self {
8000         self.inner.shader_storage_buffer_array_dynamic_indexing =
8001             shader_storage_buffer_array_dynamic_indexing.into();
8002         self
8003     }
shader_storage_image_array_dynamic_indexing( mut self, shader_storage_image_array_dynamic_indexing: bool, ) -> Self8004     pub fn shader_storage_image_array_dynamic_indexing(
8005         mut self,
8006         shader_storage_image_array_dynamic_indexing: bool,
8007     ) -> Self {
8008         self.inner.shader_storage_image_array_dynamic_indexing =
8009             shader_storage_image_array_dynamic_indexing.into();
8010         self
8011     }
shader_clip_distance(mut self, shader_clip_distance: bool) -> Self8012     pub fn shader_clip_distance(mut self, shader_clip_distance: bool) -> Self {
8013         self.inner.shader_clip_distance = shader_clip_distance.into();
8014         self
8015     }
shader_cull_distance(mut self, shader_cull_distance: bool) -> Self8016     pub fn shader_cull_distance(mut self, shader_cull_distance: bool) -> Self {
8017         self.inner.shader_cull_distance = shader_cull_distance.into();
8018         self
8019     }
shader_float64(mut self, shader_float64: bool) -> Self8020     pub fn shader_float64(mut self, shader_float64: bool) -> Self {
8021         self.inner.shader_float64 = shader_float64.into();
8022         self
8023     }
shader_int64(mut self, shader_int64: bool) -> Self8024     pub fn shader_int64(mut self, shader_int64: bool) -> Self {
8025         self.inner.shader_int64 = shader_int64.into();
8026         self
8027     }
shader_int16(mut self, shader_int16: bool) -> Self8028     pub fn shader_int16(mut self, shader_int16: bool) -> Self {
8029         self.inner.shader_int16 = shader_int16.into();
8030         self
8031     }
shader_resource_residency(mut self, shader_resource_residency: bool) -> Self8032     pub fn shader_resource_residency(mut self, shader_resource_residency: bool) -> Self {
8033         self.inner.shader_resource_residency = shader_resource_residency.into();
8034         self
8035     }
shader_resource_min_lod(mut self, shader_resource_min_lod: bool) -> Self8036     pub fn shader_resource_min_lod(mut self, shader_resource_min_lod: bool) -> Self {
8037         self.inner.shader_resource_min_lod = shader_resource_min_lod.into();
8038         self
8039     }
sparse_binding(mut self, sparse_binding: bool) -> Self8040     pub fn sparse_binding(mut self, sparse_binding: bool) -> Self {
8041         self.inner.sparse_binding = sparse_binding.into();
8042         self
8043     }
sparse_residency_buffer(mut self, sparse_residency_buffer: bool) -> Self8044     pub fn sparse_residency_buffer(mut self, sparse_residency_buffer: bool) -> Self {
8045         self.inner.sparse_residency_buffer = sparse_residency_buffer.into();
8046         self
8047     }
sparse_residency_image2_d(mut self, sparse_residency_image2_d: bool) -> Self8048     pub fn sparse_residency_image2_d(mut self, sparse_residency_image2_d: bool) -> Self {
8049         self.inner.sparse_residency_image2_d = sparse_residency_image2_d.into();
8050         self
8051     }
sparse_residency_image3_d(mut self, sparse_residency_image3_d: bool) -> Self8052     pub fn sparse_residency_image3_d(mut self, sparse_residency_image3_d: bool) -> Self {
8053         self.inner.sparse_residency_image3_d = sparse_residency_image3_d.into();
8054         self
8055     }
sparse_residency2_samples(mut self, sparse_residency2_samples: bool) -> Self8056     pub fn sparse_residency2_samples(mut self, sparse_residency2_samples: bool) -> Self {
8057         self.inner.sparse_residency2_samples = sparse_residency2_samples.into();
8058         self
8059     }
sparse_residency4_samples(mut self, sparse_residency4_samples: bool) -> Self8060     pub fn sparse_residency4_samples(mut self, sparse_residency4_samples: bool) -> Self {
8061         self.inner.sparse_residency4_samples = sparse_residency4_samples.into();
8062         self
8063     }
sparse_residency8_samples(mut self, sparse_residency8_samples: bool) -> Self8064     pub fn sparse_residency8_samples(mut self, sparse_residency8_samples: bool) -> Self {
8065         self.inner.sparse_residency8_samples = sparse_residency8_samples.into();
8066         self
8067     }
sparse_residency16_samples(mut self, sparse_residency16_samples: bool) -> Self8068     pub fn sparse_residency16_samples(mut self, sparse_residency16_samples: bool) -> Self {
8069         self.inner.sparse_residency16_samples = sparse_residency16_samples.into();
8070         self
8071     }
sparse_residency_aliased(mut self, sparse_residency_aliased: bool) -> Self8072     pub fn sparse_residency_aliased(mut self, sparse_residency_aliased: bool) -> Self {
8073         self.inner.sparse_residency_aliased = sparse_residency_aliased.into();
8074         self
8075     }
variable_multisample_rate(mut self, variable_multisample_rate: bool) -> Self8076     pub fn variable_multisample_rate(mut self, variable_multisample_rate: bool) -> Self {
8077         self.inner.variable_multisample_rate = variable_multisample_rate.into();
8078         self
8079     }
inherited_queries(mut self, inherited_queries: bool) -> Self8080     pub fn inherited_queries(mut self, inherited_queries: bool) -> Self {
8081         self.inner.inherited_queries = inherited_queries.into();
8082         self
8083     }
8084     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
8085     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
8086     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFeatures8087     pub fn build(self) -> PhysicalDeviceFeatures {
8088         self.inner
8089     }
8090 }
8091 #[repr(C)]
8092 #[derive(Copy, Clone, Default, Debug)]
8093 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSparseProperties.html>"]
8094 pub struct PhysicalDeviceSparseProperties {
8095     pub residency_standard2_d_block_shape: Bool32,
8096     pub residency_standard2_d_multisample_block_shape: Bool32,
8097     pub residency_standard3_d_block_shape: Bool32,
8098     pub residency_aligned_mip_size: Bool32,
8099     pub residency_non_resident_strict: Bool32,
8100 }
8101 impl PhysicalDeviceSparseProperties {
builder<'a>() -> PhysicalDeviceSparsePropertiesBuilder<'a>8102     pub fn builder<'a>() -> PhysicalDeviceSparsePropertiesBuilder<'a> {
8103         PhysicalDeviceSparsePropertiesBuilder {
8104             inner: PhysicalDeviceSparseProperties::default(),
8105             marker: ::std::marker::PhantomData,
8106         }
8107     }
8108 }
8109 #[repr(transparent)]
8110 pub struct PhysicalDeviceSparsePropertiesBuilder<'a> {
8111     inner: PhysicalDeviceSparseProperties,
8112     marker: ::std::marker::PhantomData<&'a ()>,
8113 }
8114 impl<'a> ::std::ops::Deref for PhysicalDeviceSparsePropertiesBuilder<'a> {
8115     type Target = PhysicalDeviceSparseProperties;
deref(&self) -> &Self::Target8116     fn deref(&self) -> &Self::Target {
8117         &self.inner
8118     }
8119 }
8120 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSparsePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target8121     fn deref_mut(&mut self) -> &mut Self::Target {
8122         &mut self.inner
8123     }
8124 }
8125 impl<'a> PhysicalDeviceSparsePropertiesBuilder<'a> {
residency_standard2_d_block_shape( mut self, residency_standard2_d_block_shape: bool, ) -> Self8126     pub fn residency_standard2_d_block_shape(
8127         mut self,
8128         residency_standard2_d_block_shape: bool,
8129     ) -> Self {
8130         self.inner.residency_standard2_d_block_shape = residency_standard2_d_block_shape.into();
8131         self
8132     }
residency_standard2_d_multisample_block_shape( mut self, residency_standard2_d_multisample_block_shape: bool, ) -> Self8133     pub fn residency_standard2_d_multisample_block_shape(
8134         mut self,
8135         residency_standard2_d_multisample_block_shape: bool,
8136     ) -> Self {
8137         self.inner.residency_standard2_d_multisample_block_shape =
8138             residency_standard2_d_multisample_block_shape.into();
8139         self
8140     }
residency_standard3_d_block_shape( mut self, residency_standard3_d_block_shape: bool, ) -> Self8141     pub fn residency_standard3_d_block_shape(
8142         mut self,
8143         residency_standard3_d_block_shape: bool,
8144     ) -> Self {
8145         self.inner.residency_standard3_d_block_shape = residency_standard3_d_block_shape.into();
8146         self
8147     }
residency_aligned_mip_size(mut self, residency_aligned_mip_size: bool) -> Self8148     pub fn residency_aligned_mip_size(mut self, residency_aligned_mip_size: bool) -> Self {
8149         self.inner.residency_aligned_mip_size = residency_aligned_mip_size.into();
8150         self
8151     }
residency_non_resident_strict(mut self, residency_non_resident_strict: bool) -> Self8152     pub fn residency_non_resident_strict(mut self, residency_non_resident_strict: bool) -> Self {
8153         self.inner.residency_non_resident_strict = residency_non_resident_strict.into();
8154         self
8155     }
8156     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
8157     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
8158     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSparseProperties8159     pub fn build(self) -> PhysicalDeviceSparseProperties {
8160         self.inner
8161     }
8162 }
8163 #[repr(C)]
8164 #[derive(Copy, Clone, Debug)]
8165 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLimits.html>"]
8166 pub struct PhysicalDeviceLimits {
8167     pub max_image_dimension1_d: u32,
8168     pub max_image_dimension2_d: u32,
8169     pub max_image_dimension3_d: u32,
8170     pub max_image_dimension_cube: u32,
8171     pub max_image_array_layers: u32,
8172     pub max_texel_buffer_elements: u32,
8173     pub max_uniform_buffer_range: u32,
8174     pub max_storage_buffer_range: u32,
8175     pub max_push_constants_size: u32,
8176     pub max_memory_allocation_count: u32,
8177     pub max_sampler_allocation_count: u32,
8178     pub buffer_image_granularity: DeviceSize,
8179     pub sparse_address_space_size: DeviceSize,
8180     pub max_bound_descriptor_sets: u32,
8181     pub max_per_stage_descriptor_samplers: u32,
8182     pub max_per_stage_descriptor_uniform_buffers: u32,
8183     pub max_per_stage_descriptor_storage_buffers: u32,
8184     pub max_per_stage_descriptor_sampled_images: u32,
8185     pub max_per_stage_descriptor_storage_images: u32,
8186     pub max_per_stage_descriptor_input_attachments: u32,
8187     pub max_per_stage_resources: u32,
8188     pub max_descriptor_set_samplers: u32,
8189     pub max_descriptor_set_uniform_buffers: u32,
8190     pub max_descriptor_set_uniform_buffers_dynamic: u32,
8191     pub max_descriptor_set_storage_buffers: u32,
8192     pub max_descriptor_set_storage_buffers_dynamic: u32,
8193     pub max_descriptor_set_sampled_images: u32,
8194     pub max_descriptor_set_storage_images: u32,
8195     pub max_descriptor_set_input_attachments: u32,
8196     pub max_vertex_input_attributes: u32,
8197     pub max_vertex_input_bindings: u32,
8198     pub max_vertex_input_attribute_offset: u32,
8199     pub max_vertex_input_binding_stride: u32,
8200     pub max_vertex_output_components: u32,
8201     pub max_tessellation_generation_level: u32,
8202     pub max_tessellation_patch_size: u32,
8203     pub max_tessellation_control_per_vertex_input_components: u32,
8204     pub max_tessellation_control_per_vertex_output_components: u32,
8205     pub max_tessellation_control_per_patch_output_components: u32,
8206     pub max_tessellation_control_total_output_components: u32,
8207     pub max_tessellation_evaluation_input_components: u32,
8208     pub max_tessellation_evaluation_output_components: u32,
8209     pub max_geometry_shader_invocations: u32,
8210     pub max_geometry_input_components: u32,
8211     pub max_geometry_output_components: u32,
8212     pub max_geometry_output_vertices: u32,
8213     pub max_geometry_total_output_components: u32,
8214     pub max_fragment_input_components: u32,
8215     pub max_fragment_output_attachments: u32,
8216     pub max_fragment_dual_src_attachments: u32,
8217     pub max_fragment_combined_output_resources: u32,
8218     pub max_compute_shared_memory_size: u32,
8219     pub max_compute_work_group_count: [u32; 3],
8220     pub max_compute_work_group_invocations: u32,
8221     pub max_compute_work_group_size: [u32; 3],
8222     pub sub_pixel_precision_bits: u32,
8223     pub sub_texel_precision_bits: u32,
8224     pub mipmap_precision_bits: u32,
8225     pub max_draw_indexed_index_value: u32,
8226     pub max_draw_indirect_count: u32,
8227     pub max_sampler_lod_bias: f32,
8228     pub max_sampler_anisotropy: f32,
8229     pub max_viewports: u32,
8230     pub max_viewport_dimensions: [u32; 2],
8231     pub viewport_bounds_range: [f32; 2],
8232     pub viewport_sub_pixel_bits: u32,
8233     pub min_memory_map_alignment: usize,
8234     pub min_texel_buffer_offset_alignment: DeviceSize,
8235     pub min_uniform_buffer_offset_alignment: DeviceSize,
8236     pub min_storage_buffer_offset_alignment: DeviceSize,
8237     pub min_texel_offset: i32,
8238     pub max_texel_offset: u32,
8239     pub min_texel_gather_offset: i32,
8240     pub max_texel_gather_offset: u32,
8241     pub min_interpolation_offset: f32,
8242     pub max_interpolation_offset: f32,
8243     pub sub_pixel_interpolation_offset_bits: u32,
8244     pub max_framebuffer_width: u32,
8245     pub max_framebuffer_height: u32,
8246     pub max_framebuffer_layers: u32,
8247     pub framebuffer_color_sample_counts: SampleCountFlags,
8248     pub framebuffer_depth_sample_counts: SampleCountFlags,
8249     pub framebuffer_stencil_sample_counts: SampleCountFlags,
8250     pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
8251     pub max_color_attachments: u32,
8252     pub sampled_image_color_sample_counts: SampleCountFlags,
8253     pub sampled_image_integer_sample_counts: SampleCountFlags,
8254     pub sampled_image_depth_sample_counts: SampleCountFlags,
8255     pub sampled_image_stencil_sample_counts: SampleCountFlags,
8256     pub storage_image_sample_counts: SampleCountFlags,
8257     pub max_sample_mask_words: u32,
8258     pub timestamp_compute_and_graphics: Bool32,
8259     pub timestamp_period: f32,
8260     pub max_clip_distances: u32,
8261     pub max_cull_distances: u32,
8262     pub max_combined_clip_and_cull_distances: u32,
8263     pub discrete_queue_priorities: u32,
8264     pub point_size_range: [f32; 2],
8265     pub line_width_range: [f32; 2],
8266     pub point_size_granularity: f32,
8267     pub line_width_granularity: f32,
8268     pub strict_lines: Bool32,
8269     pub standard_sample_locations: Bool32,
8270     pub optimal_buffer_copy_offset_alignment: DeviceSize,
8271     pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
8272     pub non_coherent_atom_size: DeviceSize,
8273 }
8274 impl ::std::default::Default for PhysicalDeviceLimits {
default() -> PhysicalDeviceLimits8275     fn default() -> PhysicalDeviceLimits {
8276         PhysicalDeviceLimits {
8277             max_image_dimension1_d: u32::default(),
8278             max_image_dimension2_d: u32::default(),
8279             max_image_dimension3_d: u32::default(),
8280             max_image_dimension_cube: u32::default(),
8281             max_image_array_layers: u32::default(),
8282             max_texel_buffer_elements: u32::default(),
8283             max_uniform_buffer_range: u32::default(),
8284             max_storage_buffer_range: u32::default(),
8285             max_push_constants_size: u32::default(),
8286             max_memory_allocation_count: u32::default(),
8287             max_sampler_allocation_count: u32::default(),
8288             buffer_image_granularity: DeviceSize::default(),
8289             sparse_address_space_size: DeviceSize::default(),
8290             max_bound_descriptor_sets: u32::default(),
8291             max_per_stage_descriptor_samplers: u32::default(),
8292             max_per_stage_descriptor_uniform_buffers: u32::default(),
8293             max_per_stage_descriptor_storage_buffers: u32::default(),
8294             max_per_stage_descriptor_sampled_images: u32::default(),
8295             max_per_stage_descriptor_storage_images: u32::default(),
8296             max_per_stage_descriptor_input_attachments: u32::default(),
8297             max_per_stage_resources: u32::default(),
8298             max_descriptor_set_samplers: u32::default(),
8299             max_descriptor_set_uniform_buffers: u32::default(),
8300             max_descriptor_set_uniform_buffers_dynamic: u32::default(),
8301             max_descriptor_set_storage_buffers: u32::default(),
8302             max_descriptor_set_storage_buffers_dynamic: u32::default(),
8303             max_descriptor_set_sampled_images: u32::default(),
8304             max_descriptor_set_storage_images: u32::default(),
8305             max_descriptor_set_input_attachments: u32::default(),
8306             max_vertex_input_attributes: u32::default(),
8307             max_vertex_input_bindings: u32::default(),
8308             max_vertex_input_attribute_offset: u32::default(),
8309             max_vertex_input_binding_stride: u32::default(),
8310             max_vertex_output_components: u32::default(),
8311             max_tessellation_generation_level: u32::default(),
8312             max_tessellation_patch_size: u32::default(),
8313             max_tessellation_control_per_vertex_input_components: u32::default(),
8314             max_tessellation_control_per_vertex_output_components: u32::default(),
8315             max_tessellation_control_per_patch_output_components: u32::default(),
8316             max_tessellation_control_total_output_components: u32::default(),
8317             max_tessellation_evaluation_input_components: u32::default(),
8318             max_tessellation_evaluation_output_components: u32::default(),
8319             max_geometry_shader_invocations: u32::default(),
8320             max_geometry_input_components: u32::default(),
8321             max_geometry_output_components: u32::default(),
8322             max_geometry_output_vertices: u32::default(),
8323             max_geometry_total_output_components: u32::default(),
8324             max_fragment_input_components: u32::default(),
8325             max_fragment_output_attachments: u32::default(),
8326             max_fragment_dual_src_attachments: u32::default(),
8327             max_fragment_combined_output_resources: u32::default(),
8328             max_compute_shared_memory_size: u32::default(),
8329             max_compute_work_group_count: unsafe { ::std::mem::zeroed() },
8330             max_compute_work_group_invocations: u32::default(),
8331             max_compute_work_group_size: unsafe { ::std::mem::zeroed() },
8332             sub_pixel_precision_bits: u32::default(),
8333             sub_texel_precision_bits: u32::default(),
8334             mipmap_precision_bits: u32::default(),
8335             max_draw_indexed_index_value: u32::default(),
8336             max_draw_indirect_count: u32::default(),
8337             max_sampler_lod_bias: f32::default(),
8338             max_sampler_anisotropy: f32::default(),
8339             max_viewports: u32::default(),
8340             max_viewport_dimensions: unsafe { ::std::mem::zeroed() },
8341             viewport_bounds_range: unsafe { ::std::mem::zeroed() },
8342             viewport_sub_pixel_bits: u32::default(),
8343             min_memory_map_alignment: usize::default(),
8344             min_texel_buffer_offset_alignment: DeviceSize::default(),
8345             min_uniform_buffer_offset_alignment: DeviceSize::default(),
8346             min_storage_buffer_offset_alignment: DeviceSize::default(),
8347             min_texel_offset: i32::default(),
8348             max_texel_offset: u32::default(),
8349             min_texel_gather_offset: i32::default(),
8350             max_texel_gather_offset: u32::default(),
8351             min_interpolation_offset: f32::default(),
8352             max_interpolation_offset: f32::default(),
8353             sub_pixel_interpolation_offset_bits: u32::default(),
8354             max_framebuffer_width: u32::default(),
8355             max_framebuffer_height: u32::default(),
8356             max_framebuffer_layers: u32::default(),
8357             framebuffer_color_sample_counts: SampleCountFlags::default(),
8358             framebuffer_depth_sample_counts: SampleCountFlags::default(),
8359             framebuffer_stencil_sample_counts: SampleCountFlags::default(),
8360             framebuffer_no_attachments_sample_counts: SampleCountFlags::default(),
8361             max_color_attachments: u32::default(),
8362             sampled_image_color_sample_counts: SampleCountFlags::default(),
8363             sampled_image_integer_sample_counts: SampleCountFlags::default(),
8364             sampled_image_depth_sample_counts: SampleCountFlags::default(),
8365             sampled_image_stencil_sample_counts: SampleCountFlags::default(),
8366             storage_image_sample_counts: SampleCountFlags::default(),
8367             max_sample_mask_words: u32::default(),
8368             timestamp_compute_and_graphics: Bool32::default(),
8369             timestamp_period: f32::default(),
8370             max_clip_distances: u32::default(),
8371             max_cull_distances: u32::default(),
8372             max_combined_clip_and_cull_distances: u32::default(),
8373             discrete_queue_priorities: u32::default(),
8374             point_size_range: unsafe { ::std::mem::zeroed() },
8375             line_width_range: unsafe { ::std::mem::zeroed() },
8376             point_size_granularity: f32::default(),
8377             line_width_granularity: f32::default(),
8378             strict_lines: Bool32::default(),
8379             standard_sample_locations: Bool32::default(),
8380             optimal_buffer_copy_offset_alignment: DeviceSize::default(),
8381             optimal_buffer_copy_row_pitch_alignment: DeviceSize::default(),
8382             non_coherent_atom_size: DeviceSize::default(),
8383         }
8384     }
8385 }
8386 impl PhysicalDeviceLimits {
builder<'a>() -> PhysicalDeviceLimitsBuilder<'a>8387     pub fn builder<'a>() -> PhysicalDeviceLimitsBuilder<'a> {
8388         PhysicalDeviceLimitsBuilder {
8389             inner: PhysicalDeviceLimits::default(),
8390             marker: ::std::marker::PhantomData,
8391         }
8392     }
8393 }
8394 #[repr(transparent)]
8395 pub struct PhysicalDeviceLimitsBuilder<'a> {
8396     inner: PhysicalDeviceLimits,
8397     marker: ::std::marker::PhantomData<&'a ()>,
8398 }
8399 impl<'a> ::std::ops::Deref for PhysicalDeviceLimitsBuilder<'a> {
8400     type Target = PhysicalDeviceLimits;
deref(&self) -> &Self::Target8401     fn deref(&self) -> &Self::Target {
8402         &self.inner
8403     }
8404 }
8405 impl<'a> ::std::ops::DerefMut for PhysicalDeviceLimitsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target8406     fn deref_mut(&mut self) -> &mut Self::Target {
8407         &mut self.inner
8408     }
8409 }
8410 impl<'a> PhysicalDeviceLimitsBuilder<'a> {
max_image_dimension1_d(mut self, max_image_dimension1_d: u32) -> Self8411     pub fn max_image_dimension1_d(mut self, max_image_dimension1_d: u32) -> Self {
8412         self.inner.max_image_dimension1_d = max_image_dimension1_d;
8413         self
8414     }
max_image_dimension2_d(mut self, max_image_dimension2_d: u32) -> Self8415     pub fn max_image_dimension2_d(mut self, max_image_dimension2_d: u32) -> Self {
8416         self.inner.max_image_dimension2_d = max_image_dimension2_d;
8417         self
8418     }
max_image_dimension3_d(mut self, max_image_dimension3_d: u32) -> Self8419     pub fn max_image_dimension3_d(mut self, max_image_dimension3_d: u32) -> Self {
8420         self.inner.max_image_dimension3_d = max_image_dimension3_d;
8421         self
8422     }
max_image_dimension_cube(mut self, max_image_dimension_cube: u32) -> Self8423     pub fn max_image_dimension_cube(mut self, max_image_dimension_cube: u32) -> Self {
8424         self.inner.max_image_dimension_cube = max_image_dimension_cube;
8425         self
8426     }
max_image_array_layers(mut self, max_image_array_layers: u32) -> Self8427     pub fn max_image_array_layers(mut self, max_image_array_layers: u32) -> Self {
8428         self.inner.max_image_array_layers = max_image_array_layers;
8429         self
8430     }
max_texel_buffer_elements(mut self, max_texel_buffer_elements: u32) -> Self8431     pub fn max_texel_buffer_elements(mut self, max_texel_buffer_elements: u32) -> Self {
8432         self.inner.max_texel_buffer_elements = max_texel_buffer_elements;
8433         self
8434     }
max_uniform_buffer_range(mut self, max_uniform_buffer_range: u32) -> Self8435     pub fn max_uniform_buffer_range(mut self, max_uniform_buffer_range: u32) -> Self {
8436         self.inner.max_uniform_buffer_range = max_uniform_buffer_range;
8437         self
8438     }
max_storage_buffer_range(mut self, max_storage_buffer_range: u32) -> Self8439     pub fn max_storage_buffer_range(mut self, max_storage_buffer_range: u32) -> Self {
8440         self.inner.max_storage_buffer_range = max_storage_buffer_range;
8441         self
8442     }
max_push_constants_size(mut self, max_push_constants_size: u32) -> Self8443     pub fn max_push_constants_size(mut self, max_push_constants_size: u32) -> Self {
8444         self.inner.max_push_constants_size = max_push_constants_size;
8445         self
8446     }
max_memory_allocation_count(mut self, max_memory_allocation_count: u32) -> Self8447     pub fn max_memory_allocation_count(mut self, max_memory_allocation_count: u32) -> Self {
8448         self.inner.max_memory_allocation_count = max_memory_allocation_count;
8449         self
8450     }
max_sampler_allocation_count(mut self, max_sampler_allocation_count: u32) -> Self8451     pub fn max_sampler_allocation_count(mut self, max_sampler_allocation_count: u32) -> Self {
8452         self.inner.max_sampler_allocation_count = max_sampler_allocation_count;
8453         self
8454     }
buffer_image_granularity(mut self, buffer_image_granularity: DeviceSize) -> Self8455     pub fn buffer_image_granularity(mut self, buffer_image_granularity: DeviceSize) -> Self {
8456         self.inner.buffer_image_granularity = buffer_image_granularity;
8457         self
8458     }
sparse_address_space_size(mut self, sparse_address_space_size: DeviceSize) -> Self8459     pub fn sparse_address_space_size(mut self, sparse_address_space_size: DeviceSize) -> Self {
8460         self.inner.sparse_address_space_size = sparse_address_space_size;
8461         self
8462     }
max_bound_descriptor_sets(mut self, max_bound_descriptor_sets: u32) -> Self8463     pub fn max_bound_descriptor_sets(mut self, max_bound_descriptor_sets: u32) -> Self {
8464         self.inner.max_bound_descriptor_sets = max_bound_descriptor_sets;
8465         self
8466     }
max_per_stage_descriptor_samplers( mut self, max_per_stage_descriptor_samplers: u32, ) -> Self8467     pub fn max_per_stage_descriptor_samplers(
8468         mut self,
8469         max_per_stage_descriptor_samplers: u32,
8470     ) -> Self {
8471         self.inner.max_per_stage_descriptor_samplers = max_per_stage_descriptor_samplers;
8472         self
8473     }
max_per_stage_descriptor_uniform_buffers( mut self, max_per_stage_descriptor_uniform_buffers: u32, ) -> Self8474     pub fn max_per_stage_descriptor_uniform_buffers(
8475         mut self,
8476         max_per_stage_descriptor_uniform_buffers: u32,
8477     ) -> Self {
8478         self.inner.max_per_stage_descriptor_uniform_buffers =
8479             max_per_stage_descriptor_uniform_buffers;
8480         self
8481     }
max_per_stage_descriptor_storage_buffers( mut self, max_per_stage_descriptor_storage_buffers: u32, ) -> Self8482     pub fn max_per_stage_descriptor_storage_buffers(
8483         mut self,
8484         max_per_stage_descriptor_storage_buffers: u32,
8485     ) -> Self {
8486         self.inner.max_per_stage_descriptor_storage_buffers =
8487             max_per_stage_descriptor_storage_buffers;
8488         self
8489     }
max_per_stage_descriptor_sampled_images( mut self, max_per_stage_descriptor_sampled_images: u32, ) -> Self8490     pub fn max_per_stage_descriptor_sampled_images(
8491         mut self,
8492         max_per_stage_descriptor_sampled_images: u32,
8493     ) -> Self {
8494         self.inner.max_per_stage_descriptor_sampled_images =
8495             max_per_stage_descriptor_sampled_images;
8496         self
8497     }
max_per_stage_descriptor_storage_images( mut self, max_per_stage_descriptor_storage_images: u32, ) -> Self8498     pub fn max_per_stage_descriptor_storage_images(
8499         mut self,
8500         max_per_stage_descriptor_storage_images: u32,
8501     ) -> Self {
8502         self.inner.max_per_stage_descriptor_storage_images =
8503             max_per_stage_descriptor_storage_images;
8504         self
8505     }
max_per_stage_descriptor_input_attachments( mut self, max_per_stage_descriptor_input_attachments: u32, ) -> Self8506     pub fn max_per_stage_descriptor_input_attachments(
8507         mut self,
8508         max_per_stage_descriptor_input_attachments: u32,
8509     ) -> Self {
8510         self.inner.max_per_stage_descriptor_input_attachments =
8511             max_per_stage_descriptor_input_attachments;
8512         self
8513     }
max_per_stage_resources(mut self, max_per_stage_resources: u32) -> Self8514     pub fn max_per_stage_resources(mut self, max_per_stage_resources: u32) -> Self {
8515         self.inner.max_per_stage_resources = max_per_stage_resources;
8516         self
8517     }
max_descriptor_set_samplers(mut self, max_descriptor_set_samplers: u32) -> Self8518     pub fn max_descriptor_set_samplers(mut self, max_descriptor_set_samplers: u32) -> Self {
8519         self.inner.max_descriptor_set_samplers = max_descriptor_set_samplers;
8520         self
8521     }
max_descriptor_set_uniform_buffers( mut self, max_descriptor_set_uniform_buffers: u32, ) -> Self8522     pub fn max_descriptor_set_uniform_buffers(
8523         mut self,
8524         max_descriptor_set_uniform_buffers: u32,
8525     ) -> Self {
8526         self.inner.max_descriptor_set_uniform_buffers = max_descriptor_set_uniform_buffers;
8527         self
8528     }
max_descriptor_set_uniform_buffers_dynamic( mut self, max_descriptor_set_uniform_buffers_dynamic: u32, ) -> Self8529     pub fn max_descriptor_set_uniform_buffers_dynamic(
8530         mut self,
8531         max_descriptor_set_uniform_buffers_dynamic: u32,
8532     ) -> Self {
8533         self.inner.max_descriptor_set_uniform_buffers_dynamic =
8534             max_descriptor_set_uniform_buffers_dynamic;
8535         self
8536     }
max_descriptor_set_storage_buffers( mut self, max_descriptor_set_storage_buffers: u32, ) -> Self8537     pub fn max_descriptor_set_storage_buffers(
8538         mut self,
8539         max_descriptor_set_storage_buffers: u32,
8540     ) -> Self {
8541         self.inner.max_descriptor_set_storage_buffers = max_descriptor_set_storage_buffers;
8542         self
8543     }
max_descriptor_set_storage_buffers_dynamic( mut self, max_descriptor_set_storage_buffers_dynamic: u32, ) -> Self8544     pub fn max_descriptor_set_storage_buffers_dynamic(
8545         mut self,
8546         max_descriptor_set_storage_buffers_dynamic: u32,
8547     ) -> Self {
8548         self.inner.max_descriptor_set_storage_buffers_dynamic =
8549             max_descriptor_set_storage_buffers_dynamic;
8550         self
8551     }
max_descriptor_set_sampled_images( mut self, max_descriptor_set_sampled_images: u32, ) -> Self8552     pub fn max_descriptor_set_sampled_images(
8553         mut self,
8554         max_descriptor_set_sampled_images: u32,
8555     ) -> Self {
8556         self.inner.max_descriptor_set_sampled_images = max_descriptor_set_sampled_images;
8557         self
8558     }
max_descriptor_set_storage_images( mut self, max_descriptor_set_storage_images: u32, ) -> Self8559     pub fn max_descriptor_set_storage_images(
8560         mut self,
8561         max_descriptor_set_storage_images: u32,
8562     ) -> Self {
8563         self.inner.max_descriptor_set_storage_images = max_descriptor_set_storage_images;
8564         self
8565     }
max_descriptor_set_input_attachments( mut self, max_descriptor_set_input_attachments: u32, ) -> Self8566     pub fn max_descriptor_set_input_attachments(
8567         mut self,
8568         max_descriptor_set_input_attachments: u32,
8569     ) -> Self {
8570         self.inner.max_descriptor_set_input_attachments = max_descriptor_set_input_attachments;
8571         self
8572     }
max_vertex_input_attributes(mut self, max_vertex_input_attributes: u32) -> Self8573     pub fn max_vertex_input_attributes(mut self, max_vertex_input_attributes: u32) -> Self {
8574         self.inner.max_vertex_input_attributes = max_vertex_input_attributes;
8575         self
8576     }
max_vertex_input_bindings(mut self, max_vertex_input_bindings: u32) -> Self8577     pub fn max_vertex_input_bindings(mut self, max_vertex_input_bindings: u32) -> Self {
8578         self.inner.max_vertex_input_bindings = max_vertex_input_bindings;
8579         self
8580     }
max_vertex_input_attribute_offset( mut self, max_vertex_input_attribute_offset: u32, ) -> Self8581     pub fn max_vertex_input_attribute_offset(
8582         mut self,
8583         max_vertex_input_attribute_offset: u32,
8584     ) -> Self {
8585         self.inner.max_vertex_input_attribute_offset = max_vertex_input_attribute_offset;
8586         self
8587     }
max_vertex_input_binding_stride(mut self, max_vertex_input_binding_stride: u32) -> Self8588     pub fn max_vertex_input_binding_stride(mut self, max_vertex_input_binding_stride: u32) -> Self {
8589         self.inner.max_vertex_input_binding_stride = max_vertex_input_binding_stride;
8590         self
8591     }
max_vertex_output_components(mut self, max_vertex_output_components: u32) -> Self8592     pub fn max_vertex_output_components(mut self, max_vertex_output_components: u32) -> Self {
8593         self.inner.max_vertex_output_components = max_vertex_output_components;
8594         self
8595     }
max_tessellation_generation_level( mut self, max_tessellation_generation_level: u32, ) -> Self8596     pub fn max_tessellation_generation_level(
8597         mut self,
8598         max_tessellation_generation_level: u32,
8599     ) -> Self {
8600         self.inner.max_tessellation_generation_level = max_tessellation_generation_level;
8601         self
8602     }
max_tessellation_patch_size(mut self, max_tessellation_patch_size: u32) -> Self8603     pub fn max_tessellation_patch_size(mut self, max_tessellation_patch_size: u32) -> Self {
8604         self.inner.max_tessellation_patch_size = max_tessellation_patch_size;
8605         self
8606     }
max_tessellation_control_per_vertex_input_components( mut self, max_tessellation_control_per_vertex_input_components: u32, ) -> Self8607     pub fn max_tessellation_control_per_vertex_input_components(
8608         mut self,
8609         max_tessellation_control_per_vertex_input_components: u32,
8610     ) -> Self {
8611         self.inner
8612             .max_tessellation_control_per_vertex_input_components =
8613             max_tessellation_control_per_vertex_input_components;
8614         self
8615     }
max_tessellation_control_per_vertex_output_components( mut self, max_tessellation_control_per_vertex_output_components: u32, ) -> Self8616     pub fn max_tessellation_control_per_vertex_output_components(
8617         mut self,
8618         max_tessellation_control_per_vertex_output_components: u32,
8619     ) -> Self {
8620         self.inner
8621             .max_tessellation_control_per_vertex_output_components =
8622             max_tessellation_control_per_vertex_output_components;
8623         self
8624     }
max_tessellation_control_per_patch_output_components( mut self, max_tessellation_control_per_patch_output_components: u32, ) -> Self8625     pub fn max_tessellation_control_per_patch_output_components(
8626         mut self,
8627         max_tessellation_control_per_patch_output_components: u32,
8628     ) -> Self {
8629         self.inner
8630             .max_tessellation_control_per_patch_output_components =
8631             max_tessellation_control_per_patch_output_components;
8632         self
8633     }
max_tessellation_control_total_output_components( mut self, max_tessellation_control_total_output_components: u32, ) -> Self8634     pub fn max_tessellation_control_total_output_components(
8635         mut self,
8636         max_tessellation_control_total_output_components: u32,
8637     ) -> Self {
8638         self.inner.max_tessellation_control_total_output_components =
8639             max_tessellation_control_total_output_components;
8640         self
8641     }
max_tessellation_evaluation_input_components( mut self, max_tessellation_evaluation_input_components: u32, ) -> Self8642     pub fn max_tessellation_evaluation_input_components(
8643         mut self,
8644         max_tessellation_evaluation_input_components: u32,
8645     ) -> Self {
8646         self.inner.max_tessellation_evaluation_input_components =
8647             max_tessellation_evaluation_input_components;
8648         self
8649     }
max_tessellation_evaluation_output_components( mut self, max_tessellation_evaluation_output_components: u32, ) -> Self8650     pub fn max_tessellation_evaluation_output_components(
8651         mut self,
8652         max_tessellation_evaluation_output_components: u32,
8653     ) -> Self {
8654         self.inner.max_tessellation_evaluation_output_components =
8655             max_tessellation_evaluation_output_components;
8656         self
8657     }
max_geometry_shader_invocations(mut self, max_geometry_shader_invocations: u32) -> Self8658     pub fn max_geometry_shader_invocations(mut self, max_geometry_shader_invocations: u32) -> Self {
8659         self.inner.max_geometry_shader_invocations = max_geometry_shader_invocations;
8660         self
8661     }
max_geometry_input_components(mut self, max_geometry_input_components: u32) -> Self8662     pub fn max_geometry_input_components(mut self, max_geometry_input_components: u32) -> Self {
8663         self.inner.max_geometry_input_components = max_geometry_input_components;
8664         self
8665     }
max_geometry_output_components(mut self, max_geometry_output_components: u32) -> Self8666     pub fn max_geometry_output_components(mut self, max_geometry_output_components: u32) -> Self {
8667         self.inner.max_geometry_output_components = max_geometry_output_components;
8668         self
8669     }
max_geometry_output_vertices(mut self, max_geometry_output_vertices: u32) -> Self8670     pub fn max_geometry_output_vertices(mut self, max_geometry_output_vertices: u32) -> Self {
8671         self.inner.max_geometry_output_vertices = max_geometry_output_vertices;
8672         self
8673     }
max_geometry_total_output_components( mut self, max_geometry_total_output_components: u32, ) -> Self8674     pub fn max_geometry_total_output_components(
8675         mut self,
8676         max_geometry_total_output_components: u32,
8677     ) -> Self {
8678         self.inner.max_geometry_total_output_components = max_geometry_total_output_components;
8679         self
8680     }
max_fragment_input_components(mut self, max_fragment_input_components: u32) -> Self8681     pub fn max_fragment_input_components(mut self, max_fragment_input_components: u32) -> Self {
8682         self.inner.max_fragment_input_components = max_fragment_input_components;
8683         self
8684     }
max_fragment_output_attachments(mut self, max_fragment_output_attachments: u32) -> Self8685     pub fn max_fragment_output_attachments(mut self, max_fragment_output_attachments: u32) -> Self {
8686         self.inner.max_fragment_output_attachments = max_fragment_output_attachments;
8687         self
8688     }
max_fragment_dual_src_attachments( mut self, max_fragment_dual_src_attachments: u32, ) -> Self8689     pub fn max_fragment_dual_src_attachments(
8690         mut self,
8691         max_fragment_dual_src_attachments: u32,
8692     ) -> Self {
8693         self.inner.max_fragment_dual_src_attachments = max_fragment_dual_src_attachments;
8694         self
8695     }
max_fragment_combined_output_resources( mut self, max_fragment_combined_output_resources: u32, ) -> Self8696     pub fn max_fragment_combined_output_resources(
8697         mut self,
8698         max_fragment_combined_output_resources: u32,
8699     ) -> Self {
8700         self.inner.max_fragment_combined_output_resources = max_fragment_combined_output_resources;
8701         self
8702     }
max_compute_shared_memory_size(mut self, max_compute_shared_memory_size: u32) -> Self8703     pub fn max_compute_shared_memory_size(mut self, max_compute_shared_memory_size: u32) -> Self {
8704         self.inner.max_compute_shared_memory_size = max_compute_shared_memory_size;
8705         self
8706     }
max_compute_work_group_count(mut self, max_compute_work_group_count: [u32; 3]) -> Self8707     pub fn max_compute_work_group_count(mut self, max_compute_work_group_count: [u32; 3]) -> Self {
8708         self.inner.max_compute_work_group_count = max_compute_work_group_count;
8709         self
8710     }
max_compute_work_group_invocations( mut self, max_compute_work_group_invocations: u32, ) -> Self8711     pub fn max_compute_work_group_invocations(
8712         mut self,
8713         max_compute_work_group_invocations: u32,
8714     ) -> Self {
8715         self.inner.max_compute_work_group_invocations = max_compute_work_group_invocations;
8716         self
8717     }
max_compute_work_group_size(mut self, max_compute_work_group_size: [u32; 3]) -> Self8718     pub fn max_compute_work_group_size(mut self, max_compute_work_group_size: [u32; 3]) -> Self {
8719         self.inner.max_compute_work_group_size = max_compute_work_group_size;
8720         self
8721     }
sub_pixel_precision_bits(mut self, sub_pixel_precision_bits: u32) -> Self8722     pub fn sub_pixel_precision_bits(mut self, sub_pixel_precision_bits: u32) -> Self {
8723         self.inner.sub_pixel_precision_bits = sub_pixel_precision_bits;
8724         self
8725     }
sub_texel_precision_bits(mut self, sub_texel_precision_bits: u32) -> Self8726     pub fn sub_texel_precision_bits(mut self, sub_texel_precision_bits: u32) -> Self {
8727         self.inner.sub_texel_precision_bits = sub_texel_precision_bits;
8728         self
8729     }
mipmap_precision_bits(mut self, mipmap_precision_bits: u32) -> Self8730     pub fn mipmap_precision_bits(mut self, mipmap_precision_bits: u32) -> Self {
8731         self.inner.mipmap_precision_bits = mipmap_precision_bits;
8732         self
8733     }
max_draw_indexed_index_value(mut self, max_draw_indexed_index_value: u32) -> Self8734     pub fn max_draw_indexed_index_value(mut self, max_draw_indexed_index_value: u32) -> Self {
8735         self.inner.max_draw_indexed_index_value = max_draw_indexed_index_value;
8736         self
8737     }
max_draw_indirect_count(mut self, max_draw_indirect_count: u32) -> Self8738     pub fn max_draw_indirect_count(mut self, max_draw_indirect_count: u32) -> Self {
8739         self.inner.max_draw_indirect_count = max_draw_indirect_count;
8740         self
8741     }
max_sampler_lod_bias(mut self, max_sampler_lod_bias: f32) -> Self8742     pub fn max_sampler_lod_bias(mut self, max_sampler_lod_bias: f32) -> Self {
8743         self.inner.max_sampler_lod_bias = max_sampler_lod_bias;
8744         self
8745     }
max_sampler_anisotropy(mut self, max_sampler_anisotropy: f32) -> Self8746     pub fn max_sampler_anisotropy(mut self, max_sampler_anisotropy: f32) -> Self {
8747         self.inner.max_sampler_anisotropy = max_sampler_anisotropy;
8748         self
8749     }
max_viewports(mut self, max_viewports: u32) -> Self8750     pub fn max_viewports(mut self, max_viewports: u32) -> Self {
8751         self.inner.max_viewports = max_viewports;
8752         self
8753     }
max_viewport_dimensions(mut self, max_viewport_dimensions: [u32; 2]) -> Self8754     pub fn max_viewport_dimensions(mut self, max_viewport_dimensions: [u32; 2]) -> Self {
8755         self.inner.max_viewport_dimensions = max_viewport_dimensions;
8756         self
8757     }
viewport_bounds_range(mut self, viewport_bounds_range: [f32; 2]) -> Self8758     pub fn viewport_bounds_range(mut self, viewport_bounds_range: [f32; 2]) -> Self {
8759         self.inner.viewport_bounds_range = viewport_bounds_range;
8760         self
8761     }
viewport_sub_pixel_bits(mut self, viewport_sub_pixel_bits: u32) -> Self8762     pub fn viewport_sub_pixel_bits(mut self, viewport_sub_pixel_bits: u32) -> Self {
8763         self.inner.viewport_sub_pixel_bits = viewport_sub_pixel_bits;
8764         self
8765     }
min_memory_map_alignment(mut self, min_memory_map_alignment: usize) -> Self8766     pub fn min_memory_map_alignment(mut self, min_memory_map_alignment: usize) -> Self {
8767         self.inner.min_memory_map_alignment = min_memory_map_alignment;
8768         self
8769     }
min_texel_buffer_offset_alignment( mut self, min_texel_buffer_offset_alignment: DeviceSize, ) -> Self8770     pub fn min_texel_buffer_offset_alignment(
8771         mut self,
8772         min_texel_buffer_offset_alignment: DeviceSize,
8773     ) -> Self {
8774         self.inner.min_texel_buffer_offset_alignment = min_texel_buffer_offset_alignment;
8775         self
8776     }
min_uniform_buffer_offset_alignment( mut self, min_uniform_buffer_offset_alignment: DeviceSize, ) -> Self8777     pub fn min_uniform_buffer_offset_alignment(
8778         mut self,
8779         min_uniform_buffer_offset_alignment: DeviceSize,
8780     ) -> Self {
8781         self.inner.min_uniform_buffer_offset_alignment = min_uniform_buffer_offset_alignment;
8782         self
8783     }
min_storage_buffer_offset_alignment( mut self, min_storage_buffer_offset_alignment: DeviceSize, ) -> Self8784     pub fn min_storage_buffer_offset_alignment(
8785         mut self,
8786         min_storage_buffer_offset_alignment: DeviceSize,
8787     ) -> Self {
8788         self.inner.min_storage_buffer_offset_alignment = min_storage_buffer_offset_alignment;
8789         self
8790     }
min_texel_offset(mut self, min_texel_offset: i32) -> Self8791     pub fn min_texel_offset(mut self, min_texel_offset: i32) -> Self {
8792         self.inner.min_texel_offset = min_texel_offset;
8793         self
8794     }
max_texel_offset(mut self, max_texel_offset: u32) -> Self8795     pub fn max_texel_offset(mut self, max_texel_offset: u32) -> Self {
8796         self.inner.max_texel_offset = max_texel_offset;
8797         self
8798     }
min_texel_gather_offset(mut self, min_texel_gather_offset: i32) -> Self8799     pub fn min_texel_gather_offset(mut self, min_texel_gather_offset: i32) -> Self {
8800         self.inner.min_texel_gather_offset = min_texel_gather_offset;
8801         self
8802     }
max_texel_gather_offset(mut self, max_texel_gather_offset: u32) -> Self8803     pub fn max_texel_gather_offset(mut self, max_texel_gather_offset: u32) -> Self {
8804         self.inner.max_texel_gather_offset = max_texel_gather_offset;
8805         self
8806     }
min_interpolation_offset(mut self, min_interpolation_offset: f32) -> Self8807     pub fn min_interpolation_offset(mut self, min_interpolation_offset: f32) -> Self {
8808         self.inner.min_interpolation_offset = min_interpolation_offset;
8809         self
8810     }
max_interpolation_offset(mut self, max_interpolation_offset: f32) -> Self8811     pub fn max_interpolation_offset(mut self, max_interpolation_offset: f32) -> Self {
8812         self.inner.max_interpolation_offset = max_interpolation_offset;
8813         self
8814     }
sub_pixel_interpolation_offset_bits( mut self, sub_pixel_interpolation_offset_bits: u32, ) -> Self8815     pub fn sub_pixel_interpolation_offset_bits(
8816         mut self,
8817         sub_pixel_interpolation_offset_bits: u32,
8818     ) -> Self {
8819         self.inner.sub_pixel_interpolation_offset_bits = sub_pixel_interpolation_offset_bits;
8820         self
8821     }
max_framebuffer_width(mut self, max_framebuffer_width: u32) -> Self8822     pub fn max_framebuffer_width(mut self, max_framebuffer_width: u32) -> Self {
8823         self.inner.max_framebuffer_width = max_framebuffer_width;
8824         self
8825     }
max_framebuffer_height(mut self, max_framebuffer_height: u32) -> Self8826     pub fn max_framebuffer_height(mut self, max_framebuffer_height: u32) -> Self {
8827         self.inner.max_framebuffer_height = max_framebuffer_height;
8828         self
8829     }
max_framebuffer_layers(mut self, max_framebuffer_layers: u32) -> Self8830     pub fn max_framebuffer_layers(mut self, max_framebuffer_layers: u32) -> Self {
8831         self.inner.max_framebuffer_layers = max_framebuffer_layers;
8832         self
8833     }
framebuffer_color_sample_counts( mut self, framebuffer_color_sample_counts: SampleCountFlags, ) -> Self8834     pub fn framebuffer_color_sample_counts(
8835         mut self,
8836         framebuffer_color_sample_counts: SampleCountFlags,
8837     ) -> Self {
8838         self.inner.framebuffer_color_sample_counts = framebuffer_color_sample_counts;
8839         self
8840     }
framebuffer_depth_sample_counts( mut self, framebuffer_depth_sample_counts: SampleCountFlags, ) -> Self8841     pub fn framebuffer_depth_sample_counts(
8842         mut self,
8843         framebuffer_depth_sample_counts: SampleCountFlags,
8844     ) -> Self {
8845         self.inner.framebuffer_depth_sample_counts = framebuffer_depth_sample_counts;
8846         self
8847     }
framebuffer_stencil_sample_counts( mut self, framebuffer_stencil_sample_counts: SampleCountFlags, ) -> Self8848     pub fn framebuffer_stencil_sample_counts(
8849         mut self,
8850         framebuffer_stencil_sample_counts: SampleCountFlags,
8851     ) -> Self {
8852         self.inner.framebuffer_stencil_sample_counts = framebuffer_stencil_sample_counts;
8853         self
8854     }
framebuffer_no_attachments_sample_counts( mut self, framebuffer_no_attachments_sample_counts: SampleCountFlags, ) -> Self8855     pub fn framebuffer_no_attachments_sample_counts(
8856         mut self,
8857         framebuffer_no_attachments_sample_counts: SampleCountFlags,
8858     ) -> Self {
8859         self.inner.framebuffer_no_attachments_sample_counts =
8860             framebuffer_no_attachments_sample_counts;
8861         self
8862     }
max_color_attachments(mut self, max_color_attachments: u32) -> Self8863     pub fn max_color_attachments(mut self, max_color_attachments: u32) -> Self {
8864         self.inner.max_color_attachments = max_color_attachments;
8865         self
8866     }
sampled_image_color_sample_counts( mut self, sampled_image_color_sample_counts: SampleCountFlags, ) -> Self8867     pub fn sampled_image_color_sample_counts(
8868         mut self,
8869         sampled_image_color_sample_counts: SampleCountFlags,
8870     ) -> Self {
8871         self.inner.sampled_image_color_sample_counts = sampled_image_color_sample_counts;
8872         self
8873     }
sampled_image_integer_sample_counts( mut self, sampled_image_integer_sample_counts: SampleCountFlags, ) -> Self8874     pub fn sampled_image_integer_sample_counts(
8875         mut self,
8876         sampled_image_integer_sample_counts: SampleCountFlags,
8877     ) -> Self {
8878         self.inner.sampled_image_integer_sample_counts = sampled_image_integer_sample_counts;
8879         self
8880     }
sampled_image_depth_sample_counts( mut self, sampled_image_depth_sample_counts: SampleCountFlags, ) -> Self8881     pub fn sampled_image_depth_sample_counts(
8882         mut self,
8883         sampled_image_depth_sample_counts: SampleCountFlags,
8884     ) -> Self {
8885         self.inner.sampled_image_depth_sample_counts = sampled_image_depth_sample_counts;
8886         self
8887     }
sampled_image_stencil_sample_counts( mut self, sampled_image_stencil_sample_counts: SampleCountFlags, ) -> Self8888     pub fn sampled_image_stencil_sample_counts(
8889         mut self,
8890         sampled_image_stencil_sample_counts: SampleCountFlags,
8891     ) -> Self {
8892         self.inner.sampled_image_stencil_sample_counts = sampled_image_stencil_sample_counts;
8893         self
8894     }
storage_image_sample_counts( mut self, storage_image_sample_counts: SampleCountFlags, ) -> Self8895     pub fn storage_image_sample_counts(
8896         mut self,
8897         storage_image_sample_counts: SampleCountFlags,
8898     ) -> Self {
8899         self.inner.storage_image_sample_counts = storage_image_sample_counts;
8900         self
8901     }
max_sample_mask_words(mut self, max_sample_mask_words: u32) -> Self8902     pub fn max_sample_mask_words(mut self, max_sample_mask_words: u32) -> Self {
8903         self.inner.max_sample_mask_words = max_sample_mask_words;
8904         self
8905     }
timestamp_compute_and_graphics(mut self, timestamp_compute_and_graphics: bool) -> Self8906     pub fn timestamp_compute_and_graphics(mut self, timestamp_compute_and_graphics: bool) -> Self {
8907         self.inner.timestamp_compute_and_graphics = timestamp_compute_and_graphics.into();
8908         self
8909     }
timestamp_period(mut self, timestamp_period: f32) -> Self8910     pub fn timestamp_period(mut self, timestamp_period: f32) -> Self {
8911         self.inner.timestamp_period = timestamp_period;
8912         self
8913     }
max_clip_distances(mut self, max_clip_distances: u32) -> Self8914     pub fn max_clip_distances(mut self, max_clip_distances: u32) -> Self {
8915         self.inner.max_clip_distances = max_clip_distances;
8916         self
8917     }
max_cull_distances(mut self, max_cull_distances: u32) -> Self8918     pub fn max_cull_distances(mut self, max_cull_distances: u32) -> Self {
8919         self.inner.max_cull_distances = max_cull_distances;
8920         self
8921     }
max_combined_clip_and_cull_distances( mut self, max_combined_clip_and_cull_distances: u32, ) -> Self8922     pub fn max_combined_clip_and_cull_distances(
8923         mut self,
8924         max_combined_clip_and_cull_distances: u32,
8925     ) -> Self {
8926         self.inner.max_combined_clip_and_cull_distances = max_combined_clip_and_cull_distances;
8927         self
8928     }
discrete_queue_priorities(mut self, discrete_queue_priorities: u32) -> Self8929     pub fn discrete_queue_priorities(mut self, discrete_queue_priorities: u32) -> Self {
8930         self.inner.discrete_queue_priorities = discrete_queue_priorities;
8931         self
8932     }
point_size_range(mut self, point_size_range: [f32; 2]) -> Self8933     pub fn point_size_range(mut self, point_size_range: [f32; 2]) -> Self {
8934         self.inner.point_size_range = point_size_range;
8935         self
8936     }
line_width_range(mut self, line_width_range: [f32; 2]) -> Self8937     pub fn line_width_range(mut self, line_width_range: [f32; 2]) -> Self {
8938         self.inner.line_width_range = line_width_range;
8939         self
8940     }
point_size_granularity(mut self, point_size_granularity: f32) -> Self8941     pub fn point_size_granularity(mut self, point_size_granularity: f32) -> Self {
8942         self.inner.point_size_granularity = point_size_granularity;
8943         self
8944     }
line_width_granularity(mut self, line_width_granularity: f32) -> Self8945     pub fn line_width_granularity(mut self, line_width_granularity: f32) -> Self {
8946         self.inner.line_width_granularity = line_width_granularity;
8947         self
8948     }
strict_lines(mut self, strict_lines: bool) -> Self8949     pub fn strict_lines(mut self, strict_lines: bool) -> Self {
8950         self.inner.strict_lines = strict_lines.into();
8951         self
8952     }
standard_sample_locations(mut self, standard_sample_locations: bool) -> Self8953     pub fn standard_sample_locations(mut self, standard_sample_locations: bool) -> Self {
8954         self.inner.standard_sample_locations = standard_sample_locations.into();
8955         self
8956     }
optimal_buffer_copy_offset_alignment( mut self, optimal_buffer_copy_offset_alignment: DeviceSize, ) -> Self8957     pub fn optimal_buffer_copy_offset_alignment(
8958         mut self,
8959         optimal_buffer_copy_offset_alignment: DeviceSize,
8960     ) -> Self {
8961         self.inner.optimal_buffer_copy_offset_alignment = optimal_buffer_copy_offset_alignment;
8962         self
8963     }
optimal_buffer_copy_row_pitch_alignment( mut self, optimal_buffer_copy_row_pitch_alignment: DeviceSize, ) -> Self8964     pub fn optimal_buffer_copy_row_pitch_alignment(
8965         mut self,
8966         optimal_buffer_copy_row_pitch_alignment: DeviceSize,
8967     ) -> Self {
8968         self.inner.optimal_buffer_copy_row_pitch_alignment =
8969             optimal_buffer_copy_row_pitch_alignment;
8970         self
8971     }
non_coherent_atom_size(mut self, non_coherent_atom_size: DeviceSize) -> Self8972     pub fn non_coherent_atom_size(mut self, non_coherent_atom_size: DeviceSize) -> Self {
8973         self.inner.non_coherent_atom_size = non_coherent_atom_size;
8974         self
8975     }
8976     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
8977     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
8978     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceLimits8979     pub fn build(self) -> PhysicalDeviceLimits {
8980         self.inner
8981     }
8982 }
8983 #[repr(C)]
8984 #[derive(Copy, Clone, Debug)]
8985 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreCreateInfo.html>"]
8986 pub struct SemaphoreCreateInfo {
8987     pub s_type: StructureType,
8988     pub p_next: *const c_void,
8989     pub flags: SemaphoreCreateFlags,
8990 }
8991 impl ::std::default::Default for SemaphoreCreateInfo {
default() -> SemaphoreCreateInfo8992     fn default() -> SemaphoreCreateInfo {
8993         SemaphoreCreateInfo {
8994             s_type: StructureType::SEMAPHORE_CREATE_INFO,
8995             p_next: ::std::ptr::null(),
8996             flags: SemaphoreCreateFlags::default(),
8997         }
8998     }
8999 }
9000 impl SemaphoreCreateInfo {
builder<'a>() -> SemaphoreCreateInfoBuilder<'a>9001     pub fn builder<'a>() -> SemaphoreCreateInfoBuilder<'a> {
9002         SemaphoreCreateInfoBuilder {
9003             inner: SemaphoreCreateInfo::default(),
9004             marker: ::std::marker::PhantomData,
9005         }
9006     }
9007 }
9008 #[repr(transparent)]
9009 pub struct SemaphoreCreateInfoBuilder<'a> {
9010     inner: SemaphoreCreateInfo,
9011     marker: ::std::marker::PhantomData<&'a ()>,
9012 }
9013 pub unsafe trait ExtendsSemaphoreCreateInfo {}
9014 impl<'a> ::std::ops::Deref for SemaphoreCreateInfoBuilder<'a> {
9015     type Target = SemaphoreCreateInfo;
deref(&self) -> &Self::Target9016     fn deref(&self) -> &Self::Target {
9017         &self.inner
9018     }
9019 }
9020 impl<'a> ::std::ops::DerefMut for SemaphoreCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9021     fn deref_mut(&mut self) -> &mut Self::Target {
9022         &mut self.inner
9023     }
9024 }
9025 impl<'a> SemaphoreCreateInfoBuilder<'a> {
flags(mut self, flags: SemaphoreCreateFlags) -> Self9026     pub fn flags(mut self, flags: SemaphoreCreateFlags) -> Self {
9027         self.inner.flags = flags;
9028         self
9029     }
9030     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9031     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9032     #[doc = r" valid extension structs can be pushed into the chain."]
9033     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9034     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSemaphoreCreateInfo>(mut self, next: &'a mut T) -> Self9035     pub fn push_next<T: ExtendsSemaphoreCreateInfo>(mut self, next: &'a mut T) -> Self {
9036         unsafe {
9037             let next_ptr = next as *mut T as *mut BaseOutStructure;
9038             let last_next = ptr_chain_iter(next).last().unwrap();
9039             (*last_next).p_next = self.inner.p_next as _;
9040             self.inner.p_next = next_ptr as _;
9041         }
9042         self
9043     }
9044     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9045     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9046     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreCreateInfo9047     pub fn build(self) -> SemaphoreCreateInfo {
9048         self.inner
9049     }
9050 }
9051 #[repr(C)]
9052 #[derive(Copy, Clone, Debug)]
9053 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolCreateInfo.html>"]
9054 pub struct QueryPoolCreateInfo {
9055     pub s_type: StructureType,
9056     pub p_next: *const c_void,
9057     pub flags: QueryPoolCreateFlags,
9058     pub query_type: QueryType,
9059     pub query_count: u32,
9060     pub pipeline_statistics: QueryPipelineStatisticFlags,
9061 }
9062 impl ::std::default::Default for QueryPoolCreateInfo {
default() -> QueryPoolCreateInfo9063     fn default() -> QueryPoolCreateInfo {
9064         QueryPoolCreateInfo {
9065             s_type: StructureType::QUERY_POOL_CREATE_INFO,
9066             p_next: ::std::ptr::null(),
9067             flags: QueryPoolCreateFlags::default(),
9068             query_type: QueryType::default(),
9069             query_count: u32::default(),
9070             pipeline_statistics: QueryPipelineStatisticFlags::default(),
9071         }
9072     }
9073 }
9074 impl QueryPoolCreateInfo {
builder<'a>() -> QueryPoolCreateInfoBuilder<'a>9075     pub fn builder<'a>() -> QueryPoolCreateInfoBuilder<'a> {
9076         QueryPoolCreateInfoBuilder {
9077             inner: QueryPoolCreateInfo::default(),
9078             marker: ::std::marker::PhantomData,
9079         }
9080     }
9081 }
9082 #[repr(transparent)]
9083 pub struct QueryPoolCreateInfoBuilder<'a> {
9084     inner: QueryPoolCreateInfo,
9085     marker: ::std::marker::PhantomData<&'a ()>,
9086 }
9087 pub unsafe trait ExtendsQueryPoolCreateInfo {}
9088 impl<'a> ::std::ops::Deref for QueryPoolCreateInfoBuilder<'a> {
9089     type Target = QueryPoolCreateInfo;
deref(&self) -> &Self::Target9090     fn deref(&self) -> &Self::Target {
9091         &self.inner
9092     }
9093 }
9094 impl<'a> ::std::ops::DerefMut for QueryPoolCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9095     fn deref_mut(&mut self) -> &mut Self::Target {
9096         &mut self.inner
9097     }
9098 }
9099 impl<'a> QueryPoolCreateInfoBuilder<'a> {
flags(mut self, flags: QueryPoolCreateFlags) -> Self9100     pub fn flags(mut self, flags: QueryPoolCreateFlags) -> Self {
9101         self.inner.flags = flags;
9102         self
9103     }
query_type(mut self, query_type: QueryType) -> Self9104     pub fn query_type(mut self, query_type: QueryType) -> Self {
9105         self.inner.query_type = query_type;
9106         self
9107     }
query_count(mut self, query_count: u32) -> Self9108     pub fn query_count(mut self, query_count: u32) -> Self {
9109         self.inner.query_count = query_count;
9110         self
9111     }
pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self9112     pub fn pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self {
9113         self.inner.pipeline_statistics = pipeline_statistics;
9114         self
9115     }
9116     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9117     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9118     #[doc = r" valid extension structs can be pushed into the chain."]
9119     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9120     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsQueryPoolCreateInfo>(mut self, next: &'a mut T) -> Self9121     pub fn push_next<T: ExtendsQueryPoolCreateInfo>(mut self, next: &'a mut T) -> Self {
9122         unsafe {
9123             let next_ptr = next as *mut T as *mut BaseOutStructure;
9124             let last_next = ptr_chain_iter(next).last().unwrap();
9125             (*last_next).p_next = self.inner.p_next as _;
9126             self.inner.p_next = next_ptr as _;
9127         }
9128         self
9129     }
9130     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9131     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9132     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueryPoolCreateInfo9133     pub fn build(self) -> QueryPoolCreateInfo {
9134         self.inner
9135     }
9136 }
9137 #[repr(C)]
9138 #[derive(Copy, Clone, Debug)]
9139 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferCreateInfo.html>"]
9140 pub struct FramebufferCreateInfo {
9141     pub s_type: StructureType,
9142     pub p_next: *const c_void,
9143     pub flags: FramebufferCreateFlags,
9144     pub render_pass: RenderPass,
9145     pub attachment_count: u32,
9146     pub p_attachments: *const ImageView,
9147     pub width: u32,
9148     pub height: u32,
9149     pub layers: u32,
9150 }
9151 impl ::std::default::Default for FramebufferCreateInfo {
default() -> FramebufferCreateInfo9152     fn default() -> FramebufferCreateInfo {
9153         FramebufferCreateInfo {
9154             s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
9155             p_next: ::std::ptr::null(),
9156             flags: FramebufferCreateFlags::default(),
9157             render_pass: RenderPass::default(),
9158             attachment_count: u32::default(),
9159             p_attachments: ::std::ptr::null(),
9160             width: u32::default(),
9161             height: u32::default(),
9162             layers: u32::default(),
9163         }
9164     }
9165 }
9166 impl FramebufferCreateInfo {
builder<'a>() -> FramebufferCreateInfoBuilder<'a>9167     pub fn builder<'a>() -> FramebufferCreateInfoBuilder<'a> {
9168         FramebufferCreateInfoBuilder {
9169             inner: FramebufferCreateInfo::default(),
9170             marker: ::std::marker::PhantomData,
9171         }
9172     }
9173 }
9174 #[repr(transparent)]
9175 pub struct FramebufferCreateInfoBuilder<'a> {
9176     inner: FramebufferCreateInfo,
9177     marker: ::std::marker::PhantomData<&'a ()>,
9178 }
9179 pub unsafe trait ExtendsFramebufferCreateInfo {}
9180 impl<'a> ::std::ops::Deref for FramebufferCreateInfoBuilder<'a> {
9181     type Target = FramebufferCreateInfo;
deref(&self) -> &Self::Target9182     fn deref(&self) -> &Self::Target {
9183         &self.inner
9184     }
9185 }
9186 impl<'a> ::std::ops::DerefMut for FramebufferCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9187     fn deref_mut(&mut self) -> &mut Self::Target {
9188         &mut self.inner
9189     }
9190 }
9191 impl<'a> FramebufferCreateInfoBuilder<'a> {
flags(mut self, flags: FramebufferCreateFlags) -> Self9192     pub fn flags(mut self, flags: FramebufferCreateFlags) -> Self {
9193         self.inner.flags = flags;
9194         self
9195     }
render_pass(mut self, render_pass: RenderPass) -> Self9196     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
9197         self.inner.render_pass = render_pass;
9198         self
9199     }
attachments(mut self, attachments: &'a [ImageView]) -> Self9200     pub fn attachments(mut self, attachments: &'a [ImageView]) -> Self {
9201         self.inner.attachment_count = attachments.len() as _;
9202         self.inner.p_attachments = attachments.as_ptr();
9203         self
9204     }
width(mut self, width: u32) -> Self9205     pub fn width(mut self, width: u32) -> Self {
9206         self.inner.width = width;
9207         self
9208     }
height(mut self, height: u32) -> Self9209     pub fn height(mut self, height: u32) -> Self {
9210         self.inner.height = height;
9211         self
9212     }
layers(mut self, layers: u32) -> Self9213     pub fn layers(mut self, layers: u32) -> Self {
9214         self.inner.layers = layers;
9215         self
9216     }
9217     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9218     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9219     #[doc = r" valid extension structs can be pushed into the chain."]
9220     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9221     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsFramebufferCreateInfo>(mut self, next: &'a mut T) -> Self9222     pub fn push_next<T: ExtendsFramebufferCreateInfo>(mut self, next: &'a mut T) -> Self {
9223         unsafe {
9224             let next_ptr = next as *mut T as *mut BaseOutStructure;
9225             let last_next = ptr_chain_iter(next).last().unwrap();
9226             (*last_next).p_next = self.inner.p_next as _;
9227             self.inner.p_next = next_ptr as _;
9228         }
9229         self
9230     }
9231     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9232     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9233     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferCreateInfo9234     pub fn build(self) -> FramebufferCreateInfo {
9235         self.inner
9236     }
9237 }
9238 #[repr(C)]
9239 #[derive(Copy, Clone, Default, Debug)]
9240 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndirectCommand.html>"]
9241 pub struct DrawIndirectCommand {
9242     pub vertex_count: u32,
9243     pub instance_count: u32,
9244     pub first_vertex: u32,
9245     pub first_instance: u32,
9246 }
9247 impl DrawIndirectCommand {
builder<'a>() -> DrawIndirectCommandBuilder<'a>9248     pub fn builder<'a>() -> DrawIndirectCommandBuilder<'a> {
9249         DrawIndirectCommandBuilder {
9250             inner: DrawIndirectCommand::default(),
9251             marker: ::std::marker::PhantomData,
9252         }
9253     }
9254 }
9255 #[repr(transparent)]
9256 pub struct DrawIndirectCommandBuilder<'a> {
9257     inner: DrawIndirectCommand,
9258     marker: ::std::marker::PhantomData<&'a ()>,
9259 }
9260 impl<'a> ::std::ops::Deref for DrawIndirectCommandBuilder<'a> {
9261     type Target = DrawIndirectCommand;
deref(&self) -> &Self::Target9262     fn deref(&self) -> &Self::Target {
9263         &self.inner
9264     }
9265 }
9266 impl<'a> ::std::ops::DerefMut for DrawIndirectCommandBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9267     fn deref_mut(&mut self) -> &mut Self::Target {
9268         &mut self.inner
9269     }
9270 }
9271 impl<'a> DrawIndirectCommandBuilder<'a> {
vertex_count(mut self, vertex_count: u32) -> Self9272     pub fn vertex_count(mut self, vertex_count: u32) -> Self {
9273         self.inner.vertex_count = vertex_count;
9274         self
9275     }
instance_count(mut self, instance_count: u32) -> Self9276     pub fn instance_count(mut self, instance_count: u32) -> Self {
9277         self.inner.instance_count = instance_count;
9278         self
9279     }
first_vertex(mut self, first_vertex: u32) -> Self9280     pub fn first_vertex(mut self, first_vertex: u32) -> Self {
9281         self.inner.first_vertex = first_vertex;
9282         self
9283     }
first_instance(mut self, first_instance: u32) -> Self9284     pub fn first_instance(mut self, first_instance: u32) -> Self {
9285         self.inner.first_instance = first_instance;
9286         self
9287     }
9288     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9289     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9290     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrawIndirectCommand9291     pub fn build(self) -> DrawIndirectCommand {
9292         self.inner
9293     }
9294 }
9295 #[repr(C)]
9296 #[derive(Copy, Clone, Default, Debug)]
9297 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndexedIndirectCommand.html>"]
9298 pub struct DrawIndexedIndirectCommand {
9299     pub index_count: u32,
9300     pub instance_count: u32,
9301     pub first_index: u32,
9302     pub vertex_offset: i32,
9303     pub first_instance: u32,
9304 }
9305 impl DrawIndexedIndirectCommand {
builder<'a>() -> DrawIndexedIndirectCommandBuilder<'a>9306     pub fn builder<'a>() -> DrawIndexedIndirectCommandBuilder<'a> {
9307         DrawIndexedIndirectCommandBuilder {
9308             inner: DrawIndexedIndirectCommand::default(),
9309             marker: ::std::marker::PhantomData,
9310         }
9311     }
9312 }
9313 #[repr(transparent)]
9314 pub struct DrawIndexedIndirectCommandBuilder<'a> {
9315     inner: DrawIndexedIndirectCommand,
9316     marker: ::std::marker::PhantomData<&'a ()>,
9317 }
9318 impl<'a> ::std::ops::Deref for DrawIndexedIndirectCommandBuilder<'a> {
9319     type Target = DrawIndexedIndirectCommand;
deref(&self) -> &Self::Target9320     fn deref(&self) -> &Self::Target {
9321         &self.inner
9322     }
9323 }
9324 impl<'a> ::std::ops::DerefMut for DrawIndexedIndirectCommandBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9325     fn deref_mut(&mut self) -> &mut Self::Target {
9326         &mut self.inner
9327     }
9328 }
9329 impl<'a> DrawIndexedIndirectCommandBuilder<'a> {
index_count(mut self, index_count: u32) -> Self9330     pub fn index_count(mut self, index_count: u32) -> Self {
9331         self.inner.index_count = index_count;
9332         self
9333     }
instance_count(mut self, instance_count: u32) -> Self9334     pub fn instance_count(mut self, instance_count: u32) -> Self {
9335         self.inner.instance_count = instance_count;
9336         self
9337     }
first_index(mut self, first_index: u32) -> Self9338     pub fn first_index(mut self, first_index: u32) -> Self {
9339         self.inner.first_index = first_index;
9340         self
9341     }
vertex_offset(mut self, vertex_offset: i32) -> Self9342     pub fn vertex_offset(mut self, vertex_offset: i32) -> Self {
9343         self.inner.vertex_offset = vertex_offset;
9344         self
9345     }
first_instance(mut self, first_instance: u32) -> Self9346     pub fn first_instance(mut self, first_instance: u32) -> Self {
9347         self.inner.first_instance = first_instance;
9348         self
9349     }
9350     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9351     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9352     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrawIndexedIndirectCommand9353     pub fn build(self) -> DrawIndexedIndirectCommand {
9354         self.inner
9355     }
9356 }
9357 #[repr(C)]
9358 #[derive(Copy, Clone, Default, Debug)]
9359 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDispatchIndirectCommand.html>"]
9360 pub struct DispatchIndirectCommand {
9361     pub x: u32,
9362     pub y: u32,
9363     pub z: u32,
9364 }
9365 impl DispatchIndirectCommand {
builder<'a>() -> DispatchIndirectCommandBuilder<'a>9366     pub fn builder<'a>() -> DispatchIndirectCommandBuilder<'a> {
9367         DispatchIndirectCommandBuilder {
9368             inner: DispatchIndirectCommand::default(),
9369             marker: ::std::marker::PhantomData,
9370         }
9371     }
9372 }
9373 #[repr(transparent)]
9374 pub struct DispatchIndirectCommandBuilder<'a> {
9375     inner: DispatchIndirectCommand,
9376     marker: ::std::marker::PhantomData<&'a ()>,
9377 }
9378 impl<'a> ::std::ops::Deref for DispatchIndirectCommandBuilder<'a> {
9379     type Target = DispatchIndirectCommand;
deref(&self) -> &Self::Target9380     fn deref(&self) -> &Self::Target {
9381         &self.inner
9382     }
9383 }
9384 impl<'a> ::std::ops::DerefMut for DispatchIndirectCommandBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9385     fn deref_mut(&mut self) -> &mut Self::Target {
9386         &mut self.inner
9387     }
9388 }
9389 impl<'a> DispatchIndirectCommandBuilder<'a> {
x(mut self, x: u32) -> Self9390     pub fn x(mut self, x: u32) -> Self {
9391         self.inner.x = x;
9392         self
9393     }
y(mut self, y: u32) -> Self9394     pub fn y(mut self, y: u32) -> Self {
9395         self.inner.y = y;
9396         self
9397     }
z(mut self, z: u32) -> Self9398     pub fn z(mut self, z: u32) -> Self {
9399         self.inner.z = z;
9400         self
9401     }
9402     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9403     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9404     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DispatchIndirectCommand9405     pub fn build(self) -> DispatchIndirectCommand {
9406         self.inner
9407     }
9408 }
9409 #[repr(C)]
9410 #[derive(Copy, Clone, Default, Debug)]
9411 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMultiDrawInfoEXT.html>"]
9412 pub struct MultiDrawInfoEXT {
9413     pub first_vertex: u32,
9414     pub vertex_count: u32,
9415 }
9416 impl MultiDrawInfoEXT {
builder<'a>() -> MultiDrawInfoEXTBuilder<'a>9417     pub fn builder<'a>() -> MultiDrawInfoEXTBuilder<'a> {
9418         MultiDrawInfoEXTBuilder {
9419             inner: MultiDrawInfoEXT::default(),
9420             marker: ::std::marker::PhantomData,
9421         }
9422     }
9423 }
9424 #[repr(transparent)]
9425 pub struct MultiDrawInfoEXTBuilder<'a> {
9426     inner: MultiDrawInfoEXT,
9427     marker: ::std::marker::PhantomData<&'a ()>,
9428 }
9429 impl<'a> ::std::ops::Deref for MultiDrawInfoEXTBuilder<'a> {
9430     type Target = MultiDrawInfoEXT;
deref(&self) -> &Self::Target9431     fn deref(&self) -> &Self::Target {
9432         &self.inner
9433     }
9434 }
9435 impl<'a> ::std::ops::DerefMut for MultiDrawInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9436     fn deref_mut(&mut self) -> &mut Self::Target {
9437         &mut self.inner
9438     }
9439 }
9440 impl<'a> MultiDrawInfoEXTBuilder<'a> {
first_vertex(mut self, first_vertex: u32) -> Self9441     pub fn first_vertex(mut self, first_vertex: u32) -> Self {
9442         self.inner.first_vertex = first_vertex;
9443         self
9444     }
vertex_count(mut self, vertex_count: u32) -> Self9445     pub fn vertex_count(mut self, vertex_count: u32) -> Self {
9446         self.inner.vertex_count = vertex_count;
9447         self
9448     }
9449     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9450     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9451     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MultiDrawInfoEXT9452     pub fn build(self) -> MultiDrawInfoEXT {
9453         self.inner
9454     }
9455 }
9456 #[repr(C)]
9457 #[derive(Copy, Clone, Default, Debug)]
9458 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMultiDrawIndexedInfoEXT.html>"]
9459 pub struct MultiDrawIndexedInfoEXT {
9460     pub first_index: u32,
9461     pub index_count: u32,
9462     pub vertex_offset: i32,
9463 }
9464 impl MultiDrawIndexedInfoEXT {
builder<'a>() -> MultiDrawIndexedInfoEXTBuilder<'a>9465     pub fn builder<'a>() -> MultiDrawIndexedInfoEXTBuilder<'a> {
9466         MultiDrawIndexedInfoEXTBuilder {
9467             inner: MultiDrawIndexedInfoEXT::default(),
9468             marker: ::std::marker::PhantomData,
9469         }
9470     }
9471 }
9472 #[repr(transparent)]
9473 pub struct MultiDrawIndexedInfoEXTBuilder<'a> {
9474     inner: MultiDrawIndexedInfoEXT,
9475     marker: ::std::marker::PhantomData<&'a ()>,
9476 }
9477 impl<'a> ::std::ops::Deref for MultiDrawIndexedInfoEXTBuilder<'a> {
9478     type Target = MultiDrawIndexedInfoEXT;
deref(&self) -> &Self::Target9479     fn deref(&self) -> &Self::Target {
9480         &self.inner
9481     }
9482 }
9483 impl<'a> ::std::ops::DerefMut for MultiDrawIndexedInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9484     fn deref_mut(&mut self) -> &mut Self::Target {
9485         &mut self.inner
9486     }
9487 }
9488 impl<'a> MultiDrawIndexedInfoEXTBuilder<'a> {
first_index(mut self, first_index: u32) -> Self9489     pub fn first_index(mut self, first_index: u32) -> Self {
9490         self.inner.first_index = first_index;
9491         self
9492     }
index_count(mut self, index_count: u32) -> Self9493     pub fn index_count(mut self, index_count: u32) -> Self {
9494         self.inner.index_count = index_count;
9495         self
9496     }
vertex_offset(mut self, vertex_offset: i32) -> Self9497     pub fn vertex_offset(mut self, vertex_offset: i32) -> Self {
9498         self.inner.vertex_offset = vertex_offset;
9499         self
9500     }
9501     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9502     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9503     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MultiDrawIndexedInfoEXT9504     pub fn build(self) -> MultiDrawIndexedInfoEXT {
9505         self.inner
9506     }
9507 }
9508 #[repr(C)]
9509 #[derive(Copy, Clone, Debug)]
9510 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubmitInfo.html>"]
9511 pub struct SubmitInfo {
9512     pub s_type: StructureType,
9513     pub p_next: *const c_void,
9514     pub wait_semaphore_count: u32,
9515     pub p_wait_semaphores: *const Semaphore,
9516     pub p_wait_dst_stage_mask: *const PipelineStageFlags,
9517     pub command_buffer_count: u32,
9518     pub p_command_buffers: *const CommandBuffer,
9519     pub signal_semaphore_count: u32,
9520     pub p_signal_semaphores: *const Semaphore,
9521 }
9522 impl ::std::default::Default for SubmitInfo {
default() -> SubmitInfo9523     fn default() -> SubmitInfo {
9524         SubmitInfo {
9525             s_type: StructureType::SUBMIT_INFO,
9526             p_next: ::std::ptr::null(),
9527             wait_semaphore_count: u32::default(),
9528             p_wait_semaphores: ::std::ptr::null(),
9529             p_wait_dst_stage_mask: ::std::ptr::null(),
9530             command_buffer_count: u32::default(),
9531             p_command_buffers: ::std::ptr::null(),
9532             signal_semaphore_count: u32::default(),
9533             p_signal_semaphores: ::std::ptr::null(),
9534         }
9535     }
9536 }
9537 impl SubmitInfo {
builder<'a>() -> SubmitInfoBuilder<'a>9538     pub fn builder<'a>() -> SubmitInfoBuilder<'a> {
9539         SubmitInfoBuilder {
9540             inner: SubmitInfo::default(),
9541             marker: ::std::marker::PhantomData,
9542         }
9543     }
9544 }
9545 #[repr(transparent)]
9546 pub struct SubmitInfoBuilder<'a> {
9547     inner: SubmitInfo,
9548     marker: ::std::marker::PhantomData<&'a ()>,
9549 }
9550 pub unsafe trait ExtendsSubmitInfo {}
9551 impl<'a> ::std::ops::Deref for SubmitInfoBuilder<'a> {
9552     type Target = SubmitInfo;
deref(&self) -> &Self::Target9553     fn deref(&self) -> &Self::Target {
9554         &self.inner
9555     }
9556 }
9557 impl<'a> ::std::ops::DerefMut for SubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9558     fn deref_mut(&mut self) -> &mut Self::Target {
9559         &mut self.inner
9560     }
9561 }
9562 impl<'a> SubmitInfoBuilder<'a> {
wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self9563     pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self {
9564         self.inner.wait_semaphore_count = wait_semaphores.len() as _;
9565         self.inner.p_wait_semaphores = wait_semaphores.as_ptr();
9566         self
9567     }
wait_dst_stage_mask(mut self, wait_dst_stage_mask: &'a [PipelineStageFlags]) -> Self9568     pub fn wait_dst_stage_mask(mut self, wait_dst_stage_mask: &'a [PipelineStageFlags]) -> Self {
9569         self.inner.wait_semaphore_count = wait_dst_stage_mask.len() as _;
9570         self.inner.p_wait_dst_stage_mask = wait_dst_stage_mask.as_ptr();
9571         self
9572     }
command_buffers(mut self, command_buffers: &'a [CommandBuffer]) -> Self9573     pub fn command_buffers(mut self, command_buffers: &'a [CommandBuffer]) -> Self {
9574         self.inner.command_buffer_count = command_buffers.len() as _;
9575         self.inner.p_command_buffers = command_buffers.as_ptr();
9576         self
9577     }
signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self9578     pub fn signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self {
9579         self.inner.signal_semaphore_count = signal_semaphores.len() as _;
9580         self.inner.p_signal_semaphores = signal_semaphores.as_ptr();
9581         self
9582     }
9583     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9584     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9585     #[doc = r" valid extension structs can be pushed into the chain."]
9586     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9587     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubmitInfo>(mut self, next: &'a mut T) -> Self9588     pub fn push_next<T: ExtendsSubmitInfo>(mut self, next: &'a mut T) -> Self {
9589         unsafe {
9590             let next_ptr = next as *mut T as *mut BaseOutStructure;
9591             let last_next = ptr_chain_iter(next).last().unwrap();
9592             (*last_next).p_next = self.inner.p_next as _;
9593             self.inner.p_next = next_ptr as _;
9594         }
9595         self
9596     }
9597     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9598     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9599     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubmitInfo9600     pub fn build(self) -> SubmitInfo {
9601         self.inner
9602     }
9603 }
9604 #[repr(C)]
9605 #[derive(Copy, Clone, Debug)]
9606 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPropertiesKHR.html>"]
9607 pub struct DisplayPropertiesKHR {
9608     pub display: DisplayKHR,
9609     pub display_name: *const c_char,
9610     pub physical_dimensions: Extent2D,
9611     pub physical_resolution: Extent2D,
9612     pub supported_transforms: SurfaceTransformFlagsKHR,
9613     pub plane_reorder_possible: Bool32,
9614     pub persistent_content: Bool32,
9615 }
9616 impl ::std::default::Default for DisplayPropertiesKHR {
default() -> DisplayPropertiesKHR9617     fn default() -> DisplayPropertiesKHR {
9618         DisplayPropertiesKHR {
9619             display: DisplayKHR::default(),
9620             display_name: ::std::ptr::null(),
9621             physical_dimensions: Extent2D::default(),
9622             physical_resolution: Extent2D::default(),
9623             supported_transforms: SurfaceTransformFlagsKHR::default(),
9624             plane_reorder_possible: Bool32::default(),
9625             persistent_content: Bool32::default(),
9626         }
9627     }
9628 }
9629 impl DisplayPropertiesKHR {
builder<'a>() -> DisplayPropertiesKHRBuilder<'a>9630     pub fn builder<'a>() -> DisplayPropertiesKHRBuilder<'a> {
9631         DisplayPropertiesKHRBuilder {
9632             inner: DisplayPropertiesKHR::default(),
9633             marker: ::std::marker::PhantomData,
9634         }
9635     }
9636 }
9637 #[repr(transparent)]
9638 pub struct DisplayPropertiesKHRBuilder<'a> {
9639     inner: DisplayPropertiesKHR,
9640     marker: ::std::marker::PhantomData<&'a ()>,
9641 }
9642 impl<'a> ::std::ops::Deref for DisplayPropertiesKHRBuilder<'a> {
9643     type Target = DisplayPropertiesKHR;
deref(&self) -> &Self::Target9644     fn deref(&self) -> &Self::Target {
9645         &self.inner
9646     }
9647 }
9648 impl<'a> ::std::ops::DerefMut for DisplayPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9649     fn deref_mut(&mut self) -> &mut Self::Target {
9650         &mut self.inner
9651     }
9652 }
9653 impl<'a> DisplayPropertiesKHRBuilder<'a> {
display(mut self, display: DisplayKHR) -> Self9654     pub fn display(mut self, display: DisplayKHR) -> Self {
9655         self.inner.display = display;
9656         self
9657     }
display_name(mut self, display_name: &'a ::std::ffi::CStr) -> Self9658     pub fn display_name(mut self, display_name: &'a ::std::ffi::CStr) -> Self {
9659         self.inner.display_name = display_name.as_ptr();
9660         self
9661     }
physical_dimensions(mut self, physical_dimensions: Extent2D) -> Self9662     pub fn physical_dimensions(mut self, physical_dimensions: Extent2D) -> Self {
9663         self.inner.physical_dimensions = physical_dimensions;
9664         self
9665     }
physical_resolution(mut self, physical_resolution: Extent2D) -> Self9666     pub fn physical_resolution(mut self, physical_resolution: Extent2D) -> Self {
9667         self.inner.physical_resolution = physical_resolution;
9668         self
9669     }
supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self9670     pub fn supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self {
9671         self.inner.supported_transforms = supported_transforms;
9672         self
9673     }
plane_reorder_possible(mut self, plane_reorder_possible: bool) -> Self9674     pub fn plane_reorder_possible(mut self, plane_reorder_possible: bool) -> Self {
9675         self.inner.plane_reorder_possible = plane_reorder_possible.into();
9676         self
9677     }
persistent_content(mut self, persistent_content: bool) -> Self9678     pub fn persistent_content(mut self, persistent_content: bool) -> Self {
9679         self.inner.persistent_content = persistent_content.into();
9680         self
9681     }
9682     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9683     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9684     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPropertiesKHR9685     pub fn build(self) -> DisplayPropertiesKHR {
9686         self.inner
9687     }
9688 }
9689 #[repr(C)]
9690 #[derive(Copy, Clone, Default, Debug)]
9691 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlanePropertiesKHR.html>"]
9692 pub struct DisplayPlanePropertiesKHR {
9693     pub current_display: DisplayKHR,
9694     pub current_stack_index: u32,
9695 }
9696 impl DisplayPlanePropertiesKHR {
builder<'a>() -> DisplayPlanePropertiesKHRBuilder<'a>9697     pub fn builder<'a>() -> DisplayPlanePropertiesKHRBuilder<'a> {
9698         DisplayPlanePropertiesKHRBuilder {
9699             inner: DisplayPlanePropertiesKHR::default(),
9700             marker: ::std::marker::PhantomData,
9701         }
9702     }
9703 }
9704 #[repr(transparent)]
9705 pub struct DisplayPlanePropertiesKHRBuilder<'a> {
9706     inner: DisplayPlanePropertiesKHR,
9707     marker: ::std::marker::PhantomData<&'a ()>,
9708 }
9709 impl<'a> ::std::ops::Deref for DisplayPlanePropertiesKHRBuilder<'a> {
9710     type Target = DisplayPlanePropertiesKHR;
deref(&self) -> &Self::Target9711     fn deref(&self) -> &Self::Target {
9712         &self.inner
9713     }
9714 }
9715 impl<'a> ::std::ops::DerefMut for DisplayPlanePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9716     fn deref_mut(&mut self) -> &mut Self::Target {
9717         &mut self.inner
9718     }
9719 }
9720 impl<'a> DisplayPlanePropertiesKHRBuilder<'a> {
current_display(mut self, current_display: DisplayKHR) -> Self9721     pub fn current_display(mut self, current_display: DisplayKHR) -> Self {
9722         self.inner.current_display = current_display;
9723         self
9724     }
current_stack_index(mut self, current_stack_index: u32) -> Self9725     pub fn current_stack_index(mut self, current_stack_index: u32) -> Self {
9726         self.inner.current_stack_index = current_stack_index;
9727         self
9728     }
9729     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9730     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9731     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlanePropertiesKHR9732     pub fn build(self) -> DisplayPlanePropertiesKHR {
9733         self.inner
9734     }
9735 }
9736 #[repr(C)]
9737 #[derive(Copy, Clone, Default, Debug)]
9738 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeParametersKHR.html>"]
9739 pub struct DisplayModeParametersKHR {
9740     pub visible_region: Extent2D,
9741     pub refresh_rate: u32,
9742 }
9743 impl DisplayModeParametersKHR {
builder<'a>() -> DisplayModeParametersKHRBuilder<'a>9744     pub fn builder<'a>() -> DisplayModeParametersKHRBuilder<'a> {
9745         DisplayModeParametersKHRBuilder {
9746             inner: DisplayModeParametersKHR::default(),
9747             marker: ::std::marker::PhantomData,
9748         }
9749     }
9750 }
9751 #[repr(transparent)]
9752 pub struct DisplayModeParametersKHRBuilder<'a> {
9753     inner: DisplayModeParametersKHR,
9754     marker: ::std::marker::PhantomData<&'a ()>,
9755 }
9756 impl<'a> ::std::ops::Deref for DisplayModeParametersKHRBuilder<'a> {
9757     type Target = DisplayModeParametersKHR;
deref(&self) -> &Self::Target9758     fn deref(&self) -> &Self::Target {
9759         &self.inner
9760     }
9761 }
9762 impl<'a> ::std::ops::DerefMut for DisplayModeParametersKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9763     fn deref_mut(&mut self) -> &mut Self::Target {
9764         &mut self.inner
9765     }
9766 }
9767 impl<'a> DisplayModeParametersKHRBuilder<'a> {
visible_region(mut self, visible_region: Extent2D) -> Self9768     pub fn visible_region(mut self, visible_region: Extent2D) -> Self {
9769         self.inner.visible_region = visible_region;
9770         self
9771     }
refresh_rate(mut self, refresh_rate: u32) -> Self9772     pub fn refresh_rate(mut self, refresh_rate: u32) -> Self {
9773         self.inner.refresh_rate = refresh_rate;
9774         self
9775     }
9776     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9777     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9778     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModeParametersKHR9779     pub fn build(self) -> DisplayModeParametersKHR {
9780         self.inner
9781     }
9782 }
9783 #[repr(C)]
9784 #[derive(Copy, Clone, Default, Debug)]
9785 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModePropertiesKHR.html>"]
9786 pub struct DisplayModePropertiesKHR {
9787     pub display_mode: DisplayModeKHR,
9788     pub parameters: DisplayModeParametersKHR,
9789 }
9790 impl DisplayModePropertiesKHR {
builder<'a>() -> DisplayModePropertiesKHRBuilder<'a>9791     pub fn builder<'a>() -> DisplayModePropertiesKHRBuilder<'a> {
9792         DisplayModePropertiesKHRBuilder {
9793             inner: DisplayModePropertiesKHR::default(),
9794             marker: ::std::marker::PhantomData,
9795         }
9796     }
9797 }
9798 #[repr(transparent)]
9799 pub struct DisplayModePropertiesKHRBuilder<'a> {
9800     inner: DisplayModePropertiesKHR,
9801     marker: ::std::marker::PhantomData<&'a ()>,
9802 }
9803 impl<'a> ::std::ops::Deref for DisplayModePropertiesKHRBuilder<'a> {
9804     type Target = DisplayModePropertiesKHR;
deref(&self) -> &Self::Target9805     fn deref(&self) -> &Self::Target {
9806         &self.inner
9807     }
9808 }
9809 impl<'a> ::std::ops::DerefMut for DisplayModePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9810     fn deref_mut(&mut self) -> &mut Self::Target {
9811         &mut self.inner
9812     }
9813 }
9814 impl<'a> DisplayModePropertiesKHRBuilder<'a> {
display_mode(mut self, display_mode: DisplayModeKHR) -> Self9815     pub fn display_mode(mut self, display_mode: DisplayModeKHR) -> Self {
9816         self.inner.display_mode = display_mode;
9817         self
9818     }
parameters(mut self, parameters: DisplayModeParametersKHR) -> Self9819     pub fn parameters(mut self, parameters: DisplayModeParametersKHR) -> Self {
9820         self.inner.parameters = parameters;
9821         self
9822     }
9823     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9824     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9825     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModePropertiesKHR9826     pub fn build(self) -> DisplayModePropertiesKHR {
9827         self.inner
9828     }
9829 }
9830 #[repr(C)]
9831 #[derive(Copy, Clone, Debug)]
9832 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeCreateInfoKHR.html>"]
9833 pub struct DisplayModeCreateInfoKHR {
9834     pub s_type: StructureType,
9835     pub p_next: *const c_void,
9836     pub flags: DisplayModeCreateFlagsKHR,
9837     pub parameters: DisplayModeParametersKHR,
9838 }
9839 impl ::std::default::Default for DisplayModeCreateInfoKHR {
default() -> DisplayModeCreateInfoKHR9840     fn default() -> DisplayModeCreateInfoKHR {
9841         DisplayModeCreateInfoKHR {
9842             s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
9843             p_next: ::std::ptr::null(),
9844             flags: DisplayModeCreateFlagsKHR::default(),
9845             parameters: DisplayModeParametersKHR::default(),
9846         }
9847     }
9848 }
9849 impl DisplayModeCreateInfoKHR {
builder<'a>() -> DisplayModeCreateInfoKHRBuilder<'a>9850     pub fn builder<'a>() -> DisplayModeCreateInfoKHRBuilder<'a> {
9851         DisplayModeCreateInfoKHRBuilder {
9852             inner: DisplayModeCreateInfoKHR::default(),
9853             marker: ::std::marker::PhantomData,
9854         }
9855     }
9856 }
9857 #[repr(transparent)]
9858 pub struct DisplayModeCreateInfoKHRBuilder<'a> {
9859     inner: DisplayModeCreateInfoKHR,
9860     marker: ::std::marker::PhantomData<&'a ()>,
9861 }
9862 impl<'a> ::std::ops::Deref for DisplayModeCreateInfoKHRBuilder<'a> {
9863     type Target = DisplayModeCreateInfoKHR;
deref(&self) -> &Self::Target9864     fn deref(&self) -> &Self::Target {
9865         &self.inner
9866     }
9867 }
9868 impl<'a> ::std::ops::DerefMut for DisplayModeCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9869     fn deref_mut(&mut self) -> &mut Self::Target {
9870         &mut self.inner
9871     }
9872 }
9873 impl<'a> DisplayModeCreateInfoKHRBuilder<'a> {
flags(mut self, flags: DisplayModeCreateFlagsKHR) -> Self9874     pub fn flags(mut self, flags: DisplayModeCreateFlagsKHR) -> Self {
9875         self.inner.flags = flags;
9876         self
9877     }
parameters(mut self, parameters: DisplayModeParametersKHR) -> Self9878     pub fn parameters(mut self, parameters: DisplayModeParametersKHR) -> Self {
9879         self.inner.parameters = parameters;
9880         self
9881     }
9882     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9883     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9884     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModeCreateInfoKHR9885     pub fn build(self) -> DisplayModeCreateInfoKHR {
9886         self.inner
9887     }
9888 }
9889 #[repr(C)]
9890 #[derive(Copy, Clone, Default, Debug)]
9891 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneCapabilitiesKHR.html>"]
9892 pub struct DisplayPlaneCapabilitiesKHR {
9893     pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
9894     pub min_src_position: Offset2D,
9895     pub max_src_position: Offset2D,
9896     pub min_src_extent: Extent2D,
9897     pub max_src_extent: Extent2D,
9898     pub min_dst_position: Offset2D,
9899     pub max_dst_position: Offset2D,
9900     pub min_dst_extent: Extent2D,
9901     pub max_dst_extent: Extent2D,
9902 }
9903 impl DisplayPlaneCapabilitiesKHR {
builder<'a>() -> DisplayPlaneCapabilitiesKHRBuilder<'a>9904     pub fn builder<'a>() -> DisplayPlaneCapabilitiesKHRBuilder<'a> {
9905         DisplayPlaneCapabilitiesKHRBuilder {
9906             inner: DisplayPlaneCapabilitiesKHR::default(),
9907             marker: ::std::marker::PhantomData,
9908         }
9909     }
9910 }
9911 #[repr(transparent)]
9912 pub struct DisplayPlaneCapabilitiesKHRBuilder<'a> {
9913     inner: DisplayPlaneCapabilitiesKHR,
9914     marker: ::std::marker::PhantomData<&'a ()>,
9915 }
9916 impl<'a> ::std::ops::Deref for DisplayPlaneCapabilitiesKHRBuilder<'a> {
9917     type Target = DisplayPlaneCapabilitiesKHR;
deref(&self) -> &Self::Target9918     fn deref(&self) -> &Self::Target {
9919         &self.inner
9920     }
9921 }
9922 impl<'a> ::std::ops::DerefMut for DisplayPlaneCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9923     fn deref_mut(&mut self) -> &mut Self::Target {
9924         &mut self.inner
9925     }
9926 }
9927 impl<'a> DisplayPlaneCapabilitiesKHRBuilder<'a> {
supported_alpha(mut self, supported_alpha: DisplayPlaneAlphaFlagsKHR) -> Self9928     pub fn supported_alpha(mut self, supported_alpha: DisplayPlaneAlphaFlagsKHR) -> Self {
9929         self.inner.supported_alpha = supported_alpha;
9930         self
9931     }
min_src_position(mut self, min_src_position: Offset2D) -> Self9932     pub fn min_src_position(mut self, min_src_position: Offset2D) -> Self {
9933         self.inner.min_src_position = min_src_position;
9934         self
9935     }
max_src_position(mut self, max_src_position: Offset2D) -> Self9936     pub fn max_src_position(mut self, max_src_position: Offset2D) -> Self {
9937         self.inner.max_src_position = max_src_position;
9938         self
9939     }
min_src_extent(mut self, min_src_extent: Extent2D) -> Self9940     pub fn min_src_extent(mut self, min_src_extent: Extent2D) -> Self {
9941         self.inner.min_src_extent = min_src_extent;
9942         self
9943     }
max_src_extent(mut self, max_src_extent: Extent2D) -> Self9944     pub fn max_src_extent(mut self, max_src_extent: Extent2D) -> Self {
9945         self.inner.max_src_extent = max_src_extent;
9946         self
9947     }
min_dst_position(mut self, min_dst_position: Offset2D) -> Self9948     pub fn min_dst_position(mut self, min_dst_position: Offset2D) -> Self {
9949         self.inner.min_dst_position = min_dst_position;
9950         self
9951     }
max_dst_position(mut self, max_dst_position: Offset2D) -> Self9952     pub fn max_dst_position(mut self, max_dst_position: Offset2D) -> Self {
9953         self.inner.max_dst_position = max_dst_position;
9954         self
9955     }
min_dst_extent(mut self, min_dst_extent: Extent2D) -> Self9956     pub fn min_dst_extent(mut self, min_dst_extent: Extent2D) -> Self {
9957         self.inner.min_dst_extent = min_dst_extent;
9958         self
9959     }
max_dst_extent(mut self, max_dst_extent: Extent2D) -> Self9960     pub fn max_dst_extent(mut self, max_dst_extent: Extent2D) -> Self {
9961         self.inner.max_dst_extent = max_dst_extent;
9962         self
9963     }
9964     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9965     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9966     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneCapabilitiesKHR9967     pub fn build(self) -> DisplayPlaneCapabilitiesKHR {
9968         self.inner
9969     }
9970 }
9971 #[repr(C)]
9972 #[derive(Copy, Clone, Debug)]
9973 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplaySurfaceCreateInfoKHR.html>"]
9974 pub struct DisplaySurfaceCreateInfoKHR {
9975     pub s_type: StructureType,
9976     pub p_next: *const c_void,
9977     pub flags: DisplaySurfaceCreateFlagsKHR,
9978     pub display_mode: DisplayModeKHR,
9979     pub plane_index: u32,
9980     pub plane_stack_index: u32,
9981     pub transform: SurfaceTransformFlagsKHR,
9982     pub global_alpha: f32,
9983     pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
9984     pub image_extent: Extent2D,
9985 }
9986 impl ::std::default::Default for DisplaySurfaceCreateInfoKHR {
default() -> DisplaySurfaceCreateInfoKHR9987     fn default() -> DisplaySurfaceCreateInfoKHR {
9988         DisplaySurfaceCreateInfoKHR {
9989             s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
9990             p_next: ::std::ptr::null(),
9991             flags: DisplaySurfaceCreateFlagsKHR::default(),
9992             display_mode: DisplayModeKHR::default(),
9993             plane_index: u32::default(),
9994             plane_stack_index: u32::default(),
9995             transform: SurfaceTransformFlagsKHR::default(),
9996             global_alpha: f32::default(),
9997             alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
9998             image_extent: Extent2D::default(),
9999         }
10000     }
10001 }
10002 impl DisplaySurfaceCreateInfoKHR {
builder<'a>() -> DisplaySurfaceCreateInfoKHRBuilder<'a>10003     pub fn builder<'a>() -> DisplaySurfaceCreateInfoKHRBuilder<'a> {
10004         DisplaySurfaceCreateInfoKHRBuilder {
10005             inner: DisplaySurfaceCreateInfoKHR::default(),
10006             marker: ::std::marker::PhantomData,
10007         }
10008     }
10009 }
10010 #[repr(transparent)]
10011 pub struct DisplaySurfaceCreateInfoKHRBuilder<'a> {
10012     inner: DisplaySurfaceCreateInfoKHR,
10013     marker: ::std::marker::PhantomData<&'a ()>,
10014 }
10015 impl<'a> ::std::ops::Deref for DisplaySurfaceCreateInfoKHRBuilder<'a> {
10016     type Target = DisplaySurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10017     fn deref(&self) -> &Self::Target {
10018         &self.inner
10019     }
10020 }
10021 impl<'a> ::std::ops::DerefMut for DisplaySurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10022     fn deref_mut(&mut self) -> &mut Self::Target {
10023         &mut self.inner
10024     }
10025 }
10026 impl<'a> DisplaySurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: DisplaySurfaceCreateFlagsKHR) -> Self10027     pub fn flags(mut self, flags: DisplaySurfaceCreateFlagsKHR) -> Self {
10028         self.inner.flags = flags;
10029         self
10030     }
display_mode(mut self, display_mode: DisplayModeKHR) -> Self10031     pub fn display_mode(mut self, display_mode: DisplayModeKHR) -> Self {
10032         self.inner.display_mode = display_mode;
10033         self
10034     }
plane_index(mut self, plane_index: u32) -> Self10035     pub fn plane_index(mut self, plane_index: u32) -> Self {
10036         self.inner.plane_index = plane_index;
10037         self
10038     }
plane_stack_index(mut self, plane_stack_index: u32) -> Self10039     pub fn plane_stack_index(mut self, plane_stack_index: u32) -> Self {
10040         self.inner.plane_stack_index = plane_stack_index;
10041         self
10042     }
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self10043     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
10044         self.inner.transform = transform;
10045         self
10046     }
global_alpha(mut self, global_alpha: f32) -> Self10047     pub fn global_alpha(mut self, global_alpha: f32) -> Self {
10048         self.inner.global_alpha = global_alpha;
10049         self
10050     }
alpha_mode(mut self, alpha_mode: DisplayPlaneAlphaFlagsKHR) -> Self10051     pub fn alpha_mode(mut self, alpha_mode: DisplayPlaneAlphaFlagsKHR) -> Self {
10052         self.inner.alpha_mode = alpha_mode;
10053         self
10054     }
image_extent(mut self, image_extent: Extent2D) -> Self10055     pub fn image_extent(mut self, image_extent: Extent2D) -> Self {
10056         self.inner.image_extent = image_extent;
10057         self
10058     }
10059     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10060     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10061     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplaySurfaceCreateInfoKHR10062     pub fn build(self) -> DisplaySurfaceCreateInfoKHR {
10063         self.inner
10064     }
10065 }
10066 #[repr(C)]
10067 #[derive(Copy, Clone, Debug)]
10068 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPresentInfoKHR.html>"]
10069 pub struct DisplayPresentInfoKHR {
10070     pub s_type: StructureType,
10071     pub p_next: *const c_void,
10072     pub src_rect: Rect2D,
10073     pub dst_rect: Rect2D,
10074     pub persistent: Bool32,
10075 }
10076 impl ::std::default::Default for DisplayPresentInfoKHR {
default() -> DisplayPresentInfoKHR10077     fn default() -> DisplayPresentInfoKHR {
10078         DisplayPresentInfoKHR {
10079             s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
10080             p_next: ::std::ptr::null(),
10081             src_rect: Rect2D::default(),
10082             dst_rect: Rect2D::default(),
10083             persistent: Bool32::default(),
10084         }
10085     }
10086 }
10087 impl DisplayPresentInfoKHR {
builder<'a>() -> DisplayPresentInfoKHRBuilder<'a>10088     pub fn builder<'a>() -> DisplayPresentInfoKHRBuilder<'a> {
10089         DisplayPresentInfoKHRBuilder {
10090             inner: DisplayPresentInfoKHR::default(),
10091             marker: ::std::marker::PhantomData,
10092         }
10093     }
10094 }
10095 #[repr(transparent)]
10096 pub struct DisplayPresentInfoKHRBuilder<'a> {
10097     inner: DisplayPresentInfoKHR,
10098     marker: ::std::marker::PhantomData<&'a ()>,
10099 }
10100 unsafe impl ExtendsPresentInfoKHR for DisplayPresentInfoKHRBuilder<'_> {}
10101 unsafe impl ExtendsPresentInfoKHR for DisplayPresentInfoKHR {}
10102 impl<'a> ::std::ops::Deref for DisplayPresentInfoKHRBuilder<'a> {
10103     type Target = DisplayPresentInfoKHR;
deref(&self) -> &Self::Target10104     fn deref(&self) -> &Self::Target {
10105         &self.inner
10106     }
10107 }
10108 impl<'a> ::std::ops::DerefMut for DisplayPresentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10109     fn deref_mut(&mut self) -> &mut Self::Target {
10110         &mut self.inner
10111     }
10112 }
10113 impl<'a> DisplayPresentInfoKHRBuilder<'a> {
src_rect(mut self, src_rect: Rect2D) -> Self10114     pub fn src_rect(mut self, src_rect: Rect2D) -> Self {
10115         self.inner.src_rect = src_rect;
10116         self
10117     }
dst_rect(mut self, dst_rect: Rect2D) -> Self10118     pub fn dst_rect(mut self, dst_rect: Rect2D) -> Self {
10119         self.inner.dst_rect = dst_rect;
10120         self
10121     }
persistent(mut self, persistent: bool) -> Self10122     pub fn persistent(mut self, persistent: bool) -> Self {
10123         self.inner.persistent = persistent.into();
10124         self
10125     }
10126     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10127     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10128     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPresentInfoKHR10129     pub fn build(self) -> DisplayPresentInfoKHR {
10130         self.inner
10131     }
10132 }
10133 #[repr(C)]
10134 #[derive(Copy, Clone, Default, Debug)]
10135 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilitiesKHR.html>"]
10136 pub struct SurfaceCapabilitiesKHR {
10137     pub min_image_count: u32,
10138     pub max_image_count: u32,
10139     pub current_extent: Extent2D,
10140     pub min_image_extent: Extent2D,
10141     pub max_image_extent: Extent2D,
10142     pub max_image_array_layers: u32,
10143     pub supported_transforms: SurfaceTransformFlagsKHR,
10144     pub current_transform: SurfaceTransformFlagsKHR,
10145     pub supported_composite_alpha: CompositeAlphaFlagsKHR,
10146     pub supported_usage_flags: ImageUsageFlags,
10147 }
10148 impl SurfaceCapabilitiesKHR {
builder<'a>() -> SurfaceCapabilitiesKHRBuilder<'a>10149     pub fn builder<'a>() -> SurfaceCapabilitiesKHRBuilder<'a> {
10150         SurfaceCapabilitiesKHRBuilder {
10151             inner: SurfaceCapabilitiesKHR::default(),
10152             marker: ::std::marker::PhantomData,
10153         }
10154     }
10155 }
10156 #[repr(transparent)]
10157 pub struct SurfaceCapabilitiesKHRBuilder<'a> {
10158     inner: SurfaceCapabilitiesKHR,
10159     marker: ::std::marker::PhantomData<&'a ()>,
10160 }
10161 impl<'a> ::std::ops::Deref for SurfaceCapabilitiesKHRBuilder<'a> {
10162     type Target = SurfaceCapabilitiesKHR;
deref(&self) -> &Self::Target10163     fn deref(&self) -> &Self::Target {
10164         &self.inner
10165     }
10166 }
10167 impl<'a> ::std::ops::DerefMut for SurfaceCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10168     fn deref_mut(&mut self) -> &mut Self::Target {
10169         &mut self.inner
10170     }
10171 }
10172 impl<'a> SurfaceCapabilitiesKHRBuilder<'a> {
min_image_count(mut self, min_image_count: u32) -> Self10173     pub fn min_image_count(mut self, min_image_count: u32) -> Self {
10174         self.inner.min_image_count = min_image_count;
10175         self
10176     }
max_image_count(mut self, max_image_count: u32) -> Self10177     pub fn max_image_count(mut self, max_image_count: u32) -> Self {
10178         self.inner.max_image_count = max_image_count;
10179         self
10180     }
current_extent(mut self, current_extent: Extent2D) -> Self10181     pub fn current_extent(mut self, current_extent: Extent2D) -> Self {
10182         self.inner.current_extent = current_extent;
10183         self
10184     }
min_image_extent(mut self, min_image_extent: Extent2D) -> Self10185     pub fn min_image_extent(mut self, min_image_extent: Extent2D) -> Self {
10186         self.inner.min_image_extent = min_image_extent;
10187         self
10188     }
max_image_extent(mut self, max_image_extent: Extent2D) -> Self10189     pub fn max_image_extent(mut self, max_image_extent: Extent2D) -> Self {
10190         self.inner.max_image_extent = max_image_extent;
10191         self
10192     }
max_image_array_layers(mut self, max_image_array_layers: u32) -> Self10193     pub fn max_image_array_layers(mut self, max_image_array_layers: u32) -> Self {
10194         self.inner.max_image_array_layers = max_image_array_layers;
10195         self
10196     }
supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self10197     pub fn supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self {
10198         self.inner.supported_transforms = supported_transforms;
10199         self
10200     }
current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self10201     pub fn current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self {
10202         self.inner.current_transform = current_transform;
10203         self
10204     }
supported_composite_alpha( mut self, supported_composite_alpha: CompositeAlphaFlagsKHR, ) -> Self10205     pub fn supported_composite_alpha(
10206         mut self,
10207         supported_composite_alpha: CompositeAlphaFlagsKHR,
10208     ) -> Self {
10209         self.inner.supported_composite_alpha = supported_composite_alpha;
10210         self
10211     }
supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self10212     pub fn supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self {
10213         self.inner.supported_usage_flags = supported_usage_flags;
10214         self
10215     }
10216     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10217     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10218     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilitiesKHR10219     pub fn build(self) -> SurfaceCapabilitiesKHR {
10220         self.inner
10221     }
10222 }
10223 #[repr(C)]
10224 #[derive(Copy, Clone, Debug)]
10225 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidSurfaceCreateInfoKHR.html>"]
10226 pub struct AndroidSurfaceCreateInfoKHR {
10227     pub s_type: StructureType,
10228     pub p_next: *const c_void,
10229     pub flags: AndroidSurfaceCreateFlagsKHR,
10230     pub window: *mut ANativeWindow,
10231 }
10232 impl ::std::default::Default for AndroidSurfaceCreateInfoKHR {
default() -> AndroidSurfaceCreateInfoKHR10233     fn default() -> AndroidSurfaceCreateInfoKHR {
10234         AndroidSurfaceCreateInfoKHR {
10235             s_type: StructureType::ANDROID_SURFACE_CREATE_INFO_KHR,
10236             p_next: ::std::ptr::null(),
10237             flags: AndroidSurfaceCreateFlagsKHR::default(),
10238             window: ::std::ptr::null_mut(),
10239         }
10240     }
10241 }
10242 impl AndroidSurfaceCreateInfoKHR {
builder<'a>() -> AndroidSurfaceCreateInfoKHRBuilder<'a>10243     pub fn builder<'a>() -> AndroidSurfaceCreateInfoKHRBuilder<'a> {
10244         AndroidSurfaceCreateInfoKHRBuilder {
10245             inner: AndroidSurfaceCreateInfoKHR::default(),
10246             marker: ::std::marker::PhantomData,
10247         }
10248     }
10249 }
10250 #[repr(transparent)]
10251 pub struct AndroidSurfaceCreateInfoKHRBuilder<'a> {
10252     inner: AndroidSurfaceCreateInfoKHR,
10253     marker: ::std::marker::PhantomData<&'a ()>,
10254 }
10255 impl<'a> ::std::ops::Deref for AndroidSurfaceCreateInfoKHRBuilder<'a> {
10256     type Target = AndroidSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10257     fn deref(&self) -> &Self::Target {
10258         &self.inner
10259     }
10260 }
10261 impl<'a> ::std::ops::DerefMut for AndroidSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10262     fn deref_mut(&mut self) -> &mut Self::Target {
10263         &mut self.inner
10264     }
10265 }
10266 impl<'a> AndroidSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: AndroidSurfaceCreateFlagsKHR) -> Self10267     pub fn flags(mut self, flags: AndroidSurfaceCreateFlagsKHR) -> Self {
10268         self.inner.flags = flags;
10269         self
10270     }
window(mut self, window: *mut ANativeWindow) -> Self10271     pub fn window(mut self, window: *mut ANativeWindow) -> Self {
10272         self.inner.window = window;
10273         self
10274     }
10275     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10276     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10277     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidSurfaceCreateInfoKHR10278     pub fn build(self) -> AndroidSurfaceCreateInfoKHR {
10279         self.inner
10280     }
10281 }
10282 #[repr(C)]
10283 #[derive(Copy, Clone, Debug)]
10284 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViSurfaceCreateInfoNN.html>"]
10285 pub struct ViSurfaceCreateInfoNN {
10286     pub s_type: StructureType,
10287     pub p_next: *const c_void,
10288     pub flags: ViSurfaceCreateFlagsNN,
10289     pub window: *mut c_void,
10290 }
10291 impl ::std::default::Default for ViSurfaceCreateInfoNN {
default() -> ViSurfaceCreateInfoNN10292     fn default() -> ViSurfaceCreateInfoNN {
10293         ViSurfaceCreateInfoNN {
10294             s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
10295             p_next: ::std::ptr::null(),
10296             flags: ViSurfaceCreateFlagsNN::default(),
10297             window: ::std::ptr::null_mut(),
10298         }
10299     }
10300 }
10301 impl ViSurfaceCreateInfoNN {
builder<'a>() -> ViSurfaceCreateInfoNNBuilder<'a>10302     pub fn builder<'a>() -> ViSurfaceCreateInfoNNBuilder<'a> {
10303         ViSurfaceCreateInfoNNBuilder {
10304             inner: ViSurfaceCreateInfoNN::default(),
10305             marker: ::std::marker::PhantomData,
10306         }
10307     }
10308 }
10309 #[repr(transparent)]
10310 pub struct ViSurfaceCreateInfoNNBuilder<'a> {
10311     inner: ViSurfaceCreateInfoNN,
10312     marker: ::std::marker::PhantomData<&'a ()>,
10313 }
10314 impl<'a> ::std::ops::Deref for ViSurfaceCreateInfoNNBuilder<'a> {
10315     type Target = ViSurfaceCreateInfoNN;
deref(&self) -> &Self::Target10316     fn deref(&self) -> &Self::Target {
10317         &self.inner
10318     }
10319 }
10320 impl<'a> ::std::ops::DerefMut for ViSurfaceCreateInfoNNBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10321     fn deref_mut(&mut self) -> &mut Self::Target {
10322         &mut self.inner
10323     }
10324 }
10325 impl<'a> ViSurfaceCreateInfoNNBuilder<'a> {
flags(mut self, flags: ViSurfaceCreateFlagsNN) -> Self10326     pub fn flags(mut self, flags: ViSurfaceCreateFlagsNN) -> Self {
10327         self.inner.flags = flags;
10328         self
10329     }
window(mut self, window: *mut c_void) -> Self10330     pub fn window(mut self, window: *mut c_void) -> Self {
10331         self.inner.window = window;
10332         self
10333     }
10334     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10335     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10336     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ViSurfaceCreateInfoNN10337     pub fn build(self) -> ViSurfaceCreateInfoNN {
10338         self.inner
10339     }
10340 }
10341 #[repr(C)]
10342 #[derive(Copy, Clone, Debug)]
10343 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWaylandSurfaceCreateInfoKHR.html>"]
10344 pub struct WaylandSurfaceCreateInfoKHR {
10345     pub s_type: StructureType,
10346     pub p_next: *const c_void,
10347     pub flags: WaylandSurfaceCreateFlagsKHR,
10348     pub display: *mut wl_display,
10349     pub surface: *mut wl_surface,
10350 }
10351 impl ::std::default::Default for WaylandSurfaceCreateInfoKHR {
default() -> WaylandSurfaceCreateInfoKHR10352     fn default() -> WaylandSurfaceCreateInfoKHR {
10353         WaylandSurfaceCreateInfoKHR {
10354             s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
10355             p_next: ::std::ptr::null(),
10356             flags: WaylandSurfaceCreateFlagsKHR::default(),
10357             display: ::std::ptr::null_mut(),
10358             surface: ::std::ptr::null_mut(),
10359         }
10360     }
10361 }
10362 impl WaylandSurfaceCreateInfoKHR {
builder<'a>() -> WaylandSurfaceCreateInfoKHRBuilder<'a>10363     pub fn builder<'a>() -> WaylandSurfaceCreateInfoKHRBuilder<'a> {
10364         WaylandSurfaceCreateInfoKHRBuilder {
10365             inner: WaylandSurfaceCreateInfoKHR::default(),
10366             marker: ::std::marker::PhantomData,
10367         }
10368     }
10369 }
10370 #[repr(transparent)]
10371 pub struct WaylandSurfaceCreateInfoKHRBuilder<'a> {
10372     inner: WaylandSurfaceCreateInfoKHR,
10373     marker: ::std::marker::PhantomData<&'a ()>,
10374 }
10375 impl<'a> ::std::ops::Deref for WaylandSurfaceCreateInfoKHRBuilder<'a> {
10376     type Target = WaylandSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10377     fn deref(&self) -> &Self::Target {
10378         &self.inner
10379     }
10380 }
10381 impl<'a> ::std::ops::DerefMut for WaylandSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10382     fn deref_mut(&mut self) -> &mut Self::Target {
10383         &mut self.inner
10384     }
10385 }
10386 impl<'a> WaylandSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: WaylandSurfaceCreateFlagsKHR) -> Self10387     pub fn flags(mut self, flags: WaylandSurfaceCreateFlagsKHR) -> Self {
10388         self.inner.flags = flags;
10389         self
10390     }
display(mut self, display: *mut wl_display) -> Self10391     pub fn display(mut self, display: *mut wl_display) -> Self {
10392         self.inner.display = display;
10393         self
10394     }
surface(mut self, surface: *mut wl_surface) -> Self10395     pub fn surface(mut self, surface: *mut wl_surface) -> Self {
10396         self.inner.surface = surface;
10397         self
10398     }
10399     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10400     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10401     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WaylandSurfaceCreateInfoKHR10402     pub fn build(self) -> WaylandSurfaceCreateInfoKHR {
10403         self.inner
10404     }
10405 }
10406 #[repr(C)]
10407 #[derive(Copy, Clone, Debug)]
10408 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32SurfaceCreateInfoKHR.html>"]
10409 pub struct Win32SurfaceCreateInfoKHR {
10410     pub s_type: StructureType,
10411     pub p_next: *const c_void,
10412     pub flags: Win32SurfaceCreateFlagsKHR,
10413     pub hinstance: HINSTANCE,
10414     pub hwnd: HWND,
10415 }
10416 impl ::std::default::Default for Win32SurfaceCreateInfoKHR {
default() -> Win32SurfaceCreateInfoKHR10417     fn default() -> Win32SurfaceCreateInfoKHR {
10418         Win32SurfaceCreateInfoKHR {
10419             s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
10420             p_next: ::std::ptr::null(),
10421             flags: Win32SurfaceCreateFlagsKHR::default(),
10422             hinstance: unsafe { ::std::mem::zeroed() },
10423             hwnd: unsafe { ::std::mem::zeroed() },
10424         }
10425     }
10426 }
10427 impl Win32SurfaceCreateInfoKHR {
builder<'a>() -> Win32SurfaceCreateInfoKHRBuilder<'a>10428     pub fn builder<'a>() -> Win32SurfaceCreateInfoKHRBuilder<'a> {
10429         Win32SurfaceCreateInfoKHRBuilder {
10430             inner: Win32SurfaceCreateInfoKHR::default(),
10431             marker: ::std::marker::PhantomData,
10432         }
10433     }
10434 }
10435 #[repr(transparent)]
10436 pub struct Win32SurfaceCreateInfoKHRBuilder<'a> {
10437     inner: Win32SurfaceCreateInfoKHR,
10438     marker: ::std::marker::PhantomData<&'a ()>,
10439 }
10440 impl<'a> ::std::ops::Deref for Win32SurfaceCreateInfoKHRBuilder<'a> {
10441     type Target = Win32SurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10442     fn deref(&self) -> &Self::Target {
10443         &self.inner
10444     }
10445 }
10446 impl<'a> ::std::ops::DerefMut for Win32SurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10447     fn deref_mut(&mut self) -> &mut Self::Target {
10448         &mut self.inner
10449     }
10450 }
10451 impl<'a> Win32SurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: Win32SurfaceCreateFlagsKHR) -> Self10452     pub fn flags(mut self, flags: Win32SurfaceCreateFlagsKHR) -> Self {
10453         self.inner.flags = flags;
10454         self
10455     }
hinstance(mut self, hinstance: HINSTANCE) -> Self10456     pub fn hinstance(mut self, hinstance: HINSTANCE) -> Self {
10457         self.inner.hinstance = hinstance;
10458         self
10459     }
hwnd(mut self, hwnd: HWND) -> Self10460     pub fn hwnd(mut self, hwnd: HWND) -> Self {
10461         self.inner.hwnd = hwnd;
10462         self
10463     }
10464     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10465     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10466     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Win32SurfaceCreateInfoKHR10467     pub fn build(self) -> Win32SurfaceCreateInfoKHR {
10468         self.inner
10469     }
10470 }
10471 #[repr(C)]
10472 #[derive(Copy, Clone, Debug)]
10473 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXlibSurfaceCreateInfoKHR.html>"]
10474 pub struct XlibSurfaceCreateInfoKHR {
10475     pub s_type: StructureType,
10476     pub p_next: *const c_void,
10477     pub flags: XlibSurfaceCreateFlagsKHR,
10478     pub dpy: *mut Display,
10479     pub window: Window,
10480 }
10481 impl ::std::default::Default for XlibSurfaceCreateInfoKHR {
default() -> XlibSurfaceCreateInfoKHR10482     fn default() -> XlibSurfaceCreateInfoKHR {
10483         XlibSurfaceCreateInfoKHR {
10484             s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
10485             p_next: ::std::ptr::null(),
10486             flags: XlibSurfaceCreateFlagsKHR::default(),
10487             dpy: ::std::ptr::null_mut(),
10488             window: Window::default(),
10489         }
10490     }
10491 }
10492 impl XlibSurfaceCreateInfoKHR {
builder<'a>() -> XlibSurfaceCreateInfoKHRBuilder<'a>10493     pub fn builder<'a>() -> XlibSurfaceCreateInfoKHRBuilder<'a> {
10494         XlibSurfaceCreateInfoKHRBuilder {
10495             inner: XlibSurfaceCreateInfoKHR::default(),
10496             marker: ::std::marker::PhantomData,
10497         }
10498     }
10499 }
10500 #[repr(transparent)]
10501 pub struct XlibSurfaceCreateInfoKHRBuilder<'a> {
10502     inner: XlibSurfaceCreateInfoKHR,
10503     marker: ::std::marker::PhantomData<&'a ()>,
10504 }
10505 impl<'a> ::std::ops::Deref for XlibSurfaceCreateInfoKHRBuilder<'a> {
10506     type Target = XlibSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10507     fn deref(&self) -> &Self::Target {
10508         &self.inner
10509     }
10510 }
10511 impl<'a> ::std::ops::DerefMut for XlibSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10512     fn deref_mut(&mut self) -> &mut Self::Target {
10513         &mut self.inner
10514     }
10515 }
10516 impl<'a> XlibSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: XlibSurfaceCreateFlagsKHR) -> Self10517     pub fn flags(mut self, flags: XlibSurfaceCreateFlagsKHR) -> Self {
10518         self.inner.flags = flags;
10519         self
10520     }
dpy(mut self, dpy: *mut Display) -> Self10521     pub fn dpy(mut self, dpy: *mut Display) -> Self {
10522         self.inner.dpy = dpy;
10523         self
10524     }
window(mut self, window: Window) -> Self10525     pub fn window(mut self, window: Window) -> Self {
10526         self.inner.window = window;
10527         self
10528     }
10529     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10530     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10531     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> XlibSurfaceCreateInfoKHR10532     pub fn build(self) -> XlibSurfaceCreateInfoKHR {
10533         self.inner
10534     }
10535 }
10536 #[repr(C)]
10537 #[derive(Copy, Clone, Debug)]
10538 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXcbSurfaceCreateInfoKHR.html>"]
10539 pub struct XcbSurfaceCreateInfoKHR {
10540     pub s_type: StructureType,
10541     pub p_next: *const c_void,
10542     pub flags: XcbSurfaceCreateFlagsKHR,
10543     pub connection: *mut xcb_connection_t,
10544     pub window: xcb_window_t,
10545 }
10546 impl ::std::default::Default for XcbSurfaceCreateInfoKHR {
default() -> XcbSurfaceCreateInfoKHR10547     fn default() -> XcbSurfaceCreateInfoKHR {
10548         XcbSurfaceCreateInfoKHR {
10549             s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
10550             p_next: ::std::ptr::null(),
10551             flags: XcbSurfaceCreateFlagsKHR::default(),
10552             connection: ::std::ptr::null_mut(),
10553             window: xcb_window_t::default(),
10554         }
10555     }
10556 }
10557 impl XcbSurfaceCreateInfoKHR {
builder<'a>() -> XcbSurfaceCreateInfoKHRBuilder<'a>10558     pub fn builder<'a>() -> XcbSurfaceCreateInfoKHRBuilder<'a> {
10559         XcbSurfaceCreateInfoKHRBuilder {
10560             inner: XcbSurfaceCreateInfoKHR::default(),
10561             marker: ::std::marker::PhantomData,
10562         }
10563     }
10564 }
10565 #[repr(transparent)]
10566 pub struct XcbSurfaceCreateInfoKHRBuilder<'a> {
10567     inner: XcbSurfaceCreateInfoKHR,
10568     marker: ::std::marker::PhantomData<&'a ()>,
10569 }
10570 impl<'a> ::std::ops::Deref for XcbSurfaceCreateInfoKHRBuilder<'a> {
10571     type Target = XcbSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10572     fn deref(&self) -> &Self::Target {
10573         &self.inner
10574     }
10575 }
10576 impl<'a> ::std::ops::DerefMut for XcbSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10577     fn deref_mut(&mut self) -> &mut Self::Target {
10578         &mut self.inner
10579     }
10580 }
10581 impl<'a> XcbSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: XcbSurfaceCreateFlagsKHR) -> Self10582     pub fn flags(mut self, flags: XcbSurfaceCreateFlagsKHR) -> Self {
10583         self.inner.flags = flags;
10584         self
10585     }
connection(mut self, connection: *mut xcb_connection_t) -> Self10586     pub fn connection(mut self, connection: *mut xcb_connection_t) -> Self {
10587         self.inner.connection = connection;
10588         self
10589     }
window(mut self, window: xcb_window_t) -> Self10590     pub fn window(mut self, window: xcb_window_t) -> Self {
10591         self.inner.window = window;
10592         self
10593     }
10594     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10595     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10596     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> XcbSurfaceCreateInfoKHR10597     pub fn build(self) -> XcbSurfaceCreateInfoKHR {
10598         self.inner
10599     }
10600 }
10601 #[repr(C)]
10602 #[derive(Copy, Clone, Debug)]
10603 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDirectFBSurfaceCreateInfoEXT.html>"]
10604 pub struct DirectFBSurfaceCreateInfoEXT {
10605     pub s_type: StructureType,
10606     pub p_next: *const c_void,
10607     pub flags: DirectFBSurfaceCreateFlagsEXT,
10608     pub dfb: *mut IDirectFB,
10609     pub surface: *mut IDirectFBSurface,
10610 }
10611 impl ::std::default::Default for DirectFBSurfaceCreateInfoEXT {
default() -> DirectFBSurfaceCreateInfoEXT10612     fn default() -> DirectFBSurfaceCreateInfoEXT {
10613         DirectFBSurfaceCreateInfoEXT {
10614             s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
10615             p_next: ::std::ptr::null(),
10616             flags: DirectFBSurfaceCreateFlagsEXT::default(),
10617             dfb: ::std::ptr::null_mut(),
10618             surface: ::std::ptr::null_mut(),
10619         }
10620     }
10621 }
10622 impl DirectFBSurfaceCreateInfoEXT {
builder<'a>() -> DirectFBSurfaceCreateInfoEXTBuilder<'a>10623     pub fn builder<'a>() -> DirectFBSurfaceCreateInfoEXTBuilder<'a> {
10624         DirectFBSurfaceCreateInfoEXTBuilder {
10625             inner: DirectFBSurfaceCreateInfoEXT::default(),
10626             marker: ::std::marker::PhantomData,
10627         }
10628     }
10629 }
10630 #[repr(transparent)]
10631 pub struct DirectFBSurfaceCreateInfoEXTBuilder<'a> {
10632     inner: DirectFBSurfaceCreateInfoEXT,
10633     marker: ::std::marker::PhantomData<&'a ()>,
10634 }
10635 impl<'a> ::std::ops::Deref for DirectFBSurfaceCreateInfoEXTBuilder<'a> {
10636     type Target = DirectFBSurfaceCreateInfoEXT;
deref(&self) -> &Self::Target10637     fn deref(&self) -> &Self::Target {
10638         &self.inner
10639     }
10640 }
10641 impl<'a> ::std::ops::DerefMut for DirectFBSurfaceCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10642     fn deref_mut(&mut self) -> &mut Self::Target {
10643         &mut self.inner
10644     }
10645 }
10646 impl<'a> DirectFBSurfaceCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DirectFBSurfaceCreateFlagsEXT) -> Self10647     pub fn flags(mut self, flags: DirectFBSurfaceCreateFlagsEXT) -> Self {
10648         self.inner.flags = flags;
10649         self
10650     }
dfb(mut self, dfb: *mut IDirectFB) -> Self10651     pub fn dfb(mut self, dfb: *mut IDirectFB) -> Self {
10652         self.inner.dfb = dfb;
10653         self
10654     }
surface(mut self, surface: *mut IDirectFBSurface) -> Self10655     pub fn surface(mut self, surface: *mut IDirectFBSurface) -> Self {
10656         self.inner.surface = surface;
10657         self
10658     }
10659     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10660     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10661     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DirectFBSurfaceCreateInfoEXT10662     pub fn build(self) -> DirectFBSurfaceCreateInfoEXT {
10663         self.inner
10664     }
10665 }
10666 #[repr(C)]
10667 #[derive(Copy, Clone, Debug)]
10668 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>"]
10669 pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
10670     pub s_type: StructureType,
10671     pub p_next: *const c_void,
10672     pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
10673     pub image_pipe_handle: zx_handle_t,
10674 }
10675 impl ::std::default::Default for ImagePipeSurfaceCreateInfoFUCHSIA {
default() -> ImagePipeSurfaceCreateInfoFUCHSIA10676     fn default() -> ImagePipeSurfaceCreateInfoFUCHSIA {
10677         ImagePipeSurfaceCreateInfoFUCHSIA {
10678             s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
10679             p_next: ::std::ptr::null(),
10680             flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
10681             image_pipe_handle: zx_handle_t::default(),
10682         }
10683     }
10684 }
10685 impl ImagePipeSurfaceCreateInfoFUCHSIA {
builder<'a>() -> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a>10686     pub fn builder<'a>() -> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
10687         ImagePipeSurfaceCreateInfoFUCHSIABuilder {
10688             inner: ImagePipeSurfaceCreateInfoFUCHSIA::default(),
10689             marker: ::std::marker::PhantomData,
10690         }
10691     }
10692 }
10693 #[repr(transparent)]
10694 pub struct ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
10695     inner: ImagePipeSurfaceCreateInfoFUCHSIA,
10696     marker: ::std::marker::PhantomData<&'a ()>,
10697 }
10698 impl<'a> ::std::ops::Deref for ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
10699     type Target = ImagePipeSurfaceCreateInfoFUCHSIA;
deref(&self) -> &Self::Target10700     fn deref(&self) -> &Self::Target {
10701         &self.inner
10702     }
10703 }
10704 impl<'a> ::std::ops::DerefMut for ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10705     fn deref_mut(&mut self) -> &mut Self::Target {
10706         &mut self.inner
10707     }
10708 }
10709 impl<'a> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
flags(mut self, flags: ImagePipeSurfaceCreateFlagsFUCHSIA) -> Self10710     pub fn flags(mut self, flags: ImagePipeSurfaceCreateFlagsFUCHSIA) -> Self {
10711         self.inner.flags = flags;
10712         self
10713     }
image_pipe_handle(mut self, image_pipe_handle: zx_handle_t) -> Self10714     pub fn image_pipe_handle(mut self, image_pipe_handle: zx_handle_t) -> Self {
10715         self.inner.image_pipe_handle = image_pipe_handle;
10716         self
10717     }
10718     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10719     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10720     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImagePipeSurfaceCreateInfoFUCHSIA10721     pub fn build(self) -> ImagePipeSurfaceCreateInfoFUCHSIA {
10722         self.inner
10723     }
10724 }
10725 #[repr(C)]
10726 #[derive(Copy, Clone, Debug)]
10727 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>"]
10728 pub struct StreamDescriptorSurfaceCreateInfoGGP {
10729     pub s_type: StructureType,
10730     pub p_next: *const c_void,
10731     pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
10732     pub stream_descriptor: GgpStreamDescriptor,
10733 }
10734 impl ::std::default::Default for StreamDescriptorSurfaceCreateInfoGGP {
default() -> StreamDescriptorSurfaceCreateInfoGGP10735     fn default() -> StreamDescriptorSurfaceCreateInfoGGP {
10736         StreamDescriptorSurfaceCreateInfoGGP {
10737             s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
10738             p_next: ::std::ptr::null(),
10739             flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
10740             stream_descriptor: GgpStreamDescriptor::default(),
10741         }
10742     }
10743 }
10744 impl StreamDescriptorSurfaceCreateInfoGGP {
builder<'a>() -> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a>10745     pub fn builder<'a>() -> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
10746         StreamDescriptorSurfaceCreateInfoGGPBuilder {
10747             inner: StreamDescriptorSurfaceCreateInfoGGP::default(),
10748             marker: ::std::marker::PhantomData,
10749         }
10750     }
10751 }
10752 #[repr(transparent)]
10753 pub struct StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
10754     inner: StreamDescriptorSurfaceCreateInfoGGP,
10755     marker: ::std::marker::PhantomData<&'a ()>,
10756 }
10757 impl<'a> ::std::ops::Deref for StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
10758     type Target = StreamDescriptorSurfaceCreateInfoGGP;
deref(&self) -> &Self::Target10759     fn deref(&self) -> &Self::Target {
10760         &self.inner
10761     }
10762 }
10763 impl<'a> ::std::ops::DerefMut for StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10764     fn deref_mut(&mut self) -> &mut Self::Target {
10765         &mut self.inner
10766     }
10767 }
10768 impl<'a> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
flags(mut self, flags: StreamDescriptorSurfaceCreateFlagsGGP) -> Self10769     pub fn flags(mut self, flags: StreamDescriptorSurfaceCreateFlagsGGP) -> Self {
10770         self.inner.flags = flags;
10771         self
10772     }
stream_descriptor(mut self, stream_descriptor: GgpStreamDescriptor) -> Self10773     pub fn stream_descriptor(mut self, stream_descriptor: GgpStreamDescriptor) -> Self {
10774         self.inner.stream_descriptor = stream_descriptor;
10775         self
10776     }
10777     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10778     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10779     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> StreamDescriptorSurfaceCreateInfoGGP10780     pub fn build(self) -> StreamDescriptorSurfaceCreateInfoGGP {
10781         self.inner
10782     }
10783 }
10784 #[repr(C)]
10785 #[derive(Copy, Clone, Debug)]
10786 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkScreenSurfaceCreateInfoQNX.html>"]
10787 pub struct ScreenSurfaceCreateInfoQNX {
10788     pub s_type: StructureType,
10789     pub p_next: *const c_void,
10790     pub flags: ScreenSurfaceCreateFlagsQNX,
10791     pub context: *mut _screen_context,
10792     pub window: *mut _screen_window,
10793 }
10794 impl ::std::default::Default for ScreenSurfaceCreateInfoQNX {
default() -> ScreenSurfaceCreateInfoQNX10795     fn default() -> ScreenSurfaceCreateInfoQNX {
10796         ScreenSurfaceCreateInfoQNX {
10797             s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
10798             p_next: ::std::ptr::null(),
10799             flags: ScreenSurfaceCreateFlagsQNX::default(),
10800             context: ::std::ptr::null_mut(),
10801             window: ::std::ptr::null_mut(),
10802         }
10803     }
10804 }
10805 impl ScreenSurfaceCreateInfoQNX {
builder<'a>() -> ScreenSurfaceCreateInfoQNXBuilder<'a>10806     pub fn builder<'a>() -> ScreenSurfaceCreateInfoQNXBuilder<'a> {
10807         ScreenSurfaceCreateInfoQNXBuilder {
10808             inner: ScreenSurfaceCreateInfoQNX::default(),
10809             marker: ::std::marker::PhantomData,
10810         }
10811     }
10812 }
10813 #[repr(transparent)]
10814 pub struct ScreenSurfaceCreateInfoQNXBuilder<'a> {
10815     inner: ScreenSurfaceCreateInfoQNX,
10816     marker: ::std::marker::PhantomData<&'a ()>,
10817 }
10818 impl<'a> ::std::ops::Deref for ScreenSurfaceCreateInfoQNXBuilder<'a> {
10819     type Target = ScreenSurfaceCreateInfoQNX;
deref(&self) -> &Self::Target10820     fn deref(&self) -> &Self::Target {
10821         &self.inner
10822     }
10823 }
10824 impl<'a> ::std::ops::DerefMut for ScreenSurfaceCreateInfoQNXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10825     fn deref_mut(&mut self) -> &mut Self::Target {
10826         &mut self.inner
10827     }
10828 }
10829 impl<'a> ScreenSurfaceCreateInfoQNXBuilder<'a> {
flags(mut self, flags: ScreenSurfaceCreateFlagsQNX) -> Self10830     pub fn flags(mut self, flags: ScreenSurfaceCreateFlagsQNX) -> Self {
10831         self.inner.flags = flags;
10832         self
10833     }
context(mut self, context: &'a mut _screen_context) -> Self10834     pub fn context(mut self, context: &'a mut _screen_context) -> Self {
10835         self.inner.context = context;
10836         self
10837     }
window(mut self, window: &'a mut _screen_window) -> Self10838     pub fn window(mut self, window: &'a mut _screen_window) -> Self {
10839         self.inner.window = window;
10840         self
10841     }
10842     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10843     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10844     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ScreenSurfaceCreateInfoQNX10845     pub fn build(self) -> ScreenSurfaceCreateInfoQNX {
10846         self.inner
10847     }
10848 }
10849 #[repr(C)]
10850 #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Hash)]
10851 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFormatKHR.html>"]
10852 pub struct SurfaceFormatKHR {
10853     pub format: Format,
10854     pub color_space: ColorSpaceKHR,
10855 }
10856 impl SurfaceFormatKHR {
builder<'a>() -> SurfaceFormatKHRBuilder<'a>10857     pub fn builder<'a>() -> SurfaceFormatKHRBuilder<'a> {
10858         SurfaceFormatKHRBuilder {
10859             inner: SurfaceFormatKHR::default(),
10860             marker: ::std::marker::PhantomData,
10861         }
10862     }
10863 }
10864 #[repr(transparent)]
10865 pub struct SurfaceFormatKHRBuilder<'a> {
10866     inner: SurfaceFormatKHR,
10867     marker: ::std::marker::PhantomData<&'a ()>,
10868 }
10869 impl<'a> ::std::ops::Deref for SurfaceFormatKHRBuilder<'a> {
10870     type Target = SurfaceFormatKHR;
deref(&self) -> &Self::Target10871     fn deref(&self) -> &Self::Target {
10872         &self.inner
10873     }
10874 }
10875 impl<'a> ::std::ops::DerefMut for SurfaceFormatKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10876     fn deref_mut(&mut self) -> &mut Self::Target {
10877         &mut self.inner
10878     }
10879 }
10880 impl<'a> SurfaceFormatKHRBuilder<'a> {
format(mut self, format: Format) -> Self10881     pub fn format(mut self, format: Format) -> Self {
10882         self.inner.format = format;
10883         self
10884     }
color_space(mut self, color_space: ColorSpaceKHR) -> Self10885     pub fn color_space(mut self, color_space: ColorSpaceKHR) -> Self {
10886         self.inner.color_space = color_space;
10887         self
10888     }
10889     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10890     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10891     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFormatKHR10892     pub fn build(self) -> SurfaceFormatKHR {
10893         self.inner
10894     }
10895 }
10896 #[repr(C)]
10897 #[derive(Copy, Clone, Debug)]
10898 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainCreateInfoKHR.html>"]
10899 pub struct SwapchainCreateInfoKHR {
10900     pub s_type: StructureType,
10901     pub p_next: *const c_void,
10902     pub flags: SwapchainCreateFlagsKHR,
10903     pub surface: SurfaceKHR,
10904     pub min_image_count: u32,
10905     pub image_format: Format,
10906     pub image_color_space: ColorSpaceKHR,
10907     pub image_extent: Extent2D,
10908     pub image_array_layers: u32,
10909     pub image_usage: ImageUsageFlags,
10910     pub image_sharing_mode: SharingMode,
10911     pub queue_family_index_count: u32,
10912     pub p_queue_family_indices: *const u32,
10913     pub pre_transform: SurfaceTransformFlagsKHR,
10914     pub composite_alpha: CompositeAlphaFlagsKHR,
10915     pub present_mode: PresentModeKHR,
10916     pub clipped: Bool32,
10917     pub old_swapchain: SwapchainKHR,
10918 }
10919 impl ::std::default::Default for SwapchainCreateInfoKHR {
default() -> SwapchainCreateInfoKHR10920     fn default() -> SwapchainCreateInfoKHR {
10921         SwapchainCreateInfoKHR {
10922             s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
10923             p_next: ::std::ptr::null(),
10924             flags: SwapchainCreateFlagsKHR::default(),
10925             surface: SurfaceKHR::default(),
10926             min_image_count: u32::default(),
10927             image_format: Format::default(),
10928             image_color_space: ColorSpaceKHR::default(),
10929             image_extent: Extent2D::default(),
10930             image_array_layers: u32::default(),
10931             image_usage: ImageUsageFlags::default(),
10932             image_sharing_mode: SharingMode::default(),
10933             queue_family_index_count: u32::default(),
10934             p_queue_family_indices: ::std::ptr::null(),
10935             pre_transform: SurfaceTransformFlagsKHR::default(),
10936             composite_alpha: CompositeAlphaFlagsKHR::default(),
10937             present_mode: PresentModeKHR::default(),
10938             clipped: Bool32::default(),
10939             old_swapchain: SwapchainKHR::default(),
10940         }
10941     }
10942 }
10943 impl SwapchainCreateInfoKHR {
builder<'a>() -> SwapchainCreateInfoKHRBuilder<'a>10944     pub fn builder<'a>() -> SwapchainCreateInfoKHRBuilder<'a> {
10945         SwapchainCreateInfoKHRBuilder {
10946             inner: SwapchainCreateInfoKHR::default(),
10947             marker: ::std::marker::PhantomData,
10948         }
10949     }
10950 }
10951 #[repr(transparent)]
10952 pub struct SwapchainCreateInfoKHRBuilder<'a> {
10953     inner: SwapchainCreateInfoKHR,
10954     marker: ::std::marker::PhantomData<&'a ()>,
10955 }
10956 pub unsafe trait ExtendsSwapchainCreateInfoKHR {}
10957 impl<'a> ::std::ops::Deref for SwapchainCreateInfoKHRBuilder<'a> {
10958     type Target = SwapchainCreateInfoKHR;
deref(&self) -> &Self::Target10959     fn deref(&self) -> &Self::Target {
10960         &self.inner
10961     }
10962 }
10963 impl<'a> ::std::ops::DerefMut for SwapchainCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10964     fn deref_mut(&mut self) -> &mut Self::Target {
10965         &mut self.inner
10966     }
10967 }
10968 impl<'a> SwapchainCreateInfoKHRBuilder<'a> {
flags(mut self, flags: SwapchainCreateFlagsKHR) -> Self10969     pub fn flags(mut self, flags: SwapchainCreateFlagsKHR) -> Self {
10970         self.inner.flags = flags;
10971         self
10972     }
surface(mut self, surface: SurfaceKHR) -> Self10973     pub fn surface(mut self, surface: SurfaceKHR) -> Self {
10974         self.inner.surface = surface;
10975         self
10976     }
min_image_count(mut self, min_image_count: u32) -> Self10977     pub fn min_image_count(mut self, min_image_count: u32) -> Self {
10978         self.inner.min_image_count = min_image_count;
10979         self
10980     }
image_format(mut self, image_format: Format) -> Self10981     pub fn image_format(mut self, image_format: Format) -> Self {
10982         self.inner.image_format = image_format;
10983         self
10984     }
image_color_space(mut self, image_color_space: ColorSpaceKHR) -> Self10985     pub fn image_color_space(mut self, image_color_space: ColorSpaceKHR) -> Self {
10986         self.inner.image_color_space = image_color_space;
10987         self
10988     }
image_extent(mut self, image_extent: Extent2D) -> Self10989     pub fn image_extent(mut self, image_extent: Extent2D) -> Self {
10990         self.inner.image_extent = image_extent;
10991         self
10992     }
image_array_layers(mut self, image_array_layers: u32) -> Self10993     pub fn image_array_layers(mut self, image_array_layers: u32) -> Self {
10994         self.inner.image_array_layers = image_array_layers;
10995         self
10996     }
image_usage(mut self, image_usage: ImageUsageFlags) -> Self10997     pub fn image_usage(mut self, image_usage: ImageUsageFlags) -> Self {
10998         self.inner.image_usage = image_usage;
10999         self
11000     }
image_sharing_mode(mut self, image_sharing_mode: SharingMode) -> Self11001     pub fn image_sharing_mode(mut self, image_sharing_mode: SharingMode) -> Self {
11002         self.inner.image_sharing_mode = image_sharing_mode;
11003         self
11004     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self11005     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
11006         self.inner.queue_family_index_count = queue_family_indices.len() as _;
11007         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
11008         self
11009     }
pre_transform(mut self, pre_transform: SurfaceTransformFlagsKHR) -> Self11010     pub fn pre_transform(mut self, pre_transform: SurfaceTransformFlagsKHR) -> Self {
11011         self.inner.pre_transform = pre_transform;
11012         self
11013     }
composite_alpha(mut self, composite_alpha: CompositeAlphaFlagsKHR) -> Self11014     pub fn composite_alpha(mut self, composite_alpha: CompositeAlphaFlagsKHR) -> Self {
11015         self.inner.composite_alpha = composite_alpha;
11016         self
11017     }
present_mode(mut self, present_mode: PresentModeKHR) -> Self11018     pub fn present_mode(mut self, present_mode: PresentModeKHR) -> Self {
11019         self.inner.present_mode = present_mode;
11020         self
11021     }
clipped(mut self, clipped: bool) -> Self11022     pub fn clipped(mut self, clipped: bool) -> Self {
11023         self.inner.clipped = clipped.into();
11024         self
11025     }
old_swapchain(mut self, old_swapchain: SwapchainKHR) -> Self11026     pub fn old_swapchain(mut self, old_swapchain: SwapchainKHR) -> Self {
11027         self.inner.old_swapchain = old_swapchain;
11028         self
11029     }
11030     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
11031     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
11032     #[doc = r" valid extension structs can be pushed into the chain."]
11033     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
11034     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSwapchainCreateInfoKHR>(mut self, next: &'a mut T) -> Self11035     pub fn push_next<T: ExtendsSwapchainCreateInfoKHR>(mut self, next: &'a mut T) -> Self {
11036         unsafe {
11037             let next_ptr = next as *mut T as *mut BaseOutStructure;
11038             let last_next = ptr_chain_iter(next).last().unwrap();
11039             (*last_next).p_next = self.inner.p_next as _;
11040             self.inner.p_next = next_ptr as _;
11041         }
11042         self
11043     }
11044     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11045     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11046     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainCreateInfoKHR11047     pub fn build(self) -> SwapchainCreateInfoKHR {
11048         self.inner
11049     }
11050 }
11051 #[repr(C)]
11052 #[derive(Copy, Clone, Debug)]
11053 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentInfoKHR.html>"]
11054 pub struct PresentInfoKHR {
11055     pub s_type: StructureType,
11056     pub p_next: *const c_void,
11057     pub wait_semaphore_count: u32,
11058     pub p_wait_semaphores: *const Semaphore,
11059     pub swapchain_count: u32,
11060     pub p_swapchains: *const SwapchainKHR,
11061     pub p_image_indices: *const u32,
11062     pub p_results: *mut Result,
11063 }
11064 impl ::std::default::Default for PresentInfoKHR {
default() -> PresentInfoKHR11065     fn default() -> PresentInfoKHR {
11066         PresentInfoKHR {
11067             s_type: StructureType::PRESENT_INFO_KHR,
11068             p_next: ::std::ptr::null(),
11069             wait_semaphore_count: u32::default(),
11070             p_wait_semaphores: ::std::ptr::null(),
11071             swapchain_count: u32::default(),
11072             p_swapchains: ::std::ptr::null(),
11073             p_image_indices: ::std::ptr::null(),
11074             p_results: ::std::ptr::null_mut(),
11075         }
11076     }
11077 }
11078 impl PresentInfoKHR {
builder<'a>() -> PresentInfoKHRBuilder<'a>11079     pub fn builder<'a>() -> PresentInfoKHRBuilder<'a> {
11080         PresentInfoKHRBuilder {
11081             inner: PresentInfoKHR::default(),
11082             marker: ::std::marker::PhantomData,
11083         }
11084     }
11085 }
11086 #[repr(transparent)]
11087 pub struct PresentInfoKHRBuilder<'a> {
11088     inner: PresentInfoKHR,
11089     marker: ::std::marker::PhantomData<&'a ()>,
11090 }
11091 pub unsafe trait ExtendsPresentInfoKHR {}
11092 impl<'a> ::std::ops::Deref for PresentInfoKHRBuilder<'a> {
11093     type Target = PresentInfoKHR;
deref(&self) -> &Self::Target11094     fn deref(&self) -> &Self::Target {
11095         &self.inner
11096     }
11097 }
11098 impl<'a> ::std::ops::DerefMut for PresentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11099     fn deref_mut(&mut self) -> &mut Self::Target {
11100         &mut self.inner
11101     }
11102 }
11103 impl<'a> PresentInfoKHRBuilder<'a> {
wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self11104     pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self {
11105         self.inner.wait_semaphore_count = wait_semaphores.len() as _;
11106         self.inner.p_wait_semaphores = wait_semaphores.as_ptr();
11107         self
11108     }
swapchains(mut self, swapchains: &'a [SwapchainKHR]) -> Self11109     pub fn swapchains(mut self, swapchains: &'a [SwapchainKHR]) -> Self {
11110         self.inner.swapchain_count = swapchains.len() as _;
11111         self.inner.p_swapchains = swapchains.as_ptr();
11112         self
11113     }
image_indices(mut self, image_indices: &'a [u32]) -> Self11114     pub fn image_indices(mut self, image_indices: &'a [u32]) -> Self {
11115         self.inner.swapchain_count = image_indices.len() as _;
11116         self.inner.p_image_indices = image_indices.as_ptr();
11117         self
11118     }
results(mut self, results: &'a mut [Result]) -> Self11119     pub fn results(mut self, results: &'a mut [Result]) -> Self {
11120         self.inner.swapchain_count = results.len() as _;
11121         self.inner.p_results = results.as_mut_ptr();
11122         self
11123     }
11124     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
11125     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
11126     #[doc = r" valid extension structs can be pushed into the chain."]
11127     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
11128     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPresentInfoKHR>(mut self, next: &'a mut T) -> Self11129     pub fn push_next<T: ExtendsPresentInfoKHR>(mut self, next: &'a mut T) -> Self {
11130         unsafe {
11131             let next_ptr = next as *mut T as *mut BaseOutStructure;
11132             let last_next = ptr_chain_iter(next).last().unwrap();
11133             (*last_next).p_next = self.inner.p_next as _;
11134             self.inner.p_next = next_ptr as _;
11135         }
11136         self
11137     }
11138     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11139     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11140     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentInfoKHR11141     pub fn build(self) -> PresentInfoKHR {
11142         self.inner
11143     }
11144 }
11145 #[repr(C)]
11146 #[derive(Copy, Clone)]
11147 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugReportCallbackCreateInfoEXT.html>"]
11148 pub struct DebugReportCallbackCreateInfoEXT {
11149     pub s_type: StructureType,
11150     pub p_next: *const c_void,
11151     pub flags: DebugReportFlagsEXT,
11152     pub pfn_callback: PFN_vkDebugReportCallbackEXT,
11153     pub p_user_data: *mut c_void,
11154 }
11155 impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result11156     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
11157         fmt.debug_struct("DebugReportCallbackCreateInfoEXT")
11158             .field("s_type", &self.s_type)
11159             .field("p_next", &self.p_next)
11160             .field("flags", &self.flags)
11161             .field("pfn_callback", &(self.pfn_callback.map(|x| x as *const ())))
11162             .field("p_user_data", &self.p_user_data)
11163             .finish()
11164     }
11165 }
11166 impl ::std::default::Default for DebugReportCallbackCreateInfoEXT {
default() -> DebugReportCallbackCreateInfoEXT11167     fn default() -> DebugReportCallbackCreateInfoEXT {
11168         DebugReportCallbackCreateInfoEXT {
11169             s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
11170             p_next: ::std::ptr::null(),
11171             flags: DebugReportFlagsEXT::default(),
11172             pfn_callback: PFN_vkDebugReportCallbackEXT::default(),
11173             p_user_data: ::std::ptr::null_mut(),
11174         }
11175     }
11176 }
11177 impl DebugReportCallbackCreateInfoEXT {
builder<'a>() -> DebugReportCallbackCreateInfoEXTBuilder<'a>11178     pub fn builder<'a>() -> DebugReportCallbackCreateInfoEXTBuilder<'a> {
11179         DebugReportCallbackCreateInfoEXTBuilder {
11180             inner: DebugReportCallbackCreateInfoEXT::default(),
11181             marker: ::std::marker::PhantomData,
11182         }
11183     }
11184 }
11185 #[repr(transparent)]
11186 pub struct DebugReportCallbackCreateInfoEXTBuilder<'a> {
11187     inner: DebugReportCallbackCreateInfoEXT,
11188     marker: ::std::marker::PhantomData<&'a ()>,
11189 }
11190 unsafe impl ExtendsInstanceCreateInfo for DebugReportCallbackCreateInfoEXTBuilder<'_> {}
11191 unsafe impl ExtendsInstanceCreateInfo for DebugReportCallbackCreateInfoEXT {}
11192 impl<'a> ::std::ops::Deref for DebugReportCallbackCreateInfoEXTBuilder<'a> {
11193     type Target = DebugReportCallbackCreateInfoEXT;
deref(&self) -> &Self::Target11194     fn deref(&self) -> &Self::Target {
11195         &self.inner
11196     }
11197 }
11198 impl<'a> ::std::ops::DerefMut for DebugReportCallbackCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11199     fn deref_mut(&mut self) -> &mut Self::Target {
11200         &mut self.inner
11201     }
11202 }
11203 impl<'a> DebugReportCallbackCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DebugReportFlagsEXT) -> Self11204     pub fn flags(mut self, flags: DebugReportFlagsEXT) -> Self {
11205         self.inner.flags = flags;
11206         self
11207     }
pfn_callback(mut self, pfn_callback: PFN_vkDebugReportCallbackEXT) -> Self11208     pub fn pfn_callback(mut self, pfn_callback: PFN_vkDebugReportCallbackEXT) -> Self {
11209         self.inner.pfn_callback = pfn_callback;
11210         self
11211     }
user_data(mut self, user_data: *mut c_void) -> Self11212     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
11213         self.inner.p_user_data = user_data;
11214         self
11215     }
11216     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11217     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11218     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugReportCallbackCreateInfoEXT11219     pub fn build(self) -> DebugReportCallbackCreateInfoEXT {
11220         self.inner
11221     }
11222 }
11223 #[repr(C)]
11224 #[derive(Copy, Clone, Debug)]
11225 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationFlagsEXT.html>"]
11226 pub struct ValidationFlagsEXT {
11227     pub s_type: StructureType,
11228     pub p_next: *const c_void,
11229     pub disabled_validation_check_count: u32,
11230     pub p_disabled_validation_checks: *const ValidationCheckEXT,
11231 }
11232 impl ::std::default::Default for ValidationFlagsEXT {
default() -> ValidationFlagsEXT11233     fn default() -> ValidationFlagsEXT {
11234         ValidationFlagsEXT {
11235             s_type: StructureType::VALIDATION_FLAGS_EXT,
11236             p_next: ::std::ptr::null(),
11237             disabled_validation_check_count: u32::default(),
11238             p_disabled_validation_checks: ::std::ptr::null(),
11239         }
11240     }
11241 }
11242 impl ValidationFlagsEXT {
builder<'a>() -> ValidationFlagsEXTBuilder<'a>11243     pub fn builder<'a>() -> ValidationFlagsEXTBuilder<'a> {
11244         ValidationFlagsEXTBuilder {
11245             inner: ValidationFlagsEXT::default(),
11246             marker: ::std::marker::PhantomData,
11247         }
11248     }
11249 }
11250 #[repr(transparent)]
11251 pub struct ValidationFlagsEXTBuilder<'a> {
11252     inner: ValidationFlagsEXT,
11253     marker: ::std::marker::PhantomData<&'a ()>,
11254 }
11255 unsafe impl ExtendsInstanceCreateInfo for ValidationFlagsEXTBuilder<'_> {}
11256 unsafe impl ExtendsInstanceCreateInfo for ValidationFlagsEXT {}
11257 impl<'a> ::std::ops::Deref for ValidationFlagsEXTBuilder<'a> {
11258     type Target = ValidationFlagsEXT;
deref(&self) -> &Self::Target11259     fn deref(&self) -> &Self::Target {
11260         &self.inner
11261     }
11262 }
11263 impl<'a> ::std::ops::DerefMut for ValidationFlagsEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11264     fn deref_mut(&mut self) -> &mut Self::Target {
11265         &mut self.inner
11266     }
11267 }
11268 impl<'a> ValidationFlagsEXTBuilder<'a> {
disabled_validation_checks( mut self, disabled_validation_checks: &'a [ValidationCheckEXT], ) -> Self11269     pub fn disabled_validation_checks(
11270         mut self,
11271         disabled_validation_checks: &'a [ValidationCheckEXT],
11272     ) -> Self {
11273         self.inner.disabled_validation_check_count = disabled_validation_checks.len() as _;
11274         self.inner.p_disabled_validation_checks = disabled_validation_checks.as_ptr();
11275         self
11276     }
11277     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11278     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11279     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ValidationFlagsEXT11280     pub fn build(self) -> ValidationFlagsEXT {
11281         self.inner
11282     }
11283 }
11284 #[repr(C)]
11285 #[derive(Copy, Clone, Debug)]
11286 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationFeaturesEXT.html>"]
11287 pub struct ValidationFeaturesEXT {
11288     pub s_type: StructureType,
11289     pub p_next: *const c_void,
11290     pub enabled_validation_feature_count: u32,
11291     pub p_enabled_validation_features: *const ValidationFeatureEnableEXT,
11292     pub disabled_validation_feature_count: u32,
11293     pub p_disabled_validation_features: *const ValidationFeatureDisableEXT,
11294 }
11295 impl ::std::default::Default for ValidationFeaturesEXT {
default() -> ValidationFeaturesEXT11296     fn default() -> ValidationFeaturesEXT {
11297         ValidationFeaturesEXT {
11298             s_type: StructureType::VALIDATION_FEATURES_EXT,
11299             p_next: ::std::ptr::null(),
11300             enabled_validation_feature_count: u32::default(),
11301             p_enabled_validation_features: ::std::ptr::null(),
11302             disabled_validation_feature_count: u32::default(),
11303             p_disabled_validation_features: ::std::ptr::null(),
11304         }
11305     }
11306 }
11307 impl ValidationFeaturesEXT {
builder<'a>() -> ValidationFeaturesEXTBuilder<'a>11308     pub fn builder<'a>() -> ValidationFeaturesEXTBuilder<'a> {
11309         ValidationFeaturesEXTBuilder {
11310             inner: ValidationFeaturesEXT::default(),
11311             marker: ::std::marker::PhantomData,
11312         }
11313     }
11314 }
11315 #[repr(transparent)]
11316 pub struct ValidationFeaturesEXTBuilder<'a> {
11317     inner: ValidationFeaturesEXT,
11318     marker: ::std::marker::PhantomData<&'a ()>,
11319 }
11320 unsafe impl ExtendsInstanceCreateInfo for ValidationFeaturesEXTBuilder<'_> {}
11321 unsafe impl ExtendsInstanceCreateInfo for ValidationFeaturesEXT {}
11322 impl<'a> ::std::ops::Deref for ValidationFeaturesEXTBuilder<'a> {
11323     type Target = ValidationFeaturesEXT;
deref(&self) -> &Self::Target11324     fn deref(&self) -> &Self::Target {
11325         &self.inner
11326     }
11327 }
11328 impl<'a> ::std::ops::DerefMut for ValidationFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11329     fn deref_mut(&mut self) -> &mut Self::Target {
11330         &mut self.inner
11331     }
11332 }
11333 impl<'a> ValidationFeaturesEXTBuilder<'a> {
enabled_validation_features( mut self, enabled_validation_features: &'a [ValidationFeatureEnableEXT], ) -> Self11334     pub fn enabled_validation_features(
11335         mut self,
11336         enabled_validation_features: &'a [ValidationFeatureEnableEXT],
11337     ) -> Self {
11338         self.inner.enabled_validation_feature_count = enabled_validation_features.len() as _;
11339         self.inner.p_enabled_validation_features = enabled_validation_features.as_ptr();
11340         self
11341     }
disabled_validation_features( mut self, disabled_validation_features: &'a [ValidationFeatureDisableEXT], ) -> Self11342     pub fn disabled_validation_features(
11343         mut self,
11344         disabled_validation_features: &'a [ValidationFeatureDisableEXT],
11345     ) -> Self {
11346         self.inner.disabled_validation_feature_count = disabled_validation_features.len() as _;
11347         self.inner.p_disabled_validation_features = disabled_validation_features.as_ptr();
11348         self
11349     }
11350     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11351     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11352     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ValidationFeaturesEXT11353     pub fn build(self) -> ValidationFeaturesEXT {
11354         self.inner
11355     }
11356 }
11357 #[repr(C)]
11358 #[derive(Copy, Clone, Debug)]
11359 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>"]
11360 pub struct PipelineRasterizationStateRasterizationOrderAMD {
11361     pub s_type: StructureType,
11362     pub p_next: *const c_void,
11363     pub rasterization_order: RasterizationOrderAMD,
11364 }
11365 impl ::std::default::Default for PipelineRasterizationStateRasterizationOrderAMD {
default() -> PipelineRasterizationStateRasterizationOrderAMD11366     fn default() -> PipelineRasterizationStateRasterizationOrderAMD {
11367         PipelineRasterizationStateRasterizationOrderAMD {
11368             s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
11369             p_next: ::std::ptr::null(),
11370             rasterization_order: RasterizationOrderAMD::default(),
11371         }
11372     }
11373 }
11374 impl PipelineRasterizationStateRasterizationOrderAMD {
builder<'a>() -> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a>11375     pub fn builder<'a>() -> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
11376         PipelineRasterizationStateRasterizationOrderAMDBuilder {
11377             inner: PipelineRasterizationStateRasterizationOrderAMD::default(),
11378             marker: ::std::marker::PhantomData,
11379         }
11380     }
11381 }
11382 #[repr(transparent)]
11383 pub struct PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
11384     inner: PipelineRasterizationStateRasterizationOrderAMD,
11385     marker: ::std::marker::PhantomData<&'a ()>,
11386 }
11387 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
11388     for PipelineRasterizationStateRasterizationOrderAMDBuilder<'_>
11389 {
11390 }
11391 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
11392     for PipelineRasterizationStateRasterizationOrderAMD
11393 {
11394 }
11395 impl<'a> ::std::ops::Deref for PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
11396     type Target = PipelineRasterizationStateRasterizationOrderAMD;
deref(&self) -> &Self::Target11397     fn deref(&self) -> &Self::Target {
11398         &self.inner
11399     }
11400 }
11401 impl<'a> ::std::ops::DerefMut for PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11402     fn deref_mut(&mut self) -> &mut Self::Target {
11403         &mut self.inner
11404     }
11405 }
11406 impl<'a> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
rasterization_order(mut self, rasterization_order: RasterizationOrderAMD) -> Self11407     pub fn rasterization_order(mut self, rasterization_order: RasterizationOrderAMD) -> Self {
11408         self.inner.rasterization_order = rasterization_order;
11409         self
11410     }
11411     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11412     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11413     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationStateRasterizationOrderAMD11414     pub fn build(self) -> PipelineRasterizationStateRasterizationOrderAMD {
11415         self.inner
11416     }
11417 }
11418 #[repr(C)]
11419 #[derive(Copy, Clone, Debug)]
11420 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugMarkerObjectNameInfoEXT.html>"]
11421 pub struct DebugMarkerObjectNameInfoEXT {
11422     pub s_type: StructureType,
11423     pub p_next: *const c_void,
11424     pub object_type: DebugReportObjectTypeEXT,
11425     pub object: u64,
11426     pub p_object_name: *const c_char,
11427 }
11428 impl ::std::default::Default for DebugMarkerObjectNameInfoEXT {
default() -> DebugMarkerObjectNameInfoEXT11429     fn default() -> DebugMarkerObjectNameInfoEXT {
11430         DebugMarkerObjectNameInfoEXT {
11431             s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
11432             p_next: ::std::ptr::null(),
11433             object_type: DebugReportObjectTypeEXT::default(),
11434             object: u64::default(),
11435             p_object_name: ::std::ptr::null(),
11436         }
11437     }
11438 }
11439 impl DebugMarkerObjectNameInfoEXT {
builder<'a>() -> DebugMarkerObjectNameInfoEXTBuilder<'a>11440     pub fn builder<'a>() -> DebugMarkerObjectNameInfoEXTBuilder<'a> {
11441         DebugMarkerObjectNameInfoEXTBuilder {
11442             inner: DebugMarkerObjectNameInfoEXT::default(),
11443             marker: ::std::marker::PhantomData,
11444         }
11445     }
11446 }
11447 #[repr(transparent)]
11448 pub struct DebugMarkerObjectNameInfoEXTBuilder<'a> {
11449     inner: DebugMarkerObjectNameInfoEXT,
11450     marker: ::std::marker::PhantomData<&'a ()>,
11451 }
11452 impl<'a> ::std::ops::Deref for DebugMarkerObjectNameInfoEXTBuilder<'a> {
11453     type Target = DebugMarkerObjectNameInfoEXT;
deref(&self) -> &Self::Target11454     fn deref(&self) -> &Self::Target {
11455         &self.inner
11456     }
11457 }
11458 impl<'a> ::std::ops::DerefMut for DebugMarkerObjectNameInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11459     fn deref_mut(&mut self) -> &mut Self::Target {
11460         &mut self.inner
11461     }
11462 }
11463 impl<'a> DebugMarkerObjectNameInfoEXTBuilder<'a> {
object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self11464     pub fn object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self {
11465         self.inner.object_type = object_type;
11466         self
11467     }
object(mut self, object: u64) -> Self11468     pub fn object(mut self, object: u64) -> Self {
11469         self.inner.object = object;
11470         self
11471     }
object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self11472     pub fn object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self {
11473         self.inner.p_object_name = object_name.as_ptr();
11474         self
11475     }
11476     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11477     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11478     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugMarkerObjectNameInfoEXT11479     pub fn build(self) -> DebugMarkerObjectNameInfoEXT {
11480         self.inner
11481     }
11482 }
11483 #[repr(C)]
11484 #[derive(Copy, Clone, Debug)]
11485 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugMarkerObjectTagInfoEXT.html>"]
11486 pub struct DebugMarkerObjectTagInfoEXT {
11487     pub s_type: StructureType,
11488     pub p_next: *const c_void,
11489     pub object_type: DebugReportObjectTypeEXT,
11490     pub object: u64,
11491     pub tag_name: u64,
11492     pub tag_size: usize,
11493     pub p_tag: *const c_void,
11494 }
11495 impl ::std::default::Default for DebugMarkerObjectTagInfoEXT {
default() -> DebugMarkerObjectTagInfoEXT11496     fn default() -> DebugMarkerObjectTagInfoEXT {
11497         DebugMarkerObjectTagInfoEXT {
11498             s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
11499             p_next: ::std::ptr::null(),
11500             object_type: DebugReportObjectTypeEXT::default(),
11501             object: u64::default(),
11502             tag_name: u64::default(),
11503             tag_size: usize::default(),
11504             p_tag: ::std::ptr::null(),
11505         }
11506     }
11507 }
11508 impl DebugMarkerObjectTagInfoEXT {
builder<'a>() -> DebugMarkerObjectTagInfoEXTBuilder<'a>11509     pub fn builder<'a>() -> DebugMarkerObjectTagInfoEXTBuilder<'a> {
11510         DebugMarkerObjectTagInfoEXTBuilder {
11511             inner: DebugMarkerObjectTagInfoEXT::default(),
11512             marker: ::std::marker::PhantomData,
11513         }
11514     }
11515 }
11516 #[repr(transparent)]
11517 pub struct DebugMarkerObjectTagInfoEXTBuilder<'a> {
11518     inner: DebugMarkerObjectTagInfoEXT,
11519     marker: ::std::marker::PhantomData<&'a ()>,
11520 }
11521 impl<'a> ::std::ops::Deref for DebugMarkerObjectTagInfoEXTBuilder<'a> {
11522     type Target = DebugMarkerObjectTagInfoEXT;
deref(&self) -> &Self::Target11523     fn deref(&self) -> &Self::Target {
11524         &self.inner
11525     }
11526 }
11527 impl<'a> ::std::ops::DerefMut for DebugMarkerObjectTagInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11528     fn deref_mut(&mut self) -> &mut Self::Target {
11529         &mut self.inner
11530     }
11531 }
11532 impl<'a> DebugMarkerObjectTagInfoEXTBuilder<'a> {
object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self11533     pub fn object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self {
11534         self.inner.object_type = object_type;
11535         self
11536     }
object(mut self, object: u64) -> Self11537     pub fn object(mut self, object: u64) -> Self {
11538         self.inner.object = object;
11539         self
11540     }
tag_name(mut self, tag_name: u64) -> Self11541     pub fn tag_name(mut self, tag_name: u64) -> Self {
11542         self.inner.tag_name = tag_name;
11543         self
11544     }
tag(mut self, tag: &'a [u8]) -> Self11545     pub fn tag(mut self, tag: &'a [u8]) -> Self {
11546         self.inner.tag_size = tag.len() as _;
11547         self.inner.p_tag = tag.as_ptr() as *const c_void;
11548         self
11549     }
11550     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11551     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11552     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugMarkerObjectTagInfoEXT11553     pub fn build(self) -> DebugMarkerObjectTagInfoEXT {
11554         self.inner
11555     }
11556 }
11557 #[repr(C)]
11558 #[derive(Copy, Clone, Debug)]
11559 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugMarkerMarkerInfoEXT.html>"]
11560 pub struct DebugMarkerMarkerInfoEXT {
11561     pub s_type: StructureType,
11562     pub p_next: *const c_void,
11563     pub p_marker_name: *const c_char,
11564     pub color: [f32; 4],
11565 }
11566 impl ::std::default::Default for DebugMarkerMarkerInfoEXT {
default() -> DebugMarkerMarkerInfoEXT11567     fn default() -> DebugMarkerMarkerInfoEXT {
11568         DebugMarkerMarkerInfoEXT {
11569             s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
11570             p_next: ::std::ptr::null(),
11571             p_marker_name: ::std::ptr::null(),
11572             color: unsafe { ::std::mem::zeroed() },
11573         }
11574     }
11575 }
11576 impl DebugMarkerMarkerInfoEXT {
builder<'a>() -> DebugMarkerMarkerInfoEXTBuilder<'a>11577     pub fn builder<'a>() -> DebugMarkerMarkerInfoEXTBuilder<'a> {
11578         DebugMarkerMarkerInfoEXTBuilder {
11579             inner: DebugMarkerMarkerInfoEXT::default(),
11580             marker: ::std::marker::PhantomData,
11581         }
11582     }
11583 }
11584 #[repr(transparent)]
11585 pub struct DebugMarkerMarkerInfoEXTBuilder<'a> {
11586     inner: DebugMarkerMarkerInfoEXT,
11587     marker: ::std::marker::PhantomData<&'a ()>,
11588 }
11589 impl<'a> ::std::ops::Deref for DebugMarkerMarkerInfoEXTBuilder<'a> {
11590     type Target = DebugMarkerMarkerInfoEXT;
deref(&self) -> &Self::Target11591     fn deref(&self) -> &Self::Target {
11592         &self.inner
11593     }
11594 }
11595 impl<'a> ::std::ops::DerefMut for DebugMarkerMarkerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11596     fn deref_mut(&mut self) -> &mut Self::Target {
11597         &mut self.inner
11598     }
11599 }
11600 impl<'a> DebugMarkerMarkerInfoEXTBuilder<'a> {
marker_name(mut self, marker_name: &'a ::std::ffi::CStr) -> Self11601     pub fn marker_name(mut self, marker_name: &'a ::std::ffi::CStr) -> Self {
11602         self.inner.p_marker_name = marker_name.as_ptr();
11603         self
11604     }
color(mut self, color: [f32; 4]) -> Self11605     pub fn color(mut self, color: [f32; 4]) -> Self {
11606         self.inner.color = color;
11607         self
11608     }
11609     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11610     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11611     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugMarkerMarkerInfoEXT11612     pub fn build(self) -> DebugMarkerMarkerInfoEXT {
11613         self.inner
11614     }
11615 }
11616 #[repr(C)]
11617 #[derive(Copy, Clone, Debug)]
11618 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDedicatedAllocationImageCreateInfoNV.html>"]
11619 pub struct DedicatedAllocationImageCreateInfoNV {
11620     pub s_type: StructureType,
11621     pub p_next: *const c_void,
11622     pub dedicated_allocation: Bool32,
11623 }
11624 impl ::std::default::Default for DedicatedAllocationImageCreateInfoNV {
default() -> DedicatedAllocationImageCreateInfoNV11625     fn default() -> DedicatedAllocationImageCreateInfoNV {
11626         DedicatedAllocationImageCreateInfoNV {
11627             s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
11628             p_next: ::std::ptr::null(),
11629             dedicated_allocation: Bool32::default(),
11630         }
11631     }
11632 }
11633 impl DedicatedAllocationImageCreateInfoNV {
builder<'a>() -> DedicatedAllocationImageCreateInfoNVBuilder<'a>11634     pub fn builder<'a>() -> DedicatedAllocationImageCreateInfoNVBuilder<'a> {
11635         DedicatedAllocationImageCreateInfoNVBuilder {
11636             inner: DedicatedAllocationImageCreateInfoNV::default(),
11637             marker: ::std::marker::PhantomData,
11638         }
11639     }
11640 }
11641 #[repr(transparent)]
11642 pub struct DedicatedAllocationImageCreateInfoNVBuilder<'a> {
11643     inner: DedicatedAllocationImageCreateInfoNV,
11644     marker: ::std::marker::PhantomData<&'a ()>,
11645 }
11646 unsafe impl ExtendsImageCreateInfo for DedicatedAllocationImageCreateInfoNVBuilder<'_> {}
11647 unsafe impl ExtendsImageCreateInfo for DedicatedAllocationImageCreateInfoNV {}
11648 impl<'a> ::std::ops::Deref for DedicatedAllocationImageCreateInfoNVBuilder<'a> {
11649     type Target = DedicatedAllocationImageCreateInfoNV;
deref(&self) -> &Self::Target11650     fn deref(&self) -> &Self::Target {
11651         &self.inner
11652     }
11653 }
11654 impl<'a> ::std::ops::DerefMut for DedicatedAllocationImageCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11655     fn deref_mut(&mut self) -> &mut Self::Target {
11656         &mut self.inner
11657     }
11658 }
11659 impl<'a> DedicatedAllocationImageCreateInfoNVBuilder<'a> {
dedicated_allocation(mut self, dedicated_allocation: bool) -> Self11660     pub fn dedicated_allocation(mut self, dedicated_allocation: bool) -> Self {
11661         self.inner.dedicated_allocation = dedicated_allocation.into();
11662         self
11663     }
11664     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11665     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11666     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DedicatedAllocationImageCreateInfoNV11667     pub fn build(self) -> DedicatedAllocationImageCreateInfoNV {
11668         self.inner
11669     }
11670 }
11671 #[repr(C)]
11672 #[derive(Copy, Clone, Debug)]
11673 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>"]
11674 pub struct DedicatedAllocationBufferCreateInfoNV {
11675     pub s_type: StructureType,
11676     pub p_next: *const c_void,
11677     pub dedicated_allocation: Bool32,
11678 }
11679 impl ::std::default::Default for DedicatedAllocationBufferCreateInfoNV {
default() -> DedicatedAllocationBufferCreateInfoNV11680     fn default() -> DedicatedAllocationBufferCreateInfoNV {
11681         DedicatedAllocationBufferCreateInfoNV {
11682             s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
11683             p_next: ::std::ptr::null(),
11684             dedicated_allocation: Bool32::default(),
11685         }
11686     }
11687 }
11688 impl DedicatedAllocationBufferCreateInfoNV {
builder<'a>() -> DedicatedAllocationBufferCreateInfoNVBuilder<'a>11689     pub fn builder<'a>() -> DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
11690         DedicatedAllocationBufferCreateInfoNVBuilder {
11691             inner: DedicatedAllocationBufferCreateInfoNV::default(),
11692             marker: ::std::marker::PhantomData,
11693         }
11694     }
11695 }
11696 #[repr(transparent)]
11697 pub struct DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
11698     inner: DedicatedAllocationBufferCreateInfoNV,
11699     marker: ::std::marker::PhantomData<&'a ()>,
11700 }
11701 unsafe impl ExtendsBufferCreateInfo for DedicatedAllocationBufferCreateInfoNVBuilder<'_> {}
11702 unsafe impl ExtendsBufferCreateInfo for DedicatedAllocationBufferCreateInfoNV {}
11703 impl<'a> ::std::ops::Deref for DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
11704     type Target = DedicatedAllocationBufferCreateInfoNV;
deref(&self) -> &Self::Target11705     fn deref(&self) -> &Self::Target {
11706         &self.inner
11707     }
11708 }
11709 impl<'a> ::std::ops::DerefMut for DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11710     fn deref_mut(&mut self) -> &mut Self::Target {
11711         &mut self.inner
11712     }
11713 }
11714 impl<'a> DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
dedicated_allocation(mut self, dedicated_allocation: bool) -> Self11715     pub fn dedicated_allocation(mut self, dedicated_allocation: bool) -> Self {
11716         self.inner.dedicated_allocation = dedicated_allocation.into();
11717         self
11718     }
11719     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11720     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11721     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DedicatedAllocationBufferCreateInfoNV11722     pub fn build(self) -> DedicatedAllocationBufferCreateInfoNV {
11723         self.inner
11724     }
11725 }
11726 #[repr(C)]
11727 #[derive(Copy, Clone, Debug)]
11728 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>"]
11729 pub struct DedicatedAllocationMemoryAllocateInfoNV {
11730     pub s_type: StructureType,
11731     pub p_next: *const c_void,
11732     pub image: Image,
11733     pub buffer: Buffer,
11734 }
11735 impl ::std::default::Default for DedicatedAllocationMemoryAllocateInfoNV {
default() -> DedicatedAllocationMemoryAllocateInfoNV11736     fn default() -> DedicatedAllocationMemoryAllocateInfoNV {
11737         DedicatedAllocationMemoryAllocateInfoNV {
11738             s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
11739             p_next: ::std::ptr::null(),
11740             image: Image::default(),
11741             buffer: Buffer::default(),
11742         }
11743     }
11744 }
11745 impl DedicatedAllocationMemoryAllocateInfoNV {
builder<'a>() -> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a>11746     pub fn builder<'a>() -> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
11747         DedicatedAllocationMemoryAllocateInfoNVBuilder {
11748             inner: DedicatedAllocationMemoryAllocateInfoNV::default(),
11749             marker: ::std::marker::PhantomData,
11750         }
11751     }
11752 }
11753 #[repr(transparent)]
11754 pub struct DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
11755     inner: DedicatedAllocationMemoryAllocateInfoNV,
11756     marker: ::std::marker::PhantomData<&'a ()>,
11757 }
11758 unsafe impl ExtendsMemoryAllocateInfo for DedicatedAllocationMemoryAllocateInfoNVBuilder<'_> {}
11759 unsafe impl ExtendsMemoryAllocateInfo for DedicatedAllocationMemoryAllocateInfoNV {}
11760 impl<'a> ::std::ops::Deref for DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
11761     type Target = DedicatedAllocationMemoryAllocateInfoNV;
deref(&self) -> &Self::Target11762     fn deref(&self) -> &Self::Target {
11763         &self.inner
11764     }
11765 }
11766 impl<'a> ::std::ops::DerefMut for DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11767     fn deref_mut(&mut self) -> &mut Self::Target {
11768         &mut self.inner
11769     }
11770 }
11771 impl<'a> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
image(mut self, image: Image) -> Self11772     pub fn image(mut self, image: Image) -> Self {
11773         self.inner.image = image;
11774         self
11775     }
buffer(mut self, buffer: Buffer) -> Self11776     pub fn buffer(mut self, buffer: Buffer) -> Self {
11777         self.inner.buffer = buffer;
11778         self
11779     }
11780     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11781     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11782     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DedicatedAllocationMemoryAllocateInfoNV11783     pub fn build(self) -> DedicatedAllocationMemoryAllocateInfoNV {
11784         self.inner
11785     }
11786 }
11787 #[repr(C)]
11788 #[derive(Copy, Clone, Default, Debug)]
11789 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalImageFormatPropertiesNV.html>"]
11790 pub struct ExternalImageFormatPropertiesNV {
11791     pub image_format_properties: ImageFormatProperties,
11792     pub external_memory_features: ExternalMemoryFeatureFlagsNV,
11793     pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
11794     pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
11795 }
11796 impl ExternalImageFormatPropertiesNV {
builder<'a>() -> ExternalImageFormatPropertiesNVBuilder<'a>11797     pub fn builder<'a>() -> ExternalImageFormatPropertiesNVBuilder<'a> {
11798         ExternalImageFormatPropertiesNVBuilder {
11799             inner: ExternalImageFormatPropertiesNV::default(),
11800             marker: ::std::marker::PhantomData,
11801         }
11802     }
11803 }
11804 #[repr(transparent)]
11805 pub struct ExternalImageFormatPropertiesNVBuilder<'a> {
11806     inner: ExternalImageFormatPropertiesNV,
11807     marker: ::std::marker::PhantomData<&'a ()>,
11808 }
11809 impl<'a> ::std::ops::Deref for ExternalImageFormatPropertiesNVBuilder<'a> {
11810     type Target = ExternalImageFormatPropertiesNV;
deref(&self) -> &Self::Target11811     fn deref(&self) -> &Self::Target {
11812         &self.inner
11813     }
11814 }
11815 impl<'a> ::std::ops::DerefMut for ExternalImageFormatPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11816     fn deref_mut(&mut self) -> &mut Self::Target {
11817         &mut self.inner
11818     }
11819 }
11820 impl<'a> ExternalImageFormatPropertiesNVBuilder<'a> {
image_format_properties( mut self, image_format_properties: ImageFormatProperties, ) -> Self11821     pub fn image_format_properties(
11822         mut self,
11823         image_format_properties: ImageFormatProperties,
11824     ) -> Self {
11825         self.inner.image_format_properties = image_format_properties;
11826         self
11827     }
external_memory_features( mut self, external_memory_features: ExternalMemoryFeatureFlagsNV, ) -> Self11828     pub fn external_memory_features(
11829         mut self,
11830         external_memory_features: ExternalMemoryFeatureFlagsNV,
11831     ) -> Self {
11832         self.inner.external_memory_features = external_memory_features;
11833         self
11834     }
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV, ) -> Self11835     pub fn export_from_imported_handle_types(
11836         mut self,
11837         export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
11838     ) -> Self {
11839         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
11840         self
11841     }
compatible_handle_types( mut self, compatible_handle_types: ExternalMemoryHandleTypeFlagsNV, ) -> Self11842     pub fn compatible_handle_types(
11843         mut self,
11844         compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
11845     ) -> Self {
11846         self.inner.compatible_handle_types = compatible_handle_types;
11847         self
11848     }
11849     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11850     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11851     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalImageFormatPropertiesNV11852     pub fn build(self) -> ExternalImageFormatPropertiesNV {
11853         self.inner
11854     }
11855 }
11856 #[repr(C)]
11857 #[derive(Copy, Clone, Debug)]
11858 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryImageCreateInfoNV.html>"]
11859 pub struct ExternalMemoryImageCreateInfoNV {
11860     pub s_type: StructureType,
11861     pub p_next: *const c_void,
11862     pub handle_types: ExternalMemoryHandleTypeFlagsNV,
11863 }
11864 impl ::std::default::Default for ExternalMemoryImageCreateInfoNV {
default() -> ExternalMemoryImageCreateInfoNV11865     fn default() -> ExternalMemoryImageCreateInfoNV {
11866         ExternalMemoryImageCreateInfoNV {
11867             s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
11868             p_next: ::std::ptr::null(),
11869             handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
11870         }
11871     }
11872 }
11873 impl ExternalMemoryImageCreateInfoNV {
builder<'a>() -> ExternalMemoryImageCreateInfoNVBuilder<'a>11874     pub fn builder<'a>() -> ExternalMemoryImageCreateInfoNVBuilder<'a> {
11875         ExternalMemoryImageCreateInfoNVBuilder {
11876             inner: ExternalMemoryImageCreateInfoNV::default(),
11877             marker: ::std::marker::PhantomData,
11878         }
11879     }
11880 }
11881 #[repr(transparent)]
11882 pub struct ExternalMemoryImageCreateInfoNVBuilder<'a> {
11883     inner: ExternalMemoryImageCreateInfoNV,
11884     marker: ::std::marker::PhantomData<&'a ()>,
11885 }
11886 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfoNVBuilder<'_> {}
11887 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfoNV {}
11888 impl<'a> ::std::ops::Deref for ExternalMemoryImageCreateInfoNVBuilder<'a> {
11889     type Target = ExternalMemoryImageCreateInfoNV;
deref(&self) -> &Self::Target11890     fn deref(&self) -> &Self::Target {
11891         &self.inner
11892     }
11893 }
11894 impl<'a> ::std::ops::DerefMut for ExternalMemoryImageCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11895     fn deref_mut(&mut self) -> &mut Self::Target {
11896         &mut self.inner
11897     }
11898 }
11899 impl<'a> ExternalMemoryImageCreateInfoNVBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self11900     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self {
11901         self.inner.handle_types = handle_types;
11902         self
11903     }
11904     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11905     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11906     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryImageCreateInfoNV11907     pub fn build(self) -> ExternalMemoryImageCreateInfoNV {
11908         self.inner
11909     }
11910 }
11911 #[repr(C)]
11912 #[derive(Copy, Clone, Debug)]
11913 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryAllocateInfoNV.html>"]
11914 pub struct ExportMemoryAllocateInfoNV {
11915     pub s_type: StructureType,
11916     pub p_next: *const c_void,
11917     pub handle_types: ExternalMemoryHandleTypeFlagsNV,
11918 }
11919 impl ::std::default::Default for ExportMemoryAllocateInfoNV {
default() -> ExportMemoryAllocateInfoNV11920     fn default() -> ExportMemoryAllocateInfoNV {
11921         ExportMemoryAllocateInfoNV {
11922             s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
11923             p_next: ::std::ptr::null(),
11924             handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
11925         }
11926     }
11927 }
11928 impl ExportMemoryAllocateInfoNV {
builder<'a>() -> ExportMemoryAllocateInfoNVBuilder<'a>11929     pub fn builder<'a>() -> ExportMemoryAllocateInfoNVBuilder<'a> {
11930         ExportMemoryAllocateInfoNVBuilder {
11931             inner: ExportMemoryAllocateInfoNV::default(),
11932             marker: ::std::marker::PhantomData,
11933         }
11934     }
11935 }
11936 #[repr(transparent)]
11937 pub struct ExportMemoryAllocateInfoNVBuilder<'a> {
11938     inner: ExportMemoryAllocateInfoNV,
11939     marker: ::std::marker::PhantomData<&'a ()>,
11940 }
11941 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfoNVBuilder<'_> {}
11942 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfoNV {}
11943 impl<'a> ::std::ops::Deref for ExportMemoryAllocateInfoNVBuilder<'a> {
11944     type Target = ExportMemoryAllocateInfoNV;
deref(&self) -> &Self::Target11945     fn deref(&self) -> &Self::Target {
11946         &self.inner
11947     }
11948 }
11949 impl<'a> ::std::ops::DerefMut for ExportMemoryAllocateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11950     fn deref_mut(&mut self) -> &mut Self::Target {
11951         &mut self.inner
11952     }
11953 }
11954 impl<'a> ExportMemoryAllocateInfoNVBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self11955     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self {
11956         self.inner.handle_types = handle_types;
11957         self
11958     }
11959     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11960     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11961     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryAllocateInfoNV11962     pub fn build(self) -> ExportMemoryAllocateInfoNV {
11963         self.inner
11964     }
11965 }
11966 #[repr(C)]
11967 #[derive(Copy, Clone, Debug)]
11968 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryWin32HandleInfoNV.html>"]
11969 pub struct ImportMemoryWin32HandleInfoNV {
11970     pub s_type: StructureType,
11971     pub p_next: *const c_void,
11972     pub handle_type: ExternalMemoryHandleTypeFlagsNV,
11973     pub handle: HANDLE,
11974 }
11975 impl ::std::default::Default for ImportMemoryWin32HandleInfoNV {
default() -> ImportMemoryWin32HandleInfoNV11976     fn default() -> ImportMemoryWin32HandleInfoNV {
11977         ImportMemoryWin32HandleInfoNV {
11978             s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
11979             p_next: ::std::ptr::null(),
11980             handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
11981             handle: unsafe { ::std::mem::zeroed() },
11982         }
11983     }
11984 }
11985 impl ImportMemoryWin32HandleInfoNV {
builder<'a>() -> ImportMemoryWin32HandleInfoNVBuilder<'a>11986     pub fn builder<'a>() -> ImportMemoryWin32HandleInfoNVBuilder<'a> {
11987         ImportMemoryWin32HandleInfoNVBuilder {
11988             inner: ImportMemoryWin32HandleInfoNV::default(),
11989             marker: ::std::marker::PhantomData,
11990         }
11991     }
11992 }
11993 #[repr(transparent)]
11994 pub struct ImportMemoryWin32HandleInfoNVBuilder<'a> {
11995     inner: ImportMemoryWin32HandleInfoNV,
11996     marker: ::std::marker::PhantomData<&'a ()>,
11997 }
11998 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoNVBuilder<'_> {}
11999 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoNV {}
12000 impl<'a> ::std::ops::Deref for ImportMemoryWin32HandleInfoNVBuilder<'a> {
12001     type Target = ImportMemoryWin32HandleInfoNV;
deref(&self) -> &Self::Target12002     fn deref(&self) -> &Self::Target {
12003         &self.inner
12004     }
12005 }
12006 impl<'a> ::std::ops::DerefMut for ImportMemoryWin32HandleInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12007     fn deref_mut(&mut self) -> &mut Self::Target {
12008         &mut self.inner
12009     }
12010 }
12011 impl<'a> ImportMemoryWin32HandleInfoNVBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlagsNV) -> Self12012     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlagsNV) -> Self {
12013         self.inner.handle_type = handle_type;
12014         self
12015     }
handle(mut self, handle: HANDLE) -> Self12016     pub fn handle(mut self, handle: HANDLE) -> Self {
12017         self.inner.handle = handle;
12018         self
12019     }
12020     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12021     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12022     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryWin32HandleInfoNV12023     pub fn build(self) -> ImportMemoryWin32HandleInfoNV {
12024         self.inner
12025     }
12026 }
12027 #[repr(C)]
12028 #[derive(Copy, Clone, Debug)]
12029 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryWin32HandleInfoNV.html>"]
12030 pub struct ExportMemoryWin32HandleInfoNV {
12031     pub s_type: StructureType,
12032     pub p_next: *const c_void,
12033     pub p_attributes: *const SECURITY_ATTRIBUTES,
12034     pub dw_access: DWORD,
12035 }
12036 impl ::std::default::Default for ExportMemoryWin32HandleInfoNV {
default() -> ExportMemoryWin32HandleInfoNV12037     fn default() -> ExportMemoryWin32HandleInfoNV {
12038         ExportMemoryWin32HandleInfoNV {
12039             s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
12040             p_next: ::std::ptr::null(),
12041             p_attributes: ::std::ptr::null(),
12042             dw_access: DWORD::default(),
12043         }
12044     }
12045 }
12046 impl ExportMemoryWin32HandleInfoNV {
builder<'a>() -> ExportMemoryWin32HandleInfoNVBuilder<'a>12047     pub fn builder<'a>() -> ExportMemoryWin32HandleInfoNVBuilder<'a> {
12048         ExportMemoryWin32HandleInfoNVBuilder {
12049             inner: ExportMemoryWin32HandleInfoNV::default(),
12050             marker: ::std::marker::PhantomData,
12051         }
12052     }
12053 }
12054 #[repr(transparent)]
12055 pub struct ExportMemoryWin32HandleInfoNVBuilder<'a> {
12056     inner: ExportMemoryWin32HandleInfoNV,
12057     marker: ::std::marker::PhantomData<&'a ()>,
12058 }
12059 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoNVBuilder<'_> {}
12060 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoNV {}
12061 impl<'a> ::std::ops::Deref for ExportMemoryWin32HandleInfoNVBuilder<'a> {
12062     type Target = ExportMemoryWin32HandleInfoNV;
deref(&self) -> &Self::Target12063     fn deref(&self) -> &Self::Target {
12064         &self.inner
12065     }
12066 }
12067 impl<'a> ::std::ops::DerefMut for ExportMemoryWin32HandleInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12068     fn deref_mut(&mut self) -> &mut Self::Target {
12069         &mut self.inner
12070     }
12071 }
12072 impl<'a> ExportMemoryWin32HandleInfoNVBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self12073     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
12074         self.inner.p_attributes = attributes;
12075         self
12076     }
dw_access(mut self, dw_access: DWORD) -> Self12077     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
12078         self.inner.dw_access = dw_access;
12079         self
12080     }
12081     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12082     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12083     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryWin32HandleInfoNV12084     pub fn build(self) -> ExportMemoryWin32HandleInfoNV {
12085         self.inner
12086     }
12087 }
12088 #[repr(C)]
12089 #[derive(Copy, Clone, Debug)]
12090 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>"]
12091 pub struct Win32KeyedMutexAcquireReleaseInfoNV {
12092     pub s_type: StructureType,
12093     pub p_next: *const c_void,
12094     pub acquire_count: u32,
12095     pub p_acquire_syncs: *const DeviceMemory,
12096     pub p_acquire_keys: *const u64,
12097     pub p_acquire_timeout_milliseconds: *const u32,
12098     pub release_count: u32,
12099     pub p_release_syncs: *const DeviceMemory,
12100     pub p_release_keys: *const u64,
12101 }
12102 impl ::std::default::Default for Win32KeyedMutexAcquireReleaseInfoNV {
default() -> Win32KeyedMutexAcquireReleaseInfoNV12103     fn default() -> Win32KeyedMutexAcquireReleaseInfoNV {
12104         Win32KeyedMutexAcquireReleaseInfoNV {
12105             s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
12106             p_next: ::std::ptr::null(),
12107             acquire_count: u32::default(),
12108             p_acquire_syncs: ::std::ptr::null(),
12109             p_acquire_keys: ::std::ptr::null(),
12110             p_acquire_timeout_milliseconds: ::std::ptr::null(),
12111             release_count: u32::default(),
12112             p_release_syncs: ::std::ptr::null(),
12113             p_release_keys: ::std::ptr::null(),
12114         }
12115     }
12116 }
12117 impl Win32KeyedMutexAcquireReleaseInfoNV {
builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a>12118     pub fn builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
12119         Win32KeyedMutexAcquireReleaseInfoNVBuilder {
12120             inner: Win32KeyedMutexAcquireReleaseInfoNV::default(),
12121             marker: ::std::marker::PhantomData,
12122         }
12123     }
12124 }
12125 #[repr(transparent)]
12126 pub struct Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
12127     inner: Win32KeyedMutexAcquireReleaseInfoNV,
12128     marker: ::std::marker::PhantomData<&'a ()>,
12129 }
12130 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'_> {}
12131 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoNV {}
12132 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'_> {}
12133 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoNV {}
12134 impl<'a> ::std::ops::Deref for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
12135     type Target = Win32KeyedMutexAcquireReleaseInfoNV;
deref(&self) -> &Self::Target12136     fn deref(&self) -> &Self::Target {
12137         &self.inner
12138     }
12139 }
12140 impl<'a> ::std::ops::DerefMut for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12141     fn deref_mut(&mut self) -> &mut Self::Target {
12142         &mut self.inner
12143     }
12144 }
12145 impl<'a> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self12146     pub fn acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self {
12147         self.inner.acquire_count = acquire_syncs.len() as _;
12148         self.inner.p_acquire_syncs = acquire_syncs.as_ptr();
12149         self
12150     }
acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self12151     pub fn acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self {
12152         self.inner.acquire_count = acquire_keys.len() as _;
12153         self.inner.p_acquire_keys = acquire_keys.as_ptr();
12154         self
12155     }
acquire_timeout_milliseconds(mut self, acquire_timeout_milliseconds: &'a [u32]) -> Self12156     pub fn acquire_timeout_milliseconds(mut self, acquire_timeout_milliseconds: &'a [u32]) -> Self {
12157         self.inner.acquire_count = acquire_timeout_milliseconds.len() as _;
12158         self.inner.p_acquire_timeout_milliseconds = acquire_timeout_milliseconds.as_ptr();
12159         self
12160     }
release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self12161     pub fn release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self {
12162         self.inner.release_count = release_syncs.len() as _;
12163         self.inner.p_release_syncs = release_syncs.as_ptr();
12164         self
12165     }
release_keys(mut self, release_keys: &'a [u64]) -> Self12166     pub fn release_keys(mut self, release_keys: &'a [u64]) -> Self {
12167         self.inner.release_count = release_keys.len() as _;
12168         self.inner.p_release_keys = release_keys.as_ptr();
12169         self
12170     }
12171     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12172     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12173     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Win32KeyedMutexAcquireReleaseInfoNV12174     pub fn build(self) -> Win32KeyedMutexAcquireReleaseInfoNV {
12175         self.inner
12176     }
12177 }
12178 #[repr(C)]
12179 #[derive(Copy, Clone, Debug)]
12180 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>"]
12181 pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12182     pub s_type: StructureType,
12183     pub p_next: *mut c_void,
12184     pub device_generated_commands: Bool32,
12185 }
12186 impl ::std::default::Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
default() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV12187     fn default() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12188         PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12189             s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
12190             p_next: ::std::ptr::null_mut(),
12191             device_generated_commands: Bool32::default(),
12192         }
12193     }
12194 }
12195 impl PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a>12196     pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
12197         PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder {
12198             inner: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV::default(),
12199             marker: ::std::marker::PhantomData,
12200         }
12201     }
12202 }
12203 #[repr(transparent)]
12204 pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
12205     inner: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV,
12206     marker: ::std::marker::PhantomData<&'a ()>,
12207 }
12208 unsafe impl ExtendsPhysicalDeviceFeatures2
12209     for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'_>
12210 {
12211 }
12212 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
12213 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'_> {}
12214 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
12215 impl<'a> ::std::ops::Deref for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
12216     type Target = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
deref(&self) -> &Self::Target12217     fn deref(&self) -> &Self::Target {
12218         &self.inner
12219     }
12220 }
12221 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12222     fn deref_mut(&mut self) -> &mut Self::Target {
12223         &mut self.inner
12224     }
12225 }
12226 impl<'a> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
device_generated_commands(mut self, device_generated_commands: bool) -> Self12227     pub fn device_generated_commands(mut self, device_generated_commands: bool) -> Self {
12228         self.inner.device_generated_commands = device_generated_commands.into();
12229         self
12230     }
12231     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12232     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12233     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV12234     pub fn build(self) -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12235         self.inner
12236     }
12237 }
12238 #[repr(C)]
12239 #[derive(Copy, Clone, Debug)]
12240 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDevicePrivateDataCreateInfoEXT.html>"]
12241 pub struct DevicePrivateDataCreateInfoEXT {
12242     pub s_type: StructureType,
12243     pub p_next: *const c_void,
12244     pub private_data_slot_request_count: u32,
12245 }
12246 impl ::std::default::Default for DevicePrivateDataCreateInfoEXT {
default() -> DevicePrivateDataCreateInfoEXT12247     fn default() -> DevicePrivateDataCreateInfoEXT {
12248         DevicePrivateDataCreateInfoEXT {
12249             s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO_EXT,
12250             p_next: ::std::ptr::null(),
12251             private_data_slot_request_count: u32::default(),
12252         }
12253     }
12254 }
12255 impl DevicePrivateDataCreateInfoEXT {
builder<'a>() -> DevicePrivateDataCreateInfoEXTBuilder<'a>12256     pub fn builder<'a>() -> DevicePrivateDataCreateInfoEXTBuilder<'a> {
12257         DevicePrivateDataCreateInfoEXTBuilder {
12258             inner: DevicePrivateDataCreateInfoEXT::default(),
12259             marker: ::std::marker::PhantomData,
12260         }
12261     }
12262 }
12263 #[repr(transparent)]
12264 pub struct DevicePrivateDataCreateInfoEXTBuilder<'a> {
12265     inner: DevicePrivateDataCreateInfoEXT,
12266     marker: ::std::marker::PhantomData<&'a ()>,
12267 }
12268 unsafe impl ExtendsDeviceCreateInfo for DevicePrivateDataCreateInfoEXTBuilder<'_> {}
12269 unsafe impl ExtendsDeviceCreateInfo for DevicePrivateDataCreateInfoEXT {}
12270 impl<'a> ::std::ops::Deref for DevicePrivateDataCreateInfoEXTBuilder<'a> {
12271     type Target = DevicePrivateDataCreateInfoEXT;
deref(&self) -> &Self::Target12272     fn deref(&self) -> &Self::Target {
12273         &self.inner
12274     }
12275 }
12276 impl<'a> ::std::ops::DerefMut for DevicePrivateDataCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12277     fn deref_mut(&mut self) -> &mut Self::Target {
12278         &mut self.inner
12279     }
12280 }
12281 impl<'a> DevicePrivateDataCreateInfoEXTBuilder<'a> {
private_data_slot_request_count(mut self, private_data_slot_request_count: u32) -> Self12282     pub fn private_data_slot_request_count(mut self, private_data_slot_request_count: u32) -> Self {
12283         self.inner.private_data_slot_request_count = private_data_slot_request_count;
12284         self
12285     }
12286     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12287     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12288     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DevicePrivateDataCreateInfoEXT12289     pub fn build(self) -> DevicePrivateDataCreateInfoEXT {
12290         self.inner
12291     }
12292 }
12293 #[repr(C)]
12294 #[derive(Copy, Clone, Debug)]
12295 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPrivateDataSlotCreateInfoEXT.html>"]
12296 pub struct PrivateDataSlotCreateInfoEXT {
12297     pub s_type: StructureType,
12298     pub p_next: *const c_void,
12299     pub flags: PrivateDataSlotCreateFlagsEXT,
12300 }
12301 impl ::std::default::Default for PrivateDataSlotCreateInfoEXT {
default() -> PrivateDataSlotCreateInfoEXT12302     fn default() -> PrivateDataSlotCreateInfoEXT {
12303         PrivateDataSlotCreateInfoEXT {
12304             s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO_EXT,
12305             p_next: ::std::ptr::null(),
12306             flags: PrivateDataSlotCreateFlagsEXT::default(),
12307         }
12308     }
12309 }
12310 impl PrivateDataSlotCreateInfoEXT {
builder<'a>() -> PrivateDataSlotCreateInfoEXTBuilder<'a>12311     pub fn builder<'a>() -> PrivateDataSlotCreateInfoEXTBuilder<'a> {
12312         PrivateDataSlotCreateInfoEXTBuilder {
12313             inner: PrivateDataSlotCreateInfoEXT::default(),
12314             marker: ::std::marker::PhantomData,
12315         }
12316     }
12317 }
12318 #[repr(transparent)]
12319 pub struct PrivateDataSlotCreateInfoEXTBuilder<'a> {
12320     inner: PrivateDataSlotCreateInfoEXT,
12321     marker: ::std::marker::PhantomData<&'a ()>,
12322 }
12323 impl<'a> ::std::ops::Deref for PrivateDataSlotCreateInfoEXTBuilder<'a> {
12324     type Target = PrivateDataSlotCreateInfoEXT;
deref(&self) -> &Self::Target12325     fn deref(&self) -> &Self::Target {
12326         &self.inner
12327     }
12328 }
12329 impl<'a> ::std::ops::DerefMut for PrivateDataSlotCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12330     fn deref_mut(&mut self) -> &mut Self::Target {
12331         &mut self.inner
12332     }
12333 }
12334 impl<'a> PrivateDataSlotCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PrivateDataSlotCreateFlagsEXT) -> Self12335     pub fn flags(mut self, flags: PrivateDataSlotCreateFlagsEXT) -> Self {
12336         self.inner.flags = flags;
12337         self
12338     }
12339     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12340     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12341     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PrivateDataSlotCreateInfoEXT12342     pub fn build(self) -> PrivateDataSlotCreateInfoEXT {
12343         self.inner
12344     }
12345 }
12346 #[repr(C)]
12347 #[derive(Copy, Clone, Debug)]
12348 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>"]
12349 pub struct PhysicalDevicePrivateDataFeaturesEXT {
12350     pub s_type: StructureType,
12351     pub p_next: *mut c_void,
12352     pub private_data: Bool32,
12353 }
12354 impl ::std::default::Default for PhysicalDevicePrivateDataFeaturesEXT {
default() -> PhysicalDevicePrivateDataFeaturesEXT12355     fn default() -> PhysicalDevicePrivateDataFeaturesEXT {
12356         PhysicalDevicePrivateDataFeaturesEXT {
12357             s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT,
12358             p_next: ::std::ptr::null_mut(),
12359             private_data: Bool32::default(),
12360         }
12361     }
12362 }
12363 impl PhysicalDevicePrivateDataFeaturesEXT {
builder<'a>() -> PhysicalDevicePrivateDataFeaturesEXTBuilder<'a>12364     pub fn builder<'a>() -> PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
12365         PhysicalDevicePrivateDataFeaturesEXTBuilder {
12366             inner: PhysicalDevicePrivateDataFeaturesEXT::default(),
12367             marker: ::std::marker::PhantomData,
12368         }
12369     }
12370 }
12371 #[repr(transparent)]
12372 pub struct PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
12373     inner: PhysicalDevicePrivateDataFeaturesEXT,
12374     marker: ::std::marker::PhantomData<&'a ()>,
12375 }
12376 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePrivateDataFeaturesEXTBuilder<'_> {}
12377 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePrivateDataFeaturesEXT {}
12378 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrivateDataFeaturesEXTBuilder<'_> {}
12379 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrivateDataFeaturesEXT {}
12380 impl<'a> ::std::ops::Deref for PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
12381     type Target = PhysicalDevicePrivateDataFeaturesEXT;
deref(&self) -> &Self::Target12382     fn deref(&self) -> &Self::Target {
12383         &self.inner
12384     }
12385 }
12386 impl<'a> ::std::ops::DerefMut for PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12387     fn deref_mut(&mut self) -> &mut Self::Target {
12388         &mut self.inner
12389     }
12390 }
12391 impl<'a> PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
private_data(mut self, private_data: bool) -> Self12392     pub fn private_data(mut self, private_data: bool) -> Self {
12393         self.inner.private_data = private_data.into();
12394         self
12395     }
12396     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12397     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12398     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePrivateDataFeaturesEXT12399     pub fn build(self) -> PhysicalDevicePrivateDataFeaturesEXT {
12400         self.inner
12401     }
12402 }
12403 #[repr(C)]
12404 #[derive(Copy, Clone, Debug)]
12405 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>"]
12406 pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12407     pub s_type: StructureType,
12408     pub p_next: *mut c_void,
12409     pub max_graphics_shader_group_count: u32,
12410     pub max_indirect_sequence_count: u32,
12411     pub max_indirect_commands_token_count: u32,
12412     pub max_indirect_commands_stream_count: u32,
12413     pub max_indirect_commands_token_offset: u32,
12414     pub max_indirect_commands_stream_stride: u32,
12415     pub min_sequences_count_buffer_offset_alignment: u32,
12416     pub min_sequences_index_buffer_offset_alignment: u32,
12417     pub min_indirect_commands_buffer_offset_alignment: u32,
12418 }
12419 impl ::std::default::Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
default() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV12420     fn default() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12421         PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12422             s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
12423             p_next: ::std::ptr::null_mut(),
12424             max_graphics_shader_group_count: u32::default(),
12425             max_indirect_sequence_count: u32::default(),
12426             max_indirect_commands_token_count: u32::default(),
12427             max_indirect_commands_stream_count: u32::default(),
12428             max_indirect_commands_token_offset: u32::default(),
12429             max_indirect_commands_stream_stride: u32::default(),
12430             min_sequences_count_buffer_offset_alignment: u32::default(),
12431             min_sequences_index_buffer_offset_alignment: u32::default(),
12432             min_indirect_commands_buffer_offset_alignment: u32::default(),
12433         }
12434     }
12435 }
12436 impl PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a>12437     pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
12438         PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder {
12439             inner: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV::default(),
12440             marker: ::std::marker::PhantomData,
12441         }
12442     }
12443 }
12444 #[repr(transparent)]
12445 pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
12446     inner: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV,
12447     marker: ::std::marker::PhantomData<&'a ()>,
12448 }
12449 unsafe impl ExtendsPhysicalDeviceProperties2
12450     for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'_>
12451 {
12452 }
12453 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
12454 impl<'a> ::std::ops::Deref for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
12455     type Target = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
deref(&self) -> &Self::Target12456     fn deref(&self) -> &Self::Target {
12457         &self.inner
12458     }
12459 }
12460 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12461     fn deref_mut(&mut self) -> &mut Self::Target {
12462         &mut self.inner
12463     }
12464 }
12465 impl<'a> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
max_graphics_shader_group_count(mut self, max_graphics_shader_group_count: u32) -> Self12466     pub fn max_graphics_shader_group_count(mut self, max_graphics_shader_group_count: u32) -> Self {
12467         self.inner.max_graphics_shader_group_count = max_graphics_shader_group_count;
12468         self
12469     }
max_indirect_sequence_count(mut self, max_indirect_sequence_count: u32) -> Self12470     pub fn max_indirect_sequence_count(mut self, max_indirect_sequence_count: u32) -> Self {
12471         self.inner.max_indirect_sequence_count = max_indirect_sequence_count;
12472         self
12473     }
max_indirect_commands_token_count( mut self, max_indirect_commands_token_count: u32, ) -> Self12474     pub fn max_indirect_commands_token_count(
12475         mut self,
12476         max_indirect_commands_token_count: u32,
12477     ) -> Self {
12478         self.inner.max_indirect_commands_token_count = max_indirect_commands_token_count;
12479         self
12480     }
max_indirect_commands_stream_count( mut self, max_indirect_commands_stream_count: u32, ) -> Self12481     pub fn max_indirect_commands_stream_count(
12482         mut self,
12483         max_indirect_commands_stream_count: u32,
12484     ) -> Self {
12485         self.inner.max_indirect_commands_stream_count = max_indirect_commands_stream_count;
12486         self
12487     }
max_indirect_commands_token_offset( mut self, max_indirect_commands_token_offset: u32, ) -> Self12488     pub fn max_indirect_commands_token_offset(
12489         mut self,
12490         max_indirect_commands_token_offset: u32,
12491     ) -> Self {
12492         self.inner.max_indirect_commands_token_offset = max_indirect_commands_token_offset;
12493         self
12494     }
max_indirect_commands_stream_stride( mut self, max_indirect_commands_stream_stride: u32, ) -> Self12495     pub fn max_indirect_commands_stream_stride(
12496         mut self,
12497         max_indirect_commands_stream_stride: u32,
12498     ) -> Self {
12499         self.inner.max_indirect_commands_stream_stride = max_indirect_commands_stream_stride;
12500         self
12501     }
min_sequences_count_buffer_offset_alignment( mut self, min_sequences_count_buffer_offset_alignment: u32, ) -> Self12502     pub fn min_sequences_count_buffer_offset_alignment(
12503         mut self,
12504         min_sequences_count_buffer_offset_alignment: u32,
12505     ) -> Self {
12506         self.inner.min_sequences_count_buffer_offset_alignment =
12507             min_sequences_count_buffer_offset_alignment;
12508         self
12509     }
min_sequences_index_buffer_offset_alignment( mut self, min_sequences_index_buffer_offset_alignment: u32, ) -> Self12510     pub fn min_sequences_index_buffer_offset_alignment(
12511         mut self,
12512         min_sequences_index_buffer_offset_alignment: u32,
12513     ) -> Self {
12514         self.inner.min_sequences_index_buffer_offset_alignment =
12515             min_sequences_index_buffer_offset_alignment;
12516         self
12517     }
min_indirect_commands_buffer_offset_alignment( mut self, min_indirect_commands_buffer_offset_alignment: u32, ) -> Self12518     pub fn min_indirect_commands_buffer_offset_alignment(
12519         mut self,
12520         min_indirect_commands_buffer_offset_alignment: u32,
12521     ) -> Self {
12522         self.inner.min_indirect_commands_buffer_offset_alignment =
12523             min_indirect_commands_buffer_offset_alignment;
12524         self
12525     }
12526     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12527     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12528     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV12529     pub fn build(self) -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12530         self.inner
12531     }
12532 }
12533 #[repr(C)]
12534 #[derive(Copy, Clone, Debug)]
12535 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>"]
12536 pub struct PhysicalDeviceMultiDrawPropertiesEXT {
12537     pub s_type: StructureType,
12538     pub p_next: *mut c_void,
12539     pub max_multi_draw_count: u32,
12540 }
12541 impl ::std::default::Default for PhysicalDeviceMultiDrawPropertiesEXT {
default() -> PhysicalDeviceMultiDrawPropertiesEXT12542     fn default() -> PhysicalDeviceMultiDrawPropertiesEXT {
12543         PhysicalDeviceMultiDrawPropertiesEXT {
12544             s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
12545             p_next: ::std::ptr::null_mut(),
12546             max_multi_draw_count: u32::default(),
12547         }
12548     }
12549 }
12550 impl PhysicalDeviceMultiDrawPropertiesEXT {
builder<'a>() -> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a>12551     pub fn builder<'a>() -> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12552         PhysicalDeviceMultiDrawPropertiesEXTBuilder {
12553             inner: PhysicalDeviceMultiDrawPropertiesEXT::default(),
12554             marker: ::std::marker::PhantomData,
12555         }
12556     }
12557 }
12558 #[repr(transparent)]
12559 pub struct PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12560     inner: PhysicalDeviceMultiDrawPropertiesEXT,
12561     marker: ::std::marker::PhantomData<&'a ()>,
12562 }
12563 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'_> {}
12564 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiDrawPropertiesEXT {}
12565 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12566     type Target = PhysicalDeviceMultiDrawPropertiesEXT;
deref(&self) -> &Self::Target12567     fn deref(&self) -> &Self::Target {
12568         &self.inner
12569     }
12570 }
12571 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12572     fn deref_mut(&mut self) -> &mut Self::Target {
12573         &mut self.inner
12574     }
12575 }
12576 impl<'a> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
max_multi_draw_count(mut self, max_multi_draw_count: u32) -> Self12577     pub fn max_multi_draw_count(mut self, max_multi_draw_count: u32) -> Self {
12578         self.inner.max_multi_draw_count = max_multi_draw_count;
12579         self
12580     }
12581     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12582     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12583     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiDrawPropertiesEXT12584     pub fn build(self) -> PhysicalDeviceMultiDrawPropertiesEXT {
12585         self.inner
12586     }
12587 }
12588 #[repr(C)]
12589 #[derive(Copy, Clone, Debug)]
12590 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsShaderGroupCreateInfoNV.html>"]
12591 pub struct GraphicsShaderGroupCreateInfoNV {
12592     pub s_type: StructureType,
12593     pub p_next: *const c_void,
12594     pub stage_count: u32,
12595     pub p_stages: *const PipelineShaderStageCreateInfo,
12596     pub p_vertex_input_state: *const PipelineVertexInputStateCreateInfo,
12597     pub p_tessellation_state: *const PipelineTessellationStateCreateInfo,
12598 }
12599 impl ::std::default::Default for GraphicsShaderGroupCreateInfoNV {
default() -> GraphicsShaderGroupCreateInfoNV12600     fn default() -> GraphicsShaderGroupCreateInfoNV {
12601         GraphicsShaderGroupCreateInfoNV {
12602             s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
12603             p_next: ::std::ptr::null(),
12604             stage_count: u32::default(),
12605             p_stages: ::std::ptr::null(),
12606             p_vertex_input_state: ::std::ptr::null(),
12607             p_tessellation_state: ::std::ptr::null(),
12608         }
12609     }
12610 }
12611 impl GraphicsShaderGroupCreateInfoNV {
builder<'a>() -> GraphicsShaderGroupCreateInfoNVBuilder<'a>12612     pub fn builder<'a>() -> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12613         GraphicsShaderGroupCreateInfoNVBuilder {
12614             inner: GraphicsShaderGroupCreateInfoNV::default(),
12615             marker: ::std::marker::PhantomData,
12616         }
12617     }
12618 }
12619 #[repr(transparent)]
12620 pub struct GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12621     inner: GraphicsShaderGroupCreateInfoNV,
12622     marker: ::std::marker::PhantomData<&'a ()>,
12623 }
12624 impl<'a> ::std::ops::Deref for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12625     type Target = GraphicsShaderGroupCreateInfoNV;
deref(&self) -> &Self::Target12626     fn deref(&self) -> &Self::Target {
12627         &self.inner
12628     }
12629 }
12630 impl<'a> ::std::ops::DerefMut for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12631     fn deref_mut(&mut self) -> &mut Self::Target {
12632         &mut self.inner
12633     }
12634 }
12635 impl<'a> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self12636     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
12637         self.inner.stage_count = stages.len() as _;
12638         self.inner.p_stages = stages.as_ptr();
12639         self
12640     }
vertex_input_state( mut self, vertex_input_state: &'a PipelineVertexInputStateCreateInfo, ) -> Self12641     pub fn vertex_input_state(
12642         mut self,
12643         vertex_input_state: &'a PipelineVertexInputStateCreateInfo,
12644     ) -> Self {
12645         self.inner.p_vertex_input_state = vertex_input_state;
12646         self
12647     }
tessellation_state( mut self, tessellation_state: &'a PipelineTessellationStateCreateInfo, ) -> Self12648     pub fn tessellation_state(
12649         mut self,
12650         tessellation_state: &'a PipelineTessellationStateCreateInfo,
12651     ) -> Self {
12652         self.inner.p_tessellation_state = tessellation_state;
12653         self
12654     }
12655     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12656     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12657     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GraphicsShaderGroupCreateInfoNV12658     pub fn build(self) -> GraphicsShaderGroupCreateInfoNV {
12659         self.inner
12660     }
12661 }
12662 #[repr(C)]
12663 #[derive(Copy, Clone, Debug)]
12664 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>"]
12665 pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
12666     pub s_type: StructureType,
12667     pub p_next: *const c_void,
12668     pub group_count: u32,
12669     pub p_groups: *const GraphicsShaderGroupCreateInfoNV,
12670     pub pipeline_count: u32,
12671     pub p_pipelines: *const Pipeline,
12672 }
12673 impl ::std::default::Default for GraphicsPipelineShaderGroupsCreateInfoNV {
default() -> GraphicsPipelineShaderGroupsCreateInfoNV12674     fn default() -> GraphicsPipelineShaderGroupsCreateInfoNV {
12675         GraphicsPipelineShaderGroupsCreateInfoNV {
12676             s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
12677             p_next: ::std::ptr::null(),
12678             group_count: u32::default(),
12679             p_groups: ::std::ptr::null(),
12680             pipeline_count: u32::default(),
12681             p_pipelines: ::std::ptr::null(),
12682         }
12683     }
12684 }
12685 impl GraphicsPipelineShaderGroupsCreateInfoNV {
builder<'a>() -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a>12686     pub fn builder<'a>() -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12687         GraphicsPipelineShaderGroupsCreateInfoNVBuilder {
12688             inner: GraphicsPipelineShaderGroupsCreateInfoNV::default(),
12689             marker: ::std::marker::PhantomData,
12690         }
12691     }
12692 }
12693 #[repr(transparent)]
12694 pub struct GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12695     inner: GraphicsPipelineShaderGroupsCreateInfoNV,
12696     marker: ::std::marker::PhantomData<&'a ()>,
12697 }
12698 unsafe impl ExtendsGraphicsPipelineCreateInfo
12699     for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'_>
12700 {
12701 }
12702 unsafe impl ExtendsGraphicsPipelineCreateInfo for GraphicsPipelineShaderGroupsCreateInfoNV {}
12703 impl<'a> ::std::ops::Deref for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12704     type Target = GraphicsPipelineShaderGroupsCreateInfoNV;
deref(&self) -> &Self::Target12705     fn deref(&self) -> &Self::Target {
12706         &self.inner
12707     }
12708 }
12709 impl<'a> ::std::ops::DerefMut for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12710     fn deref_mut(&mut self) -> &mut Self::Target {
12711         &mut self.inner
12712     }
12713 }
12714 impl<'a> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
groups(mut self, groups: &'a [GraphicsShaderGroupCreateInfoNV]) -> Self12715     pub fn groups(mut self, groups: &'a [GraphicsShaderGroupCreateInfoNV]) -> Self {
12716         self.inner.group_count = groups.len() as _;
12717         self.inner.p_groups = groups.as_ptr();
12718         self
12719     }
pipelines(mut self, pipelines: &'a [Pipeline]) -> Self12720     pub fn pipelines(mut self, pipelines: &'a [Pipeline]) -> Self {
12721         self.inner.pipeline_count = pipelines.len() as _;
12722         self.inner.p_pipelines = pipelines.as_ptr();
12723         self
12724     }
12725     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12726     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12727     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GraphicsPipelineShaderGroupsCreateInfoNV12728     pub fn build(self) -> GraphicsPipelineShaderGroupsCreateInfoNV {
12729         self.inner
12730     }
12731 }
12732 #[repr(C)]
12733 #[derive(Copy, Clone, Default, Debug)]
12734 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindShaderGroupIndirectCommandNV.html>"]
12735 pub struct BindShaderGroupIndirectCommandNV {
12736     pub group_index: u32,
12737 }
12738 impl BindShaderGroupIndirectCommandNV {
builder<'a>() -> BindShaderGroupIndirectCommandNVBuilder<'a>12739     pub fn builder<'a>() -> BindShaderGroupIndirectCommandNVBuilder<'a> {
12740         BindShaderGroupIndirectCommandNVBuilder {
12741             inner: BindShaderGroupIndirectCommandNV::default(),
12742             marker: ::std::marker::PhantomData,
12743         }
12744     }
12745 }
12746 #[repr(transparent)]
12747 pub struct BindShaderGroupIndirectCommandNVBuilder<'a> {
12748     inner: BindShaderGroupIndirectCommandNV,
12749     marker: ::std::marker::PhantomData<&'a ()>,
12750 }
12751 impl<'a> ::std::ops::Deref for BindShaderGroupIndirectCommandNVBuilder<'a> {
12752     type Target = BindShaderGroupIndirectCommandNV;
deref(&self) -> &Self::Target12753     fn deref(&self) -> &Self::Target {
12754         &self.inner
12755     }
12756 }
12757 impl<'a> ::std::ops::DerefMut for BindShaderGroupIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12758     fn deref_mut(&mut self) -> &mut Self::Target {
12759         &mut self.inner
12760     }
12761 }
12762 impl<'a> BindShaderGroupIndirectCommandNVBuilder<'a> {
group_index(mut self, group_index: u32) -> Self12763     pub fn group_index(mut self, group_index: u32) -> Self {
12764         self.inner.group_index = group_index;
12765         self
12766     }
12767     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12768     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12769     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindShaderGroupIndirectCommandNV12770     pub fn build(self) -> BindShaderGroupIndirectCommandNV {
12771         self.inner
12772     }
12773 }
12774 #[repr(C)]
12775 #[derive(Copy, Clone, Default, Debug)]
12776 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindIndexBufferIndirectCommandNV.html>"]
12777 pub struct BindIndexBufferIndirectCommandNV {
12778     pub buffer_address: DeviceAddress,
12779     pub size: u32,
12780     pub index_type: IndexType,
12781 }
12782 impl BindIndexBufferIndirectCommandNV {
builder<'a>() -> BindIndexBufferIndirectCommandNVBuilder<'a>12783     pub fn builder<'a>() -> BindIndexBufferIndirectCommandNVBuilder<'a> {
12784         BindIndexBufferIndirectCommandNVBuilder {
12785             inner: BindIndexBufferIndirectCommandNV::default(),
12786             marker: ::std::marker::PhantomData,
12787         }
12788     }
12789 }
12790 #[repr(transparent)]
12791 pub struct BindIndexBufferIndirectCommandNVBuilder<'a> {
12792     inner: BindIndexBufferIndirectCommandNV,
12793     marker: ::std::marker::PhantomData<&'a ()>,
12794 }
12795 impl<'a> ::std::ops::Deref for BindIndexBufferIndirectCommandNVBuilder<'a> {
12796     type Target = BindIndexBufferIndirectCommandNV;
deref(&self) -> &Self::Target12797     fn deref(&self) -> &Self::Target {
12798         &self.inner
12799     }
12800 }
12801 impl<'a> ::std::ops::DerefMut for BindIndexBufferIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12802     fn deref_mut(&mut self) -> &mut Self::Target {
12803         &mut self.inner
12804     }
12805 }
12806 impl<'a> BindIndexBufferIndirectCommandNVBuilder<'a> {
buffer_address(mut self, buffer_address: DeviceAddress) -> Self12807     pub fn buffer_address(mut self, buffer_address: DeviceAddress) -> Self {
12808         self.inner.buffer_address = buffer_address;
12809         self
12810     }
size(mut self, size: u32) -> Self12811     pub fn size(mut self, size: u32) -> Self {
12812         self.inner.size = size;
12813         self
12814     }
index_type(mut self, index_type: IndexType) -> Self12815     pub fn index_type(mut self, index_type: IndexType) -> Self {
12816         self.inner.index_type = index_type;
12817         self
12818     }
12819     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12820     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12821     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindIndexBufferIndirectCommandNV12822     pub fn build(self) -> BindIndexBufferIndirectCommandNV {
12823         self.inner
12824     }
12825 }
12826 #[repr(C)]
12827 #[derive(Copy, Clone, Default, Debug)]
12828 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindVertexBufferIndirectCommandNV.html>"]
12829 pub struct BindVertexBufferIndirectCommandNV {
12830     pub buffer_address: DeviceAddress,
12831     pub size: u32,
12832     pub stride: u32,
12833 }
12834 impl BindVertexBufferIndirectCommandNV {
builder<'a>() -> BindVertexBufferIndirectCommandNVBuilder<'a>12835     pub fn builder<'a>() -> BindVertexBufferIndirectCommandNVBuilder<'a> {
12836         BindVertexBufferIndirectCommandNVBuilder {
12837             inner: BindVertexBufferIndirectCommandNV::default(),
12838             marker: ::std::marker::PhantomData,
12839         }
12840     }
12841 }
12842 #[repr(transparent)]
12843 pub struct BindVertexBufferIndirectCommandNVBuilder<'a> {
12844     inner: BindVertexBufferIndirectCommandNV,
12845     marker: ::std::marker::PhantomData<&'a ()>,
12846 }
12847 impl<'a> ::std::ops::Deref for BindVertexBufferIndirectCommandNVBuilder<'a> {
12848     type Target = BindVertexBufferIndirectCommandNV;
deref(&self) -> &Self::Target12849     fn deref(&self) -> &Self::Target {
12850         &self.inner
12851     }
12852 }
12853 impl<'a> ::std::ops::DerefMut for BindVertexBufferIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12854     fn deref_mut(&mut self) -> &mut Self::Target {
12855         &mut self.inner
12856     }
12857 }
12858 impl<'a> BindVertexBufferIndirectCommandNVBuilder<'a> {
buffer_address(mut self, buffer_address: DeviceAddress) -> Self12859     pub fn buffer_address(mut self, buffer_address: DeviceAddress) -> Self {
12860         self.inner.buffer_address = buffer_address;
12861         self
12862     }
size(mut self, size: u32) -> Self12863     pub fn size(mut self, size: u32) -> Self {
12864         self.inner.size = size;
12865         self
12866     }
stride(mut self, stride: u32) -> Self12867     pub fn stride(mut self, stride: u32) -> Self {
12868         self.inner.stride = stride;
12869         self
12870     }
12871     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12872     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12873     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindVertexBufferIndirectCommandNV12874     pub fn build(self) -> BindVertexBufferIndirectCommandNV {
12875         self.inner
12876     }
12877 }
12878 #[repr(C)]
12879 #[derive(Copy, Clone, Default, Debug)]
12880 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSetStateFlagsIndirectCommandNV.html>"]
12881 pub struct SetStateFlagsIndirectCommandNV {
12882     pub data: u32,
12883 }
12884 impl SetStateFlagsIndirectCommandNV {
builder<'a>() -> SetStateFlagsIndirectCommandNVBuilder<'a>12885     pub fn builder<'a>() -> SetStateFlagsIndirectCommandNVBuilder<'a> {
12886         SetStateFlagsIndirectCommandNVBuilder {
12887             inner: SetStateFlagsIndirectCommandNV::default(),
12888             marker: ::std::marker::PhantomData,
12889         }
12890     }
12891 }
12892 #[repr(transparent)]
12893 pub struct SetStateFlagsIndirectCommandNVBuilder<'a> {
12894     inner: SetStateFlagsIndirectCommandNV,
12895     marker: ::std::marker::PhantomData<&'a ()>,
12896 }
12897 impl<'a> ::std::ops::Deref for SetStateFlagsIndirectCommandNVBuilder<'a> {
12898     type Target = SetStateFlagsIndirectCommandNV;
deref(&self) -> &Self::Target12899     fn deref(&self) -> &Self::Target {
12900         &self.inner
12901     }
12902 }
12903 impl<'a> ::std::ops::DerefMut for SetStateFlagsIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12904     fn deref_mut(&mut self) -> &mut Self::Target {
12905         &mut self.inner
12906     }
12907 }
12908 impl<'a> SetStateFlagsIndirectCommandNVBuilder<'a> {
data(mut self, data: u32) -> Self12909     pub fn data(mut self, data: u32) -> Self {
12910         self.inner.data = data;
12911         self
12912     }
12913     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12914     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12915     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SetStateFlagsIndirectCommandNV12916     pub fn build(self) -> SetStateFlagsIndirectCommandNV {
12917         self.inner
12918     }
12919 }
12920 #[repr(C)]
12921 #[derive(Copy, Clone, Default, Debug)]
12922 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsStreamNV.html>"]
12923 pub struct IndirectCommandsStreamNV {
12924     pub buffer: Buffer,
12925     pub offset: DeviceSize,
12926 }
12927 impl IndirectCommandsStreamNV {
builder<'a>() -> IndirectCommandsStreamNVBuilder<'a>12928     pub fn builder<'a>() -> IndirectCommandsStreamNVBuilder<'a> {
12929         IndirectCommandsStreamNVBuilder {
12930             inner: IndirectCommandsStreamNV::default(),
12931             marker: ::std::marker::PhantomData,
12932         }
12933     }
12934 }
12935 #[repr(transparent)]
12936 pub struct IndirectCommandsStreamNVBuilder<'a> {
12937     inner: IndirectCommandsStreamNV,
12938     marker: ::std::marker::PhantomData<&'a ()>,
12939 }
12940 impl<'a> ::std::ops::Deref for IndirectCommandsStreamNVBuilder<'a> {
12941     type Target = IndirectCommandsStreamNV;
deref(&self) -> &Self::Target12942     fn deref(&self) -> &Self::Target {
12943         &self.inner
12944     }
12945 }
12946 impl<'a> ::std::ops::DerefMut for IndirectCommandsStreamNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12947     fn deref_mut(&mut self) -> &mut Self::Target {
12948         &mut self.inner
12949     }
12950 }
12951 impl<'a> IndirectCommandsStreamNVBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self12952     pub fn buffer(mut self, buffer: Buffer) -> Self {
12953         self.inner.buffer = buffer;
12954         self
12955     }
offset(mut self, offset: DeviceSize) -> Self12956     pub fn offset(mut self, offset: DeviceSize) -> Self {
12957         self.inner.offset = offset;
12958         self
12959     }
12960     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12961     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12962     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IndirectCommandsStreamNV12963     pub fn build(self) -> IndirectCommandsStreamNV {
12964         self.inner
12965     }
12966 }
12967 #[repr(C)]
12968 #[derive(Copy, Clone, Debug)]
12969 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsLayoutTokenNV.html>"]
12970 pub struct IndirectCommandsLayoutTokenNV {
12971     pub s_type: StructureType,
12972     pub p_next: *const c_void,
12973     pub token_type: IndirectCommandsTokenTypeNV,
12974     pub stream: u32,
12975     pub offset: u32,
12976     pub vertex_binding_unit: u32,
12977     pub vertex_dynamic_stride: Bool32,
12978     pub pushconstant_pipeline_layout: PipelineLayout,
12979     pub pushconstant_shader_stage_flags: ShaderStageFlags,
12980     pub pushconstant_offset: u32,
12981     pub pushconstant_size: u32,
12982     pub indirect_state_flags: IndirectStateFlagsNV,
12983     pub index_type_count: u32,
12984     pub p_index_types: *const IndexType,
12985     pub p_index_type_values: *const u32,
12986 }
12987 impl ::std::default::Default for IndirectCommandsLayoutTokenNV {
default() -> IndirectCommandsLayoutTokenNV12988     fn default() -> IndirectCommandsLayoutTokenNV {
12989         IndirectCommandsLayoutTokenNV {
12990             s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
12991             p_next: ::std::ptr::null(),
12992             token_type: IndirectCommandsTokenTypeNV::default(),
12993             stream: u32::default(),
12994             offset: u32::default(),
12995             vertex_binding_unit: u32::default(),
12996             vertex_dynamic_stride: Bool32::default(),
12997             pushconstant_pipeline_layout: PipelineLayout::default(),
12998             pushconstant_shader_stage_flags: ShaderStageFlags::default(),
12999             pushconstant_offset: u32::default(),
13000             pushconstant_size: u32::default(),
13001             indirect_state_flags: IndirectStateFlagsNV::default(),
13002             index_type_count: u32::default(),
13003             p_index_types: ::std::ptr::null(),
13004             p_index_type_values: ::std::ptr::null(),
13005         }
13006     }
13007 }
13008 impl IndirectCommandsLayoutTokenNV {
builder<'a>() -> IndirectCommandsLayoutTokenNVBuilder<'a>13009     pub fn builder<'a>() -> IndirectCommandsLayoutTokenNVBuilder<'a> {
13010         IndirectCommandsLayoutTokenNVBuilder {
13011             inner: IndirectCommandsLayoutTokenNV::default(),
13012             marker: ::std::marker::PhantomData,
13013         }
13014     }
13015 }
13016 #[repr(transparent)]
13017 pub struct IndirectCommandsLayoutTokenNVBuilder<'a> {
13018     inner: IndirectCommandsLayoutTokenNV,
13019     marker: ::std::marker::PhantomData<&'a ()>,
13020 }
13021 impl<'a> ::std::ops::Deref for IndirectCommandsLayoutTokenNVBuilder<'a> {
13022     type Target = IndirectCommandsLayoutTokenNV;
deref(&self) -> &Self::Target13023     fn deref(&self) -> &Self::Target {
13024         &self.inner
13025     }
13026 }
13027 impl<'a> ::std::ops::DerefMut for IndirectCommandsLayoutTokenNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13028     fn deref_mut(&mut self) -> &mut Self::Target {
13029         &mut self.inner
13030     }
13031 }
13032 impl<'a> IndirectCommandsLayoutTokenNVBuilder<'a> {
token_type(mut self, token_type: IndirectCommandsTokenTypeNV) -> Self13033     pub fn token_type(mut self, token_type: IndirectCommandsTokenTypeNV) -> Self {
13034         self.inner.token_type = token_type;
13035         self
13036     }
stream(mut self, stream: u32) -> Self13037     pub fn stream(mut self, stream: u32) -> Self {
13038         self.inner.stream = stream;
13039         self
13040     }
offset(mut self, offset: u32) -> Self13041     pub fn offset(mut self, offset: u32) -> Self {
13042         self.inner.offset = offset;
13043         self
13044     }
vertex_binding_unit(mut self, vertex_binding_unit: u32) -> Self13045     pub fn vertex_binding_unit(mut self, vertex_binding_unit: u32) -> Self {
13046         self.inner.vertex_binding_unit = vertex_binding_unit;
13047         self
13048     }
vertex_dynamic_stride(mut self, vertex_dynamic_stride: bool) -> Self13049     pub fn vertex_dynamic_stride(mut self, vertex_dynamic_stride: bool) -> Self {
13050         self.inner.vertex_dynamic_stride = vertex_dynamic_stride.into();
13051         self
13052     }
pushconstant_pipeline_layout( mut self, pushconstant_pipeline_layout: PipelineLayout, ) -> Self13053     pub fn pushconstant_pipeline_layout(
13054         mut self,
13055         pushconstant_pipeline_layout: PipelineLayout,
13056     ) -> Self {
13057         self.inner.pushconstant_pipeline_layout = pushconstant_pipeline_layout;
13058         self
13059     }
pushconstant_shader_stage_flags( mut self, pushconstant_shader_stage_flags: ShaderStageFlags, ) -> Self13060     pub fn pushconstant_shader_stage_flags(
13061         mut self,
13062         pushconstant_shader_stage_flags: ShaderStageFlags,
13063     ) -> Self {
13064         self.inner.pushconstant_shader_stage_flags = pushconstant_shader_stage_flags;
13065         self
13066     }
pushconstant_offset(mut self, pushconstant_offset: u32) -> Self13067     pub fn pushconstant_offset(mut self, pushconstant_offset: u32) -> Self {
13068         self.inner.pushconstant_offset = pushconstant_offset;
13069         self
13070     }
pushconstant_size(mut self, pushconstant_size: u32) -> Self13071     pub fn pushconstant_size(mut self, pushconstant_size: u32) -> Self {
13072         self.inner.pushconstant_size = pushconstant_size;
13073         self
13074     }
indirect_state_flags(mut self, indirect_state_flags: IndirectStateFlagsNV) -> Self13075     pub fn indirect_state_flags(mut self, indirect_state_flags: IndirectStateFlagsNV) -> Self {
13076         self.inner.indirect_state_flags = indirect_state_flags;
13077         self
13078     }
index_types(mut self, index_types: &'a [IndexType]) -> Self13079     pub fn index_types(mut self, index_types: &'a [IndexType]) -> Self {
13080         self.inner.index_type_count = index_types.len() as _;
13081         self.inner.p_index_types = index_types.as_ptr();
13082         self
13083     }
index_type_values(mut self, index_type_values: &'a [u32]) -> Self13084     pub fn index_type_values(mut self, index_type_values: &'a [u32]) -> Self {
13085         self.inner.index_type_count = index_type_values.len() as _;
13086         self.inner.p_index_type_values = index_type_values.as_ptr();
13087         self
13088     }
13089     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13090     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13091     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IndirectCommandsLayoutTokenNV13092     pub fn build(self) -> IndirectCommandsLayoutTokenNV {
13093         self.inner
13094     }
13095 }
13096 #[repr(C)]
13097 #[derive(Copy, Clone, Debug)]
13098 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>"]
13099 pub struct IndirectCommandsLayoutCreateInfoNV {
13100     pub s_type: StructureType,
13101     pub p_next: *const c_void,
13102     pub flags: IndirectCommandsLayoutUsageFlagsNV,
13103     pub pipeline_bind_point: PipelineBindPoint,
13104     pub token_count: u32,
13105     pub p_tokens: *const IndirectCommandsLayoutTokenNV,
13106     pub stream_count: u32,
13107     pub p_stream_strides: *const u32,
13108 }
13109 impl ::std::default::Default for IndirectCommandsLayoutCreateInfoNV {
default() -> IndirectCommandsLayoutCreateInfoNV13110     fn default() -> IndirectCommandsLayoutCreateInfoNV {
13111         IndirectCommandsLayoutCreateInfoNV {
13112             s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
13113             p_next: ::std::ptr::null(),
13114             flags: IndirectCommandsLayoutUsageFlagsNV::default(),
13115             pipeline_bind_point: PipelineBindPoint::default(),
13116             token_count: u32::default(),
13117             p_tokens: ::std::ptr::null(),
13118             stream_count: u32::default(),
13119             p_stream_strides: ::std::ptr::null(),
13120         }
13121     }
13122 }
13123 impl IndirectCommandsLayoutCreateInfoNV {
builder<'a>() -> IndirectCommandsLayoutCreateInfoNVBuilder<'a>13124     pub fn builder<'a>() -> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13125         IndirectCommandsLayoutCreateInfoNVBuilder {
13126             inner: IndirectCommandsLayoutCreateInfoNV::default(),
13127             marker: ::std::marker::PhantomData,
13128         }
13129     }
13130 }
13131 #[repr(transparent)]
13132 pub struct IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13133     inner: IndirectCommandsLayoutCreateInfoNV,
13134     marker: ::std::marker::PhantomData<&'a ()>,
13135 }
13136 impl<'a> ::std::ops::Deref for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13137     type Target = IndirectCommandsLayoutCreateInfoNV;
deref(&self) -> &Self::Target13138     fn deref(&self) -> &Self::Target {
13139         &self.inner
13140     }
13141 }
13142 impl<'a> ::std::ops::DerefMut for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13143     fn deref_mut(&mut self) -> &mut Self::Target {
13144         &mut self.inner
13145     }
13146 }
13147 impl<'a> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
flags(mut self, flags: IndirectCommandsLayoutUsageFlagsNV) -> Self13148     pub fn flags(mut self, flags: IndirectCommandsLayoutUsageFlagsNV) -> Self {
13149         self.inner.flags = flags;
13150         self
13151     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self13152     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
13153         self.inner.pipeline_bind_point = pipeline_bind_point;
13154         self
13155     }
tokens(mut self, tokens: &'a [IndirectCommandsLayoutTokenNV]) -> Self13156     pub fn tokens(mut self, tokens: &'a [IndirectCommandsLayoutTokenNV]) -> Self {
13157         self.inner.token_count = tokens.len() as _;
13158         self.inner.p_tokens = tokens.as_ptr();
13159         self
13160     }
stream_strides(mut self, stream_strides: &'a [u32]) -> Self13161     pub fn stream_strides(mut self, stream_strides: &'a [u32]) -> Self {
13162         self.inner.stream_count = stream_strides.len() as _;
13163         self.inner.p_stream_strides = stream_strides.as_ptr();
13164         self
13165     }
13166     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13167     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13168     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IndirectCommandsLayoutCreateInfoNV13169     pub fn build(self) -> IndirectCommandsLayoutCreateInfoNV {
13170         self.inner
13171     }
13172 }
13173 #[repr(C)]
13174 #[derive(Copy, Clone, Debug)]
13175 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeneratedCommandsInfoNV.html>"]
13176 pub struct GeneratedCommandsInfoNV {
13177     pub s_type: StructureType,
13178     pub p_next: *const c_void,
13179     pub pipeline_bind_point: PipelineBindPoint,
13180     pub pipeline: Pipeline,
13181     pub indirect_commands_layout: IndirectCommandsLayoutNV,
13182     pub stream_count: u32,
13183     pub p_streams: *const IndirectCommandsStreamNV,
13184     pub sequences_count: u32,
13185     pub preprocess_buffer: Buffer,
13186     pub preprocess_offset: DeviceSize,
13187     pub preprocess_size: DeviceSize,
13188     pub sequences_count_buffer: Buffer,
13189     pub sequences_count_offset: DeviceSize,
13190     pub sequences_index_buffer: Buffer,
13191     pub sequences_index_offset: DeviceSize,
13192 }
13193 impl ::std::default::Default for GeneratedCommandsInfoNV {
default() -> GeneratedCommandsInfoNV13194     fn default() -> GeneratedCommandsInfoNV {
13195         GeneratedCommandsInfoNV {
13196             s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
13197             p_next: ::std::ptr::null(),
13198             pipeline_bind_point: PipelineBindPoint::default(),
13199             pipeline: Pipeline::default(),
13200             indirect_commands_layout: IndirectCommandsLayoutNV::default(),
13201             stream_count: u32::default(),
13202             p_streams: ::std::ptr::null(),
13203             sequences_count: u32::default(),
13204             preprocess_buffer: Buffer::default(),
13205             preprocess_offset: DeviceSize::default(),
13206             preprocess_size: DeviceSize::default(),
13207             sequences_count_buffer: Buffer::default(),
13208             sequences_count_offset: DeviceSize::default(),
13209             sequences_index_buffer: Buffer::default(),
13210             sequences_index_offset: DeviceSize::default(),
13211         }
13212     }
13213 }
13214 impl GeneratedCommandsInfoNV {
builder<'a>() -> GeneratedCommandsInfoNVBuilder<'a>13215     pub fn builder<'a>() -> GeneratedCommandsInfoNVBuilder<'a> {
13216         GeneratedCommandsInfoNVBuilder {
13217             inner: GeneratedCommandsInfoNV::default(),
13218             marker: ::std::marker::PhantomData,
13219         }
13220     }
13221 }
13222 #[repr(transparent)]
13223 pub struct GeneratedCommandsInfoNVBuilder<'a> {
13224     inner: GeneratedCommandsInfoNV,
13225     marker: ::std::marker::PhantomData<&'a ()>,
13226 }
13227 impl<'a> ::std::ops::Deref for GeneratedCommandsInfoNVBuilder<'a> {
13228     type Target = GeneratedCommandsInfoNV;
deref(&self) -> &Self::Target13229     fn deref(&self) -> &Self::Target {
13230         &self.inner
13231     }
13232 }
13233 impl<'a> ::std::ops::DerefMut for GeneratedCommandsInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13234     fn deref_mut(&mut self) -> &mut Self::Target {
13235         &mut self.inner
13236     }
13237 }
13238 impl<'a> GeneratedCommandsInfoNVBuilder<'a> {
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self13239     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
13240         self.inner.pipeline_bind_point = pipeline_bind_point;
13241         self
13242     }
pipeline(mut self, pipeline: Pipeline) -> Self13243     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
13244         self.inner.pipeline = pipeline;
13245         self
13246     }
indirect_commands_layout( mut self, indirect_commands_layout: IndirectCommandsLayoutNV, ) -> Self13247     pub fn indirect_commands_layout(
13248         mut self,
13249         indirect_commands_layout: IndirectCommandsLayoutNV,
13250     ) -> Self {
13251         self.inner.indirect_commands_layout = indirect_commands_layout;
13252         self
13253     }
streams(mut self, streams: &'a [IndirectCommandsStreamNV]) -> Self13254     pub fn streams(mut self, streams: &'a [IndirectCommandsStreamNV]) -> Self {
13255         self.inner.stream_count = streams.len() as _;
13256         self.inner.p_streams = streams.as_ptr();
13257         self
13258     }
sequences_count(mut self, sequences_count: u32) -> Self13259     pub fn sequences_count(mut self, sequences_count: u32) -> Self {
13260         self.inner.sequences_count = sequences_count;
13261         self
13262     }
preprocess_buffer(mut self, preprocess_buffer: Buffer) -> Self13263     pub fn preprocess_buffer(mut self, preprocess_buffer: Buffer) -> Self {
13264         self.inner.preprocess_buffer = preprocess_buffer;
13265         self
13266     }
preprocess_offset(mut self, preprocess_offset: DeviceSize) -> Self13267     pub fn preprocess_offset(mut self, preprocess_offset: DeviceSize) -> Self {
13268         self.inner.preprocess_offset = preprocess_offset;
13269         self
13270     }
preprocess_size(mut self, preprocess_size: DeviceSize) -> Self13271     pub fn preprocess_size(mut self, preprocess_size: DeviceSize) -> Self {
13272         self.inner.preprocess_size = preprocess_size;
13273         self
13274     }
sequences_count_buffer(mut self, sequences_count_buffer: Buffer) -> Self13275     pub fn sequences_count_buffer(mut self, sequences_count_buffer: Buffer) -> Self {
13276         self.inner.sequences_count_buffer = sequences_count_buffer;
13277         self
13278     }
sequences_count_offset(mut self, sequences_count_offset: DeviceSize) -> Self13279     pub fn sequences_count_offset(mut self, sequences_count_offset: DeviceSize) -> Self {
13280         self.inner.sequences_count_offset = sequences_count_offset;
13281         self
13282     }
sequences_index_buffer(mut self, sequences_index_buffer: Buffer) -> Self13283     pub fn sequences_index_buffer(mut self, sequences_index_buffer: Buffer) -> Self {
13284         self.inner.sequences_index_buffer = sequences_index_buffer;
13285         self
13286     }
sequences_index_offset(mut self, sequences_index_offset: DeviceSize) -> Self13287     pub fn sequences_index_offset(mut self, sequences_index_offset: DeviceSize) -> Self {
13288         self.inner.sequences_index_offset = sequences_index_offset;
13289         self
13290     }
13291     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13292     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13293     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeneratedCommandsInfoNV13294     pub fn build(self) -> GeneratedCommandsInfoNV {
13295         self.inner
13296     }
13297 }
13298 #[repr(C)]
13299 #[derive(Copy, Clone, Debug)]
13300 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>"]
13301 pub struct GeneratedCommandsMemoryRequirementsInfoNV {
13302     pub s_type: StructureType,
13303     pub p_next: *const c_void,
13304     pub pipeline_bind_point: PipelineBindPoint,
13305     pub pipeline: Pipeline,
13306     pub indirect_commands_layout: IndirectCommandsLayoutNV,
13307     pub max_sequences_count: u32,
13308 }
13309 impl ::std::default::Default for GeneratedCommandsMemoryRequirementsInfoNV {
default() -> GeneratedCommandsMemoryRequirementsInfoNV13310     fn default() -> GeneratedCommandsMemoryRequirementsInfoNV {
13311         GeneratedCommandsMemoryRequirementsInfoNV {
13312             s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
13313             p_next: ::std::ptr::null(),
13314             pipeline_bind_point: PipelineBindPoint::default(),
13315             pipeline: Pipeline::default(),
13316             indirect_commands_layout: IndirectCommandsLayoutNV::default(),
13317             max_sequences_count: u32::default(),
13318         }
13319     }
13320 }
13321 impl GeneratedCommandsMemoryRequirementsInfoNV {
builder<'a>() -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a>13322     pub fn builder<'a>() -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13323         GeneratedCommandsMemoryRequirementsInfoNVBuilder {
13324             inner: GeneratedCommandsMemoryRequirementsInfoNV::default(),
13325             marker: ::std::marker::PhantomData,
13326         }
13327     }
13328 }
13329 #[repr(transparent)]
13330 pub struct GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13331     inner: GeneratedCommandsMemoryRequirementsInfoNV,
13332     marker: ::std::marker::PhantomData<&'a ()>,
13333 }
13334 impl<'a> ::std::ops::Deref for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13335     type Target = GeneratedCommandsMemoryRequirementsInfoNV;
deref(&self) -> &Self::Target13336     fn deref(&self) -> &Self::Target {
13337         &self.inner
13338     }
13339 }
13340 impl<'a> ::std::ops::DerefMut for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13341     fn deref_mut(&mut self) -> &mut Self::Target {
13342         &mut self.inner
13343     }
13344 }
13345 impl<'a> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self13346     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
13347         self.inner.pipeline_bind_point = pipeline_bind_point;
13348         self
13349     }
pipeline(mut self, pipeline: Pipeline) -> Self13350     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
13351         self.inner.pipeline = pipeline;
13352         self
13353     }
indirect_commands_layout( mut self, indirect_commands_layout: IndirectCommandsLayoutNV, ) -> Self13354     pub fn indirect_commands_layout(
13355         mut self,
13356         indirect_commands_layout: IndirectCommandsLayoutNV,
13357     ) -> Self {
13358         self.inner.indirect_commands_layout = indirect_commands_layout;
13359         self
13360     }
max_sequences_count(mut self, max_sequences_count: u32) -> Self13361     pub fn max_sequences_count(mut self, max_sequences_count: u32) -> Self {
13362         self.inner.max_sequences_count = max_sequences_count;
13363         self
13364     }
13365     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13366     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13367     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeneratedCommandsMemoryRequirementsInfoNV13368     pub fn build(self) -> GeneratedCommandsMemoryRequirementsInfoNV {
13369         self.inner
13370     }
13371 }
13372 #[repr(C)]
13373 #[derive(Copy, Clone, Debug)]
13374 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFeatures2.html>"]
13375 pub struct PhysicalDeviceFeatures2 {
13376     pub s_type: StructureType,
13377     pub p_next: *mut c_void,
13378     pub features: PhysicalDeviceFeatures,
13379 }
13380 impl ::std::default::Default for PhysicalDeviceFeatures2 {
default() -> PhysicalDeviceFeatures213381     fn default() -> PhysicalDeviceFeatures2 {
13382         PhysicalDeviceFeatures2 {
13383             s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
13384             p_next: ::std::ptr::null_mut(),
13385             features: PhysicalDeviceFeatures::default(),
13386         }
13387     }
13388 }
13389 impl PhysicalDeviceFeatures2 {
builder<'a>() -> PhysicalDeviceFeatures2Builder<'a>13390     pub fn builder<'a>() -> PhysicalDeviceFeatures2Builder<'a> {
13391         PhysicalDeviceFeatures2Builder {
13392             inner: PhysicalDeviceFeatures2::default(),
13393             marker: ::std::marker::PhantomData,
13394         }
13395     }
13396 }
13397 #[repr(transparent)]
13398 pub struct PhysicalDeviceFeatures2Builder<'a> {
13399     inner: PhysicalDeviceFeatures2,
13400     marker: ::std::marker::PhantomData<&'a ()>,
13401 }
13402 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFeatures2Builder<'_> {}
13403 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFeatures2 {}
13404 pub unsafe trait ExtendsPhysicalDeviceFeatures2 {}
13405 impl<'a> ::std::ops::Deref for PhysicalDeviceFeatures2Builder<'a> {
13406     type Target = PhysicalDeviceFeatures2;
deref(&self) -> &Self::Target13407     fn deref(&self) -> &Self::Target {
13408         &self.inner
13409     }
13410 }
13411 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFeatures2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13412     fn deref_mut(&mut self) -> &mut Self::Target {
13413         &mut self.inner
13414     }
13415 }
13416 impl<'a> PhysicalDeviceFeatures2Builder<'a> {
features(mut self, features: PhysicalDeviceFeatures) -> Self13417     pub fn features(mut self, features: PhysicalDeviceFeatures) -> Self {
13418         self.inner.features = features;
13419         self
13420     }
13421     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13422     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13423     #[doc = r" valid extension structs can be pushed into the chain."]
13424     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13425     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceFeatures2>(mut self, next: &'a mut T) -> Self13426     pub fn push_next<T: ExtendsPhysicalDeviceFeatures2>(mut self, next: &'a mut T) -> Self {
13427         unsafe {
13428             let next_ptr = next as *mut T as *mut BaseOutStructure;
13429             let last_next = ptr_chain_iter(next).last().unwrap();
13430             (*last_next).p_next = self.inner.p_next as _;
13431             self.inner.p_next = next_ptr as _;
13432         }
13433         self
13434     }
13435     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13436     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13437     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFeatures213438     pub fn build(self) -> PhysicalDeviceFeatures2 {
13439         self.inner
13440     }
13441 }
13442 #[repr(C)]
13443 #[derive(Copy, Clone, Debug)]
13444 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProperties2.html>"]
13445 pub struct PhysicalDeviceProperties2 {
13446     pub s_type: StructureType,
13447     pub p_next: *mut c_void,
13448     pub properties: PhysicalDeviceProperties,
13449 }
13450 impl ::std::default::Default for PhysicalDeviceProperties2 {
default() -> PhysicalDeviceProperties213451     fn default() -> PhysicalDeviceProperties2 {
13452         PhysicalDeviceProperties2 {
13453             s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
13454             p_next: ::std::ptr::null_mut(),
13455             properties: PhysicalDeviceProperties::default(),
13456         }
13457     }
13458 }
13459 impl PhysicalDeviceProperties2 {
builder<'a>() -> PhysicalDeviceProperties2Builder<'a>13460     pub fn builder<'a>() -> PhysicalDeviceProperties2Builder<'a> {
13461         PhysicalDeviceProperties2Builder {
13462             inner: PhysicalDeviceProperties2::default(),
13463             marker: ::std::marker::PhantomData,
13464         }
13465     }
13466 }
13467 #[repr(transparent)]
13468 pub struct PhysicalDeviceProperties2Builder<'a> {
13469     inner: PhysicalDeviceProperties2,
13470     marker: ::std::marker::PhantomData<&'a ()>,
13471 }
13472 pub unsafe trait ExtendsPhysicalDeviceProperties2 {}
13473 impl<'a> ::std::ops::Deref for PhysicalDeviceProperties2Builder<'a> {
13474     type Target = PhysicalDeviceProperties2;
deref(&self) -> &Self::Target13475     fn deref(&self) -> &Self::Target {
13476         &self.inner
13477     }
13478 }
13479 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13480     fn deref_mut(&mut self) -> &mut Self::Target {
13481         &mut self.inner
13482     }
13483 }
13484 impl<'a> PhysicalDeviceProperties2Builder<'a> {
properties(mut self, properties: PhysicalDeviceProperties) -> Self13485     pub fn properties(mut self, properties: PhysicalDeviceProperties) -> Self {
13486         self.inner.properties = properties;
13487         self
13488     }
13489     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13490     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13491     #[doc = r" valid extension structs can be pushed into the chain."]
13492     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13493     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceProperties2>(mut self, next: &'a mut T) -> Self13494     pub fn push_next<T: ExtendsPhysicalDeviceProperties2>(mut self, next: &'a mut T) -> Self {
13495         unsafe {
13496             let next_ptr = next as *mut T as *mut BaseOutStructure;
13497             let last_next = ptr_chain_iter(next).last().unwrap();
13498             (*last_next).p_next = self.inner.p_next as _;
13499             self.inner.p_next = next_ptr as _;
13500         }
13501         self
13502     }
13503     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13504     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13505     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProperties213506     pub fn build(self) -> PhysicalDeviceProperties2 {
13507         self.inner
13508     }
13509 }
13510 #[repr(C)]
13511 #[derive(Copy, Clone, Debug)]
13512 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatProperties2.html>"]
13513 pub struct FormatProperties2 {
13514     pub s_type: StructureType,
13515     pub p_next: *mut c_void,
13516     pub format_properties: FormatProperties,
13517 }
13518 impl ::std::default::Default for FormatProperties2 {
default() -> FormatProperties213519     fn default() -> FormatProperties2 {
13520         FormatProperties2 {
13521             s_type: StructureType::FORMAT_PROPERTIES_2,
13522             p_next: ::std::ptr::null_mut(),
13523             format_properties: FormatProperties::default(),
13524         }
13525     }
13526 }
13527 impl FormatProperties2 {
builder<'a>() -> FormatProperties2Builder<'a>13528     pub fn builder<'a>() -> FormatProperties2Builder<'a> {
13529         FormatProperties2Builder {
13530             inner: FormatProperties2::default(),
13531             marker: ::std::marker::PhantomData,
13532         }
13533     }
13534 }
13535 #[repr(transparent)]
13536 pub struct FormatProperties2Builder<'a> {
13537     inner: FormatProperties2,
13538     marker: ::std::marker::PhantomData<&'a ()>,
13539 }
13540 pub unsafe trait ExtendsFormatProperties2 {}
13541 impl<'a> ::std::ops::Deref for FormatProperties2Builder<'a> {
13542     type Target = FormatProperties2;
deref(&self) -> &Self::Target13543     fn deref(&self) -> &Self::Target {
13544         &self.inner
13545     }
13546 }
13547 impl<'a> ::std::ops::DerefMut for FormatProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13548     fn deref_mut(&mut self) -> &mut Self::Target {
13549         &mut self.inner
13550     }
13551 }
13552 impl<'a> FormatProperties2Builder<'a> {
format_properties(mut self, format_properties: FormatProperties) -> Self13553     pub fn format_properties(mut self, format_properties: FormatProperties) -> Self {
13554         self.inner.format_properties = format_properties;
13555         self
13556     }
13557     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13558     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13559     #[doc = r" valid extension structs can be pushed into the chain."]
13560     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13561     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsFormatProperties2>(mut self, next: &'a mut T) -> Self13562     pub fn push_next<T: ExtendsFormatProperties2>(mut self, next: &'a mut T) -> Self {
13563         unsafe {
13564             let next_ptr = next as *mut T as *mut BaseOutStructure;
13565             let last_next = ptr_chain_iter(next).last().unwrap();
13566             (*last_next).p_next = self.inner.p_next as _;
13567             self.inner.p_next = next_ptr as _;
13568         }
13569         self
13570     }
13571     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13572     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13573     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FormatProperties213574     pub fn build(self) -> FormatProperties2 {
13575         self.inner
13576     }
13577 }
13578 #[repr(C)]
13579 #[derive(Copy, Clone, Debug)]
13580 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatProperties2.html>"]
13581 pub struct ImageFormatProperties2 {
13582     pub s_type: StructureType,
13583     pub p_next: *mut c_void,
13584     pub image_format_properties: ImageFormatProperties,
13585 }
13586 impl ::std::default::Default for ImageFormatProperties2 {
default() -> ImageFormatProperties213587     fn default() -> ImageFormatProperties2 {
13588         ImageFormatProperties2 {
13589             s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
13590             p_next: ::std::ptr::null_mut(),
13591             image_format_properties: ImageFormatProperties::default(),
13592         }
13593     }
13594 }
13595 impl ImageFormatProperties2 {
builder<'a>() -> ImageFormatProperties2Builder<'a>13596     pub fn builder<'a>() -> ImageFormatProperties2Builder<'a> {
13597         ImageFormatProperties2Builder {
13598             inner: ImageFormatProperties2::default(),
13599             marker: ::std::marker::PhantomData,
13600         }
13601     }
13602 }
13603 #[repr(transparent)]
13604 pub struct ImageFormatProperties2Builder<'a> {
13605     inner: ImageFormatProperties2,
13606     marker: ::std::marker::PhantomData<&'a ()>,
13607 }
13608 pub unsafe trait ExtendsImageFormatProperties2 {}
13609 impl<'a> ::std::ops::Deref for ImageFormatProperties2Builder<'a> {
13610     type Target = ImageFormatProperties2;
deref(&self) -> &Self::Target13611     fn deref(&self) -> &Self::Target {
13612         &self.inner
13613     }
13614 }
13615 impl<'a> ::std::ops::DerefMut for ImageFormatProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13616     fn deref_mut(&mut self) -> &mut Self::Target {
13617         &mut self.inner
13618     }
13619 }
13620 impl<'a> ImageFormatProperties2Builder<'a> {
image_format_properties( mut self, image_format_properties: ImageFormatProperties, ) -> Self13621     pub fn image_format_properties(
13622         mut self,
13623         image_format_properties: ImageFormatProperties,
13624     ) -> Self {
13625         self.inner.image_format_properties = image_format_properties;
13626         self
13627     }
13628     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13629     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13630     #[doc = r" valid extension structs can be pushed into the chain."]
13631     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13632     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageFormatProperties2>(mut self, next: &'a mut T) -> Self13633     pub fn push_next<T: ExtendsImageFormatProperties2>(mut self, next: &'a mut T) -> Self {
13634         unsafe {
13635             let next_ptr = next as *mut T as *mut BaseOutStructure;
13636             let last_next = ptr_chain_iter(next).last().unwrap();
13637             (*last_next).p_next = self.inner.p_next as _;
13638             self.inner.p_next = next_ptr as _;
13639         }
13640         self
13641     }
13642     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13643     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13644     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageFormatProperties213645     pub fn build(self) -> ImageFormatProperties2 {
13646         self.inner
13647     }
13648 }
13649 #[repr(C)]
13650 #[derive(Copy, Clone, Debug)]
13651 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageFormatInfo2.html>"]
13652 pub struct PhysicalDeviceImageFormatInfo2 {
13653     pub s_type: StructureType,
13654     pub p_next: *const c_void,
13655     pub format: Format,
13656     pub ty: ImageType,
13657     pub tiling: ImageTiling,
13658     pub usage: ImageUsageFlags,
13659     pub flags: ImageCreateFlags,
13660 }
13661 impl ::std::default::Default for PhysicalDeviceImageFormatInfo2 {
default() -> PhysicalDeviceImageFormatInfo213662     fn default() -> PhysicalDeviceImageFormatInfo2 {
13663         PhysicalDeviceImageFormatInfo2 {
13664             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
13665             p_next: ::std::ptr::null(),
13666             format: Format::default(),
13667             ty: ImageType::default(),
13668             tiling: ImageTiling::default(),
13669             usage: ImageUsageFlags::default(),
13670             flags: ImageCreateFlags::default(),
13671         }
13672     }
13673 }
13674 impl PhysicalDeviceImageFormatInfo2 {
builder<'a>() -> PhysicalDeviceImageFormatInfo2Builder<'a>13675     pub fn builder<'a>() -> PhysicalDeviceImageFormatInfo2Builder<'a> {
13676         PhysicalDeviceImageFormatInfo2Builder {
13677             inner: PhysicalDeviceImageFormatInfo2::default(),
13678             marker: ::std::marker::PhantomData,
13679         }
13680     }
13681 }
13682 #[repr(transparent)]
13683 pub struct PhysicalDeviceImageFormatInfo2Builder<'a> {
13684     inner: PhysicalDeviceImageFormatInfo2,
13685     marker: ::std::marker::PhantomData<&'a ()>,
13686 }
13687 pub unsafe trait ExtendsPhysicalDeviceImageFormatInfo2 {}
13688 impl<'a> ::std::ops::Deref for PhysicalDeviceImageFormatInfo2Builder<'a> {
13689     type Target = PhysicalDeviceImageFormatInfo2;
deref(&self) -> &Self::Target13690     fn deref(&self) -> &Self::Target {
13691         &self.inner
13692     }
13693 }
13694 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageFormatInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13695     fn deref_mut(&mut self) -> &mut Self::Target {
13696         &mut self.inner
13697     }
13698 }
13699 impl<'a> PhysicalDeviceImageFormatInfo2Builder<'a> {
format(mut self, format: Format) -> Self13700     pub fn format(mut self, format: Format) -> Self {
13701         self.inner.format = format;
13702         self
13703     }
ty(mut self, ty: ImageType) -> Self13704     pub fn ty(mut self, ty: ImageType) -> Self {
13705         self.inner.ty = ty;
13706         self
13707     }
tiling(mut self, tiling: ImageTiling) -> Self13708     pub fn tiling(mut self, tiling: ImageTiling) -> Self {
13709         self.inner.tiling = tiling;
13710         self
13711     }
usage(mut self, usage: ImageUsageFlags) -> Self13712     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
13713         self.inner.usage = usage;
13714         self
13715     }
flags(mut self, flags: ImageCreateFlags) -> Self13716     pub fn flags(mut self, flags: ImageCreateFlags) -> Self {
13717         self.inner.flags = flags;
13718         self
13719     }
13720     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13721     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13722     #[doc = r" valid extension structs can be pushed into the chain."]
13723     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13724     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceImageFormatInfo2>(mut self, next: &'a mut T) -> Self13725     pub fn push_next<T: ExtendsPhysicalDeviceImageFormatInfo2>(mut self, next: &'a mut T) -> Self {
13726         unsafe {
13727             let next_ptr = next as *mut T as *mut BaseOutStructure;
13728             let last_next = ptr_chain_iter(next).last().unwrap();
13729             (*last_next).p_next = self.inner.p_next as _;
13730             self.inner.p_next = next_ptr as _;
13731         }
13732         self
13733     }
13734     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13735     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13736     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageFormatInfo213737     pub fn build(self) -> PhysicalDeviceImageFormatInfo2 {
13738         self.inner
13739     }
13740 }
13741 #[repr(C)]
13742 #[derive(Copy, Clone, Debug)]
13743 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyProperties2.html>"]
13744 pub struct QueueFamilyProperties2 {
13745     pub s_type: StructureType,
13746     pub p_next: *mut c_void,
13747     pub queue_family_properties: QueueFamilyProperties,
13748 }
13749 impl ::std::default::Default for QueueFamilyProperties2 {
default() -> QueueFamilyProperties213750     fn default() -> QueueFamilyProperties2 {
13751         QueueFamilyProperties2 {
13752             s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
13753             p_next: ::std::ptr::null_mut(),
13754             queue_family_properties: QueueFamilyProperties::default(),
13755         }
13756     }
13757 }
13758 impl QueueFamilyProperties2 {
builder<'a>() -> QueueFamilyProperties2Builder<'a>13759     pub fn builder<'a>() -> QueueFamilyProperties2Builder<'a> {
13760         QueueFamilyProperties2Builder {
13761             inner: QueueFamilyProperties2::default(),
13762             marker: ::std::marker::PhantomData,
13763         }
13764     }
13765 }
13766 #[repr(transparent)]
13767 pub struct QueueFamilyProperties2Builder<'a> {
13768     inner: QueueFamilyProperties2,
13769     marker: ::std::marker::PhantomData<&'a ()>,
13770 }
13771 pub unsafe trait ExtendsQueueFamilyProperties2 {}
13772 impl<'a> ::std::ops::Deref for QueueFamilyProperties2Builder<'a> {
13773     type Target = QueueFamilyProperties2;
deref(&self) -> &Self::Target13774     fn deref(&self) -> &Self::Target {
13775         &self.inner
13776     }
13777 }
13778 impl<'a> ::std::ops::DerefMut for QueueFamilyProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13779     fn deref_mut(&mut self) -> &mut Self::Target {
13780         &mut self.inner
13781     }
13782 }
13783 impl<'a> QueueFamilyProperties2Builder<'a> {
queue_family_properties( mut self, queue_family_properties: QueueFamilyProperties, ) -> Self13784     pub fn queue_family_properties(
13785         mut self,
13786         queue_family_properties: QueueFamilyProperties,
13787     ) -> Self {
13788         self.inner.queue_family_properties = queue_family_properties;
13789         self
13790     }
13791     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13792     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13793     #[doc = r" valid extension structs can be pushed into the chain."]
13794     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13795     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsQueueFamilyProperties2>(mut self, next: &'a mut T) -> Self13796     pub fn push_next<T: ExtendsQueueFamilyProperties2>(mut self, next: &'a mut T) -> Self {
13797         unsafe {
13798             let next_ptr = next as *mut T as *mut BaseOutStructure;
13799             let last_next = ptr_chain_iter(next).last().unwrap();
13800             (*last_next).p_next = self.inner.p_next as _;
13801             self.inner.p_next = next_ptr as _;
13802         }
13803         self
13804     }
13805     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13806     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13807     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyProperties213808     pub fn build(self) -> QueueFamilyProperties2 {
13809         self.inner
13810     }
13811 }
13812 #[repr(C)]
13813 #[derive(Copy, Clone, Debug)]
13814 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryProperties2.html>"]
13815 pub struct PhysicalDeviceMemoryProperties2 {
13816     pub s_type: StructureType,
13817     pub p_next: *mut c_void,
13818     pub memory_properties: PhysicalDeviceMemoryProperties,
13819 }
13820 impl ::std::default::Default for PhysicalDeviceMemoryProperties2 {
default() -> PhysicalDeviceMemoryProperties213821     fn default() -> PhysicalDeviceMemoryProperties2 {
13822         PhysicalDeviceMemoryProperties2 {
13823             s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
13824             p_next: ::std::ptr::null_mut(),
13825             memory_properties: PhysicalDeviceMemoryProperties::default(),
13826         }
13827     }
13828 }
13829 impl PhysicalDeviceMemoryProperties2 {
builder<'a>() -> PhysicalDeviceMemoryProperties2Builder<'a>13830     pub fn builder<'a>() -> PhysicalDeviceMemoryProperties2Builder<'a> {
13831         PhysicalDeviceMemoryProperties2Builder {
13832             inner: PhysicalDeviceMemoryProperties2::default(),
13833             marker: ::std::marker::PhantomData,
13834         }
13835     }
13836 }
13837 #[repr(transparent)]
13838 pub struct PhysicalDeviceMemoryProperties2Builder<'a> {
13839     inner: PhysicalDeviceMemoryProperties2,
13840     marker: ::std::marker::PhantomData<&'a ()>,
13841 }
13842 pub unsafe trait ExtendsPhysicalDeviceMemoryProperties2 {}
13843 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryProperties2Builder<'a> {
13844     type Target = PhysicalDeviceMemoryProperties2;
deref(&self) -> &Self::Target13845     fn deref(&self) -> &Self::Target {
13846         &self.inner
13847     }
13848 }
13849 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13850     fn deref_mut(&mut self) -> &mut Self::Target {
13851         &mut self.inner
13852     }
13853 }
13854 impl<'a> PhysicalDeviceMemoryProperties2Builder<'a> {
memory_properties(mut self, memory_properties: PhysicalDeviceMemoryProperties) -> Self13855     pub fn memory_properties(mut self, memory_properties: PhysicalDeviceMemoryProperties) -> Self {
13856         self.inner.memory_properties = memory_properties;
13857         self
13858     }
13859     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13860     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13861     #[doc = r" valid extension structs can be pushed into the chain."]
13862     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13863     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceMemoryProperties2>(mut self, next: &'a mut T) -> Self13864     pub fn push_next<T: ExtendsPhysicalDeviceMemoryProperties2>(mut self, next: &'a mut T) -> Self {
13865         unsafe {
13866             let next_ptr = next as *mut T as *mut BaseOutStructure;
13867             let last_next = ptr_chain_iter(next).last().unwrap();
13868             (*last_next).p_next = self.inner.p_next as _;
13869             self.inner.p_next = next_ptr as _;
13870         }
13871         self
13872     }
13873     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13874     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13875     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryProperties213876     pub fn build(self) -> PhysicalDeviceMemoryProperties2 {
13877         self.inner
13878     }
13879 }
13880 #[repr(C)]
13881 #[derive(Copy, Clone, Debug)]
13882 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatProperties2.html>"]
13883 pub struct SparseImageFormatProperties2 {
13884     pub s_type: StructureType,
13885     pub p_next: *mut c_void,
13886     pub properties: SparseImageFormatProperties,
13887 }
13888 impl ::std::default::Default for SparseImageFormatProperties2 {
default() -> SparseImageFormatProperties213889     fn default() -> SparseImageFormatProperties2 {
13890         SparseImageFormatProperties2 {
13891             s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
13892             p_next: ::std::ptr::null_mut(),
13893             properties: SparseImageFormatProperties::default(),
13894         }
13895     }
13896 }
13897 impl SparseImageFormatProperties2 {
builder<'a>() -> SparseImageFormatProperties2Builder<'a>13898     pub fn builder<'a>() -> SparseImageFormatProperties2Builder<'a> {
13899         SparseImageFormatProperties2Builder {
13900             inner: SparseImageFormatProperties2::default(),
13901             marker: ::std::marker::PhantomData,
13902         }
13903     }
13904 }
13905 #[repr(transparent)]
13906 pub struct SparseImageFormatProperties2Builder<'a> {
13907     inner: SparseImageFormatProperties2,
13908     marker: ::std::marker::PhantomData<&'a ()>,
13909 }
13910 impl<'a> ::std::ops::Deref for SparseImageFormatProperties2Builder<'a> {
13911     type Target = SparseImageFormatProperties2;
deref(&self) -> &Self::Target13912     fn deref(&self) -> &Self::Target {
13913         &self.inner
13914     }
13915 }
13916 impl<'a> ::std::ops::DerefMut for SparseImageFormatProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13917     fn deref_mut(&mut self) -> &mut Self::Target {
13918         &mut self.inner
13919     }
13920 }
13921 impl<'a> SparseImageFormatProperties2Builder<'a> {
properties(mut self, properties: SparseImageFormatProperties) -> Self13922     pub fn properties(mut self, properties: SparseImageFormatProperties) -> Self {
13923         self.inner.properties = properties;
13924         self
13925     }
13926     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13927     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13928     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageFormatProperties213929     pub fn build(self) -> SparseImageFormatProperties2 {
13930         self.inner
13931     }
13932 }
13933 #[repr(C)]
13934 #[derive(Copy, Clone, Debug)]
13935 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>"]
13936 pub struct PhysicalDeviceSparseImageFormatInfo2 {
13937     pub s_type: StructureType,
13938     pub p_next: *const c_void,
13939     pub format: Format,
13940     pub ty: ImageType,
13941     pub samples: SampleCountFlags,
13942     pub usage: ImageUsageFlags,
13943     pub tiling: ImageTiling,
13944 }
13945 impl ::std::default::Default for PhysicalDeviceSparseImageFormatInfo2 {
default() -> PhysicalDeviceSparseImageFormatInfo213946     fn default() -> PhysicalDeviceSparseImageFormatInfo2 {
13947         PhysicalDeviceSparseImageFormatInfo2 {
13948             s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
13949             p_next: ::std::ptr::null(),
13950             format: Format::default(),
13951             ty: ImageType::default(),
13952             samples: SampleCountFlags::default(),
13953             usage: ImageUsageFlags::default(),
13954             tiling: ImageTiling::default(),
13955         }
13956     }
13957 }
13958 impl PhysicalDeviceSparseImageFormatInfo2 {
builder<'a>() -> PhysicalDeviceSparseImageFormatInfo2Builder<'a>13959     pub fn builder<'a>() -> PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13960         PhysicalDeviceSparseImageFormatInfo2Builder {
13961             inner: PhysicalDeviceSparseImageFormatInfo2::default(),
13962             marker: ::std::marker::PhantomData,
13963         }
13964     }
13965 }
13966 #[repr(transparent)]
13967 pub struct PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13968     inner: PhysicalDeviceSparseImageFormatInfo2,
13969     marker: ::std::marker::PhantomData<&'a ()>,
13970 }
13971 impl<'a> ::std::ops::Deref for PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
13972     type Target = PhysicalDeviceSparseImageFormatInfo2;
deref(&self) -> &Self::Target13973     fn deref(&self) -> &Self::Target {
13974         &self.inner
13975     }
13976 }
13977 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13978     fn deref_mut(&mut self) -> &mut Self::Target {
13979         &mut self.inner
13980     }
13981 }
13982 impl<'a> PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
format(mut self, format: Format) -> Self13983     pub fn format(mut self, format: Format) -> Self {
13984         self.inner.format = format;
13985         self
13986     }
ty(mut self, ty: ImageType) -> Self13987     pub fn ty(mut self, ty: ImageType) -> Self {
13988         self.inner.ty = ty;
13989         self
13990     }
samples(mut self, samples: SampleCountFlags) -> Self13991     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
13992         self.inner.samples = samples;
13993         self
13994     }
usage(mut self, usage: ImageUsageFlags) -> Self13995     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
13996         self.inner.usage = usage;
13997         self
13998     }
tiling(mut self, tiling: ImageTiling) -> Self13999     pub fn tiling(mut self, tiling: ImageTiling) -> Self {
14000         self.inner.tiling = tiling;
14001         self
14002     }
14003     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14004     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14005     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSparseImageFormatInfo214006     pub fn build(self) -> PhysicalDeviceSparseImageFormatInfo2 {
14007         self.inner
14008     }
14009 }
14010 #[repr(C)]
14011 #[derive(Copy, Clone, Debug)]
14012 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>"]
14013 pub struct PhysicalDevicePushDescriptorPropertiesKHR {
14014     pub s_type: StructureType,
14015     pub p_next: *mut c_void,
14016     pub max_push_descriptors: u32,
14017 }
14018 impl ::std::default::Default for PhysicalDevicePushDescriptorPropertiesKHR {
default() -> PhysicalDevicePushDescriptorPropertiesKHR14019     fn default() -> PhysicalDevicePushDescriptorPropertiesKHR {
14020         PhysicalDevicePushDescriptorPropertiesKHR {
14021             s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
14022             p_next: ::std::ptr::null_mut(),
14023             max_push_descriptors: u32::default(),
14024         }
14025     }
14026 }
14027 impl PhysicalDevicePushDescriptorPropertiesKHR {
builder<'a>() -> PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a>14028     pub fn builder<'a>() -> PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
14029         PhysicalDevicePushDescriptorPropertiesKHRBuilder {
14030             inner: PhysicalDevicePushDescriptorPropertiesKHR::default(),
14031             marker: ::std::marker::PhantomData,
14032         }
14033     }
14034 }
14035 #[repr(transparent)]
14036 pub struct PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
14037     inner: PhysicalDevicePushDescriptorPropertiesKHR,
14038     marker: ::std::marker::PhantomData<&'a ()>,
14039 }
14040 unsafe impl ExtendsPhysicalDeviceProperties2
14041     for PhysicalDevicePushDescriptorPropertiesKHRBuilder<'_>
14042 {
14043 }
14044 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePushDescriptorPropertiesKHR {}
14045 impl<'a> ::std::ops::Deref for PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
14046     type Target = PhysicalDevicePushDescriptorPropertiesKHR;
deref(&self) -> &Self::Target14047     fn deref(&self) -> &Self::Target {
14048         &self.inner
14049     }
14050 }
14051 impl<'a> ::std::ops::DerefMut for PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14052     fn deref_mut(&mut self) -> &mut Self::Target {
14053         &mut self.inner
14054     }
14055 }
14056 impl<'a> PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
max_push_descriptors(mut self, max_push_descriptors: u32) -> Self14057     pub fn max_push_descriptors(mut self, max_push_descriptors: u32) -> Self {
14058         self.inner.max_push_descriptors = max_push_descriptors;
14059         self
14060     }
14061     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14062     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14063     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePushDescriptorPropertiesKHR14064     pub fn build(self) -> PhysicalDevicePushDescriptorPropertiesKHR {
14065         self.inner
14066     }
14067 }
14068 #[repr(C)]
14069 #[derive(Copy, Clone, Default, Debug)]
14070 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkConformanceVersion.html>"]
14071 pub struct ConformanceVersion {
14072     pub major: u8,
14073     pub minor: u8,
14074     pub subminor: u8,
14075     pub patch: u8,
14076 }
14077 impl ConformanceVersion {
builder<'a>() -> ConformanceVersionBuilder<'a>14078     pub fn builder<'a>() -> ConformanceVersionBuilder<'a> {
14079         ConformanceVersionBuilder {
14080             inner: ConformanceVersion::default(),
14081             marker: ::std::marker::PhantomData,
14082         }
14083     }
14084 }
14085 #[repr(transparent)]
14086 pub struct ConformanceVersionBuilder<'a> {
14087     inner: ConformanceVersion,
14088     marker: ::std::marker::PhantomData<&'a ()>,
14089 }
14090 impl<'a> ::std::ops::Deref for ConformanceVersionBuilder<'a> {
14091     type Target = ConformanceVersion;
deref(&self) -> &Self::Target14092     fn deref(&self) -> &Self::Target {
14093         &self.inner
14094     }
14095 }
14096 impl<'a> ::std::ops::DerefMut for ConformanceVersionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14097     fn deref_mut(&mut self) -> &mut Self::Target {
14098         &mut self.inner
14099     }
14100 }
14101 impl<'a> ConformanceVersionBuilder<'a> {
major(mut self, major: u8) -> Self14102     pub fn major(mut self, major: u8) -> Self {
14103         self.inner.major = major;
14104         self
14105     }
minor(mut self, minor: u8) -> Self14106     pub fn minor(mut self, minor: u8) -> Self {
14107         self.inner.minor = minor;
14108         self
14109     }
subminor(mut self, subminor: u8) -> Self14110     pub fn subminor(mut self, subminor: u8) -> Self {
14111         self.inner.subminor = subminor;
14112         self
14113     }
patch(mut self, patch: u8) -> Self14114     pub fn patch(mut self, patch: u8) -> Self {
14115         self.inner.patch = patch;
14116         self
14117     }
14118     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14119     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14120     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ConformanceVersion14121     pub fn build(self) -> ConformanceVersion {
14122         self.inner
14123     }
14124 }
14125 #[repr(C)]
14126 #[derive(Copy, Clone)]
14127 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDriverProperties.html>"]
14128 pub struct PhysicalDeviceDriverProperties {
14129     pub s_type: StructureType,
14130     pub p_next: *mut c_void,
14131     pub driver_id: DriverId,
14132     pub driver_name: [c_char; MAX_DRIVER_NAME_SIZE],
14133     pub driver_info: [c_char; MAX_DRIVER_INFO_SIZE],
14134     pub conformance_version: ConformanceVersion,
14135 }
14136 impl fmt::Debug for PhysicalDeviceDriverProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result14137     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
14138         fmt.debug_struct("PhysicalDeviceDriverProperties")
14139             .field("s_type", &self.s_type)
14140             .field("p_next", &self.p_next)
14141             .field("driver_id", &self.driver_id)
14142             .field("driver_name", &unsafe {
14143                 ::std::ffi::CStr::from_ptr(self.driver_name.as_ptr() as *const c_char)
14144             })
14145             .field("driver_info", &unsafe {
14146                 ::std::ffi::CStr::from_ptr(self.driver_info.as_ptr() as *const c_char)
14147             })
14148             .field("conformance_version", &self.conformance_version)
14149             .finish()
14150     }
14151 }
14152 impl ::std::default::Default for PhysicalDeviceDriverProperties {
default() -> PhysicalDeviceDriverProperties14153     fn default() -> PhysicalDeviceDriverProperties {
14154         PhysicalDeviceDriverProperties {
14155             s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
14156             p_next: ::std::ptr::null_mut(),
14157             driver_id: DriverId::default(),
14158             driver_name: unsafe { ::std::mem::zeroed() },
14159             driver_info: unsafe { ::std::mem::zeroed() },
14160             conformance_version: ConformanceVersion::default(),
14161         }
14162     }
14163 }
14164 impl PhysicalDeviceDriverProperties {
builder<'a>() -> PhysicalDeviceDriverPropertiesBuilder<'a>14165     pub fn builder<'a>() -> PhysicalDeviceDriverPropertiesBuilder<'a> {
14166         PhysicalDeviceDriverPropertiesBuilder {
14167             inner: PhysicalDeviceDriverProperties::default(),
14168             marker: ::std::marker::PhantomData,
14169         }
14170     }
14171 }
14172 #[repr(transparent)]
14173 pub struct PhysicalDeviceDriverPropertiesBuilder<'a> {
14174     inner: PhysicalDeviceDriverProperties,
14175     marker: ::std::marker::PhantomData<&'a ()>,
14176 }
14177 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDriverPropertiesBuilder<'_> {}
14178 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDriverProperties {}
14179 impl<'a> ::std::ops::Deref for PhysicalDeviceDriverPropertiesBuilder<'a> {
14180     type Target = PhysicalDeviceDriverProperties;
deref(&self) -> &Self::Target14181     fn deref(&self) -> &Self::Target {
14182         &self.inner
14183     }
14184 }
14185 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDriverPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14186     fn deref_mut(&mut self) -> &mut Self::Target {
14187         &mut self.inner
14188     }
14189 }
14190 impl<'a> PhysicalDeviceDriverPropertiesBuilder<'a> {
driver_id(mut self, driver_id: DriverId) -> Self14191     pub fn driver_id(mut self, driver_id: DriverId) -> Self {
14192         self.inner.driver_id = driver_id;
14193         self
14194     }
driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self14195     pub fn driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self {
14196         self.inner.driver_name = driver_name;
14197         self
14198     }
driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self14199     pub fn driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self {
14200         self.inner.driver_info = driver_info;
14201         self
14202     }
conformance_version(mut self, conformance_version: ConformanceVersion) -> Self14203     pub fn conformance_version(mut self, conformance_version: ConformanceVersion) -> Self {
14204         self.inner.conformance_version = conformance_version;
14205         self
14206     }
14207     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14208     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14209     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDriverProperties14210     pub fn build(self) -> PhysicalDeviceDriverProperties {
14211         self.inner
14212     }
14213 }
14214 #[repr(C)]
14215 #[derive(Copy, Clone, Debug)]
14216 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentRegionsKHR.html>"]
14217 pub struct PresentRegionsKHR {
14218     pub s_type: StructureType,
14219     pub p_next: *const c_void,
14220     pub swapchain_count: u32,
14221     pub p_regions: *const PresentRegionKHR,
14222 }
14223 impl ::std::default::Default for PresentRegionsKHR {
default() -> PresentRegionsKHR14224     fn default() -> PresentRegionsKHR {
14225         PresentRegionsKHR {
14226             s_type: StructureType::PRESENT_REGIONS_KHR,
14227             p_next: ::std::ptr::null(),
14228             swapchain_count: u32::default(),
14229             p_regions: ::std::ptr::null(),
14230         }
14231     }
14232 }
14233 impl PresentRegionsKHR {
builder<'a>() -> PresentRegionsKHRBuilder<'a>14234     pub fn builder<'a>() -> PresentRegionsKHRBuilder<'a> {
14235         PresentRegionsKHRBuilder {
14236             inner: PresentRegionsKHR::default(),
14237             marker: ::std::marker::PhantomData,
14238         }
14239     }
14240 }
14241 #[repr(transparent)]
14242 pub struct PresentRegionsKHRBuilder<'a> {
14243     inner: PresentRegionsKHR,
14244     marker: ::std::marker::PhantomData<&'a ()>,
14245 }
14246 unsafe impl ExtendsPresentInfoKHR for PresentRegionsKHRBuilder<'_> {}
14247 unsafe impl ExtendsPresentInfoKHR for PresentRegionsKHR {}
14248 impl<'a> ::std::ops::Deref for PresentRegionsKHRBuilder<'a> {
14249     type Target = PresentRegionsKHR;
deref(&self) -> &Self::Target14250     fn deref(&self) -> &Self::Target {
14251         &self.inner
14252     }
14253 }
14254 impl<'a> ::std::ops::DerefMut for PresentRegionsKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14255     fn deref_mut(&mut self) -> &mut Self::Target {
14256         &mut self.inner
14257     }
14258 }
14259 impl<'a> PresentRegionsKHRBuilder<'a> {
regions(mut self, regions: &'a [PresentRegionKHR]) -> Self14260     pub fn regions(mut self, regions: &'a [PresentRegionKHR]) -> Self {
14261         self.inner.swapchain_count = regions.len() as _;
14262         self.inner.p_regions = regions.as_ptr();
14263         self
14264     }
14265     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14266     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14267     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentRegionsKHR14268     pub fn build(self) -> PresentRegionsKHR {
14269         self.inner
14270     }
14271 }
14272 #[repr(C)]
14273 #[derive(Copy, Clone, Debug)]
14274 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentRegionKHR.html>"]
14275 pub struct PresentRegionKHR {
14276     pub rectangle_count: u32,
14277     pub p_rectangles: *const RectLayerKHR,
14278 }
14279 impl ::std::default::Default for PresentRegionKHR {
default() -> PresentRegionKHR14280     fn default() -> PresentRegionKHR {
14281         PresentRegionKHR {
14282             rectangle_count: u32::default(),
14283             p_rectangles: ::std::ptr::null(),
14284         }
14285     }
14286 }
14287 impl PresentRegionKHR {
builder<'a>() -> PresentRegionKHRBuilder<'a>14288     pub fn builder<'a>() -> PresentRegionKHRBuilder<'a> {
14289         PresentRegionKHRBuilder {
14290             inner: PresentRegionKHR::default(),
14291             marker: ::std::marker::PhantomData,
14292         }
14293     }
14294 }
14295 #[repr(transparent)]
14296 pub struct PresentRegionKHRBuilder<'a> {
14297     inner: PresentRegionKHR,
14298     marker: ::std::marker::PhantomData<&'a ()>,
14299 }
14300 impl<'a> ::std::ops::Deref for PresentRegionKHRBuilder<'a> {
14301     type Target = PresentRegionKHR;
deref(&self) -> &Self::Target14302     fn deref(&self) -> &Self::Target {
14303         &self.inner
14304     }
14305 }
14306 impl<'a> ::std::ops::DerefMut for PresentRegionKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14307     fn deref_mut(&mut self) -> &mut Self::Target {
14308         &mut self.inner
14309     }
14310 }
14311 impl<'a> PresentRegionKHRBuilder<'a> {
rectangles(mut self, rectangles: &'a [RectLayerKHR]) -> Self14312     pub fn rectangles(mut self, rectangles: &'a [RectLayerKHR]) -> Self {
14313         self.inner.rectangle_count = rectangles.len() as _;
14314         self.inner.p_rectangles = rectangles.as_ptr();
14315         self
14316     }
14317     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14318     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14319     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentRegionKHR14320     pub fn build(self) -> PresentRegionKHR {
14321         self.inner
14322     }
14323 }
14324 #[repr(C)]
14325 #[derive(Copy, Clone, Default, Debug)]
14326 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRectLayerKHR.html>"]
14327 pub struct RectLayerKHR {
14328     pub offset: Offset2D,
14329     pub extent: Extent2D,
14330     pub layer: u32,
14331 }
14332 impl RectLayerKHR {
builder<'a>() -> RectLayerKHRBuilder<'a>14333     pub fn builder<'a>() -> RectLayerKHRBuilder<'a> {
14334         RectLayerKHRBuilder {
14335             inner: RectLayerKHR::default(),
14336             marker: ::std::marker::PhantomData,
14337         }
14338     }
14339 }
14340 #[repr(transparent)]
14341 pub struct RectLayerKHRBuilder<'a> {
14342     inner: RectLayerKHR,
14343     marker: ::std::marker::PhantomData<&'a ()>,
14344 }
14345 impl<'a> ::std::ops::Deref for RectLayerKHRBuilder<'a> {
14346     type Target = RectLayerKHR;
deref(&self) -> &Self::Target14347     fn deref(&self) -> &Self::Target {
14348         &self.inner
14349     }
14350 }
14351 impl<'a> ::std::ops::DerefMut for RectLayerKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14352     fn deref_mut(&mut self) -> &mut Self::Target {
14353         &mut self.inner
14354     }
14355 }
14356 impl<'a> RectLayerKHRBuilder<'a> {
offset(mut self, offset: Offset2D) -> Self14357     pub fn offset(mut self, offset: Offset2D) -> Self {
14358         self.inner.offset = offset;
14359         self
14360     }
extent(mut self, extent: Extent2D) -> Self14361     pub fn extent(mut self, extent: Extent2D) -> Self {
14362         self.inner.extent = extent;
14363         self
14364     }
layer(mut self, layer: u32) -> Self14365     pub fn layer(mut self, layer: u32) -> Self {
14366         self.inner.layer = layer;
14367         self
14368     }
14369     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14370     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14371     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RectLayerKHR14372     pub fn build(self) -> RectLayerKHR {
14373         self.inner
14374     }
14375 }
14376 #[repr(C)]
14377 #[derive(Copy, Clone, Debug)]
14378 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVariablePointersFeatures.html>"]
14379 pub struct PhysicalDeviceVariablePointersFeatures {
14380     pub s_type: StructureType,
14381     pub p_next: *mut c_void,
14382     pub variable_pointers_storage_buffer: Bool32,
14383     pub variable_pointers: Bool32,
14384 }
14385 impl ::std::default::Default for PhysicalDeviceVariablePointersFeatures {
default() -> PhysicalDeviceVariablePointersFeatures14386     fn default() -> PhysicalDeviceVariablePointersFeatures {
14387         PhysicalDeviceVariablePointersFeatures {
14388             s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
14389             p_next: ::std::ptr::null_mut(),
14390             variable_pointers_storage_buffer: Bool32::default(),
14391             variable_pointers: Bool32::default(),
14392         }
14393     }
14394 }
14395 impl PhysicalDeviceVariablePointersFeatures {
builder<'a>() -> PhysicalDeviceVariablePointersFeaturesBuilder<'a>14396     pub fn builder<'a>() -> PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14397         PhysicalDeviceVariablePointersFeaturesBuilder {
14398             inner: PhysicalDeviceVariablePointersFeatures::default(),
14399             marker: ::std::marker::PhantomData,
14400         }
14401     }
14402 }
14403 #[repr(transparent)]
14404 pub struct PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14405     inner: PhysicalDeviceVariablePointersFeatures,
14406     marker: ::std::marker::PhantomData<&'a ()>,
14407 }
14408 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVariablePointersFeaturesBuilder<'_> {}
14409 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVariablePointersFeatures {}
14410 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVariablePointersFeaturesBuilder<'_> {}
14411 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVariablePointersFeatures {}
14412 impl<'a> ::std::ops::Deref for PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14413     type Target = PhysicalDeviceVariablePointersFeatures;
deref(&self) -> &Self::Target14414     fn deref(&self) -> &Self::Target {
14415         &self.inner
14416     }
14417 }
14418 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14419     fn deref_mut(&mut self) -> &mut Self::Target {
14420         &mut self.inner
14421     }
14422 }
14423 impl<'a> PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
variable_pointers_storage_buffer( mut self, variable_pointers_storage_buffer: bool, ) -> Self14424     pub fn variable_pointers_storage_buffer(
14425         mut self,
14426         variable_pointers_storage_buffer: bool,
14427     ) -> Self {
14428         self.inner.variable_pointers_storage_buffer = variable_pointers_storage_buffer.into();
14429         self
14430     }
variable_pointers(mut self, variable_pointers: bool) -> Self14431     pub fn variable_pointers(mut self, variable_pointers: bool) -> Self {
14432         self.inner.variable_pointers = variable_pointers.into();
14433         self
14434     }
14435     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14436     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14437     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVariablePointersFeatures14438     pub fn build(self) -> PhysicalDeviceVariablePointersFeatures {
14439         self.inner
14440     }
14441 }
14442 #[repr(C)]
14443 #[derive(Copy, Clone, Default, Debug)]
14444 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryProperties.html>"]
14445 pub struct ExternalMemoryProperties {
14446     pub external_memory_features: ExternalMemoryFeatureFlags,
14447     pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
14448     pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
14449 }
14450 impl ExternalMemoryProperties {
builder<'a>() -> ExternalMemoryPropertiesBuilder<'a>14451     pub fn builder<'a>() -> ExternalMemoryPropertiesBuilder<'a> {
14452         ExternalMemoryPropertiesBuilder {
14453             inner: ExternalMemoryProperties::default(),
14454             marker: ::std::marker::PhantomData,
14455         }
14456     }
14457 }
14458 #[repr(transparent)]
14459 pub struct ExternalMemoryPropertiesBuilder<'a> {
14460     inner: ExternalMemoryProperties,
14461     marker: ::std::marker::PhantomData<&'a ()>,
14462 }
14463 impl<'a> ::std::ops::Deref for ExternalMemoryPropertiesBuilder<'a> {
14464     type Target = ExternalMemoryProperties;
deref(&self) -> &Self::Target14465     fn deref(&self) -> &Self::Target {
14466         &self.inner
14467     }
14468 }
14469 impl<'a> ::std::ops::DerefMut for ExternalMemoryPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14470     fn deref_mut(&mut self) -> &mut Self::Target {
14471         &mut self.inner
14472     }
14473 }
14474 impl<'a> ExternalMemoryPropertiesBuilder<'a> {
external_memory_features( mut self, external_memory_features: ExternalMemoryFeatureFlags, ) -> Self14475     pub fn external_memory_features(
14476         mut self,
14477         external_memory_features: ExternalMemoryFeatureFlags,
14478     ) -> Self {
14479         self.inner.external_memory_features = external_memory_features;
14480         self
14481     }
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlags, ) -> Self14482     pub fn export_from_imported_handle_types(
14483         mut self,
14484         export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
14485     ) -> Self {
14486         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
14487         self
14488     }
compatible_handle_types( mut self, compatible_handle_types: ExternalMemoryHandleTypeFlags, ) -> Self14489     pub fn compatible_handle_types(
14490         mut self,
14491         compatible_handle_types: ExternalMemoryHandleTypeFlags,
14492     ) -> Self {
14493         self.inner.compatible_handle_types = compatible_handle_types;
14494         self
14495     }
14496     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14497     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14498     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryProperties14499     pub fn build(self) -> ExternalMemoryProperties {
14500         self.inner
14501     }
14502 }
14503 #[repr(C)]
14504 #[derive(Copy, Clone, Debug)]
14505 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>"]
14506 pub struct PhysicalDeviceExternalImageFormatInfo {
14507     pub s_type: StructureType,
14508     pub p_next: *const c_void,
14509     pub handle_type: ExternalMemoryHandleTypeFlags,
14510 }
14511 impl ::std::default::Default for PhysicalDeviceExternalImageFormatInfo {
default() -> PhysicalDeviceExternalImageFormatInfo14512     fn default() -> PhysicalDeviceExternalImageFormatInfo {
14513         PhysicalDeviceExternalImageFormatInfo {
14514             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
14515             p_next: ::std::ptr::null(),
14516             handle_type: ExternalMemoryHandleTypeFlags::default(),
14517         }
14518     }
14519 }
14520 impl PhysicalDeviceExternalImageFormatInfo {
builder<'a>() -> PhysicalDeviceExternalImageFormatInfoBuilder<'a>14521     pub fn builder<'a>() -> PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14522         PhysicalDeviceExternalImageFormatInfoBuilder {
14523             inner: PhysicalDeviceExternalImageFormatInfo::default(),
14524             marker: ::std::marker::PhantomData,
14525         }
14526     }
14527 }
14528 #[repr(transparent)]
14529 pub struct PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14530     inner: PhysicalDeviceExternalImageFormatInfo,
14531     marker: ::std::marker::PhantomData<&'a ()>,
14532 }
14533 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2
14534     for PhysicalDeviceExternalImageFormatInfoBuilder<'_>
14535 {
14536 }
14537 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for PhysicalDeviceExternalImageFormatInfo {}
14538 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14539     type Target = PhysicalDeviceExternalImageFormatInfo;
deref(&self) -> &Self::Target14540     fn deref(&self) -> &Self::Target {
14541         &self.inner
14542     }
14543 }
14544 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14545     fn deref_mut(&mut self) -> &mut Self::Target {
14546         &mut self.inner
14547     }
14548 }
14549 impl<'a> PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self14550     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
14551         self.inner.handle_type = handle_type;
14552         self
14553     }
14554     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14555     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14556     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalImageFormatInfo14557     pub fn build(self) -> PhysicalDeviceExternalImageFormatInfo {
14558         self.inner
14559     }
14560 }
14561 #[repr(C)]
14562 #[derive(Copy, Clone, Debug)]
14563 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalImageFormatProperties.html>"]
14564 pub struct ExternalImageFormatProperties {
14565     pub s_type: StructureType,
14566     pub p_next: *mut c_void,
14567     pub external_memory_properties: ExternalMemoryProperties,
14568 }
14569 impl ::std::default::Default for ExternalImageFormatProperties {
default() -> ExternalImageFormatProperties14570     fn default() -> ExternalImageFormatProperties {
14571         ExternalImageFormatProperties {
14572             s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
14573             p_next: ::std::ptr::null_mut(),
14574             external_memory_properties: ExternalMemoryProperties::default(),
14575         }
14576     }
14577 }
14578 impl ExternalImageFormatProperties {
builder<'a>() -> ExternalImageFormatPropertiesBuilder<'a>14579     pub fn builder<'a>() -> ExternalImageFormatPropertiesBuilder<'a> {
14580         ExternalImageFormatPropertiesBuilder {
14581             inner: ExternalImageFormatProperties::default(),
14582             marker: ::std::marker::PhantomData,
14583         }
14584     }
14585 }
14586 #[repr(transparent)]
14587 pub struct ExternalImageFormatPropertiesBuilder<'a> {
14588     inner: ExternalImageFormatProperties,
14589     marker: ::std::marker::PhantomData<&'a ()>,
14590 }
14591 unsafe impl ExtendsImageFormatProperties2 for ExternalImageFormatPropertiesBuilder<'_> {}
14592 unsafe impl ExtendsImageFormatProperties2 for ExternalImageFormatProperties {}
14593 impl<'a> ::std::ops::Deref for ExternalImageFormatPropertiesBuilder<'a> {
14594     type Target = ExternalImageFormatProperties;
deref(&self) -> &Self::Target14595     fn deref(&self) -> &Self::Target {
14596         &self.inner
14597     }
14598 }
14599 impl<'a> ::std::ops::DerefMut for ExternalImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14600     fn deref_mut(&mut self) -> &mut Self::Target {
14601         &mut self.inner
14602     }
14603 }
14604 impl<'a> ExternalImageFormatPropertiesBuilder<'a> {
external_memory_properties( mut self, external_memory_properties: ExternalMemoryProperties, ) -> Self14605     pub fn external_memory_properties(
14606         mut self,
14607         external_memory_properties: ExternalMemoryProperties,
14608     ) -> Self {
14609         self.inner.external_memory_properties = external_memory_properties;
14610         self
14611     }
14612     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14613     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14614     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalImageFormatProperties14615     pub fn build(self) -> ExternalImageFormatProperties {
14616         self.inner
14617     }
14618 }
14619 #[repr(C)]
14620 #[derive(Copy, Clone, Debug)]
14621 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalBufferInfo.html>"]
14622 pub struct PhysicalDeviceExternalBufferInfo {
14623     pub s_type: StructureType,
14624     pub p_next: *const c_void,
14625     pub flags: BufferCreateFlags,
14626     pub usage: BufferUsageFlags,
14627     pub handle_type: ExternalMemoryHandleTypeFlags,
14628 }
14629 impl ::std::default::Default for PhysicalDeviceExternalBufferInfo {
default() -> PhysicalDeviceExternalBufferInfo14630     fn default() -> PhysicalDeviceExternalBufferInfo {
14631         PhysicalDeviceExternalBufferInfo {
14632             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
14633             p_next: ::std::ptr::null(),
14634             flags: BufferCreateFlags::default(),
14635             usage: BufferUsageFlags::default(),
14636             handle_type: ExternalMemoryHandleTypeFlags::default(),
14637         }
14638     }
14639 }
14640 impl PhysicalDeviceExternalBufferInfo {
builder<'a>() -> PhysicalDeviceExternalBufferInfoBuilder<'a>14641     pub fn builder<'a>() -> PhysicalDeviceExternalBufferInfoBuilder<'a> {
14642         PhysicalDeviceExternalBufferInfoBuilder {
14643             inner: PhysicalDeviceExternalBufferInfo::default(),
14644             marker: ::std::marker::PhantomData,
14645         }
14646     }
14647 }
14648 #[repr(transparent)]
14649 pub struct PhysicalDeviceExternalBufferInfoBuilder<'a> {
14650     inner: PhysicalDeviceExternalBufferInfo,
14651     marker: ::std::marker::PhantomData<&'a ()>,
14652 }
14653 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalBufferInfoBuilder<'a> {
14654     type Target = PhysicalDeviceExternalBufferInfo;
deref(&self) -> &Self::Target14655     fn deref(&self) -> &Self::Target {
14656         &self.inner
14657     }
14658 }
14659 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalBufferInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14660     fn deref_mut(&mut self) -> &mut Self::Target {
14661         &mut self.inner
14662     }
14663 }
14664 impl<'a> PhysicalDeviceExternalBufferInfoBuilder<'a> {
flags(mut self, flags: BufferCreateFlags) -> Self14665     pub fn flags(mut self, flags: BufferCreateFlags) -> Self {
14666         self.inner.flags = flags;
14667         self
14668     }
usage(mut self, usage: BufferUsageFlags) -> Self14669     pub fn usage(mut self, usage: BufferUsageFlags) -> Self {
14670         self.inner.usage = usage;
14671         self
14672     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self14673     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
14674         self.inner.handle_type = handle_type;
14675         self
14676     }
14677     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14678     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14679     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalBufferInfo14680     pub fn build(self) -> PhysicalDeviceExternalBufferInfo {
14681         self.inner
14682     }
14683 }
14684 #[repr(C)]
14685 #[derive(Copy, Clone, Debug)]
14686 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalBufferProperties.html>"]
14687 pub struct ExternalBufferProperties {
14688     pub s_type: StructureType,
14689     pub p_next: *mut c_void,
14690     pub external_memory_properties: ExternalMemoryProperties,
14691 }
14692 impl ::std::default::Default for ExternalBufferProperties {
default() -> ExternalBufferProperties14693     fn default() -> ExternalBufferProperties {
14694         ExternalBufferProperties {
14695             s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
14696             p_next: ::std::ptr::null_mut(),
14697             external_memory_properties: ExternalMemoryProperties::default(),
14698         }
14699     }
14700 }
14701 impl ExternalBufferProperties {
builder<'a>() -> ExternalBufferPropertiesBuilder<'a>14702     pub fn builder<'a>() -> ExternalBufferPropertiesBuilder<'a> {
14703         ExternalBufferPropertiesBuilder {
14704             inner: ExternalBufferProperties::default(),
14705             marker: ::std::marker::PhantomData,
14706         }
14707     }
14708 }
14709 #[repr(transparent)]
14710 pub struct ExternalBufferPropertiesBuilder<'a> {
14711     inner: ExternalBufferProperties,
14712     marker: ::std::marker::PhantomData<&'a ()>,
14713 }
14714 impl<'a> ::std::ops::Deref for ExternalBufferPropertiesBuilder<'a> {
14715     type Target = ExternalBufferProperties;
deref(&self) -> &Self::Target14716     fn deref(&self) -> &Self::Target {
14717         &self.inner
14718     }
14719 }
14720 impl<'a> ::std::ops::DerefMut for ExternalBufferPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14721     fn deref_mut(&mut self) -> &mut Self::Target {
14722         &mut self.inner
14723     }
14724 }
14725 impl<'a> ExternalBufferPropertiesBuilder<'a> {
external_memory_properties( mut self, external_memory_properties: ExternalMemoryProperties, ) -> Self14726     pub fn external_memory_properties(
14727         mut self,
14728         external_memory_properties: ExternalMemoryProperties,
14729     ) -> Self {
14730         self.inner.external_memory_properties = external_memory_properties;
14731         self
14732     }
14733     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14734     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14735     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalBufferProperties14736     pub fn build(self) -> ExternalBufferProperties {
14737         self.inner
14738     }
14739 }
14740 #[repr(C)]
14741 #[derive(Copy, Clone, Debug)]
14742 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceIDProperties.html>"]
14743 pub struct PhysicalDeviceIDProperties {
14744     pub s_type: StructureType,
14745     pub p_next: *mut c_void,
14746     pub device_uuid: [u8; UUID_SIZE],
14747     pub driver_uuid: [u8; UUID_SIZE],
14748     pub device_luid: [u8; LUID_SIZE],
14749     pub device_node_mask: u32,
14750     pub device_luid_valid: Bool32,
14751 }
14752 impl ::std::default::Default for PhysicalDeviceIDProperties {
default() -> PhysicalDeviceIDProperties14753     fn default() -> PhysicalDeviceIDProperties {
14754         PhysicalDeviceIDProperties {
14755             s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
14756             p_next: ::std::ptr::null_mut(),
14757             device_uuid: unsafe { ::std::mem::zeroed() },
14758             driver_uuid: unsafe { ::std::mem::zeroed() },
14759             device_luid: unsafe { ::std::mem::zeroed() },
14760             device_node_mask: u32::default(),
14761             device_luid_valid: Bool32::default(),
14762         }
14763     }
14764 }
14765 impl PhysicalDeviceIDProperties {
builder<'a>() -> PhysicalDeviceIDPropertiesBuilder<'a>14766     pub fn builder<'a>() -> PhysicalDeviceIDPropertiesBuilder<'a> {
14767         PhysicalDeviceIDPropertiesBuilder {
14768             inner: PhysicalDeviceIDProperties::default(),
14769             marker: ::std::marker::PhantomData,
14770         }
14771     }
14772 }
14773 #[repr(transparent)]
14774 pub struct PhysicalDeviceIDPropertiesBuilder<'a> {
14775     inner: PhysicalDeviceIDProperties,
14776     marker: ::std::marker::PhantomData<&'a ()>,
14777 }
14778 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceIDPropertiesBuilder<'_> {}
14779 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceIDProperties {}
14780 impl<'a> ::std::ops::Deref for PhysicalDeviceIDPropertiesBuilder<'a> {
14781     type Target = PhysicalDeviceIDProperties;
deref(&self) -> &Self::Target14782     fn deref(&self) -> &Self::Target {
14783         &self.inner
14784     }
14785 }
14786 impl<'a> ::std::ops::DerefMut for PhysicalDeviceIDPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14787     fn deref_mut(&mut self) -> &mut Self::Target {
14788         &mut self.inner
14789     }
14790 }
14791 impl<'a> PhysicalDeviceIDPropertiesBuilder<'a> {
device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self14792     pub fn device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self {
14793         self.inner.device_uuid = device_uuid;
14794         self
14795     }
driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self14796     pub fn driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self {
14797         self.inner.driver_uuid = driver_uuid;
14798         self
14799     }
device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self14800     pub fn device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self {
14801         self.inner.device_luid = device_luid;
14802         self
14803     }
device_node_mask(mut self, device_node_mask: u32) -> Self14804     pub fn device_node_mask(mut self, device_node_mask: u32) -> Self {
14805         self.inner.device_node_mask = device_node_mask;
14806         self
14807     }
device_luid_valid(mut self, device_luid_valid: bool) -> Self14808     pub fn device_luid_valid(mut self, device_luid_valid: bool) -> Self {
14809         self.inner.device_luid_valid = device_luid_valid.into();
14810         self
14811     }
14812     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14813     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14814     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceIDProperties14815     pub fn build(self) -> PhysicalDeviceIDProperties {
14816         self.inner
14817     }
14818 }
14819 #[repr(C)]
14820 #[derive(Copy, Clone, Debug)]
14821 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryImageCreateInfo.html>"]
14822 pub struct ExternalMemoryImageCreateInfo {
14823     pub s_type: StructureType,
14824     pub p_next: *const c_void,
14825     pub handle_types: ExternalMemoryHandleTypeFlags,
14826 }
14827 impl ::std::default::Default for ExternalMemoryImageCreateInfo {
default() -> ExternalMemoryImageCreateInfo14828     fn default() -> ExternalMemoryImageCreateInfo {
14829         ExternalMemoryImageCreateInfo {
14830             s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
14831             p_next: ::std::ptr::null(),
14832             handle_types: ExternalMemoryHandleTypeFlags::default(),
14833         }
14834     }
14835 }
14836 impl ExternalMemoryImageCreateInfo {
builder<'a>() -> ExternalMemoryImageCreateInfoBuilder<'a>14837     pub fn builder<'a>() -> ExternalMemoryImageCreateInfoBuilder<'a> {
14838         ExternalMemoryImageCreateInfoBuilder {
14839             inner: ExternalMemoryImageCreateInfo::default(),
14840             marker: ::std::marker::PhantomData,
14841         }
14842     }
14843 }
14844 #[repr(transparent)]
14845 pub struct ExternalMemoryImageCreateInfoBuilder<'a> {
14846     inner: ExternalMemoryImageCreateInfo,
14847     marker: ::std::marker::PhantomData<&'a ()>,
14848 }
14849 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfoBuilder<'_> {}
14850 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfo {}
14851 impl<'a> ::std::ops::Deref for ExternalMemoryImageCreateInfoBuilder<'a> {
14852     type Target = ExternalMemoryImageCreateInfo;
deref(&self) -> &Self::Target14853     fn deref(&self) -> &Self::Target {
14854         &self.inner
14855     }
14856 }
14857 impl<'a> ::std::ops::DerefMut for ExternalMemoryImageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14858     fn deref_mut(&mut self) -> &mut Self::Target {
14859         &mut self.inner
14860     }
14861 }
14862 impl<'a> ExternalMemoryImageCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self14863     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self {
14864         self.inner.handle_types = handle_types;
14865         self
14866     }
14867     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14868     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14869     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryImageCreateInfo14870     pub fn build(self) -> ExternalMemoryImageCreateInfo {
14871         self.inner
14872     }
14873 }
14874 #[repr(C)]
14875 #[derive(Copy, Clone, Debug)]
14876 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryBufferCreateInfo.html>"]
14877 pub struct ExternalMemoryBufferCreateInfo {
14878     pub s_type: StructureType,
14879     pub p_next: *const c_void,
14880     pub handle_types: ExternalMemoryHandleTypeFlags,
14881 }
14882 impl ::std::default::Default for ExternalMemoryBufferCreateInfo {
default() -> ExternalMemoryBufferCreateInfo14883     fn default() -> ExternalMemoryBufferCreateInfo {
14884         ExternalMemoryBufferCreateInfo {
14885             s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
14886             p_next: ::std::ptr::null(),
14887             handle_types: ExternalMemoryHandleTypeFlags::default(),
14888         }
14889     }
14890 }
14891 impl ExternalMemoryBufferCreateInfo {
builder<'a>() -> ExternalMemoryBufferCreateInfoBuilder<'a>14892     pub fn builder<'a>() -> ExternalMemoryBufferCreateInfoBuilder<'a> {
14893         ExternalMemoryBufferCreateInfoBuilder {
14894             inner: ExternalMemoryBufferCreateInfo::default(),
14895             marker: ::std::marker::PhantomData,
14896         }
14897     }
14898 }
14899 #[repr(transparent)]
14900 pub struct ExternalMemoryBufferCreateInfoBuilder<'a> {
14901     inner: ExternalMemoryBufferCreateInfo,
14902     marker: ::std::marker::PhantomData<&'a ()>,
14903 }
14904 unsafe impl ExtendsBufferCreateInfo for ExternalMemoryBufferCreateInfoBuilder<'_> {}
14905 unsafe impl ExtendsBufferCreateInfo for ExternalMemoryBufferCreateInfo {}
14906 impl<'a> ::std::ops::Deref for ExternalMemoryBufferCreateInfoBuilder<'a> {
14907     type Target = ExternalMemoryBufferCreateInfo;
deref(&self) -> &Self::Target14908     fn deref(&self) -> &Self::Target {
14909         &self.inner
14910     }
14911 }
14912 impl<'a> ::std::ops::DerefMut for ExternalMemoryBufferCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14913     fn deref_mut(&mut self) -> &mut Self::Target {
14914         &mut self.inner
14915     }
14916 }
14917 impl<'a> ExternalMemoryBufferCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self14918     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self {
14919         self.inner.handle_types = handle_types;
14920         self
14921     }
14922     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14923     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14924     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryBufferCreateInfo14925     pub fn build(self) -> ExternalMemoryBufferCreateInfo {
14926         self.inner
14927     }
14928 }
14929 #[repr(C)]
14930 #[derive(Copy, Clone, Debug)]
14931 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryAllocateInfo.html>"]
14932 pub struct ExportMemoryAllocateInfo {
14933     pub s_type: StructureType,
14934     pub p_next: *const c_void,
14935     pub handle_types: ExternalMemoryHandleTypeFlags,
14936 }
14937 impl ::std::default::Default for ExportMemoryAllocateInfo {
default() -> ExportMemoryAllocateInfo14938     fn default() -> ExportMemoryAllocateInfo {
14939         ExportMemoryAllocateInfo {
14940             s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
14941             p_next: ::std::ptr::null(),
14942             handle_types: ExternalMemoryHandleTypeFlags::default(),
14943         }
14944     }
14945 }
14946 impl ExportMemoryAllocateInfo {
builder<'a>() -> ExportMemoryAllocateInfoBuilder<'a>14947     pub fn builder<'a>() -> ExportMemoryAllocateInfoBuilder<'a> {
14948         ExportMemoryAllocateInfoBuilder {
14949             inner: ExportMemoryAllocateInfo::default(),
14950             marker: ::std::marker::PhantomData,
14951         }
14952     }
14953 }
14954 #[repr(transparent)]
14955 pub struct ExportMemoryAllocateInfoBuilder<'a> {
14956     inner: ExportMemoryAllocateInfo,
14957     marker: ::std::marker::PhantomData<&'a ()>,
14958 }
14959 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfoBuilder<'_> {}
14960 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfo {}
14961 impl<'a> ::std::ops::Deref for ExportMemoryAllocateInfoBuilder<'a> {
14962     type Target = ExportMemoryAllocateInfo;
deref(&self) -> &Self::Target14963     fn deref(&self) -> &Self::Target {
14964         &self.inner
14965     }
14966 }
14967 impl<'a> ::std::ops::DerefMut for ExportMemoryAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14968     fn deref_mut(&mut self) -> &mut Self::Target {
14969         &mut self.inner
14970     }
14971 }
14972 impl<'a> ExportMemoryAllocateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self14973     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self {
14974         self.inner.handle_types = handle_types;
14975         self
14976     }
14977     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14978     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14979     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryAllocateInfo14980     pub fn build(self) -> ExportMemoryAllocateInfo {
14981         self.inner
14982     }
14983 }
14984 #[repr(C)]
14985 #[derive(Copy, Clone, Debug)]
14986 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryWin32HandleInfoKHR.html>"]
14987 pub struct ImportMemoryWin32HandleInfoKHR {
14988     pub s_type: StructureType,
14989     pub p_next: *const c_void,
14990     pub handle_type: ExternalMemoryHandleTypeFlags,
14991     pub handle: HANDLE,
14992     pub name: LPCWSTR,
14993 }
14994 impl ::std::default::Default for ImportMemoryWin32HandleInfoKHR {
default() -> ImportMemoryWin32HandleInfoKHR14995     fn default() -> ImportMemoryWin32HandleInfoKHR {
14996         ImportMemoryWin32HandleInfoKHR {
14997             s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
14998             p_next: ::std::ptr::null(),
14999             handle_type: ExternalMemoryHandleTypeFlags::default(),
15000             handle: unsafe { ::std::mem::zeroed() },
15001             name: unsafe { ::std::mem::zeroed() },
15002         }
15003     }
15004 }
15005 impl ImportMemoryWin32HandleInfoKHR {
builder<'a>() -> ImportMemoryWin32HandleInfoKHRBuilder<'a>15006     pub fn builder<'a>() -> ImportMemoryWin32HandleInfoKHRBuilder<'a> {
15007         ImportMemoryWin32HandleInfoKHRBuilder {
15008             inner: ImportMemoryWin32HandleInfoKHR::default(),
15009             marker: ::std::marker::PhantomData,
15010         }
15011     }
15012 }
15013 #[repr(transparent)]
15014 pub struct ImportMemoryWin32HandleInfoKHRBuilder<'a> {
15015     inner: ImportMemoryWin32HandleInfoKHR,
15016     marker: ::std::marker::PhantomData<&'a ()>,
15017 }
15018 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoKHRBuilder<'_> {}
15019 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoKHR {}
15020 impl<'a> ::std::ops::Deref for ImportMemoryWin32HandleInfoKHRBuilder<'a> {
15021     type Target = ImportMemoryWin32HandleInfoKHR;
deref(&self) -> &Self::Target15022     fn deref(&self) -> &Self::Target {
15023         &self.inner
15024     }
15025 }
15026 impl<'a> ::std::ops::DerefMut for ImportMemoryWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15027     fn deref_mut(&mut self) -> &mut Self::Target {
15028         &mut self.inner
15029     }
15030 }
15031 impl<'a> ImportMemoryWin32HandleInfoKHRBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15032     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15033         self.inner.handle_type = handle_type;
15034         self
15035     }
handle(mut self, handle: HANDLE) -> Self15036     pub fn handle(mut self, handle: HANDLE) -> Self {
15037         self.inner.handle = handle;
15038         self
15039     }
name(mut self, name: LPCWSTR) -> Self15040     pub fn name(mut self, name: LPCWSTR) -> Self {
15041         self.inner.name = name;
15042         self
15043     }
15044     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15045     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15046     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryWin32HandleInfoKHR15047     pub fn build(self) -> ImportMemoryWin32HandleInfoKHR {
15048         self.inner
15049     }
15050 }
15051 #[repr(C)]
15052 #[derive(Copy, Clone, Debug)]
15053 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryWin32HandleInfoKHR.html>"]
15054 pub struct ExportMemoryWin32HandleInfoKHR {
15055     pub s_type: StructureType,
15056     pub p_next: *const c_void,
15057     pub p_attributes: *const SECURITY_ATTRIBUTES,
15058     pub dw_access: DWORD,
15059     pub name: LPCWSTR,
15060 }
15061 impl ::std::default::Default for ExportMemoryWin32HandleInfoKHR {
default() -> ExportMemoryWin32HandleInfoKHR15062     fn default() -> ExportMemoryWin32HandleInfoKHR {
15063         ExportMemoryWin32HandleInfoKHR {
15064             s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
15065             p_next: ::std::ptr::null(),
15066             p_attributes: ::std::ptr::null(),
15067             dw_access: DWORD::default(),
15068             name: unsafe { ::std::mem::zeroed() },
15069         }
15070     }
15071 }
15072 impl ExportMemoryWin32HandleInfoKHR {
builder<'a>() -> ExportMemoryWin32HandleInfoKHRBuilder<'a>15073     pub fn builder<'a>() -> ExportMemoryWin32HandleInfoKHRBuilder<'a> {
15074         ExportMemoryWin32HandleInfoKHRBuilder {
15075             inner: ExportMemoryWin32HandleInfoKHR::default(),
15076             marker: ::std::marker::PhantomData,
15077         }
15078     }
15079 }
15080 #[repr(transparent)]
15081 pub struct ExportMemoryWin32HandleInfoKHRBuilder<'a> {
15082     inner: ExportMemoryWin32HandleInfoKHR,
15083     marker: ::std::marker::PhantomData<&'a ()>,
15084 }
15085 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoKHRBuilder<'_> {}
15086 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoKHR {}
15087 impl<'a> ::std::ops::Deref for ExportMemoryWin32HandleInfoKHRBuilder<'a> {
15088     type Target = ExportMemoryWin32HandleInfoKHR;
deref(&self) -> &Self::Target15089     fn deref(&self) -> &Self::Target {
15090         &self.inner
15091     }
15092 }
15093 impl<'a> ::std::ops::DerefMut for ExportMemoryWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15094     fn deref_mut(&mut self) -> &mut Self::Target {
15095         &mut self.inner
15096     }
15097 }
15098 impl<'a> ExportMemoryWin32HandleInfoKHRBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self15099     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
15100         self.inner.p_attributes = attributes;
15101         self
15102     }
dw_access(mut self, dw_access: DWORD) -> Self15103     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
15104         self.inner.dw_access = dw_access;
15105         self
15106     }
name(mut self, name: LPCWSTR) -> Self15107     pub fn name(mut self, name: LPCWSTR) -> Self {
15108         self.inner.name = name;
15109         self
15110     }
15111     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15112     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15113     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryWin32HandleInfoKHR15114     pub fn build(self) -> ExportMemoryWin32HandleInfoKHR {
15115         self.inner
15116     }
15117 }
15118 #[repr(C)]
15119 #[derive(Copy, Clone, Debug)]
15120 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>"]
15121 pub struct ImportMemoryZirconHandleInfoFUCHSIA {
15122     pub s_type: StructureType,
15123     pub p_next: *const c_void,
15124     pub handle_type: ExternalMemoryHandleTypeFlags,
15125     pub handle: zx_handle_t,
15126 }
15127 impl ::std::default::Default for ImportMemoryZirconHandleInfoFUCHSIA {
default() -> ImportMemoryZirconHandleInfoFUCHSIA15128     fn default() -> ImportMemoryZirconHandleInfoFUCHSIA {
15129         ImportMemoryZirconHandleInfoFUCHSIA {
15130             s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
15131             p_next: ::std::ptr::null(),
15132             handle_type: ExternalMemoryHandleTypeFlags::default(),
15133             handle: zx_handle_t::default(),
15134         }
15135     }
15136 }
15137 impl ImportMemoryZirconHandleInfoFUCHSIA {
builder<'a>() -> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a>15138     pub fn builder<'a>() -> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
15139         ImportMemoryZirconHandleInfoFUCHSIABuilder {
15140             inner: ImportMemoryZirconHandleInfoFUCHSIA::default(),
15141             marker: ::std::marker::PhantomData,
15142         }
15143     }
15144 }
15145 #[repr(transparent)]
15146 pub struct ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
15147     inner: ImportMemoryZirconHandleInfoFUCHSIA,
15148     marker: ::std::marker::PhantomData<&'a ()>,
15149 }
15150 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryZirconHandleInfoFUCHSIABuilder<'_> {}
15151 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryZirconHandleInfoFUCHSIA {}
15152 impl<'a> ::std::ops::Deref for ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
15153     type Target = ImportMemoryZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target15154     fn deref(&self) -> &Self::Target {
15155         &self.inner
15156     }
15157 }
15158 impl<'a> ::std::ops::DerefMut for ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15159     fn deref_mut(&mut self) -> &mut Self::Target {
15160         &mut self.inner
15161     }
15162 }
15163 impl<'a> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15164     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15165         self.inner.handle_type = handle_type;
15166         self
15167     }
handle(mut self, handle: zx_handle_t) -> Self15168     pub fn handle(mut self, handle: zx_handle_t) -> Self {
15169         self.inner.handle = handle;
15170         self
15171     }
15172     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15173     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15174     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryZirconHandleInfoFUCHSIA15175     pub fn build(self) -> ImportMemoryZirconHandleInfoFUCHSIA {
15176         self.inner
15177     }
15178 }
15179 #[repr(C)]
15180 #[derive(Copy, Clone, Debug)]
15181 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>"]
15182 pub struct MemoryZirconHandlePropertiesFUCHSIA {
15183     pub s_type: StructureType,
15184     pub p_next: *mut c_void,
15185     pub memory_type_bits: u32,
15186 }
15187 impl ::std::default::Default for MemoryZirconHandlePropertiesFUCHSIA {
default() -> MemoryZirconHandlePropertiesFUCHSIA15188     fn default() -> MemoryZirconHandlePropertiesFUCHSIA {
15189         MemoryZirconHandlePropertiesFUCHSIA {
15190             s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
15191             p_next: ::std::ptr::null_mut(),
15192             memory_type_bits: u32::default(),
15193         }
15194     }
15195 }
15196 impl MemoryZirconHandlePropertiesFUCHSIA {
builder<'a>() -> MemoryZirconHandlePropertiesFUCHSIABuilder<'a>15197     pub fn builder<'a>() -> MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
15198         MemoryZirconHandlePropertiesFUCHSIABuilder {
15199             inner: MemoryZirconHandlePropertiesFUCHSIA::default(),
15200             marker: ::std::marker::PhantomData,
15201         }
15202     }
15203 }
15204 #[repr(transparent)]
15205 pub struct MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
15206     inner: MemoryZirconHandlePropertiesFUCHSIA,
15207     marker: ::std::marker::PhantomData<&'a ()>,
15208 }
15209 impl<'a> ::std::ops::Deref for MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
15210     type Target = MemoryZirconHandlePropertiesFUCHSIA;
deref(&self) -> &Self::Target15211     fn deref(&self) -> &Self::Target {
15212         &self.inner
15213     }
15214 }
15215 impl<'a> ::std::ops::DerefMut for MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15216     fn deref_mut(&mut self) -> &mut Self::Target {
15217         &mut self.inner
15218     }
15219 }
15220 impl<'a> MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self15221     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
15222         self.inner.memory_type_bits = memory_type_bits;
15223         self
15224     }
15225     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15226     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15227     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryZirconHandlePropertiesFUCHSIA15228     pub fn build(self) -> MemoryZirconHandlePropertiesFUCHSIA {
15229         self.inner
15230     }
15231 }
15232 #[repr(C)]
15233 #[derive(Copy, Clone, Debug)]
15234 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>"]
15235 pub struct MemoryGetZirconHandleInfoFUCHSIA {
15236     pub s_type: StructureType,
15237     pub p_next: *const c_void,
15238     pub memory: DeviceMemory,
15239     pub handle_type: ExternalMemoryHandleTypeFlags,
15240 }
15241 impl ::std::default::Default for MemoryGetZirconHandleInfoFUCHSIA {
default() -> MemoryGetZirconHandleInfoFUCHSIA15242     fn default() -> MemoryGetZirconHandleInfoFUCHSIA {
15243         MemoryGetZirconHandleInfoFUCHSIA {
15244             s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
15245             p_next: ::std::ptr::null(),
15246             memory: DeviceMemory::default(),
15247             handle_type: ExternalMemoryHandleTypeFlags::default(),
15248         }
15249     }
15250 }
15251 impl MemoryGetZirconHandleInfoFUCHSIA {
builder<'a>() -> MemoryGetZirconHandleInfoFUCHSIABuilder<'a>15252     pub fn builder<'a>() -> MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
15253         MemoryGetZirconHandleInfoFUCHSIABuilder {
15254             inner: MemoryGetZirconHandleInfoFUCHSIA::default(),
15255             marker: ::std::marker::PhantomData,
15256         }
15257     }
15258 }
15259 #[repr(transparent)]
15260 pub struct MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
15261     inner: MemoryGetZirconHandleInfoFUCHSIA,
15262     marker: ::std::marker::PhantomData<&'a ()>,
15263 }
15264 impl<'a> ::std::ops::Deref for MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
15265     type Target = MemoryGetZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target15266     fn deref(&self) -> &Self::Target {
15267         &self.inner
15268     }
15269 }
15270 impl<'a> ::std::ops::DerefMut for MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15271     fn deref_mut(&mut self) -> &mut Self::Target {
15272         &mut self.inner
15273     }
15274 }
15275 impl<'a> MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self15276     pub fn memory(mut self, memory: DeviceMemory) -> Self {
15277         self.inner.memory = memory;
15278         self
15279     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15280     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15281         self.inner.handle_type = handle_type;
15282         self
15283     }
15284     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15285     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15286     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetZirconHandleInfoFUCHSIA15287     pub fn build(self) -> MemoryGetZirconHandleInfoFUCHSIA {
15288         self.inner
15289     }
15290 }
15291 #[repr(C)]
15292 #[derive(Copy, Clone, Debug)]
15293 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryWin32HandlePropertiesKHR.html>"]
15294 pub struct MemoryWin32HandlePropertiesKHR {
15295     pub s_type: StructureType,
15296     pub p_next: *mut c_void,
15297     pub memory_type_bits: u32,
15298 }
15299 impl ::std::default::Default for MemoryWin32HandlePropertiesKHR {
default() -> MemoryWin32HandlePropertiesKHR15300     fn default() -> MemoryWin32HandlePropertiesKHR {
15301         MemoryWin32HandlePropertiesKHR {
15302             s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
15303             p_next: ::std::ptr::null_mut(),
15304             memory_type_bits: u32::default(),
15305         }
15306     }
15307 }
15308 impl MemoryWin32HandlePropertiesKHR {
builder<'a>() -> MemoryWin32HandlePropertiesKHRBuilder<'a>15309     pub fn builder<'a>() -> MemoryWin32HandlePropertiesKHRBuilder<'a> {
15310         MemoryWin32HandlePropertiesKHRBuilder {
15311             inner: MemoryWin32HandlePropertiesKHR::default(),
15312             marker: ::std::marker::PhantomData,
15313         }
15314     }
15315 }
15316 #[repr(transparent)]
15317 pub struct MemoryWin32HandlePropertiesKHRBuilder<'a> {
15318     inner: MemoryWin32HandlePropertiesKHR,
15319     marker: ::std::marker::PhantomData<&'a ()>,
15320 }
15321 impl<'a> ::std::ops::Deref for MemoryWin32HandlePropertiesKHRBuilder<'a> {
15322     type Target = MemoryWin32HandlePropertiesKHR;
deref(&self) -> &Self::Target15323     fn deref(&self) -> &Self::Target {
15324         &self.inner
15325     }
15326 }
15327 impl<'a> ::std::ops::DerefMut for MemoryWin32HandlePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15328     fn deref_mut(&mut self) -> &mut Self::Target {
15329         &mut self.inner
15330     }
15331 }
15332 impl<'a> MemoryWin32HandlePropertiesKHRBuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self15333     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
15334         self.inner.memory_type_bits = memory_type_bits;
15335         self
15336     }
15337     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15338     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15339     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryWin32HandlePropertiesKHR15340     pub fn build(self) -> MemoryWin32HandlePropertiesKHR {
15341         self.inner
15342     }
15343 }
15344 #[repr(C)]
15345 #[derive(Copy, Clone, Debug)]
15346 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetWin32HandleInfoKHR.html>"]
15347 pub struct MemoryGetWin32HandleInfoKHR {
15348     pub s_type: StructureType,
15349     pub p_next: *const c_void,
15350     pub memory: DeviceMemory,
15351     pub handle_type: ExternalMemoryHandleTypeFlags,
15352 }
15353 impl ::std::default::Default for MemoryGetWin32HandleInfoKHR {
default() -> MemoryGetWin32HandleInfoKHR15354     fn default() -> MemoryGetWin32HandleInfoKHR {
15355         MemoryGetWin32HandleInfoKHR {
15356             s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
15357             p_next: ::std::ptr::null(),
15358             memory: DeviceMemory::default(),
15359             handle_type: ExternalMemoryHandleTypeFlags::default(),
15360         }
15361     }
15362 }
15363 impl MemoryGetWin32HandleInfoKHR {
builder<'a>() -> MemoryGetWin32HandleInfoKHRBuilder<'a>15364     pub fn builder<'a>() -> MemoryGetWin32HandleInfoKHRBuilder<'a> {
15365         MemoryGetWin32HandleInfoKHRBuilder {
15366             inner: MemoryGetWin32HandleInfoKHR::default(),
15367             marker: ::std::marker::PhantomData,
15368         }
15369     }
15370 }
15371 #[repr(transparent)]
15372 pub struct MemoryGetWin32HandleInfoKHRBuilder<'a> {
15373     inner: MemoryGetWin32HandleInfoKHR,
15374     marker: ::std::marker::PhantomData<&'a ()>,
15375 }
15376 impl<'a> ::std::ops::Deref for MemoryGetWin32HandleInfoKHRBuilder<'a> {
15377     type Target = MemoryGetWin32HandleInfoKHR;
deref(&self) -> &Self::Target15378     fn deref(&self) -> &Self::Target {
15379         &self.inner
15380     }
15381 }
15382 impl<'a> ::std::ops::DerefMut for MemoryGetWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15383     fn deref_mut(&mut self) -> &mut Self::Target {
15384         &mut self.inner
15385     }
15386 }
15387 impl<'a> MemoryGetWin32HandleInfoKHRBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self15388     pub fn memory(mut self, memory: DeviceMemory) -> Self {
15389         self.inner.memory = memory;
15390         self
15391     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15392     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15393         self.inner.handle_type = handle_type;
15394         self
15395     }
15396     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15397     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15398     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetWin32HandleInfoKHR15399     pub fn build(self) -> MemoryGetWin32HandleInfoKHR {
15400         self.inner
15401     }
15402 }
15403 #[repr(C)]
15404 #[derive(Copy, Clone, Debug)]
15405 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryFdInfoKHR.html>"]
15406 pub struct ImportMemoryFdInfoKHR {
15407     pub s_type: StructureType,
15408     pub p_next: *const c_void,
15409     pub handle_type: ExternalMemoryHandleTypeFlags,
15410     pub fd: c_int,
15411 }
15412 impl ::std::default::Default for ImportMemoryFdInfoKHR {
default() -> ImportMemoryFdInfoKHR15413     fn default() -> ImportMemoryFdInfoKHR {
15414         ImportMemoryFdInfoKHR {
15415             s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
15416             p_next: ::std::ptr::null(),
15417             handle_type: ExternalMemoryHandleTypeFlags::default(),
15418             fd: c_int::default(),
15419         }
15420     }
15421 }
15422 impl ImportMemoryFdInfoKHR {
builder<'a>() -> ImportMemoryFdInfoKHRBuilder<'a>15423     pub fn builder<'a>() -> ImportMemoryFdInfoKHRBuilder<'a> {
15424         ImportMemoryFdInfoKHRBuilder {
15425             inner: ImportMemoryFdInfoKHR::default(),
15426             marker: ::std::marker::PhantomData,
15427         }
15428     }
15429 }
15430 #[repr(transparent)]
15431 pub struct ImportMemoryFdInfoKHRBuilder<'a> {
15432     inner: ImportMemoryFdInfoKHR,
15433     marker: ::std::marker::PhantomData<&'a ()>,
15434 }
15435 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryFdInfoKHRBuilder<'_> {}
15436 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryFdInfoKHR {}
15437 impl<'a> ::std::ops::Deref for ImportMemoryFdInfoKHRBuilder<'a> {
15438     type Target = ImportMemoryFdInfoKHR;
deref(&self) -> &Self::Target15439     fn deref(&self) -> &Self::Target {
15440         &self.inner
15441     }
15442 }
15443 impl<'a> ::std::ops::DerefMut for ImportMemoryFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15444     fn deref_mut(&mut self) -> &mut Self::Target {
15445         &mut self.inner
15446     }
15447 }
15448 impl<'a> ImportMemoryFdInfoKHRBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15449     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15450         self.inner.handle_type = handle_type;
15451         self
15452     }
fd(mut self, fd: c_int) -> Self15453     pub fn fd(mut self, fd: c_int) -> Self {
15454         self.inner.fd = fd;
15455         self
15456     }
15457     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15458     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15459     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryFdInfoKHR15460     pub fn build(self) -> ImportMemoryFdInfoKHR {
15461         self.inner
15462     }
15463 }
15464 #[repr(C)]
15465 #[derive(Copy, Clone, Debug)]
15466 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryFdPropertiesKHR.html>"]
15467 pub struct MemoryFdPropertiesKHR {
15468     pub s_type: StructureType,
15469     pub p_next: *mut c_void,
15470     pub memory_type_bits: u32,
15471 }
15472 impl ::std::default::Default for MemoryFdPropertiesKHR {
default() -> MemoryFdPropertiesKHR15473     fn default() -> MemoryFdPropertiesKHR {
15474         MemoryFdPropertiesKHR {
15475             s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
15476             p_next: ::std::ptr::null_mut(),
15477             memory_type_bits: u32::default(),
15478         }
15479     }
15480 }
15481 impl MemoryFdPropertiesKHR {
builder<'a>() -> MemoryFdPropertiesKHRBuilder<'a>15482     pub fn builder<'a>() -> MemoryFdPropertiesKHRBuilder<'a> {
15483         MemoryFdPropertiesKHRBuilder {
15484             inner: MemoryFdPropertiesKHR::default(),
15485             marker: ::std::marker::PhantomData,
15486         }
15487     }
15488 }
15489 #[repr(transparent)]
15490 pub struct MemoryFdPropertiesKHRBuilder<'a> {
15491     inner: MemoryFdPropertiesKHR,
15492     marker: ::std::marker::PhantomData<&'a ()>,
15493 }
15494 impl<'a> ::std::ops::Deref for MemoryFdPropertiesKHRBuilder<'a> {
15495     type Target = MemoryFdPropertiesKHR;
deref(&self) -> &Self::Target15496     fn deref(&self) -> &Self::Target {
15497         &self.inner
15498     }
15499 }
15500 impl<'a> ::std::ops::DerefMut for MemoryFdPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15501     fn deref_mut(&mut self) -> &mut Self::Target {
15502         &mut self.inner
15503     }
15504 }
15505 impl<'a> MemoryFdPropertiesKHRBuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self15506     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
15507         self.inner.memory_type_bits = memory_type_bits;
15508         self
15509     }
15510     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15511     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15512     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryFdPropertiesKHR15513     pub fn build(self) -> MemoryFdPropertiesKHR {
15514         self.inner
15515     }
15516 }
15517 #[repr(C)]
15518 #[derive(Copy, Clone, Debug)]
15519 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetFdInfoKHR.html>"]
15520 pub struct MemoryGetFdInfoKHR {
15521     pub s_type: StructureType,
15522     pub p_next: *const c_void,
15523     pub memory: DeviceMemory,
15524     pub handle_type: ExternalMemoryHandleTypeFlags,
15525 }
15526 impl ::std::default::Default for MemoryGetFdInfoKHR {
default() -> MemoryGetFdInfoKHR15527     fn default() -> MemoryGetFdInfoKHR {
15528         MemoryGetFdInfoKHR {
15529             s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
15530             p_next: ::std::ptr::null(),
15531             memory: DeviceMemory::default(),
15532             handle_type: ExternalMemoryHandleTypeFlags::default(),
15533         }
15534     }
15535 }
15536 impl MemoryGetFdInfoKHR {
builder<'a>() -> MemoryGetFdInfoKHRBuilder<'a>15537     pub fn builder<'a>() -> MemoryGetFdInfoKHRBuilder<'a> {
15538         MemoryGetFdInfoKHRBuilder {
15539             inner: MemoryGetFdInfoKHR::default(),
15540             marker: ::std::marker::PhantomData,
15541         }
15542     }
15543 }
15544 #[repr(transparent)]
15545 pub struct MemoryGetFdInfoKHRBuilder<'a> {
15546     inner: MemoryGetFdInfoKHR,
15547     marker: ::std::marker::PhantomData<&'a ()>,
15548 }
15549 impl<'a> ::std::ops::Deref for MemoryGetFdInfoKHRBuilder<'a> {
15550     type Target = MemoryGetFdInfoKHR;
deref(&self) -> &Self::Target15551     fn deref(&self) -> &Self::Target {
15552         &self.inner
15553     }
15554 }
15555 impl<'a> ::std::ops::DerefMut for MemoryGetFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15556     fn deref_mut(&mut self) -> &mut Self::Target {
15557         &mut self.inner
15558     }
15559 }
15560 impl<'a> MemoryGetFdInfoKHRBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self15561     pub fn memory(mut self, memory: DeviceMemory) -> Self {
15562         self.inner.memory = memory;
15563         self
15564     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15565     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15566         self.inner.handle_type = handle_type;
15567         self
15568     }
15569     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15570     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15571     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetFdInfoKHR15572     pub fn build(self) -> MemoryGetFdInfoKHR {
15573         self.inner
15574     }
15575 }
15576 #[repr(C)]
15577 #[derive(Copy, Clone, Debug)]
15578 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>"]
15579 pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
15580     pub s_type: StructureType,
15581     pub p_next: *const c_void,
15582     pub acquire_count: u32,
15583     pub p_acquire_syncs: *const DeviceMemory,
15584     pub p_acquire_keys: *const u64,
15585     pub p_acquire_timeouts: *const u32,
15586     pub release_count: u32,
15587     pub p_release_syncs: *const DeviceMemory,
15588     pub p_release_keys: *const u64,
15589 }
15590 impl ::std::default::Default for Win32KeyedMutexAcquireReleaseInfoKHR {
default() -> Win32KeyedMutexAcquireReleaseInfoKHR15591     fn default() -> Win32KeyedMutexAcquireReleaseInfoKHR {
15592         Win32KeyedMutexAcquireReleaseInfoKHR {
15593             s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
15594             p_next: ::std::ptr::null(),
15595             acquire_count: u32::default(),
15596             p_acquire_syncs: ::std::ptr::null(),
15597             p_acquire_keys: ::std::ptr::null(),
15598             p_acquire_timeouts: ::std::ptr::null(),
15599             release_count: u32::default(),
15600             p_release_syncs: ::std::ptr::null(),
15601             p_release_keys: ::std::ptr::null(),
15602         }
15603     }
15604 }
15605 impl Win32KeyedMutexAcquireReleaseInfoKHR {
builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a>15606     pub fn builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15607         Win32KeyedMutexAcquireReleaseInfoKHRBuilder {
15608             inner: Win32KeyedMutexAcquireReleaseInfoKHR::default(),
15609             marker: ::std::marker::PhantomData,
15610         }
15611     }
15612 }
15613 #[repr(transparent)]
15614 pub struct Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15615     inner: Win32KeyedMutexAcquireReleaseInfoKHR,
15616     marker: ::std::marker::PhantomData<&'a ()>,
15617 }
15618 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'_> {}
15619 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoKHR {}
15620 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'_> {}
15621 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoKHR {}
15622 impl<'a> ::std::ops::Deref for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15623     type Target = Win32KeyedMutexAcquireReleaseInfoKHR;
deref(&self) -> &Self::Target15624     fn deref(&self) -> &Self::Target {
15625         &self.inner
15626     }
15627 }
15628 impl<'a> ::std::ops::DerefMut for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15629     fn deref_mut(&mut self) -> &mut Self::Target {
15630         &mut self.inner
15631     }
15632 }
15633 impl<'a> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self15634     pub fn acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self {
15635         self.inner.acquire_count = acquire_syncs.len() as _;
15636         self.inner.p_acquire_syncs = acquire_syncs.as_ptr();
15637         self
15638     }
acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self15639     pub fn acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self {
15640         self.inner.acquire_count = acquire_keys.len() as _;
15641         self.inner.p_acquire_keys = acquire_keys.as_ptr();
15642         self
15643     }
acquire_timeouts(mut self, acquire_timeouts: &'a [u32]) -> Self15644     pub fn acquire_timeouts(mut self, acquire_timeouts: &'a [u32]) -> Self {
15645         self.inner.acquire_count = acquire_timeouts.len() as _;
15646         self.inner.p_acquire_timeouts = acquire_timeouts.as_ptr();
15647         self
15648     }
release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self15649     pub fn release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self {
15650         self.inner.release_count = release_syncs.len() as _;
15651         self.inner.p_release_syncs = release_syncs.as_ptr();
15652         self
15653     }
release_keys(mut self, release_keys: &'a [u64]) -> Self15654     pub fn release_keys(mut self, release_keys: &'a [u64]) -> Self {
15655         self.inner.release_count = release_keys.len() as _;
15656         self.inner.p_release_keys = release_keys.as_ptr();
15657         self
15658     }
15659     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15660     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15661     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Win32KeyedMutexAcquireReleaseInfoKHR15662     pub fn build(self) -> Win32KeyedMutexAcquireReleaseInfoKHR {
15663         self.inner
15664     }
15665 }
15666 #[repr(C)]
15667 #[derive(Copy, Clone, Debug)]
15668 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>"]
15669 pub struct PhysicalDeviceExternalSemaphoreInfo {
15670     pub s_type: StructureType,
15671     pub p_next: *const c_void,
15672     pub handle_type: ExternalSemaphoreHandleTypeFlags,
15673 }
15674 impl ::std::default::Default for PhysicalDeviceExternalSemaphoreInfo {
default() -> PhysicalDeviceExternalSemaphoreInfo15675     fn default() -> PhysicalDeviceExternalSemaphoreInfo {
15676         PhysicalDeviceExternalSemaphoreInfo {
15677             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
15678             p_next: ::std::ptr::null(),
15679             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
15680         }
15681     }
15682 }
15683 impl PhysicalDeviceExternalSemaphoreInfo {
builder<'a>() -> PhysicalDeviceExternalSemaphoreInfoBuilder<'a>15684     pub fn builder<'a>() -> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15685         PhysicalDeviceExternalSemaphoreInfoBuilder {
15686             inner: PhysicalDeviceExternalSemaphoreInfo::default(),
15687             marker: ::std::marker::PhantomData,
15688         }
15689     }
15690 }
15691 #[repr(transparent)]
15692 pub struct PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15693     inner: PhysicalDeviceExternalSemaphoreInfo,
15694     marker: ::std::marker::PhantomData<&'a ()>,
15695 }
15696 pub unsafe trait ExtendsPhysicalDeviceExternalSemaphoreInfo {}
15697 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15698     type Target = PhysicalDeviceExternalSemaphoreInfo;
deref(&self) -> &Self::Target15699     fn deref(&self) -> &Self::Target {
15700         &self.inner
15701     }
15702 }
15703 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15704     fn deref_mut(&mut self) -> &mut Self::Target {
15705         &mut self.inner
15706     }
15707 }
15708 impl<'a> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self15709     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
15710         self.inner.handle_type = handle_type;
15711         self
15712     }
15713     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
15714     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
15715     #[doc = r" valid extension structs can be pushed into the chain."]
15716     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
15717     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceExternalSemaphoreInfo>( mut self, next: &'a mut T, ) -> Self15718     pub fn push_next<T: ExtendsPhysicalDeviceExternalSemaphoreInfo>(
15719         mut self,
15720         next: &'a mut T,
15721     ) -> Self {
15722         unsafe {
15723             let next_ptr = next as *mut T as *mut BaseOutStructure;
15724             let last_next = ptr_chain_iter(next).last().unwrap();
15725             (*last_next).p_next = self.inner.p_next as _;
15726             self.inner.p_next = next_ptr as _;
15727         }
15728         self
15729     }
15730     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15731     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15732     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalSemaphoreInfo15733     pub fn build(self) -> PhysicalDeviceExternalSemaphoreInfo {
15734         self.inner
15735     }
15736 }
15737 #[repr(C)]
15738 #[derive(Copy, Clone, Debug)]
15739 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalSemaphoreProperties.html>"]
15740 pub struct ExternalSemaphoreProperties {
15741     pub s_type: StructureType,
15742     pub p_next: *mut c_void,
15743     pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
15744     pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
15745     pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
15746 }
15747 impl ::std::default::Default for ExternalSemaphoreProperties {
default() -> ExternalSemaphoreProperties15748     fn default() -> ExternalSemaphoreProperties {
15749         ExternalSemaphoreProperties {
15750             s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
15751             p_next: ::std::ptr::null_mut(),
15752             export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
15753             compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
15754             external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
15755         }
15756     }
15757 }
15758 impl ExternalSemaphoreProperties {
builder<'a>() -> ExternalSemaphorePropertiesBuilder<'a>15759     pub fn builder<'a>() -> ExternalSemaphorePropertiesBuilder<'a> {
15760         ExternalSemaphorePropertiesBuilder {
15761             inner: ExternalSemaphoreProperties::default(),
15762             marker: ::std::marker::PhantomData,
15763         }
15764     }
15765 }
15766 #[repr(transparent)]
15767 pub struct ExternalSemaphorePropertiesBuilder<'a> {
15768     inner: ExternalSemaphoreProperties,
15769     marker: ::std::marker::PhantomData<&'a ()>,
15770 }
15771 impl<'a> ::std::ops::Deref for ExternalSemaphorePropertiesBuilder<'a> {
15772     type Target = ExternalSemaphoreProperties;
deref(&self) -> &Self::Target15773     fn deref(&self) -> &Self::Target {
15774         &self.inner
15775     }
15776 }
15777 impl<'a> ::std::ops::DerefMut for ExternalSemaphorePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15778     fn deref_mut(&mut self) -> &mut Self::Target {
15779         &mut self.inner
15780     }
15781 }
15782 impl<'a> ExternalSemaphorePropertiesBuilder<'a> {
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags, ) -> Self15783     pub fn export_from_imported_handle_types(
15784         mut self,
15785         export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
15786     ) -> Self {
15787         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
15788         self
15789     }
compatible_handle_types( mut self, compatible_handle_types: ExternalSemaphoreHandleTypeFlags, ) -> Self15790     pub fn compatible_handle_types(
15791         mut self,
15792         compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
15793     ) -> Self {
15794         self.inner.compatible_handle_types = compatible_handle_types;
15795         self
15796     }
external_semaphore_features( mut self, external_semaphore_features: ExternalSemaphoreFeatureFlags, ) -> Self15797     pub fn external_semaphore_features(
15798         mut self,
15799         external_semaphore_features: ExternalSemaphoreFeatureFlags,
15800     ) -> Self {
15801         self.inner.external_semaphore_features = external_semaphore_features;
15802         self
15803     }
15804     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15805     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15806     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalSemaphoreProperties15807     pub fn build(self) -> ExternalSemaphoreProperties {
15808         self.inner
15809     }
15810 }
15811 #[repr(C)]
15812 #[derive(Copy, Clone, Debug)]
15813 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportSemaphoreCreateInfo.html>"]
15814 pub struct ExportSemaphoreCreateInfo {
15815     pub s_type: StructureType,
15816     pub p_next: *const c_void,
15817     pub handle_types: ExternalSemaphoreHandleTypeFlags,
15818 }
15819 impl ::std::default::Default for ExportSemaphoreCreateInfo {
default() -> ExportSemaphoreCreateInfo15820     fn default() -> ExportSemaphoreCreateInfo {
15821         ExportSemaphoreCreateInfo {
15822             s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
15823             p_next: ::std::ptr::null(),
15824             handle_types: ExternalSemaphoreHandleTypeFlags::default(),
15825         }
15826     }
15827 }
15828 impl ExportSemaphoreCreateInfo {
builder<'a>() -> ExportSemaphoreCreateInfoBuilder<'a>15829     pub fn builder<'a>() -> ExportSemaphoreCreateInfoBuilder<'a> {
15830         ExportSemaphoreCreateInfoBuilder {
15831             inner: ExportSemaphoreCreateInfo::default(),
15832             marker: ::std::marker::PhantomData,
15833         }
15834     }
15835 }
15836 #[repr(transparent)]
15837 pub struct ExportSemaphoreCreateInfoBuilder<'a> {
15838     inner: ExportSemaphoreCreateInfo,
15839     marker: ::std::marker::PhantomData<&'a ()>,
15840 }
15841 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreCreateInfoBuilder<'_> {}
15842 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreCreateInfo {}
15843 impl<'a> ::std::ops::Deref for ExportSemaphoreCreateInfoBuilder<'a> {
15844     type Target = ExportSemaphoreCreateInfo;
deref(&self) -> &Self::Target15845     fn deref(&self) -> &Self::Target {
15846         &self.inner
15847     }
15848 }
15849 impl<'a> ::std::ops::DerefMut for ExportSemaphoreCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15850     fn deref_mut(&mut self) -> &mut Self::Target {
15851         &mut self.inner
15852     }
15853 }
15854 impl<'a> ExportSemaphoreCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalSemaphoreHandleTypeFlags) -> Self15855     pub fn handle_types(mut self, handle_types: ExternalSemaphoreHandleTypeFlags) -> Self {
15856         self.inner.handle_types = handle_types;
15857         self
15858     }
15859     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15860     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15861     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportSemaphoreCreateInfo15862     pub fn build(self) -> ExportSemaphoreCreateInfo {
15863         self.inner
15864     }
15865 }
15866 #[repr(C)]
15867 #[derive(Copy, Clone, Debug)]
15868 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>"]
15869 pub struct ImportSemaphoreWin32HandleInfoKHR {
15870     pub s_type: StructureType,
15871     pub p_next: *const c_void,
15872     pub semaphore: Semaphore,
15873     pub flags: SemaphoreImportFlags,
15874     pub handle_type: ExternalSemaphoreHandleTypeFlags,
15875     pub handle: HANDLE,
15876     pub name: LPCWSTR,
15877 }
15878 impl ::std::default::Default for ImportSemaphoreWin32HandleInfoKHR {
default() -> ImportSemaphoreWin32HandleInfoKHR15879     fn default() -> ImportSemaphoreWin32HandleInfoKHR {
15880         ImportSemaphoreWin32HandleInfoKHR {
15881             s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
15882             p_next: ::std::ptr::null(),
15883             semaphore: Semaphore::default(),
15884             flags: SemaphoreImportFlags::default(),
15885             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
15886             handle: unsafe { ::std::mem::zeroed() },
15887             name: unsafe { ::std::mem::zeroed() },
15888         }
15889     }
15890 }
15891 impl ImportSemaphoreWin32HandleInfoKHR {
builder<'a>() -> ImportSemaphoreWin32HandleInfoKHRBuilder<'a>15892     pub fn builder<'a>() -> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15893         ImportSemaphoreWin32HandleInfoKHRBuilder {
15894             inner: ImportSemaphoreWin32HandleInfoKHR::default(),
15895             marker: ::std::marker::PhantomData,
15896         }
15897     }
15898 }
15899 #[repr(transparent)]
15900 pub struct ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15901     inner: ImportSemaphoreWin32HandleInfoKHR,
15902     marker: ::std::marker::PhantomData<&'a ()>,
15903 }
15904 impl<'a> ::std::ops::Deref for ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15905     type Target = ImportSemaphoreWin32HandleInfoKHR;
deref(&self) -> &Self::Target15906     fn deref(&self) -> &Self::Target {
15907         &self.inner
15908     }
15909 }
15910 impl<'a> ::std::ops::DerefMut for ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15911     fn deref_mut(&mut self) -> &mut Self::Target {
15912         &mut self.inner
15913     }
15914 }
15915 impl<'a> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self15916     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
15917         self.inner.semaphore = semaphore;
15918         self
15919     }
flags(mut self, flags: SemaphoreImportFlags) -> Self15920     pub fn flags(mut self, flags: SemaphoreImportFlags) -> Self {
15921         self.inner.flags = flags;
15922         self
15923     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self15924     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
15925         self.inner.handle_type = handle_type;
15926         self
15927     }
handle(mut self, handle: HANDLE) -> Self15928     pub fn handle(mut self, handle: HANDLE) -> Self {
15929         self.inner.handle = handle;
15930         self
15931     }
name(mut self, name: LPCWSTR) -> Self15932     pub fn name(mut self, name: LPCWSTR) -> Self {
15933         self.inner.name = name;
15934         self
15935     }
15936     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15937     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15938     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportSemaphoreWin32HandleInfoKHR15939     pub fn build(self) -> ImportSemaphoreWin32HandleInfoKHR {
15940         self.inner
15941     }
15942 }
15943 #[repr(C)]
15944 #[derive(Copy, Clone, Debug)]
15945 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>"]
15946 pub struct ExportSemaphoreWin32HandleInfoKHR {
15947     pub s_type: StructureType,
15948     pub p_next: *const c_void,
15949     pub p_attributes: *const SECURITY_ATTRIBUTES,
15950     pub dw_access: DWORD,
15951     pub name: LPCWSTR,
15952 }
15953 impl ::std::default::Default for ExportSemaphoreWin32HandleInfoKHR {
default() -> ExportSemaphoreWin32HandleInfoKHR15954     fn default() -> ExportSemaphoreWin32HandleInfoKHR {
15955         ExportSemaphoreWin32HandleInfoKHR {
15956             s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
15957             p_next: ::std::ptr::null(),
15958             p_attributes: ::std::ptr::null(),
15959             dw_access: DWORD::default(),
15960             name: unsafe { ::std::mem::zeroed() },
15961         }
15962     }
15963 }
15964 impl ExportSemaphoreWin32HandleInfoKHR {
builder<'a>() -> ExportSemaphoreWin32HandleInfoKHRBuilder<'a>15965     pub fn builder<'a>() -> ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15966         ExportSemaphoreWin32HandleInfoKHRBuilder {
15967             inner: ExportSemaphoreWin32HandleInfoKHR::default(),
15968             marker: ::std::marker::PhantomData,
15969         }
15970     }
15971 }
15972 #[repr(transparent)]
15973 pub struct ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15974     inner: ExportSemaphoreWin32HandleInfoKHR,
15975     marker: ::std::marker::PhantomData<&'a ()>,
15976 }
15977 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreWin32HandleInfoKHRBuilder<'_> {}
15978 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreWin32HandleInfoKHR {}
15979 impl<'a> ::std::ops::Deref for ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
15980     type Target = ExportSemaphoreWin32HandleInfoKHR;
deref(&self) -> &Self::Target15981     fn deref(&self) -> &Self::Target {
15982         &self.inner
15983     }
15984 }
15985 impl<'a> ::std::ops::DerefMut for ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15986     fn deref_mut(&mut self) -> &mut Self::Target {
15987         &mut self.inner
15988     }
15989 }
15990 impl<'a> ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self15991     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
15992         self.inner.p_attributes = attributes;
15993         self
15994     }
dw_access(mut self, dw_access: DWORD) -> Self15995     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
15996         self.inner.dw_access = dw_access;
15997         self
15998     }
name(mut self, name: LPCWSTR) -> Self15999     pub fn name(mut self, name: LPCWSTR) -> Self {
16000         self.inner.name = name;
16001         self
16002     }
16003     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16004     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16005     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportSemaphoreWin32HandleInfoKHR16006     pub fn build(self) -> ExportSemaphoreWin32HandleInfoKHR {
16007         self.inner
16008     }
16009 }
16010 #[repr(C)]
16011 #[derive(Copy, Clone, Debug)]
16012 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkD3D12FenceSubmitInfoKHR.html>"]
16013 pub struct D3D12FenceSubmitInfoKHR {
16014     pub s_type: StructureType,
16015     pub p_next: *const c_void,
16016     pub wait_semaphore_values_count: u32,
16017     pub p_wait_semaphore_values: *const u64,
16018     pub signal_semaphore_values_count: u32,
16019     pub p_signal_semaphore_values: *const u64,
16020 }
16021 impl ::std::default::Default for D3D12FenceSubmitInfoKHR {
default() -> D3D12FenceSubmitInfoKHR16022     fn default() -> D3D12FenceSubmitInfoKHR {
16023         D3D12FenceSubmitInfoKHR {
16024             s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
16025             p_next: ::std::ptr::null(),
16026             wait_semaphore_values_count: u32::default(),
16027             p_wait_semaphore_values: ::std::ptr::null(),
16028             signal_semaphore_values_count: u32::default(),
16029             p_signal_semaphore_values: ::std::ptr::null(),
16030         }
16031     }
16032 }
16033 impl D3D12FenceSubmitInfoKHR {
builder<'a>() -> D3D12FenceSubmitInfoKHRBuilder<'a>16034     pub fn builder<'a>() -> D3D12FenceSubmitInfoKHRBuilder<'a> {
16035         D3D12FenceSubmitInfoKHRBuilder {
16036             inner: D3D12FenceSubmitInfoKHR::default(),
16037             marker: ::std::marker::PhantomData,
16038         }
16039     }
16040 }
16041 #[repr(transparent)]
16042 pub struct D3D12FenceSubmitInfoKHRBuilder<'a> {
16043     inner: D3D12FenceSubmitInfoKHR,
16044     marker: ::std::marker::PhantomData<&'a ()>,
16045 }
16046 unsafe impl ExtendsSubmitInfo for D3D12FenceSubmitInfoKHRBuilder<'_> {}
16047 unsafe impl ExtendsSubmitInfo for D3D12FenceSubmitInfoKHR {}
16048 impl<'a> ::std::ops::Deref for D3D12FenceSubmitInfoKHRBuilder<'a> {
16049     type Target = D3D12FenceSubmitInfoKHR;
deref(&self) -> &Self::Target16050     fn deref(&self) -> &Self::Target {
16051         &self.inner
16052     }
16053 }
16054 impl<'a> ::std::ops::DerefMut for D3D12FenceSubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16055     fn deref_mut(&mut self) -> &mut Self::Target {
16056         &mut self.inner
16057     }
16058 }
16059 impl<'a> D3D12FenceSubmitInfoKHRBuilder<'a> {
wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self16060     pub fn wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self {
16061         self.inner.wait_semaphore_values_count = wait_semaphore_values.len() as _;
16062         self.inner.p_wait_semaphore_values = wait_semaphore_values.as_ptr();
16063         self
16064     }
signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self16065     pub fn signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self {
16066         self.inner.signal_semaphore_values_count = signal_semaphore_values.len() as _;
16067         self.inner.p_signal_semaphore_values = signal_semaphore_values.as_ptr();
16068         self
16069     }
16070     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16071     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16072     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> D3D12FenceSubmitInfoKHR16073     pub fn build(self) -> D3D12FenceSubmitInfoKHR {
16074         self.inner
16075     }
16076 }
16077 #[repr(C)]
16078 #[derive(Copy, Clone, Debug)]
16079 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>"]
16080 pub struct SemaphoreGetWin32HandleInfoKHR {
16081     pub s_type: StructureType,
16082     pub p_next: *const c_void,
16083     pub semaphore: Semaphore,
16084     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16085 }
16086 impl ::std::default::Default for SemaphoreGetWin32HandleInfoKHR {
default() -> SemaphoreGetWin32HandleInfoKHR16087     fn default() -> SemaphoreGetWin32HandleInfoKHR {
16088         SemaphoreGetWin32HandleInfoKHR {
16089             s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
16090             p_next: ::std::ptr::null(),
16091             semaphore: Semaphore::default(),
16092             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16093         }
16094     }
16095 }
16096 impl SemaphoreGetWin32HandleInfoKHR {
builder<'a>() -> SemaphoreGetWin32HandleInfoKHRBuilder<'a>16097     pub fn builder<'a>() -> SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
16098         SemaphoreGetWin32HandleInfoKHRBuilder {
16099             inner: SemaphoreGetWin32HandleInfoKHR::default(),
16100             marker: ::std::marker::PhantomData,
16101         }
16102     }
16103 }
16104 #[repr(transparent)]
16105 pub struct SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
16106     inner: SemaphoreGetWin32HandleInfoKHR,
16107     marker: ::std::marker::PhantomData<&'a ()>,
16108 }
16109 impl<'a> ::std::ops::Deref for SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
16110     type Target = SemaphoreGetWin32HandleInfoKHR;
deref(&self) -> &Self::Target16111     fn deref(&self) -> &Self::Target {
16112         &self.inner
16113     }
16114 }
16115 impl<'a> ::std::ops::DerefMut for SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16116     fn deref_mut(&mut self) -> &mut Self::Target {
16117         &mut self.inner
16118     }
16119 }
16120 impl<'a> SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16121     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16122         self.inner.semaphore = semaphore;
16123         self
16124     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16125     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16126         self.inner.handle_type = handle_type;
16127         self
16128     }
16129     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16130     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16131     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreGetWin32HandleInfoKHR16132     pub fn build(self) -> SemaphoreGetWin32HandleInfoKHR {
16133         self.inner
16134     }
16135 }
16136 #[repr(C)]
16137 #[derive(Copy, Clone, Debug)]
16138 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportSemaphoreFdInfoKHR.html>"]
16139 pub struct ImportSemaphoreFdInfoKHR {
16140     pub s_type: StructureType,
16141     pub p_next: *const c_void,
16142     pub semaphore: Semaphore,
16143     pub flags: SemaphoreImportFlags,
16144     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16145     pub fd: c_int,
16146 }
16147 impl ::std::default::Default for ImportSemaphoreFdInfoKHR {
default() -> ImportSemaphoreFdInfoKHR16148     fn default() -> ImportSemaphoreFdInfoKHR {
16149         ImportSemaphoreFdInfoKHR {
16150             s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
16151             p_next: ::std::ptr::null(),
16152             semaphore: Semaphore::default(),
16153             flags: SemaphoreImportFlags::default(),
16154             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16155             fd: c_int::default(),
16156         }
16157     }
16158 }
16159 impl ImportSemaphoreFdInfoKHR {
builder<'a>() -> ImportSemaphoreFdInfoKHRBuilder<'a>16160     pub fn builder<'a>() -> ImportSemaphoreFdInfoKHRBuilder<'a> {
16161         ImportSemaphoreFdInfoKHRBuilder {
16162             inner: ImportSemaphoreFdInfoKHR::default(),
16163             marker: ::std::marker::PhantomData,
16164         }
16165     }
16166 }
16167 #[repr(transparent)]
16168 pub struct ImportSemaphoreFdInfoKHRBuilder<'a> {
16169     inner: ImportSemaphoreFdInfoKHR,
16170     marker: ::std::marker::PhantomData<&'a ()>,
16171 }
16172 impl<'a> ::std::ops::Deref for ImportSemaphoreFdInfoKHRBuilder<'a> {
16173     type Target = ImportSemaphoreFdInfoKHR;
deref(&self) -> &Self::Target16174     fn deref(&self) -> &Self::Target {
16175         &self.inner
16176     }
16177 }
16178 impl<'a> ::std::ops::DerefMut for ImportSemaphoreFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16179     fn deref_mut(&mut self) -> &mut Self::Target {
16180         &mut self.inner
16181     }
16182 }
16183 impl<'a> ImportSemaphoreFdInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16184     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16185         self.inner.semaphore = semaphore;
16186         self
16187     }
flags(mut self, flags: SemaphoreImportFlags) -> Self16188     pub fn flags(mut self, flags: SemaphoreImportFlags) -> Self {
16189         self.inner.flags = flags;
16190         self
16191     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16192     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16193         self.inner.handle_type = handle_type;
16194         self
16195     }
fd(mut self, fd: c_int) -> Self16196     pub fn fd(mut self, fd: c_int) -> Self {
16197         self.inner.fd = fd;
16198         self
16199     }
16200     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16201     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16202     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportSemaphoreFdInfoKHR16203     pub fn build(self) -> ImportSemaphoreFdInfoKHR {
16204         self.inner
16205     }
16206 }
16207 #[repr(C)]
16208 #[derive(Copy, Clone, Debug)]
16209 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreGetFdInfoKHR.html>"]
16210 pub struct SemaphoreGetFdInfoKHR {
16211     pub s_type: StructureType,
16212     pub p_next: *const c_void,
16213     pub semaphore: Semaphore,
16214     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16215 }
16216 impl ::std::default::Default for SemaphoreGetFdInfoKHR {
default() -> SemaphoreGetFdInfoKHR16217     fn default() -> SemaphoreGetFdInfoKHR {
16218         SemaphoreGetFdInfoKHR {
16219             s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
16220             p_next: ::std::ptr::null(),
16221             semaphore: Semaphore::default(),
16222             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16223         }
16224     }
16225 }
16226 impl SemaphoreGetFdInfoKHR {
builder<'a>() -> SemaphoreGetFdInfoKHRBuilder<'a>16227     pub fn builder<'a>() -> SemaphoreGetFdInfoKHRBuilder<'a> {
16228         SemaphoreGetFdInfoKHRBuilder {
16229             inner: SemaphoreGetFdInfoKHR::default(),
16230             marker: ::std::marker::PhantomData,
16231         }
16232     }
16233 }
16234 #[repr(transparent)]
16235 pub struct SemaphoreGetFdInfoKHRBuilder<'a> {
16236     inner: SemaphoreGetFdInfoKHR,
16237     marker: ::std::marker::PhantomData<&'a ()>,
16238 }
16239 impl<'a> ::std::ops::Deref for SemaphoreGetFdInfoKHRBuilder<'a> {
16240     type Target = SemaphoreGetFdInfoKHR;
deref(&self) -> &Self::Target16241     fn deref(&self) -> &Self::Target {
16242         &self.inner
16243     }
16244 }
16245 impl<'a> ::std::ops::DerefMut for SemaphoreGetFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16246     fn deref_mut(&mut self) -> &mut Self::Target {
16247         &mut self.inner
16248     }
16249 }
16250 impl<'a> SemaphoreGetFdInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16251     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16252         self.inner.semaphore = semaphore;
16253         self
16254     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16255     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16256         self.inner.handle_type = handle_type;
16257         self
16258     }
16259     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16260     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16261     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreGetFdInfoKHR16262     pub fn build(self) -> SemaphoreGetFdInfoKHR {
16263         self.inner
16264     }
16265 }
16266 #[repr(C)]
16267 #[derive(Copy, Clone, Debug)]
16268 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>"]
16269 pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
16270     pub s_type: StructureType,
16271     pub p_next: *const c_void,
16272     pub semaphore: Semaphore,
16273     pub flags: SemaphoreImportFlags,
16274     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16275     pub zircon_handle: zx_handle_t,
16276 }
16277 impl ::std::default::Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
default() -> ImportSemaphoreZirconHandleInfoFUCHSIA16278     fn default() -> ImportSemaphoreZirconHandleInfoFUCHSIA {
16279         ImportSemaphoreZirconHandleInfoFUCHSIA {
16280             s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
16281             p_next: ::std::ptr::null(),
16282             semaphore: Semaphore::default(),
16283             flags: SemaphoreImportFlags::default(),
16284             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16285             zircon_handle: zx_handle_t::default(),
16286         }
16287     }
16288 }
16289 impl ImportSemaphoreZirconHandleInfoFUCHSIA {
builder<'a>() -> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a>16290     pub fn builder<'a>() -> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16291         ImportSemaphoreZirconHandleInfoFUCHSIABuilder {
16292             inner: ImportSemaphoreZirconHandleInfoFUCHSIA::default(),
16293             marker: ::std::marker::PhantomData,
16294         }
16295     }
16296 }
16297 #[repr(transparent)]
16298 pub struct ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16299     inner: ImportSemaphoreZirconHandleInfoFUCHSIA,
16300     marker: ::std::marker::PhantomData<&'a ()>,
16301 }
16302 impl<'a> ::std::ops::Deref for ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16303     type Target = ImportSemaphoreZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target16304     fn deref(&self) -> &Self::Target {
16305         &self.inner
16306     }
16307 }
16308 impl<'a> ::std::ops::DerefMut for ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16309     fn deref_mut(&mut self) -> &mut Self::Target {
16310         &mut self.inner
16311     }
16312 }
16313 impl<'a> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16314     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16315         self.inner.semaphore = semaphore;
16316         self
16317     }
flags(mut self, flags: SemaphoreImportFlags) -> Self16318     pub fn flags(mut self, flags: SemaphoreImportFlags) -> Self {
16319         self.inner.flags = flags;
16320         self
16321     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16322     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16323         self.inner.handle_type = handle_type;
16324         self
16325     }
zircon_handle(mut self, zircon_handle: zx_handle_t) -> Self16326     pub fn zircon_handle(mut self, zircon_handle: zx_handle_t) -> Self {
16327         self.inner.zircon_handle = zircon_handle;
16328         self
16329     }
16330     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16331     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16332     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportSemaphoreZirconHandleInfoFUCHSIA16333     pub fn build(self) -> ImportSemaphoreZirconHandleInfoFUCHSIA {
16334         self.inner
16335     }
16336 }
16337 #[repr(C)]
16338 #[derive(Copy, Clone, Debug)]
16339 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>"]
16340 pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
16341     pub s_type: StructureType,
16342     pub p_next: *const c_void,
16343     pub semaphore: Semaphore,
16344     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16345 }
16346 impl ::std::default::Default for SemaphoreGetZirconHandleInfoFUCHSIA {
default() -> SemaphoreGetZirconHandleInfoFUCHSIA16347     fn default() -> SemaphoreGetZirconHandleInfoFUCHSIA {
16348         SemaphoreGetZirconHandleInfoFUCHSIA {
16349             s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
16350             p_next: ::std::ptr::null(),
16351             semaphore: Semaphore::default(),
16352             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16353         }
16354     }
16355 }
16356 impl SemaphoreGetZirconHandleInfoFUCHSIA {
builder<'a>() -> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a>16357     pub fn builder<'a>() -> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16358         SemaphoreGetZirconHandleInfoFUCHSIABuilder {
16359             inner: SemaphoreGetZirconHandleInfoFUCHSIA::default(),
16360             marker: ::std::marker::PhantomData,
16361         }
16362     }
16363 }
16364 #[repr(transparent)]
16365 pub struct SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16366     inner: SemaphoreGetZirconHandleInfoFUCHSIA,
16367     marker: ::std::marker::PhantomData<&'a ()>,
16368 }
16369 impl<'a> ::std::ops::Deref for SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16370     type Target = SemaphoreGetZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target16371     fn deref(&self) -> &Self::Target {
16372         &self.inner
16373     }
16374 }
16375 impl<'a> ::std::ops::DerefMut for SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16376     fn deref_mut(&mut self) -> &mut Self::Target {
16377         &mut self.inner
16378     }
16379 }
16380 impl<'a> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16381     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16382         self.inner.semaphore = semaphore;
16383         self
16384     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16385     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16386         self.inner.handle_type = handle_type;
16387         self
16388     }
16389     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16390     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16391     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreGetZirconHandleInfoFUCHSIA16392     pub fn build(self) -> SemaphoreGetZirconHandleInfoFUCHSIA {
16393         self.inner
16394     }
16395 }
16396 #[repr(C)]
16397 #[derive(Copy, Clone, Debug)]
16398 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalFenceInfo.html>"]
16399 pub struct PhysicalDeviceExternalFenceInfo {
16400     pub s_type: StructureType,
16401     pub p_next: *const c_void,
16402     pub handle_type: ExternalFenceHandleTypeFlags,
16403 }
16404 impl ::std::default::Default for PhysicalDeviceExternalFenceInfo {
default() -> PhysicalDeviceExternalFenceInfo16405     fn default() -> PhysicalDeviceExternalFenceInfo {
16406         PhysicalDeviceExternalFenceInfo {
16407             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
16408             p_next: ::std::ptr::null(),
16409             handle_type: ExternalFenceHandleTypeFlags::default(),
16410         }
16411     }
16412 }
16413 impl PhysicalDeviceExternalFenceInfo {
builder<'a>() -> PhysicalDeviceExternalFenceInfoBuilder<'a>16414     pub fn builder<'a>() -> PhysicalDeviceExternalFenceInfoBuilder<'a> {
16415         PhysicalDeviceExternalFenceInfoBuilder {
16416             inner: PhysicalDeviceExternalFenceInfo::default(),
16417             marker: ::std::marker::PhantomData,
16418         }
16419     }
16420 }
16421 #[repr(transparent)]
16422 pub struct PhysicalDeviceExternalFenceInfoBuilder<'a> {
16423     inner: PhysicalDeviceExternalFenceInfo,
16424     marker: ::std::marker::PhantomData<&'a ()>,
16425 }
16426 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalFenceInfoBuilder<'a> {
16427     type Target = PhysicalDeviceExternalFenceInfo;
deref(&self) -> &Self::Target16428     fn deref(&self) -> &Self::Target {
16429         &self.inner
16430     }
16431 }
16432 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalFenceInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16433     fn deref_mut(&mut self) -> &mut Self::Target {
16434         &mut self.inner
16435     }
16436 }
16437 impl<'a> PhysicalDeviceExternalFenceInfoBuilder<'a> {
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16438     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16439         self.inner.handle_type = handle_type;
16440         self
16441     }
16442     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16443     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16444     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalFenceInfo16445     pub fn build(self) -> PhysicalDeviceExternalFenceInfo {
16446         self.inner
16447     }
16448 }
16449 #[repr(C)]
16450 #[derive(Copy, Clone, Debug)]
16451 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalFenceProperties.html>"]
16452 pub struct ExternalFenceProperties {
16453     pub s_type: StructureType,
16454     pub p_next: *mut c_void,
16455     pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
16456     pub compatible_handle_types: ExternalFenceHandleTypeFlags,
16457     pub external_fence_features: ExternalFenceFeatureFlags,
16458 }
16459 impl ::std::default::Default for ExternalFenceProperties {
default() -> ExternalFenceProperties16460     fn default() -> ExternalFenceProperties {
16461         ExternalFenceProperties {
16462             s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
16463             p_next: ::std::ptr::null_mut(),
16464             export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
16465             compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
16466             external_fence_features: ExternalFenceFeatureFlags::default(),
16467         }
16468     }
16469 }
16470 impl ExternalFenceProperties {
builder<'a>() -> ExternalFencePropertiesBuilder<'a>16471     pub fn builder<'a>() -> ExternalFencePropertiesBuilder<'a> {
16472         ExternalFencePropertiesBuilder {
16473             inner: ExternalFenceProperties::default(),
16474             marker: ::std::marker::PhantomData,
16475         }
16476     }
16477 }
16478 #[repr(transparent)]
16479 pub struct ExternalFencePropertiesBuilder<'a> {
16480     inner: ExternalFenceProperties,
16481     marker: ::std::marker::PhantomData<&'a ()>,
16482 }
16483 impl<'a> ::std::ops::Deref for ExternalFencePropertiesBuilder<'a> {
16484     type Target = ExternalFenceProperties;
deref(&self) -> &Self::Target16485     fn deref(&self) -> &Self::Target {
16486         &self.inner
16487     }
16488 }
16489 impl<'a> ::std::ops::DerefMut for ExternalFencePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16490     fn deref_mut(&mut self) -> &mut Self::Target {
16491         &mut self.inner
16492     }
16493 }
16494 impl<'a> ExternalFencePropertiesBuilder<'a> {
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalFenceHandleTypeFlags, ) -> Self16495     pub fn export_from_imported_handle_types(
16496         mut self,
16497         export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
16498     ) -> Self {
16499         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
16500         self
16501     }
compatible_handle_types( mut self, compatible_handle_types: ExternalFenceHandleTypeFlags, ) -> Self16502     pub fn compatible_handle_types(
16503         mut self,
16504         compatible_handle_types: ExternalFenceHandleTypeFlags,
16505     ) -> Self {
16506         self.inner.compatible_handle_types = compatible_handle_types;
16507         self
16508     }
external_fence_features( mut self, external_fence_features: ExternalFenceFeatureFlags, ) -> Self16509     pub fn external_fence_features(
16510         mut self,
16511         external_fence_features: ExternalFenceFeatureFlags,
16512     ) -> Self {
16513         self.inner.external_fence_features = external_fence_features;
16514         self
16515     }
16516     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16517     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16518     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalFenceProperties16519     pub fn build(self) -> ExternalFenceProperties {
16520         self.inner
16521     }
16522 }
16523 #[repr(C)]
16524 #[derive(Copy, Clone, Debug)]
16525 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportFenceCreateInfo.html>"]
16526 pub struct ExportFenceCreateInfo {
16527     pub s_type: StructureType,
16528     pub p_next: *const c_void,
16529     pub handle_types: ExternalFenceHandleTypeFlags,
16530 }
16531 impl ::std::default::Default for ExportFenceCreateInfo {
default() -> ExportFenceCreateInfo16532     fn default() -> ExportFenceCreateInfo {
16533         ExportFenceCreateInfo {
16534             s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
16535             p_next: ::std::ptr::null(),
16536             handle_types: ExternalFenceHandleTypeFlags::default(),
16537         }
16538     }
16539 }
16540 impl ExportFenceCreateInfo {
builder<'a>() -> ExportFenceCreateInfoBuilder<'a>16541     pub fn builder<'a>() -> ExportFenceCreateInfoBuilder<'a> {
16542         ExportFenceCreateInfoBuilder {
16543             inner: ExportFenceCreateInfo::default(),
16544             marker: ::std::marker::PhantomData,
16545         }
16546     }
16547 }
16548 #[repr(transparent)]
16549 pub struct ExportFenceCreateInfoBuilder<'a> {
16550     inner: ExportFenceCreateInfo,
16551     marker: ::std::marker::PhantomData<&'a ()>,
16552 }
16553 unsafe impl ExtendsFenceCreateInfo for ExportFenceCreateInfoBuilder<'_> {}
16554 unsafe impl ExtendsFenceCreateInfo for ExportFenceCreateInfo {}
16555 impl<'a> ::std::ops::Deref for ExportFenceCreateInfoBuilder<'a> {
16556     type Target = ExportFenceCreateInfo;
deref(&self) -> &Self::Target16557     fn deref(&self) -> &Self::Target {
16558         &self.inner
16559     }
16560 }
16561 impl<'a> ::std::ops::DerefMut for ExportFenceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16562     fn deref_mut(&mut self) -> &mut Self::Target {
16563         &mut self.inner
16564     }
16565 }
16566 impl<'a> ExportFenceCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalFenceHandleTypeFlags) -> Self16567     pub fn handle_types(mut self, handle_types: ExternalFenceHandleTypeFlags) -> Self {
16568         self.inner.handle_types = handle_types;
16569         self
16570     }
16571     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16572     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16573     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportFenceCreateInfo16574     pub fn build(self) -> ExportFenceCreateInfo {
16575         self.inner
16576     }
16577 }
16578 #[repr(C)]
16579 #[derive(Copy, Clone, Debug)]
16580 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportFenceWin32HandleInfoKHR.html>"]
16581 pub struct ImportFenceWin32HandleInfoKHR {
16582     pub s_type: StructureType,
16583     pub p_next: *const c_void,
16584     pub fence: Fence,
16585     pub flags: FenceImportFlags,
16586     pub handle_type: ExternalFenceHandleTypeFlags,
16587     pub handle: HANDLE,
16588     pub name: LPCWSTR,
16589 }
16590 impl ::std::default::Default for ImportFenceWin32HandleInfoKHR {
default() -> ImportFenceWin32HandleInfoKHR16591     fn default() -> ImportFenceWin32HandleInfoKHR {
16592         ImportFenceWin32HandleInfoKHR {
16593             s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
16594             p_next: ::std::ptr::null(),
16595             fence: Fence::default(),
16596             flags: FenceImportFlags::default(),
16597             handle_type: ExternalFenceHandleTypeFlags::default(),
16598             handle: unsafe { ::std::mem::zeroed() },
16599             name: unsafe { ::std::mem::zeroed() },
16600         }
16601     }
16602 }
16603 impl ImportFenceWin32HandleInfoKHR {
builder<'a>() -> ImportFenceWin32HandleInfoKHRBuilder<'a>16604     pub fn builder<'a>() -> ImportFenceWin32HandleInfoKHRBuilder<'a> {
16605         ImportFenceWin32HandleInfoKHRBuilder {
16606             inner: ImportFenceWin32HandleInfoKHR::default(),
16607             marker: ::std::marker::PhantomData,
16608         }
16609     }
16610 }
16611 #[repr(transparent)]
16612 pub struct ImportFenceWin32HandleInfoKHRBuilder<'a> {
16613     inner: ImportFenceWin32HandleInfoKHR,
16614     marker: ::std::marker::PhantomData<&'a ()>,
16615 }
16616 impl<'a> ::std::ops::Deref for ImportFenceWin32HandleInfoKHRBuilder<'a> {
16617     type Target = ImportFenceWin32HandleInfoKHR;
deref(&self) -> &Self::Target16618     fn deref(&self) -> &Self::Target {
16619         &self.inner
16620     }
16621 }
16622 impl<'a> ::std::ops::DerefMut for ImportFenceWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16623     fn deref_mut(&mut self) -> &mut Self::Target {
16624         &mut self.inner
16625     }
16626 }
16627 impl<'a> ImportFenceWin32HandleInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self16628     pub fn fence(mut self, fence: Fence) -> Self {
16629         self.inner.fence = fence;
16630         self
16631     }
flags(mut self, flags: FenceImportFlags) -> Self16632     pub fn flags(mut self, flags: FenceImportFlags) -> Self {
16633         self.inner.flags = flags;
16634         self
16635     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16636     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16637         self.inner.handle_type = handle_type;
16638         self
16639     }
handle(mut self, handle: HANDLE) -> Self16640     pub fn handle(mut self, handle: HANDLE) -> Self {
16641         self.inner.handle = handle;
16642         self
16643     }
name(mut self, name: LPCWSTR) -> Self16644     pub fn name(mut self, name: LPCWSTR) -> Self {
16645         self.inner.name = name;
16646         self
16647     }
16648     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16649     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16650     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportFenceWin32HandleInfoKHR16651     pub fn build(self) -> ImportFenceWin32HandleInfoKHR {
16652         self.inner
16653     }
16654 }
16655 #[repr(C)]
16656 #[derive(Copy, Clone, Debug)]
16657 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportFenceWin32HandleInfoKHR.html>"]
16658 pub struct ExportFenceWin32HandleInfoKHR {
16659     pub s_type: StructureType,
16660     pub p_next: *const c_void,
16661     pub p_attributes: *const SECURITY_ATTRIBUTES,
16662     pub dw_access: DWORD,
16663     pub name: LPCWSTR,
16664 }
16665 impl ::std::default::Default for ExportFenceWin32HandleInfoKHR {
default() -> ExportFenceWin32HandleInfoKHR16666     fn default() -> ExportFenceWin32HandleInfoKHR {
16667         ExportFenceWin32HandleInfoKHR {
16668             s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
16669             p_next: ::std::ptr::null(),
16670             p_attributes: ::std::ptr::null(),
16671             dw_access: DWORD::default(),
16672             name: unsafe { ::std::mem::zeroed() },
16673         }
16674     }
16675 }
16676 impl ExportFenceWin32HandleInfoKHR {
builder<'a>() -> ExportFenceWin32HandleInfoKHRBuilder<'a>16677     pub fn builder<'a>() -> ExportFenceWin32HandleInfoKHRBuilder<'a> {
16678         ExportFenceWin32HandleInfoKHRBuilder {
16679             inner: ExportFenceWin32HandleInfoKHR::default(),
16680             marker: ::std::marker::PhantomData,
16681         }
16682     }
16683 }
16684 #[repr(transparent)]
16685 pub struct ExportFenceWin32HandleInfoKHRBuilder<'a> {
16686     inner: ExportFenceWin32HandleInfoKHR,
16687     marker: ::std::marker::PhantomData<&'a ()>,
16688 }
16689 unsafe impl ExtendsFenceCreateInfo for ExportFenceWin32HandleInfoKHRBuilder<'_> {}
16690 unsafe impl ExtendsFenceCreateInfo for ExportFenceWin32HandleInfoKHR {}
16691 impl<'a> ::std::ops::Deref for ExportFenceWin32HandleInfoKHRBuilder<'a> {
16692     type Target = ExportFenceWin32HandleInfoKHR;
deref(&self) -> &Self::Target16693     fn deref(&self) -> &Self::Target {
16694         &self.inner
16695     }
16696 }
16697 impl<'a> ::std::ops::DerefMut for ExportFenceWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16698     fn deref_mut(&mut self) -> &mut Self::Target {
16699         &mut self.inner
16700     }
16701 }
16702 impl<'a> ExportFenceWin32HandleInfoKHRBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self16703     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
16704         self.inner.p_attributes = attributes;
16705         self
16706     }
dw_access(mut self, dw_access: DWORD) -> Self16707     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
16708         self.inner.dw_access = dw_access;
16709         self
16710     }
name(mut self, name: LPCWSTR) -> Self16711     pub fn name(mut self, name: LPCWSTR) -> Self {
16712         self.inner.name = name;
16713         self
16714     }
16715     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16716     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16717     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportFenceWin32HandleInfoKHR16718     pub fn build(self) -> ExportFenceWin32HandleInfoKHR {
16719         self.inner
16720     }
16721 }
16722 #[repr(C)]
16723 #[derive(Copy, Clone, Debug)]
16724 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceGetWin32HandleInfoKHR.html>"]
16725 pub struct FenceGetWin32HandleInfoKHR {
16726     pub s_type: StructureType,
16727     pub p_next: *const c_void,
16728     pub fence: Fence,
16729     pub handle_type: ExternalFenceHandleTypeFlags,
16730 }
16731 impl ::std::default::Default for FenceGetWin32HandleInfoKHR {
default() -> FenceGetWin32HandleInfoKHR16732     fn default() -> FenceGetWin32HandleInfoKHR {
16733         FenceGetWin32HandleInfoKHR {
16734             s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
16735             p_next: ::std::ptr::null(),
16736             fence: Fence::default(),
16737             handle_type: ExternalFenceHandleTypeFlags::default(),
16738         }
16739     }
16740 }
16741 impl FenceGetWin32HandleInfoKHR {
builder<'a>() -> FenceGetWin32HandleInfoKHRBuilder<'a>16742     pub fn builder<'a>() -> FenceGetWin32HandleInfoKHRBuilder<'a> {
16743         FenceGetWin32HandleInfoKHRBuilder {
16744             inner: FenceGetWin32HandleInfoKHR::default(),
16745             marker: ::std::marker::PhantomData,
16746         }
16747     }
16748 }
16749 #[repr(transparent)]
16750 pub struct FenceGetWin32HandleInfoKHRBuilder<'a> {
16751     inner: FenceGetWin32HandleInfoKHR,
16752     marker: ::std::marker::PhantomData<&'a ()>,
16753 }
16754 impl<'a> ::std::ops::Deref for FenceGetWin32HandleInfoKHRBuilder<'a> {
16755     type Target = FenceGetWin32HandleInfoKHR;
deref(&self) -> &Self::Target16756     fn deref(&self) -> &Self::Target {
16757         &self.inner
16758     }
16759 }
16760 impl<'a> ::std::ops::DerefMut for FenceGetWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16761     fn deref_mut(&mut self) -> &mut Self::Target {
16762         &mut self.inner
16763     }
16764 }
16765 impl<'a> FenceGetWin32HandleInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self16766     pub fn fence(mut self, fence: Fence) -> Self {
16767         self.inner.fence = fence;
16768         self
16769     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16770     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16771         self.inner.handle_type = handle_type;
16772         self
16773     }
16774     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16775     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16776     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FenceGetWin32HandleInfoKHR16777     pub fn build(self) -> FenceGetWin32HandleInfoKHR {
16778         self.inner
16779     }
16780 }
16781 #[repr(C)]
16782 #[derive(Copy, Clone, Debug)]
16783 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportFenceFdInfoKHR.html>"]
16784 pub struct ImportFenceFdInfoKHR {
16785     pub s_type: StructureType,
16786     pub p_next: *const c_void,
16787     pub fence: Fence,
16788     pub flags: FenceImportFlags,
16789     pub handle_type: ExternalFenceHandleTypeFlags,
16790     pub fd: c_int,
16791 }
16792 impl ::std::default::Default for ImportFenceFdInfoKHR {
default() -> ImportFenceFdInfoKHR16793     fn default() -> ImportFenceFdInfoKHR {
16794         ImportFenceFdInfoKHR {
16795             s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
16796             p_next: ::std::ptr::null(),
16797             fence: Fence::default(),
16798             flags: FenceImportFlags::default(),
16799             handle_type: ExternalFenceHandleTypeFlags::default(),
16800             fd: c_int::default(),
16801         }
16802     }
16803 }
16804 impl ImportFenceFdInfoKHR {
builder<'a>() -> ImportFenceFdInfoKHRBuilder<'a>16805     pub fn builder<'a>() -> ImportFenceFdInfoKHRBuilder<'a> {
16806         ImportFenceFdInfoKHRBuilder {
16807             inner: ImportFenceFdInfoKHR::default(),
16808             marker: ::std::marker::PhantomData,
16809         }
16810     }
16811 }
16812 #[repr(transparent)]
16813 pub struct ImportFenceFdInfoKHRBuilder<'a> {
16814     inner: ImportFenceFdInfoKHR,
16815     marker: ::std::marker::PhantomData<&'a ()>,
16816 }
16817 impl<'a> ::std::ops::Deref for ImportFenceFdInfoKHRBuilder<'a> {
16818     type Target = ImportFenceFdInfoKHR;
deref(&self) -> &Self::Target16819     fn deref(&self) -> &Self::Target {
16820         &self.inner
16821     }
16822 }
16823 impl<'a> ::std::ops::DerefMut for ImportFenceFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16824     fn deref_mut(&mut self) -> &mut Self::Target {
16825         &mut self.inner
16826     }
16827 }
16828 impl<'a> ImportFenceFdInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self16829     pub fn fence(mut self, fence: Fence) -> Self {
16830         self.inner.fence = fence;
16831         self
16832     }
flags(mut self, flags: FenceImportFlags) -> Self16833     pub fn flags(mut self, flags: FenceImportFlags) -> Self {
16834         self.inner.flags = flags;
16835         self
16836     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16837     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16838         self.inner.handle_type = handle_type;
16839         self
16840     }
fd(mut self, fd: c_int) -> Self16841     pub fn fd(mut self, fd: c_int) -> Self {
16842         self.inner.fd = fd;
16843         self
16844     }
16845     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16846     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16847     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportFenceFdInfoKHR16848     pub fn build(self) -> ImportFenceFdInfoKHR {
16849         self.inner
16850     }
16851 }
16852 #[repr(C)]
16853 #[derive(Copy, Clone, Debug)]
16854 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceGetFdInfoKHR.html>"]
16855 pub struct FenceGetFdInfoKHR {
16856     pub s_type: StructureType,
16857     pub p_next: *const c_void,
16858     pub fence: Fence,
16859     pub handle_type: ExternalFenceHandleTypeFlags,
16860 }
16861 impl ::std::default::Default for FenceGetFdInfoKHR {
default() -> FenceGetFdInfoKHR16862     fn default() -> FenceGetFdInfoKHR {
16863         FenceGetFdInfoKHR {
16864             s_type: StructureType::FENCE_GET_FD_INFO_KHR,
16865             p_next: ::std::ptr::null(),
16866             fence: Fence::default(),
16867             handle_type: ExternalFenceHandleTypeFlags::default(),
16868         }
16869     }
16870 }
16871 impl FenceGetFdInfoKHR {
builder<'a>() -> FenceGetFdInfoKHRBuilder<'a>16872     pub fn builder<'a>() -> FenceGetFdInfoKHRBuilder<'a> {
16873         FenceGetFdInfoKHRBuilder {
16874             inner: FenceGetFdInfoKHR::default(),
16875             marker: ::std::marker::PhantomData,
16876         }
16877     }
16878 }
16879 #[repr(transparent)]
16880 pub struct FenceGetFdInfoKHRBuilder<'a> {
16881     inner: FenceGetFdInfoKHR,
16882     marker: ::std::marker::PhantomData<&'a ()>,
16883 }
16884 impl<'a> ::std::ops::Deref for FenceGetFdInfoKHRBuilder<'a> {
16885     type Target = FenceGetFdInfoKHR;
deref(&self) -> &Self::Target16886     fn deref(&self) -> &Self::Target {
16887         &self.inner
16888     }
16889 }
16890 impl<'a> ::std::ops::DerefMut for FenceGetFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16891     fn deref_mut(&mut self) -> &mut Self::Target {
16892         &mut self.inner
16893     }
16894 }
16895 impl<'a> FenceGetFdInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self16896     pub fn fence(mut self, fence: Fence) -> Self {
16897         self.inner.fence = fence;
16898         self
16899     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16900     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16901         self.inner.handle_type = handle_type;
16902         self
16903     }
16904     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16905     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16906     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FenceGetFdInfoKHR16907     pub fn build(self) -> FenceGetFdInfoKHR {
16908         self.inner
16909     }
16910 }
16911 #[repr(C)]
16912 #[derive(Copy, Clone, Debug)]
16913 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiviewFeatures.html>"]
16914 pub struct PhysicalDeviceMultiviewFeatures {
16915     pub s_type: StructureType,
16916     pub p_next: *mut c_void,
16917     pub multiview: Bool32,
16918     pub multiview_geometry_shader: Bool32,
16919     pub multiview_tessellation_shader: Bool32,
16920 }
16921 impl ::std::default::Default for PhysicalDeviceMultiviewFeatures {
default() -> PhysicalDeviceMultiviewFeatures16922     fn default() -> PhysicalDeviceMultiviewFeatures {
16923         PhysicalDeviceMultiviewFeatures {
16924             s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
16925             p_next: ::std::ptr::null_mut(),
16926             multiview: Bool32::default(),
16927             multiview_geometry_shader: Bool32::default(),
16928             multiview_tessellation_shader: Bool32::default(),
16929         }
16930     }
16931 }
16932 impl PhysicalDeviceMultiviewFeatures {
builder<'a>() -> PhysicalDeviceMultiviewFeaturesBuilder<'a>16933     pub fn builder<'a>() -> PhysicalDeviceMultiviewFeaturesBuilder<'a> {
16934         PhysicalDeviceMultiviewFeaturesBuilder {
16935             inner: PhysicalDeviceMultiviewFeatures::default(),
16936             marker: ::std::marker::PhantomData,
16937         }
16938     }
16939 }
16940 #[repr(transparent)]
16941 pub struct PhysicalDeviceMultiviewFeaturesBuilder<'a> {
16942     inner: PhysicalDeviceMultiviewFeatures,
16943     marker: ::std::marker::PhantomData<&'a ()>,
16944 }
16945 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiviewFeaturesBuilder<'_> {}
16946 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiviewFeatures {}
16947 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiviewFeaturesBuilder<'_> {}
16948 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiviewFeatures {}
16949 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiviewFeaturesBuilder<'a> {
16950     type Target = PhysicalDeviceMultiviewFeatures;
deref(&self) -> &Self::Target16951     fn deref(&self) -> &Self::Target {
16952         &self.inner
16953     }
16954 }
16955 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiviewFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16956     fn deref_mut(&mut self) -> &mut Self::Target {
16957         &mut self.inner
16958     }
16959 }
16960 impl<'a> PhysicalDeviceMultiviewFeaturesBuilder<'a> {
multiview(mut self, multiview: bool) -> Self16961     pub fn multiview(mut self, multiview: bool) -> Self {
16962         self.inner.multiview = multiview.into();
16963         self
16964     }
multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self16965     pub fn multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self {
16966         self.inner.multiview_geometry_shader = multiview_geometry_shader.into();
16967         self
16968     }
multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self16969     pub fn multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self {
16970         self.inner.multiview_tessellation_shader = multiview_tessellation_shader.into();
16971         self
16972     }
16973     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16974     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16975     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiviewFeatures16976     pub fn build(self) -> PhysicalDeviceMultiviewFeatures {
16977         self.inner
16978     }
16979 }
16980 #[repr(C)]
16981 #[derive(Copy, Clone, Debug)]
16982 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiviewProperties.html>"]
16983 pub struct PhysicalDeviceMultiviewProperties {
16984     pub s_type: StructureType,
16985     pub p_next: *mut c_void,
16986     pub max_multiview_view_count: u32,
16987     pub max_multiview_instance_index: u32,
16988 }
16989 impl ::std::default::Default for PhysicalDeviceMultiviewProperties {
default() -> PhysicalDeviceMultiviewProperties16990     fn default() -> PhysicalDeviceMultiviewProperties {
16991         PhysicalDeviceMultiviewProperties {
16992             s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
16993             p_next: ::std::ptr::null_mut(),
16994             max_multiview_view_count: u32::default(),
16995             max_multiview_instance_index: u32::default(),
16996         }
16997     }
16998 }
16999 impl PhysicalDeviceMultiviewProperties {
builder<'a>() -> PhysicalDeviceMultiviewPropertiesBuilder<'a>17000     pub fn builder<'a>() -> PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17001         PhysicalDeviceMultiviewPropertiesBuilder {
17002             inner: PhysicalDeviceMultiviewProperties::default(),
17003             marker: ::std::marker::PhantomData,
17004         }
17005     }
17006 }
17007 #[repr(transparent)]
17008 pub struct PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17009     inner: PhysicalDeviceMultiviewProperties,
17010     marker: ::std::marker::PhantomData<&'a ()>,
17011 }
17012 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiviewPropertiesBuilder<'_> {}
17013 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiviewProperties {}
17014 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17015     type Target = PhysicalDeviceMultiviewProperties;
deref(&self) -> &Self::Target17016     fn deref(&self) -> &Self::Target {
17017         &self.inner
17018     }
17019 }
17020 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiviewPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17021     fn deref_mut(&mut self) -> &mut Self::Target {
17022         &mut self.inner
17023     }
17024 }
17025 impl<'a> PhysicalDeviceMultiviewPropertiesBuilder<'a> {
max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self17026     pub fn max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self {
17027         self.inner.max_multiview_view_count = max_multiview_view_count;
17028         self
17029     }
max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self17030     pub fn max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self {
17031         self.inner.max_multiview_instance_index = max_multiview_instance_index;
17032         self
17033     }
17034     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17035     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17036     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiviewProperties17037     pub fn build(self) -> PhysicalDeviceMultiviewProperties {
17038         self.inner
17039     }
17040 }
17041 #[repr(C)]
17042 #[derive(Copy, Clone, Debug)]
17043 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassMultiviewCreateInfo.html>"]
17044 pub struct RenderPassMultiviewCreateInfo {
17045     pub s_type: StructureType,
17046     pub p_next: *const c_void,
17047     pub subpass_count: u32,
17048     pub p_view_masks: *const u32,
17049     pub dependency_count: u32,
17050     pub p_view_offsets: *const i32,
17051     pub correlation_mask_count: u32,
17052     pub p_correlation_masks: *const u32,
17053 }
17054 impl ::std::default::Default for RenderPassMultiviewCreateInfo {
default() -> RenderPassMultiviewCreateInfo17055     fn default() -> RenderPassMultiviewCreateInfo {
17056         RenderPassMultiviewCreateInfo {
17057             s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
17058             p_next: ::std::ptr::null(),
17059             subpass_count: u32::default(),
17060             p_view_masks: ::std::ptr::null(),
17061             dependency_count: u32::default(),
17062             p_view_offsets: ::std::ptr::null(),
17063             correlation_mask_count: u32::default(),
17064             p_correlation_masks: ::std::ptr::null(),
17065         }
17066     }
17067 }
17068 impl RenderPassMultiviewCreateInfo {
builder<'a>() -> RenderPassMultiviewCreateInfoBuilder<'a>17069     pub fn builder<'a>() -> RenderPassMultiviewCreateInfoBuilder<'a> {
17070         RenderPassMultiviewCreateInfoBuilder {
17071             inner: RenderPassMultiviewCreateInfo::default(),
17072             marker: ::std::marker::PhantomData,
17073         }
17074     }
17075 }
17076 #[repr(transparent)]
17077 pub struct RenderPassMultiviewCreateInfoBuilder<'a> {
17078     inner: RenderPassMultiviewCreateInfo,
17079     marker: ::std::marker::PhantomData<&'a ()>,
17080 }
17081 unsafe impl ExtendsRenderPassCreateInfo for RenderPassMultiviewCreateInfoBuilder<'_> {}
17082 unsafe impl ExtendsRenderPassCreateInfo for RenderPassMultiviewCreateInfo {}
17083 impl<'a> ::std::ops::Deref for RenderPassMultiviewCreateInfoBuilder<'a> {
17084     type Target = RenderPassMultiviewCreateInfo;
deref(&self) -> &Self::Target17085     fn deref(&self) -> &Self::Target {
17086         &self.inner
17087     }
17088 }
17089 impl<'a> ::std::ops::DerefMut for RenderPassMultiviewCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17090     fn deref_mut(&mut self) -> &mut Self::Target {
17091         &mut self.inner
17092     }
17093 }
17094 impl<'a> RenderPassMultiviewCreateInfoBuilder<'a> {
view_masks(mut self, view_masks: &'a [u32]) -> Self17095     pub fn view_masks(mut self, view_masks: &'a [u32]) -> Self {
17096         self.inner.subpass_count = view_masks.len() as _;
17097         self.inner.p_view_masks = view_masks.as_ptr();
17098         self
17099     }
view_offsets(mut self, view_offsets: &'a [i32]) -> Self17100     pub fn view_offsets(mut self, view_offsets: &'a [i32]) -> Self {
17101         self.inner.dependency_count = view_offsets.len() as _;
17102         self.inner.p_view_offsets = view_offsets.as_ptr();
17103         self
17104     }
correlation_masks(mut self, correlation_masks: &'a [u32]) -> Self17105     pub fn correlation_masks(mut self, correlation_masks: &'a [u32]) -> Self {
17106         self.inner.correlation_mask_count = correlation_masks.len() as _;
17107         self.inner.p_correlation_masks = correlation_masks.as_ptr();
17108         self
17109     }
17110     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17111     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17112     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassMultiviewCreateInfo17113     pub fn build(self) -> RenderPassMultiviewCreateInfo {
17114         self.inner
17115     }
17116 }
17117 #[repr(C)]
17118 #[derive(Copy, Clone, Debug)]
17119 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilities2EXT.html>"]
17120 pub struct SurfaceCapabilities2EXT {
17121     pub s_type: StructureType,
17122     pub p_next: *mut c_void,
17123     pub min_image_count: u32,
17124     pub max_image_count: u32,
17125     pub current_extent: Extent2D,
17126     pub min_image_extent: Extent2D,
17127     pub max_image_extent: Extent2D,
17128     pub max_image_array_layers: u32,
17129     pub supported_transforms: SurfaceTransformFlagsKHR,
17130     pub current_transform: SurfaceTransformFlagsKHR,
17131     pub supported_composite_alpha: CompositeAlphaFlagsKHR,
17132     pub supported_usage_flags: ImageUsageFlags,
17133     pub supported_surface_counters: SurfaceCounterFlagsEXT,
17134 }
17135 impl ::std::default::Default for SurfaceCapabilities2EXT {
default() -> SurfaceCapabilities2EXT17136     fn default() -> SurfaceCapabilities2EXT {
17137         SurfaceCapabilities2EXT {
17138             s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
17139             p_next: ::std::ptr::null_mut(),
17140             min_image_count: u32::default(),
17141             max_image_count: u32::default(),
17142             current_extent: Extent2D::default(),
17143             min_image_extent: Extent2D::default(),
17144             max_image_extent: Extent2D::default(),
17145             max_image_array_layers: u32::default(),
17146             supported_transforms: SurfaceTransformFlagsKHR::default(),
17147             current_transform: SurfaceTransformFlagsKHR::default(),
17148             supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
17149             supported_usage_flags: ImageUsageFlags::default(),
17150             supported_surface_counters: SurfaceCounterFlagsEXT::default(),
17151         }
17152     }
17153 }
17154 impl SurfaceCapabilities2EXT {
builder<'a>() -> SurfaceCapabilities2EXTBuilder<'a>17155     pub fn builder<'a>() -> SurfaceCapabilities2EXTBuilder<'a> {
17156         SurfaceCapabilities2EXTBuilder {
17157             inner: SurfaceCapabilities2EXT::default(),
17158             marker: ::std::marker::PhantomData,
17159         }
17160     }
17161 }
17162 #[repr(transparent)]
17163 pub struct SurfaceCapabilities2EXTBuilder<'a> {
17164     inner: SurfaceCapabilities2EXT,
17165     marker: ::std::marker::PhantomData<&'a ()>,
17166 }
17167 impl<'a> ::std::ops::Deref for SurfaceCapabilities2EXTBuilder<'a> {
17168     type Target = SurfaceCapabilities2EXT;
deref(&self) -> &Self::Target17169     fn deref(&self) -> &Self::Target {
17170         &self.inner
17171     }
17172 }
17173 impl<'a> ::std::ops::DerefMut for SurfaceCapabilities2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17174     fn deref_mut(&mut self) -> &mut Self::Target {
17175         &mut self.inner
17176     }
17177 }
17178 impl<'a> SurfaceCapabilities2EXTBuilder<'a> {
min_image_count(mut self, min_image_count: u32) -> Self17179     pub fn min_image_count(mut self, min_image_count: u32) -> Self {
17180         self.inner.min_image_count = min_image_count;
17181         self
17182     }
max_image_count(mut self, max_image_count: u32) -> Self17183     pub fn max_image_count(mut self, max_image_count: u32) -> Self {
17184         self.inner.max_image_count = max_image_count;
17185         self
17186     }
current_extent(mut self, current_extent: Extent2D) -> Self17187     pub fn current_extent(mut self, current_extent: Extent2D) -> Self {
17188         self.inner.current_extent = current_extent;
17189         self
17190     }
min_image_extent(mut self, min_image_extent: Extent2D) -> Self17191     pub fn min_image_extent(mut self, min_image_extent: Extent2D) -> Self {
17192         self.inner.min_image_extent = min_image_extent;
17193         self
17194     }
max_image_extent(mut self, max_image_extent: Extent2D) -> Self17195     pub fn max_image_extent(mut self, max_image_extent: Extent2D) -> Self {
17196         self.inner.max_image_extent = max_image_extent;
17197         self
17198     }
max_image_array_layers(mut self, max_image_array_layers: u32) -> Self17199     pub fn max_image_array_layers(mut self, max_image_array_layers: u32) -> Self {
17200         self.inner.max_image_array_layers = max_image_array_layers;
17201         self
17202     }
supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self17203     pub fn supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self {
17204         self.inner.supported_transforms = supported_transforms;
17205         self
17206     }
current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self17207     pub fn current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self {
17208         self.inner.current_transform = current_transform;
17209         self
17210     }
supported_composite_alpha( mut self, supported_composite_alpha: CompositeAlphaFlagsKHR, ) -> Self17211     pub fn supported_composite_alpha(
17212         mut self,
17213         supported_composite_alpha: CompositeAlphaFlagsKHR,
17214     ) -> Self {
17215         self.inner.supported_composite_alpha = supported_composite_alpha;
17216         self
17217     }
supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self17218     pub fn supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self {
17219         self.inner.supported_usage_flags = supported_usage_flags;
17220         self
17221     }
supported_surface_counters( mut self, supported_surface_counters: SurfaceCounterFlagsEXT, ) -> Self17222     pub fn supported_surface_counters(
17223         mut self,
17224         supported_surface_counters: SurfaceCounterFlagsEXT,
17225     ) -> Self {
17226         self.inner.supported_surface_counters = supported_surface_counters;
17227         self
17228     }
17229     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17230     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17231     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilities2EXT17232     pub fn build(self) -> SurfaceCapabilities2EXT {
17233         self.inner
17234     }
17235 }
17236 #[repr(C)]
17237 #[derive(Copy, Clone, Debug)]
17238 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPowerInfoEXT.html>"]
17239 pub struct DisplayPowerInfoEXT {
17240     pub s_type: StructureType,
17241     pub p_next: *const c_void,
17242     pub power_state: DisplayPowerStateEXT,
17243 }
17244 impl ::std::default::Default for DisplayPowerInfoEXT {
default() -> DisplayPowerInfoEXT17245     fn default() -> DisplayPowerInfoEXT {
17246         DisplayPowerInfoEXT {
17247             s_type: StructureType::DISPLAY_POWER_INFO_EXT,
17248             p_next: ::std::ptr::null(),
17249             power_state: DisplayPowerStateEXT::default(),
17250         }
17251     }
17252 }
17253 impl DisplayPowerInfoEXT {
builder<'a>() -> DisplayPowerInfoEXTBuilder<'a>17254     pub fn builder<'a>() -> DisplayPowerInfoEXTBuilder<'a> {
17255         DisplayPowerInfoEXTBuilder {
17256             inner: DisplayPowerInfoEXT::default(),
17257             marker: ::std::marker::PhantomData,
17258         }
17259     }
17260 }
17261 #[repr(transparent)]
17262 pub struct DisplayPowerInfoEXTBuilder<'a> {
17263     inner: DisplayPowerInfoEXT,
17264     marker: ::std::marker::PhantomData<&'a ()>,
17265 }
17266 impl<'a> ::std::ops::Deref for DisplayPowerInfoEXTBuilder<'a> {
17267     type Target = DisplayPowerInfoEXT;
deref(&self) -> &Self::Target17268     fn deref(&self) -> &Self::Target {
17269         &self.inner
17270     }
17271 }
17272 impl<'a> ::std::ops::DerefMut for DisplayPowerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17273     fn deref_mut(&mut self) -> &mut Self::Target {
17274         &mut self.inner
17275     }
17276 }
17277 impl<'a> DisplayPowerInfoEXTBuilder<'a> {
power_state(mut self, power_state: DisplayPowerStateEXT) -> Self17278     pub fn power_state(mut self, power_state: DisplayPowerStateEXT) -> Self {
17279         self.inner.power_state = power_state;
17280         self
17281     }
17282     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17283     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17284     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPowerInfoEXT17285     pub fn build(self) -> DisplayPowerInfoEXT {
17286         self.inner
17287     }
17288 }
17289 #[repr(C)]
17290 #[derive(Copy, Clone, Debug)]
17291 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceEventInfoEXT.html>"]
17292 pub struct DeviceEventInfoEXT {
17293     pub s_type: StructureType,
17294     pub p_next: *const c_void,
17295     pub device_event: DeviceEventTypeEXT,
17296 }
17297 impl ::std::default::Default for DeviceEventInfoEXT {
default() -> DeviceEventInfoEXT17298     fn default() -> DeviceEventInfoEXT {
17299         DeviceEventInfoEXT {
17300             s_type: StructureType::DEVICE_EVENT_INFO_EXT,
17301             p_next: ::std::ptr::null(),
17302             device_event: DeviceEventTypeEXT::default(),
17303         }
17304     }
17305 }
17306 impl DeviceEventInfoEXT {
builder<'a>() -> DeviceEventInfoEXTBuilder<'a>17307     pub fn builder<'a>() -> DeviceEventInfoEXTBuilder<'a> {
17308         DeviceEventInfoEXTBuilder {
17309             inner: DeviceEventInfoEXT::default(),
17310             marker: ::std::marker::PhantomData,
17311         }
17312     }
17313 }
17314 #[repr(transparent)]
17315 pub struct DeviceEventInfoEXTBuilder<'a> {
17316     inner: DeviceEventInfoEXT,
17317     marker: ::std::marker::PhantomData<&'a ()>,
17318 }
17319 impl<'a> ::std::ops::Deref for DeviceEventInfoEXTBuilder<'a> {
17320     type Target = DeviceEventInfoEXT;
deref(&self) -> &Self::Target17321     fn deref(&self) -> &Self::Target {
17322         &self.inner
17323     }
17324 }
17325 impl<'a> ::std::ops::DerefMut for DeviceEventInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17326     fn deref_mut(&mut self) -> &mut Self::Target {
17327         &mut self.inner
17328     }
17329 }
17330 impl<'a> DeviceEventInfoEXTBuilder<'a> {
device_event(mut self, device_event: DeviceEventTypeEXT) -> Self17331     pub fn device_event(mut self, device_event: DeviceEventTypeEXT) -> Self {
17332         self.inner.device_event = device_event;
17333         self
17334     }
17335     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17336     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17337     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceEventInfoEXT17338     pub fn build(self) -> DeviceEventInfoEXT {
17339         self.inner
17340     }
17341 }
17342 #[repr(C)]
17343 #[derive(Copy, Clone, Debug)]
17344 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayEventInfoEXT.html>"]
17345 pub struct DisplayEventInfoEXT {
17346     pub s_type: StructureType,
17347     pub p_next: *const c_void,
17348     pub display_event: DisplayEventTypeEXT,
17349 }
17350 impl ::std::default::Default for DisplayEventInfoEXT {
default() -> DisplayEventInfoEXT17351     fn default() -> DisplayEventInfoEXT {
17352         DisplayEventInfoEXT {
17353             s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
17354             p_next: ::std::ptr::null(),
17355             display_event: DisplayEventTypeEXT::default(),
17356         }
17357     }
17358 }
17359 impl DisplayEventInfoEXT {
builder<'a>() -> DisplayEventInfoEXTBuilder<'a>17360     pub fn builder<'a>() -> DisplayEventInfoEXTBuilder<'a> {
17361         DisplayEventInfoEXTBuilder {
17362             inner: DisplayEventInfoEXT::default(),
17363             marker: ::std::marker::PhantomData,
17364         }
17365     }
17366 }
17367 #[repr(transparent)]
17368 pub struct DisplayEventInfoEXTBuilder<'a> {
17369     inner: DisplayEventInfoEXT,
17370     marker: ::std::marker::PhantomData<&'a ()>,
17371 }
17372 impl<'a> ::std::ops::Deref for DisplayEventInfoEXTBuilder<'a> {
17373     type Target = DisplayEventInfoEXT;
deref(&self) -> &Self::Target17374     fn deref(&self) -> &Self::Target {
17375         &self.inner
17376     }
17377 }
17378 impl<'a> ::std::ops::DerefMut for DisplayEventInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17379     fn deref_mut(&mut self) -> &mut Self::Target {
17380         &mut self.inner
17381     }
17382 }
17383 impl<'a> DisplayEventInfoEXTBuilder<'a> {
display_event(mut self, display_event: DisplayEventTypeEXT) -> Self17384     pub fn display_event(mut self, display_event: DisplayEventTypeEXT) -> Self {
17385         self.inner.display_event = display_event;
17386         self
17387     }
17388     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17389     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17390     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayEventInfoEXT17391     pub fn build(self) -> DisplayEventInfoEXT {
17392         self.inner
17393     }
17394 }
17395 #[repr(C)]
17396 #[derive(Copy, Clone, Debug)]
17397 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainCounterCreateInfoEXT.html>"]
17398 pub struct SwapchainCounterCreateInfoEXT {
17399     pub s_type: StructureType,
17400     pub p_next: *const c_void,
17401     pub surface_counters: SurfaceCounterFlagsEXT,
17402 }
17403 impl ::std::default::Default for SwapchainCounterCreateInfoEXT {
default() -> SwapchainCounterCreateInfoEXT17404     fn default() -> SwapchainCounterCreateInfoEXT {
17405         SwapchainCounterCreateInfoEXT {
17406             s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
17407             p_next: ::std::ptr::null(),
17408             surface_counters: SurfaceCounterFlagsEXT::default(),
17409         }
17410     }
17411 }
17412 impl SwapchainCounterCreateInfoEXT {
builder<'a>() -> SwapchainCounterCreateInfoEXTBuilder<'a>17413     pub fn builder<'a>() -> SwapchainCounterCreateInfoEXTBuilder<'a> {
17414         SwapchainCounterCreateInfoEXTBuilder {
17415             inner: SwapchainCounterCreateInfoEXT::default(),
17416             marker: ::std::marker::PhantomData,
17417         }
17418     }
17419 }
17420 #[repr(transparent)]
17421 pub struct SwapchainCounterCreateInfoEXTBuilder<'a> {
17422     inner: SwapchainCounterCreateInfoEXT,
17423     marker: ::std::marker::PhantomData<&'a ()>,
17424 }
17425 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainCounterCreateInfoEXTBuilder<'_> {}
17426 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainCounterCreateInfoEXT {}
17427 impl<'a> ::std::ops::Deref for SwapchainCounterCreateInfoEXTBuilder<'a> {
17428     type Target = SwapchainCounterCreateInfoEXT;
deref(&self) -> &Self::Target17429     fn deref(&self) -> &Self::Target {
17430         &self.inner
17431     }
17432 }
17433 impl<'a> ::std::ops::DerefMut for SwapchainCounterCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17434     fn deref_mut(&mut self) -> &mut Self::Target {
17435         &mut self.inner
17436     }
17437 }
17438 impl<'a> SwapchainCounterCreateInfoEXTBuilder<'a> {
surface_counters(mut self, surface_counters: SurfaceCounterFlagsEXT) -> Self17439     pub fn surface_counters(mut self, surface_counters: SurfaceCounterFlagsEXT) -> Self {
17440         self.inner.surface_counters = surface_counters;
17441         self
17442     }
17443     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17444     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17445     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainCounterCreateInfoEXT17446     pub fn build(self) -> SwapchainCounterCreateInfoEXT {
17447         self.inner
17448     }
17449 }
17450 #[repr(C)]
17451 #[derive(Copy, Clone, Debug)]
17452 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceGroupProperties.html>"]
17453 pub struct PhysicalDeviceGroupProperties {
17454     pub s_type: StructureType,
17455     pub p_next: *mut c_void,
17456     pub physical_device_count: u32,
17457     pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
17458     pub subset_allocation: Bool32,
17459 }
17460 impl ::std::default::Default for PhysicalDeviceGroupProperties {
default() -> PhysicalDeviceGroupProperties17461     fn default() -> PhysicalDeviceGroupProperties {
17462         PhysicalDeviceGroupProperties {
17463             s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
17464             p_next: ::std::ptr::null_mut(),
17465             physical_device_count: u32::default(),
17466             physical_devices: unsafe { ::std::mem::zeroed() },
17467             subset_allocation: Bool32::default(),
17468         }
17469     }
17470 }
17471 impl PhysicalDeviceGroupProperties {
builder<'a>() -> PhysicalDeviceGroupPropertiesBuilder<'a>17472     pub fn builder<'a>() -> PhysicalDeviceGroupPropertiesBuilder<'a> {
17473         PhysicalDeviceGroupPropertiesBuilder {
17474             inner: PhysicalDeviceGroupProperties::default(),
17475             marker: ::std::marker::PhantomData,
17476         }
17477     }
17478 }
17479 #[repr(transparent)]
17480 pub struct PhysicalDeviceGroupPropertiesBuilder<'a> {
17481     inner: PhysicalDeviceGroupProperties,
17482     marker: ::std::marker::PhantomData<&'a ()>,
17483 }
17484 impl<'a> ::std::ops::Deref for PhysicalDeviceGroupPropertiesBuilder<'a> {
17485     type Target = PhysicalDeviceGroupProperties;
deref(&self) -> &Self::Target17486     fn deref(&self) -> &Self::Target {
17487         &self.inner
17488     }
17489 }
17490 impl<'a> ::std::ops::DerefMut for PhysicalDeviceGroupPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17491     fn deref_mut(&mut self) -> &mut Self::Target {
17492         &mut self.inner
17493     }
17494 }
17495 impl<'a> PhysicalDeviceGroupPropertiesBuilder<'a> {
physical_device_count(mut self, physical_device_count: u32) -> Self17496     pub fn physical_device_count(mut self, physical_device_count: u32) -> Self {
17497         self.inner.physical_device_count = physical_device_count;
17498         self
17499     }
physical_devices( mut self, physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE], ) -> Self17500     pub fn physical_devices(
17501         mut self,
17502         physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
17503     ) -> Self {
17504         self.inner.physical_devices = physical_devices;
17505         self
17506     }
subset_allocation(mut self, subset_allocation: bool) -> Self17507     pub fn subset_allocation(mut self, subset_allocation: bool) -> Self {
17508         self.inner.subset_allocation = subset_allocation.into();
17509         self
17510     }
17511     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17512     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17513     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceGroupProperties17514     pub fn build(self) -> PhysicalDeviceGroupProperties {
17515         self.inner
17516     }
17517 }
17518 #[repr(C)]
17519 #[derive(Copy, Clone, Debug)]
17520 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryAllocateFlagsInfo.html>"]
17521 pub struct MemoryAllocateFlagsInfo {
17522     pub s_type: StructureType,
17523     pub p_next: *const c_void,
17524     pub flags: MemoryAllocateFlags,
17525     pub device_mask: u32,
17526 }
17527 impl ::std::default::Default for MemoryAllocateFlagsInfo {
default() -> MemoryAllocateFlagsInfo17528     fn default() -> MemoryAllocateFlagsInfo {
17529         MemoryAllocateFlagsInfo {
17530             s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
17531             p_next: ::std::ptr::null(),
17532             flags: MemoryAllocateFlags::default(),
17533             device_mask: u32::default(),
17534         }
17535     }
17536 }
17537 impl MemoryAllocateFlagsInfo {
builder<'a>() -> MemoryAllocateFlagsInfoBuilder<'a>17538     pub fn builder<'a>() -> MemoryAllocateFlagsInfoBuilder<'a> {
17539         MemoryAllocateFlagsInfoBuilder {
17540             inner: MemoryAllocateFlagsInfo::default(),
17541             marker: ::std::marker::PhantomData,
17542         }
17543     }
17544 }
17545 #[repr(transparent)]
17546 pub struct MemoryAllocateFlagsInfoBuilder<'a> {
17547     inner: MemoryAllocateFlagsInfo,
17548     marker: ::std::marker::PhantomData<&'a ()>,
17549 }
17550 unsafe impl ExtendsMemoryAllocateInfo for MemoryAllocateFlagsInfoBuilder<'_> {}
17551 unsafe impl ExtendsMemoryAllocateInfo for MemoryAllocateFlagsInfo {}
17552 impl<'a> ::std::ops::Deref for MemoryAllocateFlagsInfoBuilder<'a> {
17553     type Target = MemoryAllocateFlagsInfo;
deref(&self) -> &Self::Target17554     fn deref(&self) -> &Self::Target {
17555         &self.inner
17556     }
17557 }
17558 impl<'a> ::std::ops::DerefMut for MemoryAllocateFlagsInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17559     fn deref_mut(&mut self) -> &mut Self::Target {
17560         &mut self.inner
17561     }
17562 }
17563 impl<'a> MemoryAllocateFlagsInfoBuilder<'a> {
flags(mut self, flags: MemoryAllocateFlags) -> Self17564     pub fn flags(mut self, flags: MemoryAllocateFlags) -> Self {
17565         self.inner.flags = flags;
17566         self
17567     }
device_mask(mut self, device_mask: u32) -> Self17568     pub fn device_mask(mut self, device_mask: u32) -> Self {
17569         self.inner.device_mask = device_mask;
17570         self
17571     }
17572     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17573     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17574     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryAllocateFlagsInfo17575     pub fn build(self) -> MemoryAllocateFlagsInfo {
17576         self.inner
17577     }
17578 }
17579 #[repr(C)]
17580 #[derive(Copy, Clone, Debug)]
17581 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindBufferMemoryInfo.html>"]
17582 pub struct BindBufferMemoryInfo {
17583     pub s_type: StructureType,
17584     pub p_next: *const c_void,
17585     pub buffer: Buffer,
17586     pub memory: DeviceMemory,
17587     pub memory_offset: DeviceSize,
17588 }
17589 impl ::std::default::Default for BindBufferMemoryInfo {
default() -> BindBufferMemoryInfo17590     fn default() -> BindBufferMemoryInfo {
17591         BindBufferMemoryInfo {
17592             s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
17593             p_next: ::std::ptr::null(),
17594             buffer: Buffer::default(),
17595             memory: DeviceMemory::default(),
17596             memory_offset: DeviceSize::default(),
17597         }
17598     }
17599 }
17600 impl BindBufferMemoryInfo {
builder<'a>() -> BindBufferMemoryInfoBuilder<'a>17601     pub fn builder<'a>() -> BindBufferMemoryInfoBuilder<'a> {
17602         BindBufferMemoryInfoBuilder {
17603             inner: BindBufferMemoryInfo::default(),
17604             marker: ::std::marker::PhantomData,
17605         }
17606     }
17607 }
17608 #[repr(transparent)]
17609 pub struct BindBufferMemoryInfoBuilder<'a> {
17610     inner: BindBufferMemoryInfo,
17611     marker: ::std::marker::PhantomData<&'a ()>,
17612 }
17613 pub unsafe trait ExtendsBindBufferMemoryInfo {}
17614 impl<'a> ::std::ops::Deref for BindBufferMemoryInfoBuilder<'a> {
17615     type Target = BindBufferMemoryInfo;
deref(&self) -> &Self::Target17616     fn deref(&self) -> &Self::Target {
17617         &self.inner
17618     }
17619 }
17620 impl<'a> ::std::ops::DerefMut for BindBufferMemoryInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17621     fn deref_mut(&mut self) -> &mut Self::Target {
17622         &mut self.inner
17623     }
17624 }
17625 impl<'a> BindBufferMemoryInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self17626     pub fn buffer(mut self, buffer: Buffer) -> Self {
17627         self.inner.buffer = buffer;
17628         self
17629     }
memory(mut self, memory: DeviceMemory) -> Self17630     pub fn memory(mut self, memory: DeviceMemory) -> Self {
17631         self.inner.memory = memory;
17632         self
17633     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self17634     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
17635         self.inner.memory_offset = memory_offset;
17636         self
17637     }
17638     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
17639     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
17640     #[doc = r" valid extension structs can be pushed into the chain."]
17641     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
17642     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBindBufferMemoryInfo>(mut self, next: &'a mut T) -> Self17643     pub fn push_next<T: ExtendsBindBufferMemoryInfo>(mut self, next: &'a mut T) -> Self {
17644         unsafe {
17645             let next_ptr = next as *mut T as *mut BaseOutStructure;
17646             let last_next = ptr_chain_iter(next).last().unwrap();
17647             (*last_next).p_next = self.inner.p_next as _;
17648             self.inner.p_next = next_ptr as _;
17649         }
17650         self
17651     }
17652     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17653     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17654     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindBufferMemoryInfo17655     pub fn build(self) -> BindBufferMemoryInfo {
17656         self.inner
17657     }
17658 }
17659 #[repr(C)]
17660 #[derive(Copy, Clone, Debug)]
17661 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindBufferMemoryDeviceGroupInfo.html>"]
17662 pub struct BindBufferMemoryDeviceGroupInfo {
17663     pub s_type: StructureType,
17664     pub p_next: *const c_void,
17665     pub device_index_count: u32,
17666     pub p_device_indices: *const u32,
17667 }
17668 impl ::std::default::Default for BindBufferMemoryDeviceGroupInfo {
default() -> BindBufferMemoryDeviceGroupInfo17669     fn default() -> BindBufferMemoryDeviceGroupInfo {
17670         BindBufferMemoryDeviceGroupInfo {
17671             s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
17672             p_next: ::std::ptr::null(),
17673             device_index_count: u32::default(),
17674             p_device_indices: ::std::ptr::null(),
17675         }
17676     }
17677 }
17678 impl BindBufferMemoryDeviceGroupInfo {
builder<'a>() -> BindBufferMemoryDeviceGroupInfoBuilder<'a>17679     pub fn builder<'a>() -> BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17680         BindBufferMemoryDeviceGroupInfoBuilder {
17681             inner: BindBufferMemoryDeviceGroupInfo::default(),
17682             marker: ::std::marker::PhantomData,
17683         }
17684     }
17685 }
17686 #[repr(transparent)]
17687 pub struct BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17688     inner: BindBufferMemoryDeviceGroupInfo,
17689     marker: ::std::marker::PhantomData<&'a ()>,
17690 }
17691 unsafe impl ExtendsBindBufferMemoryInfo for BindBufferMemoryDeviceGroupInfoBuilder<'_> {}
17692 unsafe impl ExtendsBindBufferMemoryInfo for BindBufferMemoryDeviceGroupInfo {}
17693 impl<'a> ::std::ops::Deref for BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17694     type Target = BindBufferMemoryDeviceGroupInfo;
deref(&self) -> &Self::Target17695     fn deref(&self) -> &Self::Target {
17696         &self.inner
17697     }
17698 }
17699 impl<'a> ::std::ops::DerefMut for BindBufferMemoryDeviceGroupInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17700     fn deref_mut(&mut self) -> &mut Self::Target {
17701         &mut self.inner
17702     }
17703 }
17704 impl<'a> BindBufferMemoryDeviceGroupInfoBuilder<'a> {
device_indices(mut self, device_indices: &'a [u32]) -> Self17705     pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self {
17706         self.inner.device_index_count = device_indices.len() as _;
17707         self.inner.p_device_indices = device_indices.as_ptr();
17708         self
17709     }
17710     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17711     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17712     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindBufferMemoryDeviceGroupInfo17713     pub fn build(self) -> BindBufferMemoryDeviceGroupInfo {
17714         self.inner
17715     }
17716 }
17717 #[repr(C)]
17718 #[derive(Copy, Clone, Debug)]
17719 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImageMemoryInfo.html>"]
17720 pub struct BindImageMemoryInfo {
17721     pub s_type: StructureType,
17722     pub p_next: *const c_void,
17723     pub image: Image,
17724     pub memory: DeviceMemory,
17725     pub memory_offset: DeviceSize,
17726 }
17727 impl ::std::default::Default for BindImageMemoryInfo {
default() -> BindImageMemoryInfo17728     fn default() -> BindImageMemoryInfo {
17729         BindImageMemoryInfo {
17730             s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
17731             p_next: ::std::ptr::null(),
17732             image: Image::default(),
17733             memory: DeviceMemory::default(),
17734             memory_offset: DeviceSize::default(),
17735         }
17736     }
17737 }
17738 impl BindImageMemoryInfo {
builder<'a>() -> BindImageMemoryInfoBuilder<'a>17739     pub fn builder<'a>() -> BindImageMemoryInfoBuilder<'a> {
17740         BindImageMemoryInfoBuilder {
17741             inner: BindImageMemoryInfo::default(),
17742             marker: ::std::marker::PhantomData,
17743         }
17744     }
17745 }
17746 #[repr(transparent)]
17747 pub struct BindImageMemoryInfoBuilder<'a> {
17748     inner: BindImageMemoryInfo,
17749     marker: ::std::marker::PhantomData<&'a ()>,
17750 }
17751 pub unsafe trait ExtendsBindImageMemoryInfo {}
17752 impl<'a> ::std::ops::Deref for BindImageMemoryInfoBuilder<'a> {
17753     type Target = BindImageMemoryInfo;
deref(&self) -> &Self::Target17754     fn deref(&self) -> &Self::Target {
17755         &self.inner
17756     }
17757 }
17758 impl<'a> ::std::ops::DerefMut for BindImageMemoryInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17759     fn deref_mut(&mut self) -> &mut Self::Target {
17760         &mut self.inner
17761     }
17762 }
17763 impl<'a> BindImageMemoryInfoBuilder<'a> {
image(mut self, image: Image) -> Self17764     pub fn image(mut self, image: Image) -> Self {
17765         self.inner.image = image;
17766         self
17767     }
memory(mut self, memory: DeviceMemory) -> Self17768     pub fn memory(mut self, memory: DeviceMemory) -> Self {
17769         self.inner.memory = memory;
17770         self
17771     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self17772     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
17773         self.inner.memory_offset = memory_offset;
17774         self
17775     }
17776     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
17777     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
17778     #[doc = r" valid extension structs can be pushed into the chain."]
17779     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
17780     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBindImageMemoryInfo>(mut self, next: &'a mut T) -> Self17781     pub fn push_next<T: ExtendsBindImageMemoryInfo>(mut self, next: &'a mut T) -> Self {
17782         unsafe {
17783             let next_ptr = next as *mut T as *mut BaseOutStructure;
17784             let last_next = ptr_chain_iter(next).last().unwrap();
17785             (*last_next).p_next = self.inner.p_next as _;
17786             self.inner.p_next = next_ptr as _;
17787         }
17788         self
17789     }
17790     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17791     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17792     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImageMemoryInfo17793     pub fn build(self) -> BindImageMemoryInfo {
17794         self.inner
17795     }
17796 }
17797 #[repr(C)]
17798 #[derive(Copy, Clone, Debug)]
17799 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImageMemoryDeviceGroupInfo.html>"]
17800 pub struct BindImageMemoryDeviceGroupInfo {
17801     pub s_type: StructureType,
17802     pub p_next: *const c_void,
17803     pub device_index_count: u32,
17804     pub p_device_indices: *const u32,
17805     pub split_instance_bind_region_count: u32,
17806     pub p_split_instance_bind_regions: *const Rect2D,
17807 }
17808 impl ::std::default::Default for BindImageMemoryDeviceGroupInfo {
default() -> BindImageMemoryDeviceGroupInfo17809     fn default() -> BindImageMemoryDeviceGroupInfo {
17810         BindImageMemoryDeviceGroupInfo {
17811             s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
17812             p_next: ::std::ptr::null(),
17813             device_index_count: u32::default(),
17814             p_device_indices: ::std::ptr::null(),
17815             split_instance_bind_region_count: u32::default(),
17816             p_split_instance_bind_regions: ::std::ptr::null(),
17817         }
17818     }
17819 }
17820 impl BindImageMemoryDeviceGroupInfo {
builder<'a>() -> BindImageMemoryDeviceGroupInfoBuilder<'a>17821     pub fn builder<'a>() -> BindImageMemoryDeviceGroupInfoBuilder<'a> {
17822         BindImageMemoryDeviceGroupInfoBuilder {
17823             inner: BindImageMemoryDeviceGroupInfo::default(),
17824             marker: ::std::marker::PhantomData,
17825         }
17826     }
17827 }
17828 #[repr(transparent)]
17829 pub struct BindImageMemoryDeviceGroupInfoBuilder<'a> {
17830     inner: BindImageMemoryDeviceGroupInfo,
17831     marker: ::std::marker::PhantomData<&'a ()>,
17832 }
17833 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemoryDeviceGroupInfoBuilder<'_> {}
17834 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemoryDeviceGroupInfo {}
17835 impl<'a> ::std::ops::Deref for BindImageMemoryDeviceGroupInfoBuilder<'a> {
17836     type Target = BindImageMemoryDeviceGroupInfo;
deref(&self) -> &Self::Target17837     fn deref(&self) -> &Self::Target {
17838         &self.inner
17839     }
17840 }
17841 impl<'a> ::std::ops::DerefMut for BindImageMemoryDeviceGroupInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17842     fn deref_mut(&mut self) -> &mut Self::Target {
17843         &mut self.inner
17844     }
17845 }
17846 impl<'a> BindImageMemoryDeviceGroupInfoBuilder<'a> {
device_indices(mut self, device_indices: &'a [u32]) -> Self17847     pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self {
17848         self.inner.device_index_count = device_indices.len() as _;
17849         self.inner.p_device_indices = device_indices.as_ptr();
17850         self
17851     }
split_instance_bind_regions( mut self, split_instance_bind_regions: &'a [Rect2D], ) -> Self17852     pub fn split_instance_bind_regions(
17853         mut self,
17854         split_instance_bind_regions: &'a [Rect2D],
17855     ) -> Self {
17856         self.inner.split_instance_bind_region_count = split_instance_bind_regions.len() as _;
17857         self.inner.p_split_instance_bind_regions = split_instance_bind_regions.as_ptr();
17858         self
17859     }
17860     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17861     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17862     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImageMemoryDeviceGroupInfo17863     pub fn build(self) -> BindImageMemoryDeviceGroupInfo {
17864         self.inner
17865     }
17866 }
17867 #[repr(C)]
17868 #[derive(Copy, Clone, Debug)]
17869 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupRenderPassBeginInfo.html>"]
17870 pub struct DeviceGroupRenderPassBeginInfo {
17871     pub s_type: StructureType,
17872     pub p_next: *const c_void,
17873     pub device_mask: u32,
17874     pub device_render_area_count: u32,
17875     pub p_device_render_areas: *const Rect2D,
17876 }
17877 impl ::std::default::Default for DeviceGroupRenderPassBeginInfo {
default() -> DeviceGroupRenderPassBeginInfo17878     fn default() -> DeviceGroupRenderPassBeginInfo {
17879         DeviceGroupRenderPassBeginInfo {
17880             s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
17881             p_next: ::std::ptr::null(),
17882             device_mask: u32::default(),
17883             device_render_area_count: u32::default(),
17884             p_device_render_areas: ::std::ptr::null(),
17885         }
17886     }
17887 }
17888 impl DeviceGroupRenderPassBeginInfo {
builder<'a>() -> DeviceGroupRenderPassBeginInfoBuilder<'a>17889     pub fn builder<'a>() -> DeviceGroupRenderPassBeginInfoBuilder<'a> {
17890         DeviceGroupRenderPassBeginInfoBuilder {
17891             inner: DeviceGroupRenderPassBeginInfo::default(),
17892             marker: ::std::marker::PhantomData,
17893         }
17894     }
17895 }
17896 #[repr(transparent)]
17897 pub struct DeviceGroupRenderPassBeginInfoBuilder<'a> {
17898     inner: DeviceGroupRenderPassBeginInfo,
17899     marker: ::std::marker::PhantomData<&'a ()>,
17900 }
17901 unsafe impl ExtendsRenderPassBeginInfo for DeviceGroupRenderPassBeginInfoBuilder<'_> {}
17902 unsafe impl ExtendsRenderPassBeginInfo for DeviceGroupRenderPassBeginInfo {}
17903 impl<'a> ::std::ops::Deref for DeviceGroupRenderPassBeginInfoBuilder<'a> {
17904     type Target = DeviceGroupRenderPassBeginInfo;
deref(&self) -> &Self::Target17905     fn deref(&self) -> &Self::Target {
17906         &self.inner
17907     }
17908 }
17909 impl<'a> ::std::ops::DerefMut for DeviceGroupRenderPassBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17910     fn deref_mut(&mut self) -> &mut Self::Target {
17911         &mut self.inner
17912     }
17913 }
17914 impl<'a> DeviceGroupRenderPassBeginInfoBuilder<'a> {
device_mask(mut self, device_mask: u32) -> Self17915     pub fn device_mask(mut self, device_mask: u32) -> Self {
17916         self.inner.device_mask = device_mask;
17917         self
17918     }
device_render_areas(mut self, device_render_areas: &'a [Rect2D]) -> Self17919     pub fn device_render_areas(mut self, device_render_areas: &'a [Rect2D]) -> Self {
17920         self.inner.device_render_area_count = device_render_areas.len() as _;
17921         self.inner.p_device_render_areas = device_render_areas.as_ptr();
17922         self
17923     }
17924     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17925     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17926     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupRenderPassBeginInfo17927     pub fn build(self) -> DeviceGroupRenderPassBeginInfo {
17928         self.inner
17929     }
17930 }
17931 #[repr(C)]
17932 #[derive(Copy, Clone, Debug)]
17933 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupCommandBufferBeginInfo.html>"]
17934 pub struct DeviceGroupCommandBufferBeginInfo {
17935     pub s_type: StructureType,
17936     pub p_next: *const c_void,
17937     pub device_mask: u32,
17938 }
17939 impl ::std::default::Default for DeviceGroupCommandBufferBeginInfo {
default() -> DeviceGroupCommandBufferBeginInfo17940     fn default() -> DeviceGroupCommandBufferBeginInfo {
17941         DeviceGroupCommandBufferBeginInfo {
17942             s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
17943             p_next: ::std::ptr::null(),
17944             device_mask: u32::default(),
17945         }
17946     }
17947 }
17948 impl DeviceGroupCommandBufferBeginInfo {
builder<'a>() -> DeviceGroupCommandBufferBeginInfoBuilder<'a>17949     pub fn builder<'a>() -> DeviceGroupCommandBufferBeginInfoBuilder<'a> {
17950         DeviceGroupCommandBufferBeginInfoBuilder {
17951             inner: DeviceGroupCommandBufferBeginInfo::default(),
17952             marker: ::std::marker::PhantomData,
17953         }
17954     }
17955 }
17956 #[repr(transparent)]
17957 pub struct DeviceGroupCommandBufferBeginInfoBuilder<'a> {
17958     inner: DeviceGroupCommandBufferBeginInfo,
17959     marker: ::std::marker::PhantomData<&'a ()>,
17960 }
17961 unsafe impl ExtendsCommandBufferBeginInfo for DeviceGroupCommandBufferBeginInfoBuilder<'_> {}
17962 unsafe impl ExtendsCommandBufferBeginInfo for DeviceGroupCommandBufferBeginInfo {}
17963 impl<'a> ::std::ops::Deref for DeviceGroupCommandBufferBeginInfoBuilder<'a> {
17964     type Target = DeviceGroupCommandBufferBeginInfo;
deref(&self) -> &Self::Target17965     fn deref(&self) -> &Self::Target {
17966         &self.inner
17967     }
17968 }
17969 impl<'a> ::std::ops::DerefMut for DeviceGroupCommandBufferBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17970     fn deref_mut(&mut self) -> &mut Self::Target {
17971         &mut self.inner
17972     }
17973 }
17974 impl<'a> DeviceGroupCommandBufferBeginInfoBuilder<'a> {
device_mask(mut self, device_mask: u32) -> Self17975     pub fn device_mask(mut self, device_mask: u32) -> Self {
17976         self.inner.device_mask = device_mask;
17977         self
17978     }
17979     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17980     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17981     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupCommandBufferBeginInfo17982     pub fn build(self) -> DeviceGroupCommandBufferBeginInfo {
17983         self.inner
17984     }
17985 }
17986 #[repr(C)]
17987 #[derive(Copy, Clone, Debug)]
17988 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupSubmitInfo.html>"]
17989 pub struct DeviceGroupSubmitInfo {
17990     pub s_type: StructureType,
17991     pub p_next: *const c_void,
17992     pub wait_semaphore_count: u32,
17993     pub p_wait_semaphore_device_indices: *const u32,
17994     pub command_buffer_count: u32,
17995     pub p_command_buffer_device_masks: *const u32,
17996     pub signal_semaphore_count: u32,
17997     pub p_signal_semaphore_device_indices: *const u32,
17998 }
17999 impl ::std::default::Default for DeviceGroupSubmitInfo {
default() -> DeviceGroupSubmitInfo18000     fn default() -> DeviceGroupSubmitInfo {
18001         DeviceGroupSubmitInfo {
18002             s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
18003             p_next: ::std::ptr::null(),
18004             wait_semaphore_count: u32::default(),
18005             p_wait_semaphore_device_indices: ::std::ptr::null(),
18006             command_buffer_count: u32::default(),
18007             p_command_buffer_device_masks: ::std::ptr::null(),
18008             signal_semaphore_count: u32::default(),
18009             p_signal_semaphore_device_indices: ::std::ptr::null(),
18010         }
18011     }
18012 }
18013 impl DeviceGroupSubmitInfo {
builder<'a>() -> DeviceGroupSubmitInfoBuilder<'a>18014     pub fn builder<'a>() -> DeviceGroupSubmitInfoBuilder<'a> {
18015         DeviceGroupSubmitInfoBuilder {
18016             inner: DeviceGroupSubmitInfo::default(),
18017             marker: ::std::marker::PhantomData,
18018         }
18019     }
18020 }
18021 #[repr(transparent)]
18022 pub struct DeviceGroupSubmitInfoBuilder<'a> {
18023     inner: DeviceGroupSubmitInfo,
18024     marker: ::std::marker::PhantomData<&'a ()>,
18025 }
18026 unsafe impl ExtendsSubmitInfo for DeviceGroupSubmitInfoBuilder<'_> {}
18027 unsafe impl ExtendsSubmitInfo for DeviceGroupSubmitInfo {}
18028 impl<'a> ::std::ops::Deref for DeviceGroupSubmitInfoBuilder<'a> {
18029     type Target = DeviceGroupSubmitInfo;
deref(&self) -> &Self::Target18030     fn deref(&self) -> &Self::Target {
18031         &self.inner
18032     }
18033 }
18034 impl<'a> ::std::ops::DerefMut for DeviceGroupSubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18035     fn deref_mut(&mut self) -> &mut Self::Target {
18036         &mut self.inner
18037     }
18038 }
18039 impl<'a> DeviceGroupSubmitInfoBuilder<'a> {
wait_semaphore_device_indices( mut self, wait_semaphore_device_indices: &'a [u32], ) -> Self18040     pub fn wait_semaphore_device_indices(
18041         mut self,
18042         wait_semaphore_device_indices: &'a [u32],
18043     ) -> Self {
18044         self.inner.wait_semaphore_count = wait_semaphore_device_indices.len() as _;
18045         self.inner.p_wait_semaphore_device_indices = wait_semaphore_device_indices.as_ptr();
18046         self
18047     }
command_buffer_device_masks(mut self, command_buffer_device_masks: &'a [u32]) -> Self18048     pub fn command_buffer_device_masks(mut self, command_buffer_device_masks: &'a [u32]) -> Self {
18049         self.inner.command_buffer_count = command_buffer_device_masks.len() as _;
18050         self.inner.p_command_buffer_device_masks = command_buffer_device_masks.as_ptr();
18051         self
18052     }
signal_semaphore_device_indices( mut self, signal_semaphore_device_indices: &'a [u32], ) -> Self18053     pub fn signal_semaphore_device_indices(
18054         mut self,
18055         signal_semaphore_device_indices: &'a [u32],
18056     ) -> Self {
18057         self.inner.signal_semaphore_count = signal_semaphore_device_indices.len() as _;
18058         self.inner.p_signal_semaphore_device_indices = signal_semaphore_device_indices.as_ptr();
18059         self
18060     }
18061     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18062     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18063     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupSubmitInfo18064     pub fn build(self) -> DeviceGroupSubmitInfo {
18065         self.inner
18066     }
18067 }
18068 #[repr(C)]
18069 #[derive(Copy, Clone, Debug)]
18070 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupBindSparseInfo.html>"]
18071 pub struct DeviceGroupBindSparseInfo {
18072     pub s_type: StructureType,
18073     pub p_next: *const c_void,
18074     pub resource_device_index: u32,
18075     pub memory_device_index: u32,
18076 }
18077 impl ::std::default::Default for DeviceGroupBindSparseInfo {
default() -> DeviceGroupBindSparseInfo18078     fn default() -> DeviceGroupBindSparseInfo {
18079         DeviceGroupBindSparseInfo {
18080             s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
18081             p_next: ::std::ptr::null(),
18082             resource_device_index: u32::default(),
18083             memory_device_index: u32::default(),
18084         }
18085     }
18086 }
18087 impl DeviceGroupBindSparseInfo {
builder<'a>() -> DeviceGroupBindSparseInfoBuilder<'a>18088     pub fn builder<'a>() -> DeviceGroupBindSparseInfoBuilder<'a> {
18089         DeviceGroupBindSparseInfoBuilder {
18090             inner: DeviceGroupBindSparseInfo::default(),
18091             marker: ::std::marker::PhantomData,
18092         }
18093     }
18094 }
18095 #[repr(transparent)]
18096 pub struct DeviceGroupBindSparseInfoBuilder<'a> {
18097     inner: DeviceGroupBindSparseInfo,
18098     marker: ::std::marker::PhantomData<&'a ()>,
18099 }
18100 unsafe impl ExtendsBindSparseInfo for DeviceGroupBindSparseInfoBuilder<'_> {}
18101 unsafe impl ExtendsBindSparseInfo for DeviceGroupBindSparseInfo {}
18102 impl<'a> ::std::ops::Deref for DeviceGroupBindSparseInfoBuilder<'a> {
18103     type Target = DeviceGroupBindSparseInfo;
deref(&self) -> &Self::Target18104     fn deref(&self) -> &Self::Target {
18105         &self.inner
18106     }
18107 }
18108 impl<'a> ::std::ops::DerefMut for DeviceGroupBindSparseInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18109     fn deref_mut(&mut self) -> &mut Self::Target {
18110         &mut self.inner
18111     }
18112 }
18113 impl<'a> DeviceGroupBindSparseInfoBuilder<'a> {
resource_device_index(mut self, resource_device_index: u32) -> Self18114     pub fn resource_device_index(mut self, resource_device_index: u32) -> Self {
18115         self.inner.resource_device_index = resource_device_index;
18116         self
18117     }
memory_device_index(mut self, memory_device_index: u32) -> Self18118     pub fn memory_device_index(mut self, memory_device_index: u32) -> Self {
18119         self.inner.memory_device_index = memory_device_index;
18120         self
18121     }
18122     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18123     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18124     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupBindSparseInfo18125     pub fn build(self) -> DeviceGroupBindSparseInfo {
18126         self.inner
18127     }
18128 }
18129 #[repr(C)]
18130 #[derive(Copy, Clone, Debug)]
18131 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>"]
18132 pub struct DeviceGroupPresentCapabilitiesKHR {
18133     pub s_type: StructureType,
18134     pub p_next: *mut c_void,
18135     pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE],
18136     pub modes: DeviceGroupPresentModeFlagsKHR,
18137 }
18138 impl ::std::default::Default for DeviceGroupPresentCapabilitiesKHR {
default() -> DeviceGroupPresentCapabilitiesKHR18139     fn default() -> DeviceGroupPresentCapabilitiesKHR {
18140         DeviceGroupPresentCapabilitiesKHR {
18141             s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
18142             p_next: ::std::ptr::null_mut(),
18143             present_mask: unsafe { ::std::mem::zeroed() },
18144             modes: DeviceGroupPresentModeFlagsKHR::default(),
18145         }
18146     }
18147 }
18148 impl DeviceGroupPresentCapabilitiesKHR {
builder<'a>() -> DeviceGroupPresentCapabilitiesKHRBuilder<'a>18149     pub fn builder<'a>() -> DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18150         DeviceGroupPresentCapabilitiesKHRBuilder {
18151             inner: DeviceGroupPresentCapabilitiesKHR::default(),
18152             marker: ::std::marker::PhantomData,
18153         }
18154     }
18155 }
18156 #[repr(transparent)]
18157 pub struct DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18158     inner: DeviceGroupPresentCapabilitiesKHR,
18159     marker: ::std::marker::PhantomData<&'a ()>,
18160 }
18161 impl<'a> ::std::ops::Deref for DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18162     type Target = DeviceGroupPresentCapabilitiesKHR;
deref(&self) -> &Self::Target18163     fn deref(&self) -> &Self::Target {
18164         &self.inner
18165     }
18166 }
18167 impl<'a> ::std::ops::DerefMut for DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18168     fn deref_mut(&mut self) -> &mut Self::Target {
18169         &mut self.inner
18170     }
18171 }
18172 impl<'a> DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
present_mask(mut self, present_mask: [u32; MAX_DEVICE_GROUP_SIZE]) -> Self18173     pub fn present_mask(mut self, present_mask: [u32; MAX_DEVICE_GROUP_SIZE]) -> Self {
18174         self.inner.present_mask = present_mask;
18175         self
18176     }
modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self18177     pub fn modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self {
18178         self.inner.modes = modes;
18179         self
18180     }
18181     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18182     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18183     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupPresentCapabilitiesKHR18184     pub fn build(self) -> DeviceGroupPresentCapabilitiesKHR {
18185         self.inner
18186     }
18187 }
18188 #[repr(C)]
18189 #[derive(Copy, Clone, Debug)]
18190 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSwapchainCreateInfoKHR.html>"]
18191 pub struct ImageSwapchainCreateInfoKHR {
18192     pub s_type: StructureType,
18193     pub p_next: *const c_void,
18194     pub swapchain: SwapchainKHR,
18195 }
18196 impl ::std::default::Default for ImageSwapchainCreateInfoKHR {
default() -> ImageSwapchainCreateInfoKHR18197     fn default() -> ImageSwapchainCreateInfoKHR {
18198         ImageSwapchainCreateInfoKHR {
18199             s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
18200             p_next: ::std::ptr::null(),
18201             swapchain: SwapchainKHR::default(),
18202         }
18203     }
18204 }
18205 impl ImageSwapchainCreateInfoKHR {
builder<'a>() -> ImageSwapchainCreateInfoKHRBuilder<'a>18206     pub fn builder<'a>() -> ImageSwapchainCreateInfoKHRBuilder<'a> {
18207         ImageSwapchainCreateInfoKHRBuilder {
18208             inner: ImageSwapchainCreateInfoKHR::default(),
18209             marker: ::std::marker::PhantomData,
18210         }
18211     }
18212 }
18213 #[repr(transparent)]
18214 pub struct ImageSwapchainCreateInfoKHRBuilder<'a> {
18215     inner: ImageSwapchainCreateInfoKHR,
18216     marker: ::std::marker::PhantomData<&'a ()>,
18217 }
18218 unsafe impl ExtendsImageCreateInfo for ImageSwapchainCreateInfoKHRBuilder<'_> {}
18219 unsafe impl ExtendsImageCreateInfo for ImageSwapchainCreateInfoKHR {}
18220 impl<'a> ::std::ops::Deref for ImageSwapchainCreateInfoKHRBuilder<'a> {
18221     type Target = ImageSwapchainCreateInfoKHR;
deref(&self) -> &Self::Target18222     fn deref(&self) -> &Self::Target {
18223         &self.inner
18224     }
18225 }
18226 impl<'a> ::std::ops::DerefMut for ImageSwapchainCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18227     fn deref_mut(&mut self) -> &mut Self::Target {
18228         &mut self.inner
18229     }
18230 }
18231 impl<'a> ImageSwapchainCreateInfoKHRBuilder<'a> {
swapchain(mut self, swapchain: SwapchainKHR) -> Self18232     pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self {
18233         self.inner.swapchain = swapchain;
18234         self
18235     }
18236     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18237     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18238     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSwapchainCreateInfoKHR18239     pub fn build(self) -> ImageSwapchainCreateInfoKHR {
18240         self.inner
18241     }
18242 }
18243 #[repr(C)]
18244 #[derive(Copy, Clone, Debug)]
18245 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImageMemorySwapchainInfoKHR.html>"]
18246 pub struct BindImageMemorySwapchainInfoKHR {
18247     pub s_type: StructureType,
18248     pub p_next: *const c_void,
18249     pub swapchain: SwapchainKHR,
18250     pub image_index: u32,
18251 }
18252 impl ::std::default::Default for BindImageMemorySwapchainInfoKHR {
default() -> BindImageMemorySwapchainInfoKHR18253     fn default() -> BindImageMemorySwapchainInfoKHR {
18254         BindImageMemorySwapchainInfoKHR {
18255             s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
18256             p_next: ::std::ptr::null(),
18257             swapchain: SwapchainKHR::default(),
18258             image_index: u32::default(),
18259         }
18260     }
18261 }
18262 impl BindImageMemorySwapchainInfoKHR {
builder<'a>() -> BindImageMemorySwapchainInfoKHRBuilder<'a>18263     pub fn builder<'a>() -> BindImageMemorySwapchainInfoKHRBuilder<'a> {
18264         BindImageMemorySwapchainInfoKHRBuilder {
18265             inner: BindImageMemorySwapchainInfoKHR::default(),
18266             marker: ::std::marker::PhantomData,
18267         }
18268     }
18269 }
18270 #[repr(transparent)]
18271 pub struct BindImageMemorySwapchainInfoKHRBuilder<'a> {
18272     inner: BindImageMemorySwapchainInfoKHR,
18273     marker: ::std::marker::PhantomData<&'a ()>,
18274 }
18275 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemorySwapchainInfoKHRBuilder<'_> {}
18276 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemorySwapchainInfoKHR {}
18277 impl<'a> ::std::ops::Deref for BindImageMemorySwapchainInfoKHRBuilder<'a> {
18278     type Target = BindImageMemorySwapchainInfoKHR;
deref(&self) -> &Self::Target18279     fn deref(&self) -> &Self::Target {
18280         &self.inner
18281     }
18282 }
18283 impl<'a> ::std::ops::DerefMut for BindImageMemorySwapchainInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18284     fn deref_mut(&mut self) -> &mut Self::Target {
18285         &mut self.inner
18286     }
18287 }
18288 impl<'a> BindImageMemorySwapchainInfoKHRBuilder<'a> {
swapchain(mut self, swapchain: SwapchainKHR) -> Self18289     pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self {
18290         self.inner.swapchain = swapchain;
18291         self
18292     }
image_index(mut self, image_index: u32) -> Self18293     pub fn image_index(mut self, image_index: u32) -> Self {
18294         self.inner.image_index = image_index;
18295         self
18296     }
18297     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18298     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18299     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImageMemorySwapchainInfoKHR18300     pub fn build(self) -> BindImageMemorySwapchainInfoKHR {
18301         self.inner
18302     }
18303 }
18304 #[repr(C)]
18305 #[derive(Copy, Clone, Debug)]
18306 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAcquireNextImageInfoKHR.html>"]
18307 pub struct AcquireNextImageInfoKHR {
18308     pub s_type: StructureType,
18309     pub p_next: *const c_void,
18310     pub swapchain: SwapchainKHR,
18311     pub timeout: u64,
18312     pub semaphore: Semaphore,
18313     pub fence: Fence,
18314     pub device_mask: u32,
18315 }
18316 impl ::std::default::Default for AcquireNextImageInfoKHR {
default() -> AcquireNextImageInfoKHR18317     fn default() -> AcquireNextImageInfoKHR {
18318         AcquireNextImageInfoKHR {
18319             s_type: StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR,
18320             p_next: ::std::ptr::null(),
18321             swapchain: SwapchainKHR::default(),
18322             timeout: u64::default(),
18323             semaphore: Semaphore::default(),
18324             fence: Fence::default(),
18325             device_mask: u32::default(),
18326         }
18327     }
18328 }
18329 impl AcquireNextImageInfoKHR {
builder<'a>() -> AcquireNextImageInfoKHRBuilder<'a>18330     pub fn builder<'a>() -> AcquireNextImageInfoKHRBuilder<'a> {
18331         AcquireNextImageInfoKHRBuilder {
18332             inner: AcquireNextImageInfoKHR::default(),
18333             marker: ::std::marker::PhantomData,
18334         }
18335     }
18336 }
18337 #[repr(transparent)]
18338 pub struct AcquireNextImageInfoKHRBuilder<'a> {
18339     inner: AcquireNextImageInfoKHR,
18340     marker: ::std::marker::PhantomData<&'a ()>,
18341 }
18342 impl<'a> ::std::ops::Deref for AcquireNextImageInfoKHRBuilder<'a> {
18343     type Target = AcquireNextImageInfoKHR;
deref(&self) -> &Self::Target18344     fn deref(&self) -> &Self::Target {
18345         &self.inner
18346     }
18347 }
18348 impl<'a> ::std::ops::DerefMut for AcquireNextImageInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18349     fn deref_mut(&mut self) -> &mut Self::Target {
18350         &mut self.inner
18351     }
18352 }
18353 impl<'a> AcquireNextImageInfoKHRBuilder<'a> {
swapchain(mut self, swapchain: SwapchainKHR) -> Self18354     pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self {
18355         self.inner.swapchain = swapchain;
18356         self
18357     }
timeout(mut self, timeout: u64) -> Self18358     pub fn timeout(mut self, timeout: u64) -> Self {
18359         self.inner.timeout = timeout;
18360         self
18361     }
semaphore(mut self, semaphore: Semaphore) -> Self18362     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
18363         self.inner.semaphore = semaphore;
18364         self
18365     }
fence(mut self, fence: Fence) -> Self18366     pub fn fence(mut self, fence: Fence) -> Self {
18367         self.inner.fence = fence;
18368         self
18369     }
device_mask(mut self, device_mask: u32) -> Self18370     pub fn device_mask(mut self, device_mask: u32) -> Self {
18371         self.inner.device_mask = device_mask;
18372         self
18373     }
18374     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18375     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18376     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AcquireNextImageInfoKHR18377     pub fn build(self) -> AcquireNextImageInfoKHR {
18378         self.inner
18379     }
18380 }
18381 #[repr(C)]
18382 #[derive(Copy, Clone, Debug)]
18383 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupPresentInfoKHR.html>"]
18384 pub struct DeviceGroupPresentInfoKHR {
18385     pub s_type: StructureType,
18386     pub p_next: *const c_void,
18387     pub swapchain_count: u32,
18388     pub p_device_masks: *const u32,
18389     pub mode: DeviceGroupPresentModeFlagsKHR,
18390 }
18391 impl ::std::default::Default for DeviceGroupPresentInfoKHR {
default() -> DeviceGroupPresentInfoKHR18392     fn default() -> DeviceGroupPresentInfoKHR {
18393         DeviceGroupPresentInfoKHR {
18394             s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
18395             p_next: ::std::ptr::null(),
18396             swapchain_count: u32::default(),
18397             p_device_masks: ::std::ptr::null(),
18398             mode: DeviceGroupPresentModeFlagsKHR::default(),
18399         }
18400     }
18401 }
18402 impl DeviceGroupPresentInfoKHR {
builder<'a>() -> DeviceGroupPresentInfoKHRBuilder<'a>18403     pub fn builder<'a>() -> DeviceGroupPresentInfoKHRBuilder<'a> {
18404         DeviceGroupPresentInfoKHRBuilder {
18405             inner: DeviceGroupPresentInfoKHR::default(),
18406             marker: ::std::marker::PhantomData,
18407         }
18408     }
18409 }
18410 #[repr(transparent)]
18411 pub struct DeviceGroupPresentInfoKHRBuilder<'a> {
18412     inner: DeviceGroupPresentInfoKHR,
18413     marker: ::std::marker::PhantomData<&'a ()>,
18414 }
18415 unsafe impl ExtendsPresentInfoKHR for DeviceGroupPresentInfoKHRBuilder<'_> {}
18416 unsafe impl ExtendsPresentInfoKHR for DeviceGroupPresentInfoKHR {}
18417 impl<'a> ::std::ops::Deref for DeviceGroupPresentInfoKHRBuilder<'a> {
18418     type Target = DeviceGroupPresentInfoKHR;
deref(&self) -> &Self::Target18419     fn deref(&self) -> &Self::Target {
18420         &self.inner
18421     }
18422 }
18423 impl<'a> ::std::ops::DerefMut for DeviceGroupPresentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18424     fn deref_mut(&mut self) -> &mut Self::Target {
18425         &mut self.inner
18426     }
18427 }
18428 impl<'a> DeviceGroupPresentInfoKHRBuilder<'a> {
device_masks(mut self, device_masks: &'a [u32]) -> Self18429     pub fn device_masks(mut self, device_masks: &'a [u32]) -> Self {
18430         self.inner.swapchain_count = device_masks.len() as _;
18431         self.inner.p_device_masks = device_masks.as_ptr();
18432         self
18433     }
mode(mut self, mode: DeviceGroupPresentModeFlagsKHR) -> Self18434     pub fn mode(mut self, mode: DeviceGroupPresentModeFlagsKHR) -> Self {
18435         self.inner.mode = mode;
18436         self
18437     }
18438     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18439     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18440     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupPresentInfoKHR18441     pub fn build(self) -> DeviceGroupPresentInfoKHR {
18442         self.inner
18443     }
18444 }
18445 #[repr(C)]
18446 #[derive(Copy, Clone, Debug)]
18447 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupDeviceCreateInfo.html>"]
18448 pub struct DeviceGroupDeviceCreateInfo {
18449     pub s_type: StructureType,
18450     pub p_next: *const c_void,
18451     pub physical_device_count: u32,
18452     pub p_physical_devices: *const PhysicalDevice,
18453 }
18454 impl ::std::default::Default for DeviceGroupDeviceCreateInfo {
default() -> DeviceGroupDeviceCreateInfo18455     fn default() -> DeviceGroupDeviceCreateInfo {
18456         DeviceGroupDeviceCreateInfo {
18457             s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
18458             p_next: ::std::ptr::null(),
18459             physical_device_count: u32::default(),
18460             p_physical_devices: ::std::ptr::null(),
18461         }
18462     }
18463 }
18464 impl DeviceGroupDeviceCreateInfo {
builder<'a>() -> DeviceGroupDeviceCreateInfoBuilder<'a>18465     pub fn builder<'a>() -> DeviceGroupDeviceCreateInfoBuilder<'a> {
18466         DeviceGroupDeviceCreateInfoBuilder {
18467             inner: DeviceGroupDeviceCreateInfo::default(),
18468             marker: ::std::marker::PhantomData,
18469         }
18470     }
18471 }
18472 #[repr(transparent)]
18473 pub struct DeviceGroupDeviceCreateInfoBuilder<'a> {
18474     inner: DeviceGroupDeviceCreateInfo,
18475     marker: ::std::marker::PhantomData<&'a ()>,
18476 }
18477 unsafe impl ExtendsDeviceCreateInfo for DeviceGroupDeviceCreateInfoBuilder<'_> {}
18478 unsafe impl ExtendsDeviceCreateInfo for DeviceGroupDeviceCreateInfo {}
18479 impl<'a> ::std::ops::Deref for DeviceGroupDeviceCreateInfoBuilder<'a> {
18480     type Target = DeviceGroupDeviceCreateInfo;
deref(&self) -> &Self::Target18481     fn deref(&self) -> &Self::Target {
18482         &self.inner
18483     }
18484 }
18485 impl<'a> ::std::ops::DerefMut for DeviceGroupDeviceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18486     fn deref_mut(&mut self) -> &mut Self::Target {
18487         &mut self.inner
18488     }
18489 }
18490 impl<'a> DeviceGroupDeviceCreateInfoBuilder<'a> {
physical_devices(mut self, physical_devices: &'a [PhysicalDevice]) -> Self18491     pub fn physical_devices(mut self, physical_devices: &'a [PhysicalDevice]) -> Self {
18492         self.inner.physical_device_count = physical_devices.len() as _;
18493         self.inner.p_physical_devices = physical_devices.as_ptr();
18494         self
18495     }
18496     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18497     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18498     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupDeviceCreateInfo18499     pub fn build(self) -> DeviceGroupDeviceCreateInfo {
18500         self.inner
18501     }
18502 }
18503 #[repr(C)]
18504 #[derive(Copy, Clone, Debug)]
18505 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>"]
18506 pub struct DeviceGroupSwapchainCreateInfoKHR {
18507     pub s_type: StructureType,
18508     pub p_next: *const c_void,
18509     pub modes: DeviceGroupPresentModeFlagsKHR,
18510 }
18511 impl ::std::default::Default for DeviceGroupSwapchainCreateInfoKHR {
default() -> DeviceGroupSwapchainCreateInfoKHR18512     fn default() -> DeviceGroupSwapchainCreateInfoKHR {
18513         DeviceGroupSwapchainCreateInfoKHR {
18514             s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
18515             p_next: ::std::ptr::null(),
18516             modes: DeviceGroupPresentModeFlagsKHR::default(),
18517         }
18518     }
18519 }
18520 impl DeviceGroupSwapchainCreateInfoKHR {
builder<'a>() -> DeviceGroupSwapchainCreateInfoKHRBuilder<'a>18521     pub fn builder<'a>() -> DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18522         DeviceGroupSwapchainCreateInfoKHRBuilder {
18523             inner: DeviceGroupSwapchainCreateInfoKHR::default(),
18524             marker: ::std::marker::PhantomData,
18525         }
18526     }
18527 }
18528 #[repr(transparent)]
18529 pub struct DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18530     inner: DeviceGroupSwapchainCreateInfoKHR,
18531     marker: ::std::marker::PhantomData<&'a ()>,
18532 }
18533 unsafe impl ExtendsSwapchainCreateInfoKHR for DeviceGroupSwapchainCreateInfoKHRBuilder<'_> {}
18534 unsafe impl ExtendsSwapchainCreateInfoKHR for DeviceGroupSwapchainCreateInfoKHR {}
18535 impl<'a> ::std::ops::Deref for DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18536     type Target = DeviceGroupSwapchainCreateInfoKHR;
deref(&self) -> &Self::Target18537     fn deref(&self) -> &Self::Target {
18538         &self.inner
18539     }
18540 }
18541 impl<'a> ::std::ops::DerefMut for DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18542     fn deref_mut(&mut self) -> &mut Self::Target {
18543         &mut self.inner
18544     }
18545 }
18546 impl<'a> DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self18547     pub fn modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self {
18548         self.inner.modes = modes;
18549         self
18550     }
18551     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18552     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18553     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupSwapchainCreateInfoKHR18554     pub fn build(self) -> DeviceGroupSwapchainCreateInfoKHR {
18555         self.inner
18556     }
18557 }
18558 #[repr(C)]
18559 #[derive(Copy, Clone, Default, Debug)]
18560 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateEntry.html>"]
18561 pub struct DescriptorUpdateTemplateEntry {
18562     pub dst_binding: u32,
18563     pub dst_array_element: u32,
18564     pub descriptor_count: u32,
18565     pub descriptor_type: DescriptorType,
18566     pub offset: usize,
18567     pub stride: usize,
18568 }
18569 impl DescriptorUpdateTemplateEntry {
builder<'a>() -> DescriptorUpdateTemplateEntryBuilder<'a>18570     pub fn builder<'a>() -> DescriptorUpdateTemplateEntryBuilder<'a> {
18571         DescriptorUpdateTemplateEntryBuilder {
18572             inner: DescriptorUpdateTemplateEntry::default(),
18573             marker: ::std::marker::PhantomData,
18574         }
18575     }
18576 }
18577 #[repr(transparent)]
18578 pub struct DescriptorUpdateTemplateEntryBuilder<'a> {
18579     inner: DescriptorUpdateTemplateEntry,
18580     marker: ::std::marker::PhantomData<&'a ()>,
18581 }
18582 impl<'a> ::std::ops::Deref for DescriptorUpdateTemplateEntryBuilder<'a> {
18583     type Target = DescriptorUpdateTemplateEntry;
deref(&self) -> &Self::Target18584     fn deref(&self) -> &Self::Target {
18585         &self.inner
18586     }
18587 }
18588 impl<'a> ::std::ops::DerefMut for DescriptorUpdateTemplateEntryBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18589     fn deref_mut(&mut self) -> &mut Self::Target {
18590         &mut self.inner
18591     }
18592 }
18593 impl<'a> DescriptorUpdateTemplateEntryBuilder<'a> {
dst_binding(mut self, dst_binding: u32) -> Self18594     pub fn dst_binding(mut self, dst_binding: u32) -> Self {
18595         self.inner.dst_binding = dst_binding;
18596         self
18597     }
dst_array_element(mut self, dst_array_element: u32) -> Self18598     pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
18599         self.inner.dst_array_element = dst_array_element;
18600         self
18601     }
descriptor_count(mut self, descriptor_count: u32) -> Self18602     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
18603         self.inner.descriptor_count = descriptor_count;
18604         self
18605     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self18606     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
18607         self.inner.descriptor_type = descriptor_type;
18608         self
18609     }
offset(mut self, offset: usize) -> Self18610     pub fn offset(mut self, offset: usize) -> Self {
18611         self.inner.offset = offset;
18612         self
18613     }
stride(mut self, stride: usize) -> Self18614     pub fn stride(mut self, stride: usize) -> Self {
18615         self.inner.stride = stride;
18616         self
18617     }
18618     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18619     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18620     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorUpdateTemplateEntry18621     pub fn build(self) -> DescriptorUpdateTemplateEntry {
18622         self.inner
18623     }
18624 }
18625 #[repr(C)]
18626 #[derive(Copy, Clone, Debug)]
18627 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateCreateInfo.html>"]
18628 pub struct DescriptorUpdateTemplateCreateInfo {
18629     pub s_type: StructureType,
18630     pub p_next: *const c_void,
18631     pub flags: DescriptorUpdateTemplateCreateFlags,
18632     pub descriptor_update_entry_count: u32,
18633     pub p_descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
18634     pub template_type: DescriptorUpdateTemplateType,
18635     pub descriptor_set_layout: DescriptorSetLayout,
18636     pub pipeline_bind_point: PipelineBindPoint,
18637     pub pipeline_layout: PipelineLayout,
18638     pub set: u32,
18639 }
18640 impl ::std::default::Default for DescriptorUpdateTemplateCreateInfo {
default() -> DescriptorUpdateTemplateCreateInfo18641     fn default() -> DescriptorUpdateTemplateCreateInfo {
18642         DescriptorUpdateTemplateCreateInfo {
18643             s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
18644             p_next: ::std::ptr::null(),
18645             flags: DescriptorUpdateTemplateCreateFlags::default(),
18646             descriptor_update_entry_count: u32::default(),
18647             p_descriptor_update_entries: ::std::ptr::null(),
18648             template_type: DescriptorUpdateTemplateType::default(),
18649             descriptor_set_layout: DescriptorSetLayout::default(),
18650             pipeline_bind_point: PipelineBindPoint::default(),
18651             pipeline_layout: PipelineLayout::default(),
18652             set: u32::default(),
18653         }
18654     }
18655 }
18656 impl DescriptorUpdateTemplateCreateInfo {
builder<'a>() -> DescriptorUpdateTemplateCreateInfoBuilder<'a>18657     pub fn builder<'a>() -> DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18658         DescriptorUpdateTemplateCreateInfoBuilder {
18659             inner: DescriptorUpdateTemplateCreateInfo::default(),
18660             marker: ::std::marker::PhantomData,
18661         }
18662     }
18663 }
18664 #[repr(transparent)]
18665 pub struct DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18666     inner: DescriptorUpdateTemplateCreateInfo,
18667     marker: ::std::marker::PhantomData<&'a ()>,
18668 }
18669 impl<'a> ::std::ops::Deref for DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18670     type Target = DescriptorUpdateTemplateCreateInfo;
deref(&self) -> &Self::Target18671     fn deref(&self) -> &Self::Target {
18672         &self.inner
18673     }
18674 }
18675 impl<'a> ::std::ops::DerefMut for DescriptorUpdateTemplateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18676     fn deref_mut(&mut self) -> &mut Self::Target {
18677         &mut self.inner
18678     }
18679 }
18680 impl<'a> DescriptorUpdateTemplateCreateInfoBuilder<'a> {
flags(mut self, flags: DescriptorUpdateTemplateCreateFlags) -> Self18681     pub fn flags(mut self, flags: DescriptorUpdateTemplateCreateFlags) -> Self {
18682         self.inner.flags = flags;
18683         self
18684     }
descriptor_update_entries( mut self, descriptor_update_entries: &'a [DescriptorUpdateTemplateEntry], ) -> Self18685     pub fn descriptor_update_entries(
18686         mut self,
18687         descriptor_update_entries: &'a [DescriptorUpdateTemplateEntry],
18688     ) -> Self {
18689         self.inner.descriptor_update_entry_count = descriptor_update_entries.len() as _;
18690         self.inner.p_descriptor_update_entries = descriptor_update_entries.as_ptr();
18691         self
18692     }
template_type(mut self, template_type: DescriptorUpdateTemplateType) -> Self18693     pub fn template_type(mut self, template_type: DescriptorUpdateTemplateType) -> Self {
18694         self.inner.template_type = template_type;
18695         self
18696     }
descriptor_set_layout(mut self, descriptor_set_layout: DescriptorSetLayout) -> Self18697     pub fn descriptor_set_layout(mut self, descriptor_set_layout: DescriptorSetLayout) -> Self {
18698         self.inner.descriptor_set_layout = descriptor_set_layout;
18699         self
18700     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self18701     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
18702         self.inner.pipeline_bind_point = pipeline_bind_point;
18703         self
18704     }
pipeline_layout(mut self, pipeline_layout: PipelineLayout) -> Self18705     pub fn pipeline_layout(mut self, pipeline_layout: PipelineLayout) -> Self {
18706         self.inner.pipeline_layout = pipeline_layout;
18707         self
18708     }
set(mut self, set: u32) -> Self18709     pub fn set(mut self, set: u32) -> Self {
18710         self.inner.set = set;
18711         self
18712     }
18713     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18714     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18715     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorUpdateTemplateCreateInfo18716     pub fn build(self) -> DescriptorUpdateTemplateCreateInfo {
18717         self.inner
18718     }
18719 }
18720 #[repr(C)]
18721 #[derive(Copy, Clone, Default, Debug)]
18722 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXYColorEXT.html>"]
18723 pub struct XYColorEXT {
18724     pub x: f32,
18725     pub y: f32,
18726 }
18727 impl XYColorEXT {
builder<'a>() -> XYColorEXTBuilder<'a>18728     pub fn builder<'a>() -> XYColorEXTBuilder<'a> {
18729         XYColorEXTBuilder {
18730             inner: XYColorEXT::default(),
18731             marker: ::std::marker::PhantomData,
18732         }
18733     }
18734 }
18735 #[repr(transparent)]
18736 pub struct XYColorEXTBuilder<'a> {
18737     inner: XYColorEXT,
18738     marker: ::std::marker::PhantomData<&'a ()>,
18739 }
18740 impl<'a> ::std::ops::Deref for XYColorEXTBuilder<'a> {
18741     type Target = XYColorEXT;
deref(&self) -> &Self::Target18742     fn deref(&self) -> &Self::Target {
18743         &self.inner
18744     }
18745 }
18746 impl<'a> ::std::ops::DerefMut for XYColorEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18747     fn deref_mut(&mut self) -> &mut Self::Target {
18748         &mut self.inner
18749     }
18750 }
18751 impl<'a> XYColorEXTBuilder<'a> {
x(mut self, x: f32) -> Self18752     pub fn x(mut self, x: f32) -> Self {
18753         self.inner.x = x;
18754         self
18755     }
y(mut self, y: f32) -> Self18756     pub fn y(mut self, y: f32) -> Self {
18757         self.inner.y = y;
18758         self
18759     }
18760     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18761     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18762     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> XYColorEXT18763     pub fn build(self) -> XYColorEXT {
18764         self.inner
18765     }
18766 }
18767 #[repr(C)]
18768 #[derive(Copy, Clone, Debug)]
18769 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>"]
18770 pub struct PhysicalDevicePresentIdFeaturesKHR {
18771     pub s_type: StructureType,
18772     pub p_next: *mut c_void,
18773     pub present_id: Bool32,
18774 }
18775 impl ::std::default::Default for PhysicalDevicePresentIdFeaturesKHR {
default() -> PhysicalDevicePresentIdFeaturesKHR18776     fn default() -> PhysicalDevicePresentIdFeaturesKHR {
18777         PhysicalDevicePresentIdFeaturesKHR {
18778             s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
18779             p_next: ::std::ptr::null_mut(),
18780             present_id: Bool32::default(),
18781         }
18782     }
18783 }
18784 impl PhysicalDevicePresentIdFeaturesKHR {
builder<'a>() -> PhysicalDevicePresentIdFeaturesKHRBuilder<'a>18785     pub fn builder<'a>() -> PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18786         PhysicalDevicePresentIdFeaturesKHRBuilder {
18787             inner: PhysicalDevicePresentIdFeaturesKHR::default(),
18788             marker: ::std::marker::PhantomData,
18789         }
18790     }
18791 }
18792 #[repr(transparent)]
18793 pub struct PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18794     inner: PhysicalDevicePresentIdFeaturesKHR,
18795     marker: ::std::marker::PhantomData<&'a ()>,
18796 }
18797 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentIdFeaturesKHRBuilder<'_> {}
18798 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentIdFeaturesKHR {}
18799 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentIdFeaturesKHRBuilder<'_> {}
18800 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentIdFeaturesKHR {}
18801 impl<'a> ::std::ops::Deref for PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
18802     type Target = PhysicalDevicePresentIdFeaturesKHR;
deref(&self) -> &Self::Target18803     fn deref(&self) -> &Self::Target {
18804         &self.inner
18805     }
18806 }
18807 impl<'a> ::std::ops::DerefMut for PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18808     fn deref_mut(&mut self) -> &mut Self::Target {
18809         &mut self.inner
18810     }
18811 }
18812 impl<'a> PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
present_id(mut self, present_id: bool) -> Self18813     pub fn present_id(mut self, present_id: bool) -> Self {
18814         self.inner.present_id = present_id.into();
18815         self
18816     }
18817     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18818     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18819     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePresentIdFeaturesKHR18820     pub fn build(self) -> PhysicalDevicePresentIdFeaturesKHR {
18821         self.inner
18822     }
18823 }
18824 #[repr(C)]
18825 #[derive(Copy, Clone, Debug)]
18826 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentIdKHR.html>"]
18827 pub struct PresentIdKHR {
18828     pub s_type: StructureType,
18829     pub p_next: *const c_void,
18830     pub swapchain_count: u32,
18831     pub p_present_ids: *const u64,
18832 }
18833 impl ::std::default::Default for PresentIdKHR {
default() -> PresentIdKHR18834     fn default() -> PresentIdKHR {
18835         PresentIdKHR {
18836             s_type: StructureType::PRESENT_ID_KHR,
18837             p_next: ::std::ptr::null(),
18838             swapchain_count: u32::default(),
18839             p_present_ids: ::std::ptr::null(),
18840         }
18841     }
18842 }
18843 impl PresentIdKHR {
builder<'a>() -> PresentIdKHRBuilder<'a>18844     pub fn builder<'a>() -> PresentIdKHRBuilder<'a> {
18845         PresentIdKHRBuilder {
18846             inner: PresentIdKHR::default(),
18847             marker: ::std::marker::PhantomData,
18848         }
18849     }
18850 }
18851 #[repr(transparent)]
18852 pub struct PresentIdKHRBuilder<'a> {
18853     inner: PresentIdKHR,
18854     marker: ::std::marker::PhantomData<&'a ()>,
18855 }
18856 unsafe impl ExtendsPresentInfoKHR for PresentIdKHRBuilder<'_> {}
18857 unsafe impl ExtendsPresentInfoKHR for PresentIdKHR {}
18858 impl<'a> ::std::ops::Deref for PresentIdKHRBuilder<'a> {
18859     type Target = PresentIdKHR;
deref(&self) -> &Self::Target18860     fn deref(&self) -> &Self::Target {
18861         &self.inner
18862     }
18863 }
18864 impl<'a> ::std::ops::DerefMut for PresentIdKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18865     fn deref_mut(&mut self) -> &mut Self::Target {
18866         &mut self.inner
18867     }
18868 }
18869 impl<'a> PresentIdKHRBuilder<'a> {
present_ids(mut self, present_ids: &'a [u64]) -> Self18870     pub fn present_ids(mut self, present_ids: &'a [u64]) -> Self {
18871         self.inner.swapchain_count = present_ids.len() as _;
18872         self.inner.p_present_ids = present_ids.as_ptr();
18873         self
18874     }
18875     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18876     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18877     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentIdKHR18878     pub fn build(self) -> PresentIdKHR {
18879         self.inner
18880     }
18881 }
18882 #[repr(C)]
18883 #[derive(Copy, Clone, Debug)]
18884 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>"]
18885 pub struct PhysicalDevicePresentWaitFeaturesKHR {
18886     pub s_type: StructureType,
18887     pub p_next: *mut c_void,
18888     pub present_wait: Bool32,
18889 }
18890 impl ::std::default::Default for PhysicalDevicePresentWaitFeaturesKHR {
default() -> PhysicalDevicePresentWaitFeaturesKHR18891     fn default() -> PhysicalDevicePresentWaitFeaturesKHR {
18892         PhysicalDevicePresentWaitFeaturesKHR {
18893             s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
18894             p_next: ::std::ptr::null_mut(),
18895             present_wait: Bool32::default(),
18896         }
18897     }
18898 }
18899 impl PhysicalDevicePresentWaitFeaturesKHR {
builder<'a>() -> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a>18900     pub fn builder<'a>() -> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
18901         PhysicalDevicePresentWaitFeaturesKHRBuilder {
18902             inner: PhysicalDevicePresentWaitFeaturesKHR::default(),
18903             marker: ::std::marker::PhantomData,
18904         }
18905     }
18906 }
18907 #[repr(transparent)]
18908 pub struct PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
18909     inner: PhysicalDevicePresentWaitFeaturesKHR,
18910     marker: ::std::marker::PhantomData<&'a ()>,
18911 }
18912 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentWaitFeaturesKHRBuilder<'_> {}
18913 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentWaitFeaturesKHR {}
18914 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentWaitFeaturesKHRBuilder<'_> {}
18915 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentWaitFeaturesKHR {}
18916 impl<'a> ::std::ops::Deref for PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
18917     type Target = PhysicalDevicePresentWaitFeaturesKHR;
deref(&self) -> &Self::Target18918     fn deref(&self) -> &Self::Target {
18919         &self.inner
18920     }
18921 }
18922 impl<'a> ::std::ops::DerefMut for PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18923     fn deref_mut(&mut self) -> &mut Self::Target {
18924         &mut self.inner
18925     }
18926 }
18927 impl<'a> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
present_wait(mut self, present_wait: bool) -> Self18928     pub fn present_wait(mut self, present_wait: bool) -> Self {
18929         self.inner.present_wait = present_wait.into();
18930         self
18931     }
18932     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18933     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18934     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePresentWaitFeaturesKHR18935     pub fn build(self) -> PhysicalDevicePresentWaitFeaturesKHR {
18936         self.inner
18937     }
18938 }
18939 #[repr(C)]
18940 #[derive(Copy, Clone, Debug)]
18941 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkHdrMetadataEXT.html>"]
18942 pub struct HdrMetadataEXT {
18943     pub s_type: StructureType,
18944     pub p_next: *const c_void,
18945     pub display_primary_red: XYColorEXT,
18946     pub display_primary_green: XYColorEXT,
18947     pub display_primary_blue: XYColorEXT,
18948     pub white_point: XYColorEXT,
18949     pub max_luminance: f32,
18950     pub min_luminance: f32,
18951     pub max_content_light_level: f32,
18952     pub max_frame_average_light_level: f32,
18953 }
18954 impl ::std::default::Default for HdrMetadataEXT {
default() -> HdrMetadataEXT18955     fn default() -> HdrMetadataEXT {
18956         HdrMetadataEXT {
18957             s_type: StructureType::HDR_METADATA_EXT,
18958             p_next: ::std::ptr::null(),
18959             display_primary_red: XYColorEXT::default(),
18960             display_primary_green: XYColorEXT::default(),
18961             display_primary_blue: XYColorEXT::default(),
18962             white_point: XYColorEXT::default(),
18963             max_luminance: f32::default(),
18964             min_luminance: f32::default(),
18965             max_content_light_level: f32::default(),
18966             max_frame_average_light_level: f32::default(),
18967         }
18968     }
18969 }
18970 impl HdrMetadataEXT {
builder<'a>() -> HdrMetadataEXTBuilder<'a>18971     pub fn builder<'a>() -> HdrMetadataEXTBuilder<'a> {
18972         HdrMetadataEXTBuilder {
18973             inner: HdrMetadataEXT::default(),
18974             marker: ::std::marker::PhantomData,
18975         }
18976     }
18977 }
18978 #[repr(transparent)]
18979 pub struct HdrMetadataEXTBuilder<'a> {
18980     inner: HdrMetadataEXT,
18981     marker: ::std::marker::PhantomData<&'a ()>,
18982 }
18983 impl<'a> ::std::ops::Deref for HdrMetadataEXTBuilder<'a> {
18984     type Target = HdrMetadataEXT;
deref(&self) -> &Self::Target18985     fn deref(&self) -> &Self::Target {
18986         &self.inner
18987     }
18988 }
18989 impl<'a> ::std::ops::DerefMut for HdrMetadataEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18990     fn deref_mut(&mut self) -> &mut Self::Target {
18991         &mut self.inner
18992     }
18993 }
18994 impl<'a> HdrMetadataEXTBuilder<'a> {
display_primary_red(mut self, display_primary_red: XYColorEXT) -> Self18995     pub fn display_primary_red(mut self, display_primary_red: XYColorEXT) -> Self {
18996         self.inner.display_primary_red = display_primary_red;
18997         self
18998     }
display_primary_green(mut self, display_primary_green: XYColorEXT) -> Self18999     pub fn display_primary_green(mut self, display_primary_green: XYColorEXT) -> Self {
19000         self.inner.display_primary_green = display_primary_green;
19001         self
19002     }
display_primary_blue(mut self, display_primary_blue: XYColorEXT) -> Self19003     pub fn display_primary_blue(mut self, display_primary_blue: XYColorEXT) -> Self {
19004         self.inner.display_primary_blue = display_primary_blue;
19005         self
19006     }
white_point(mut self, white_point: XYColorEXT) -> Self19007     pub fn white_point(mut self, white_point: XYColorEXT) -> Self {
19008         self.inner.white_point = white_point;
19009         self
19010     }
max_luminance(mut self, max_luminance: f32) -> Self19011     pub fn max_luminance(mut self, max_luminance: f32) -> Self {
19012         self.inner.max_luminance = max_luminance;
19013         self
19014     }
min_luminance(mut self, min_luminance: f32) -> Self19015     pub fn min_luminance(mut self, min_luminance: f32) -> Self {
19016         self.inner.min_luminance = min_luminance;
19017         self
19018     }
max_content_light_level(mut self, max_content_light_level: f32) -> Self19019     pub fn max_content_light_level(mut self, max_content_light_level: f32) -> Self {
19020         self.inner.max_content_light_level = max_content_light_level;
19021         self
19022     }
max_frame_average_light_level(mut self, max_frame_average_light_level: f32) -> Self19023     pub fn max_frame_average_light_level(mut self, max_frame_average_light_level: f32) -> Self {
19024         self.inner.max_frame_average_light_level = max_frame_average_light_level;
19025         self
19026     }
19027     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19028     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19029     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> HdrMetadataEXT19030     pub fn build(self) -> HdrMetadataEXT {
19031         self.inner
19032     }
19033 }
19034 #[repr(C)]
19035 #[derive(Copy, Clone, Debug)]
19036 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>"]
19037 pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
19038     pub s_type: StructureType,
19039     pub p_next: *mut c_void,
19040     pub local_dimming_support: Bool32,
19041 }
19042 impl ::std::default::Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
default() -> DisplayNativeHdrSurfaceCapabilitiesAMD19043     fn default() -> DisplayNativeHdrSurfaceCapabilitiesAMD {
19044         DisplayNativeHdrSurfaceCapabilitiesAMD {
19045             s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
19046             p_next: ::std::ptr::null_mut(),
19047             local_dimming_support: Bool32::default(),
19048         }
19049     }
19050 }
19051 impl DisplayNativeHdrSurfaceCapabilitiesAMD {
builder<'a>() -> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a>19052     pub fn builder<'a>() -> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
19053         DisplayNativeHdrSurfaceCapabilitiesAMDBuilder {
19054             inner: DisplayNativeHdrSurfaceCapabilitiesAMD::default(),
19055             marker: ::std::marker::PhantomData,
19056         }
19057     }
19058 }
19059 #[repr(transparent)]
19060 pub struct DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
19061     inner: DisplayNativeHdrSurfaceCapabilitiesAMD,
19062     marker: ::std::marker::PhantomData<&'a ()>,
19063 }
19064 unsafe impl ExtendsSurfaceCapabilities2KHR for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'_> {}
19065 unsafe impl ExtendsSurfaceCapabilities2KHR for DisplayNativeHdrSurfaceCapabilitiesAMD {}
19066 impl<'a> ::std::ops::Deref for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
19067     type Target = DisplayNativeHdrSurfaceCapabilitiesAMD;
deref(&self) -> &Self::Target19068     fn deref(&self) -> &Self::Target {
19069         &self.inner
19070     }
19071 }
19072 impl<'a> ::std::ops::DerefMut for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19073     fn deref_mut(&mut self) -> &mut Self::Target {
19074         &mut self.inner
19075     }
19076 }
19077 impl<'a> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
local_dimming_support(mut self, local_dimming_support: bool) -> Self19078     pub fn local_dimming_support(mut self, local_dimming_support: bool) -> Self {
19079         self.inner.local_dimming_support = local_dimming_support.into();
19080         self
19081     }
19082     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19083     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19084     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayNativeHdrSurfaceCapabilitiesAMD19085     pub fn build(self) -> DisplayNativeHdrSurfaceCapabilitiesAMD {
19086         self.inner
19087     }
19088 }
19089 #[repr(C)]
19090 #[derive(Copy, Clone, Debug)]
19091 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>"]
19092 pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
19093     pub s_type: StructureType,
19094     pub p_next: *const c_void,
19095     pub local_dimming_enable: Bool32,
19096 }
19097 impl ::std::default::Default for SwapchainDisplayNativeHdrCreateInfoAMD {
default() -> SwapchainDisplayNativeHdrCreateInfoAMD19098     fn default() -> SwapchainDisplayNativeHdrCreateInfoAMD {
19099         SwapchainDisplayNativeHdrCreateInfoAMD {
19100             s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
19101             p_next: ::std::ptr::null(),
19102             local_dimming_enable: Bool32::default(),
19103         }
19104     }
19105 }
19106 impl SwapchainDisplayNativeHdrCreateInfoAMD {
builder<'a>() -> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a>19107     pub fn builder<'a>() -> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
19108         SwapchainDisplayNativeHdrCreateInfoAMDBuilder {
19109             inner: SwapchainDisplayNativeHdrCreateInfoAMD::default(),
19110             marker: ::std::marker::PhantomData,
19111         }
19112     }
19113 }
19114 #[repr(transparent)]
19115 pub struct SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
19116     inner: SwapchainDisplayNativeHdrCreateInfoAMD,
19117     marker: ::std::marker::PhantomData<&'a ()>,
19118 }
19119 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'_> {}
19120 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainDisplayNativeHdrCreateInfoAMD {}
19121 impl<'a> ::std::ops::Deref for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
19122     type Target = SwapchainDisplayNativeHdrCreateInfoAMD;
deref(&self) -> &Self::Target19123     fn deref(&self) -> &Self::Target {
19124         &self.inner
19125     }
19126 }
19127 impl<'a> ::std::ops::DerefMut for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19128     fn deref_mut(&mut self) -> &mut Self::Target {
19129         &mut self.inner
19130     }
19131 }
19132 impl<'a> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
local_dimming_enable(mut self, local_dimming_enable: bool) -> Self19133     pub fn local_dimming_enable(mut self, local_dimming_enable: bool) -> Self {
19134         self.inner.local_dimming_enable = local_dimming_enable.into();
19135         self
19136     }
19137     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19138     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19139     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainDisplayNativeHdrCreateInfoAMD19140     pub fn build(self) -> SwapchainDisplayNativeHdrCreateInfoAMD {
19141         self.inner
19142     }
19143 }
19144 #[repr(C)]
19145 #[derive(Copy, Clone, Default, Debug)]
19146 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRefreshCycleDurationGOOGLE.html>"]
19147 pub struct RefreshCycleDurationGOOGLE {
19148     pub refresh_duration: u64,
19149 }
19150 impl RefreshCycleDurationGOOGLE {
builder<'a>() -> RefreshCycleDurationGOOGLEBuilder<'a>19151     pub fn builder<'a>() -> RefreshCycleDurationGOOGLEBuilder<'a> {
19152         RefreshCycleDurationGOOGLEBuilder {
19153             inner: RefreshCycleDurationGOOGLE::default(),
19154             marker: ::std::marker::PhantomData,
19155         }
19156     }
19157 }
19158 #[repr(transparent)]
19159 pub struct RefreshCycleDurationGOOGLEBuilder<'a> {
19160     inner: RefreshCycleDurationGOOGLE,
19161     marker: ::std::marker::PhantomData<&'a ()>,
19162 }
19163 impl<'a> ::std::ops::Deref for RefreshCycleDurationGOOGLEBuilder<'a> {
19164     type Target = RefreshCycleDurationGOOGLE;
deref(&self) -> &Self::Target19165     fn deref(&self) -> &Self::Target {
19166         &self.inner
19167     }
19168 }
19169 impl<'a> ::std::ops::DerefMut for RefreshCycleDurationGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19170     fn deref_mut(&mut self) -> &mut Self::Target {
19171         &mut self.inner
19172     }
19173 }
19174 impl<'a> RefreshCycleDurationGOOGLEBuilder<'a> {
refresh_duration(mut self, refresh_duration: u64) -> Self19175     pub fn refresh_duration(mut self, refresh_duration: u64) -> Self {
19176         self.inner.refresh_duration = refresh_duration;
19177         self
19178     }
19179     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19180     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19181     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RefreshCycleDurationGOOGLE19182     pub fn build(self) -> RefreshCycleDurationGOOGLE {
19183         self.inner
19184     }
19185 }
19186 #[repr(C)]
19187 #[derive(Copy, Clone, Default, Debug)]
19188 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPastPresentationTimingGOOGLE.html>"]
19189 pub struct PastPresentationTimingGOOGLE {
19190     pub present_id: u32,
19191     pub desired_present_time: u64,
19192     pub actual_present_time: u64,
19193     pub earliest_present_time: u64,
19194     pub present_margin: u64,
19195 }
19196 impl PastPresentationTimingGOOGLE {
builder<'a>() -> PastPresentationTimingGOOGLEBuilder<'a>19197     pub fn builder<'a>() -> PastPresentationTimingGOOGLEBuilder<'a> {
19198         PastPresentationTimingGOOGLEBuilder {
19199             inner: PastPresentationTimingGOOGLE::default(),
19200             marker: ::std::marker::PhantomData,
19201         }
19202     }
19203 }
19204 #[repr(transparent)]
19205 pub struct PastPresentationTimingGOOGLEBuilder<'a> {
19206     inner: PastPresentationTimingGOOGLE,
19207     marker: ::std::marker::PhantomData<&'a ()>,
19208 }
19209 impl<'a> ::std::ops::Deref for PastPresentationTimingGOOGLEBuilder<'a> {
19210     type Target = PastPresentationTimingGOOGLE;
deref(&self) -> &Self::Target19211     fn deref(&self) -> &Self::Target {
19212         &self.inner
19213     }
19214 }
19215 impl<'a> ::std::ops::DerefMut for PastPresentationTimingGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19216     fn deref_mut(&mut self) -> &mut Self::Target {
19217         &mut self.inner
19218     }
19219 }
19220 impl<'a> PastPresentationTimingGOOGLEBuilder<'a> {
present_id(mut self, present_id: u32) -> Self19221     pub fn present_id(mut self, present_id: u32) -> Self {
19222         self.inner.present_id = present_id;
19223         self
19224     }
desired_present_time(mut self, desired_present_time: u64) -> Self19225     pub fn desired_present_time(mut self, desired_present_time: u64) -> Self {
19226         self.inner.desired_present_time = desired_present_time;
19227         self
19228     }
actual_present_time(mut self, actual_present_time: u64) -> Self19229     pub fn actual_present_time(mut self, actual_present_time: u64) -> Self {
19230         self.inner.actual_present_time = actual_present_time;
19231         self
19232     }
earliest_present_time(mut self, earliest_present_time: u64) -> Self19233     pub fn earliest_present_time(mut self, earliest_present_time: u64) -> Self {
19234         self.inner.earliest_present_time = earliest_present_time;
19235         self
19236     }
present_margin(mut self, present_margin: u64) -> Self19237     pub fn present_margin(mut self, present_margin: u64) -> Self {
19238         self.inner.present_margin = present_margin;
19239         self
19240     }
19241     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19242     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19243     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PastPresentationTimingGOOGLE19244     pub fn build(self) -> PastPresentationTimingGOOGLE {
19245         self.inner
19246     }
19247 }
19248 #[repr(C)]
19249 #[derive(Copy, Clone, Debug)]
19250 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentTimesInfoGOOGLE.html>"]
19251 pub struct PresentTimesInfoGOOGLE {
19252     pub s_type: StructureType,
19253     pub p_next: *const c_void,
19254     pub swapchain_count: u32,
19255     pub p_times: *const PresentTimeGOOGLE,
19256 }
19257 impl ::std::default::Default for PresentTimesInfoGOOGLE {
default() -> PresentTimesInfoGOOGLE19258     fn default() -> PresentTimesInfoGOOGLE {
19259         PresentTimesInfoGOOGLE {
19260             s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
19261             p_next: ::std::ptr::null(),
19262             swapchain_count: u32::default(),
19263             p_times: ::std::ptr::null(),
19264         }
19265     }
19266 }
19267 impl PresentTimesInfoGOOGLE {
builder<'a>() -> PresentTimesInfoGOOGLEBuilder<'a>19268     pub fn builder<'a>() -> PresentTimesInfoGOOGLEBuilder<'a> {
19269         PresentTimesInfoGOOGLEBuilder {
19270             inner: PresentTimesInfoGOOGLE::default(),
19271             marker: ::std::marker::PhantomData,
19272         }
19273     }
19274 }
19275 #[repr(transparent)]
19276 pub struct PresentTimesInfoGOOGLEBuilder<'a> {
19277     inner: PresentTimesInfoGOOGLE,
19278     marker: ::std::marker::PhantomData<&'a ()>,
19279 }
19280 unsafe impl ExtendsPresentInfoKHR for PresentTimesInfoGOOGLEBuilder<'_> {}
19281 unsafe impl ExtendsPresentInfoKHR for PresentTimesInfoGOOGLE {}
19282 impl<'a> ::std::ops::Deref for PresentTimesInfoGOOGLEBuilder<'a> {
19283     type Target = PresentTimesInfoGOOGLE;
deref(&self) -> &Self::Target19284     fn deref(&self) -> &Self::Target {
19285         &self.inner
19286     }
19287 }
19288 impl<'a> ::std::ops::DerefMut for PresentTimesInfoGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19289     fn deref_mut(&mut self) -> &mut Self::Target {
19290         &mut self.inner
19291     }
19292 }
19293 impl<'a> PresentTimesInfoGOOGLEBuilder<'a> {
times(mut self, times: &'a [PresentTimeGOOGLE]) -> Self19294     pub fn times(mut self, times: &'a [PresentTimeGOOGLE]) -> Self {
19295         self.inner.swapchain_count = times.len() as _;
19296         self.inner.p_times = times.as_ptr();
19297         self
19298     }
19299     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19300     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19301     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentTimesInfoGOOGLE19302     pub fn build(self) -> PresentTimesInfoGOOGLE {
19303         self.inner
19304     }
19305 }
19306 #[repr(C)]
19307 #[derive(Copy, Clone, Default, Debug)]
19308 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentTimeGOOGLE.html>"]
19309 pub struct PresentTimeGOOGLE {
19310     pub present_id: u32,
19311     pub desired_present_time: u64,
19312 }
19313 impl PresentTimeGOOGLE {
builder<'a>() -> PresentTimeGOOGLEBuilder<'a>19314     pub fn builder<'a>() -> PresentTimeGOOGLEBuilder<'a> {
19315         PresentTimeGOOGLEBuilder {
19316             inner: PresentTimeGOOGLE::default(),
19317             marker: ::std::marker::PhantomData,
19318         }
19319     }
19320 }
19321 #[repr(transparent)]
19322 pub struct PresentTimeGOOGLEBuilder<'a> {
19323     inner: PresentTimeGOOGLE,
19324     marker: ::std::marker::PhantomData<&'a ()>,
19325 }
19326 impl<'a> ::std::ops::Deref for PresentTimeGOOGLEBuilder<'a> {
19327     type Target = PresentTimeGOOGLE;
deref(&self) -> &Self::Target19328     fn deref(&self) -> &Self::Target {
19329         &self.inner
19330     }
19331 }
19332 impl<'a> ::std::ops::DerefMut for PresentTimeGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19333     fn deref_mut(&mut self) -> &mut Self::Target {
19334         &mut self.inner
19335     }
19336 }
19337 impl<'a> PresentTimeGOOGLEBuilder<'a> {
present_id(mut self, present_id: u32) -> Self19338     pub fn present_id(mut self, present_id: u32) -> Self {
19339         self.inner.present_id = present_id;
19340         self
19341     }
desired_present_time(mut self, desired_present_time: u64) -> Self19342     pub fn desired_present_time(mut self, desired_present_time: u64) -> Self {
19343         self.inner.desired_present_time = desired_present_time;
19344         self
19345     }
19346     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19347     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19348     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentTimeGOOGLE19349     pub fn build(self) -> PresentTimeGOOGLE {
19350         self.inner
19351     }
19352 }
19353 #[repr(C)]
19354 #[derive(Copy, Clone, Debug)]
19355 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIOSSurfaceCreateInfoMVK.html>"]
19356 pub struct IOSSurfaceCreateInfoMVK {
19357     pub s_type: StructureType,
19358     pub p_next: *const c_void,
19359     pub flags: IOSSurfaceCreateFlagsMVK,
19360     pub p_view: *const c_void,
19361 }
19362 impl ::std::default::Default for IOSSurfaceCreateInfoMVK {
default() -> IOSSurfaceCreateInfoMVK19363     fn default() -> IOSSurfaceCreateInfoMVK {
19364         IOSSurfaceCreateInfoMVK {
19365             s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
19366             p_next: ::std::ptr::null(),
19367             flags: IOSSurfaceCreateFlagsMVK::default(),
19368             p_view: ::std::ptr::null(),
19369         }
19370     }
19371 }
19372 impl IOSSurfaceCreateInfoMVK {
builder<'a>() -> IOSSurfaceCreateInfoMVKBuilder<'a>19373     pub fn builder<'a>() -> IOSSurfaceCreateInfoMVKBuilder<'a> {
19374         IOSSurfaceCreateInfoMVKBuilder {
19375             inner: IOSSurfaceCreateInfoMVK::default(),
19376             marker: ::std::marker::PhantomData,
19377         }
19378     }
19379 }
19380 #[repr(transparent)]
19381 pub struct IOSSurfaceCreateInfoMVKBuilder<'a> {
19382     inner: IOSSurfaceCreateInfoMVK,
19383     marker: ::std::marker::PhantomData<&'a ()>,
19384 }
19385 impl<'a> ::std::ops::Deref for IOSSurfaceCreateInfoMVKBuilder<'a> {
19386     type Target = IOSSurfaceCreateInfoMVK;
deref(&self) -> &Self::Target19387     fn deref(&self) -> &Self::Target {
19388         &self.inner
19389     }
19390 }
19391 impl<'a> ::std::ops::DerefMut for IOSSurfaceCreateInfoMVKBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19392     fn deref_mut(&mut self) -> &mut Self::Target {
19393         &mut self.inner
19394     }
19395 }
19396 impl<'a> IOSSurfaceCreateInfoMVKBuilder<'a> {
flags(mut self, flags: IOSSurfaceCreateFlagsMVK) -> Self19397     pub fn flags(mut self, flags: IOSSurfaceCreateFlagsMVK) -> Self {
19398         self.inner.flags = flags;
19399         self
19400     }
view(mut self, view: *const c_void) -> Self19401     pub fn view(mut self, view: *const c_void) -> Self {
19402         self.inner.p_view = view;
19403         self
19404     }
19405     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19406     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19407     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IOSSurfaceCreateInfoMVK19408     pub fn build(self) -> IOSSurfaceCreateInfoMVK {
19409         self.inner
19410     }
19411 }
19412 #[repr(C)]
19413 #[derive(Copy, Clone, Debug)]
19414 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMacOSSurfaceCreateInfoMVK.html>"]
19415 pub struct MacOSSurfaceCreateInfoMVK {
19416     pub s_type: StructureType,
19417     pub p_next: *const c_void,
19418     pub flags: MacOSSurfaceCreateFlagsMVK,
19419     pub p_view: *const c_void,
19420 }
19421 impl ::std::default::Default for MacOSSurfaceCreateInfoMVK {
default() -> MacOSSurfaceCreateInfoMVK19422     fn default() -> MacOSSurfaceCreateInfoMVK {
19423         MacOSSurfaceCreateInfoMVK {
19424             s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
19425             p_next: ::std::ptr::null(),
19426             flags: MacOSSurfaceCreateFlagsMVK::default(),
19427             p_view: ::std::ptr::null(),
19428         }
19429     }
19430 }
19431 impl MacOSSurfaceCreateInfoMVK {
builder<'a>() -> MacOSSurfaceCreateInfoMVKBuilder<'a>19432     pub fn builder<'a>() -> MacOSSurfaceCreateInfoMVKBuilder<'a> {
19433         MacOSSurfaceCreateInfoMVKBuilder {
19434             inner: MacOSSurfaceCreateInfoMVK::default(),
19435             marker: ::std::marker::PhantomData,
19436         }
19437     }
19438 }
19439 #[repr(transparent)]
19440 pub struct MacOSSurfaceCreateInfoMVKBuilder<'a> {
19441     inner: MacOSSurfaceCreateInfoMVK,
19442     marker: ::std::marker::PhantomData<&'a ()>,
19443 }
19444 impl<'a> ::std::ops::Deref for MacOSSurfaceCreateInfoMVKBuilder<'a> {
19445     type Target = MacOSSurfaceCreateInfoMVK;
deref(&self) -> &Self::Target19446     fn deref(&self) -> &Self::Target {
19447         &self.inner
19448     }
19449 }
19450 impl<'a> ::std::ops::DerefMut for MacOSSurfaceCreateInfoMVKBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19451     fn deref_mut(&mut self) -> &mut Self::Target {
19452         &mut self.inner
19453     }
19454 }
19455 impl<'a> MacOSSurfaceCreateInfoMVKBuilder<'a> {
flags(mut self, flags: MacOSSurfaceCreateFlagsMVK) -> Self19456     pub fn flags(mut self, flags: MacOSSurfaceCreateFlagsMVK) -> Self {
19457         self.inner.flags = flags;
19458         self
19459     }
view(mut self, view: *const c_void) -> Self19460     pub fn view(mut self, view: *const c_void) -> Self {
19461         self.inner.p_view = view;
19462         self
19463     }
19464     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19465     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19466     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MacOSSurfaceCreateInfoMVK19467     pub fn build(self) -> MacOSSurfaceCreateInfoMVK {
19468         self.inner
19469     }
19470 }
19471 #[repr(C)]
19472 #[derive(Copy, Clone, Debug)]
19473 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMetalSurfaceCreateInfoEXT.html>"]
19474 pub struct MetalSurfaceCreateInfoEXT {
19475     pub s_type: StructureType,
19476     pub p_next: *const c_void,
19477     pub flags: MetalSurfaceCreateFlagsEXT,
19478     pub p_layer: *const CAMetalLayer,
19479 }
19480 impl ::std::default::Default for MetalSurfaceCreateInfoEXT {
default() -> MetalSurfaceCreateInfoEXT19481     fn default() -> MetalSurfaceCreateInfoEXT {
19482         MetalSurfaceCreateInfoEXT {
19483             s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
19484             p_next: ::std::ptr::null(),
19485             flags: MetalSurfaceCreateFlagsEXT::default(),
19486             p_layer: ::std::ptr::null(),
19487         }
19488     }
19489 }
19490 impl MetalSurfaceCreateInfoEXT {
builder<'a>() -> MetalSurfaceCreateInfoEXTBuilder<'a>19491     pub fn builder<'a>() -> MetalSurfaceCreateInfoEXTBuilder<'a> {
19492         MetalSurfaceCreateInfoEXTBuilder {
19493             inner: MetalSurfaceCreateInfoEXT::default(),
19494             marker: ::std::marker::PhantomData,
19495         }
19496     }
19497 }
19498 #[repr(transparent)]
19499 pub struct MetalSurfaceCreateInfoEXTBuilder<'a> {
19500     inner: MetalSurfaceCreateInfoEXT,
19501     marker: ::std::marker::PhantomData<&'a ()>,
19502 }
19503 impl<'a> ::std::ops::Deref for MetalSurfaceCreateInfoEXTBuilder<'a> {
19504     type Target = MetalSurfaceCreateInfoEXT;
deref(&self) -> &Self::Target19505     fn deref(&self) -> &Self::Target {
19506         &self.inner
19507     }
19508 }
19509 impl<'a> ::std::ops::DerefMut for MetalSurfaceCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19510     fn deref_mut(&mut self) -> &mut Self::Target {
19511         &mut self.inner
19512     }
19513 }
19514 impl<'a> MetalSurfaceCreateInfoEXTBuilder<'a> {
flags(mut self, flags: MetalSurfaceCreateFlagsEXT) -> Self19515     pub fn flags(mut self, flags: MetalSurfaceCreateFlagsEXT) -> Self {
19516         self.inner.flags = flags;
19517         self
19518     }
layer(mut self, layer: *const CAMetalLayer) -> Self19519     pub fn layer(mut self, layer: *const CAMetalLayer) -> Self {
19520         self.inner.p_layer = layer;
19521         self
19522     }
19523     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19524     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19525     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MetalSurfaceCreateInfoEXT19526     pub fn build(self) -> MetalSurfaceCreateInfoEXT {
19527         self.inner
19528     }
19529 }
19530 #[repr(C)]
19531 #[derive(Copy, Clone, Default, Debug)]
19532 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewportWScalingNV.html>"]
19533 pub struct ViewportWScalingNV {
19534     pub xcoeff: f32,
19535     pub ycoeff: f32,
19536 }
19537 impl ViewportWScalingNV {
builder<'a>() -> ViewportWScalingNVBuilder<'a>19538     pub fn builder<'a>() -> ViewportWScalingNVBuilder<'a> {
19539         ViewportWScalingNVBuilder {
19540             inner: ViewportWScalingNV::default(),
19541             marker: ::std::marker::PhantomData,
19542         }
19543     }
19544 }
19545 #[repr(transparent)]
19546 pub struct ViewportWScalingNVBuilder<'a> {
19547     inner: ViewportWScalingNV,
19548     marker: ::std::marker::PhantomData<&'a ()>,
19549 }
19550 impl<'a> ::std::ops::Deref for ViewportWScalingNVBuilder<'a> {
19551     type Target = ViewportWScalingNV;
deref(&self) -> &Self::Target19552     fn deref(&self) -> &Self::Target {
19553         &self.inner
19554     }
19555 }
19556 impl<'a> ::std::ops::DerefMut for ViewportWScalingNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19557     fn deref_mut(&mut self) -> &mut Self::Target {
19558         &mut self.inner
19559     }
19560 }
19561 impl<'a> ViewportWScalingNVBuilder<'a> {
xcoeff(mut self, xcoeff: f32) -> Self19562     pub fn xcoeff(mut self, xcoeff: f32) -> Self {
19563         self.inner.xcoeff = xcoeff;
19564         self
19565     }
ycoeff(mut self, ycoeff: f32) -> Self19566     pub fn ycoeff(mut self, ycoeff: f32) -> Self {
19567         self.inner.ycoeff = ycoeff;
19568         self
19569     }
19570     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19571     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19572     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ViewportWScalingNV19573     pub fn build(self) -> ViewportWScalingNV {
19574         self.inner
19575     }
19576 }
19577 #[repr(C)]
19578 #[derive(Copy, Clone, Debug)]
19579 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>"]
19580 pub struct PipelineViewportWScalingStateCreateInfoNV {
19581     pub s_type: StructureType,
19582     pub p_next: *const c_void,
19583     pub viewport_w_scaling_enable: Bool32,
19584     pub viewport_count: u32,
19585     pub p_viewport_w_scalings: *const ViewportWScalingNV,
19586 }
19587 impl ::std::default::Default for PipelineViewportWScalingStateCreateInfoNV {
default() -> PipelineViewportWScalingStateCreateInfoNV19588     fn default() -> PipelineViewportWScalingStateCreateInfoNV {
19589         PipelineViewportWScalingStateCreateInfoNV {
19590             s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
19591             p_next: ::std::ptr::null(),
19592             viewport_w_scaling_enable: Bool32::default(),
19593             viewport_count: u32::default(),
19594             p_viewport_w_scalings: ::std::ptr::null(),
19595         }
19596     }
19597 }
19598 impl PipelineViewportWScalingStateCreateInfoNV {
builder<'a>() -> PipelineViewportWScalingStateCreateInfoNVBuilder<'a>19599     pub fn builder<'a>() -> PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
19600         PipelineViewportWScalingStateCreateInfoNVBuilder {
19601             inner: PipelineViewportWScalingStateCreateInfoNV::default(),
19602             marker: ::std::marker::PhantomData,
19603         }
19604     }
19605 }
19606 #[repr(transparent)]
19607 pub struct PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
19608     inner: PipelineViewportWScalingStateCreateInfoNV,
19609     marker: ::std::marker::PhantomData<&'a ()>,
19610 }
19611 unsafe impl ExtendsPipelineViewportStateCreateInfo
19612     for PipelineViewportWScalingStateCreateInfoNVBuilder<'_>
19613 {
19614 }
19615 unsafe impl ExtendsPipelineViewportStateCreateInfo for PipelineViewportWScalingStateCreateInfoNV {}
19616 impl<'a> ::std::ops::Deref for PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
19617     type Target = PipelineViewportWScalingStateCreateInfoNV;
deref(&self) -> &Self::Target19618     fn deref(&self) -> &Self::Target {
19619         &self.inner
19620     }
19621 }
19622 impl<'a> ::std::ops::DerefMut for PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19623     fn deref_mut(&mut self) -> &mut Self::Target {
19624         &mut self.inner
19625     }
19626 }
19627 impl<'a> PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
viewport_w_scaling_enable(mut self, viewport_w_scaling_enable: bool) -> Self19628     pub fn viewport_w_scaling_enable(mut self, viewport_w_scaling_enable: bool) -> Self {
19629         self.inner.viewport_w_scaling_enable = viewport_w_scaling_enable.into();
19630         self
19631     }
viewport_w_scalings(mut self, viewport_w_scalings: &'a [ViewportWScalingNV]) -> Self19632     pub fn viewport_w_scalings(mut self, viewport_w_scalings: &'a [ViewportWScalingNV]) -> Self {
19633         self.inner.viewport_count = viewport_w_scalings.len() as _;
19634         self.inner.p_viewport_w_scalings = viewport_w_scalings.as_ptr();
19635         self
19636     }
19637     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19638     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19639     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportWScalingStateCreateInfoNV19640     pub fn build(self) -> PipelineViewportWScalingStateCreateInfoNV {
19641         self.inner
19642     }
19643 }
19644 #[repr(C)]
19645 #[derive(Copy, Clone, Default, Debug)]
19646 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewportSwizzleNV.html>"]
19647 pub struct ViewportSwizzleNV {
19648     pub x: ViewportCoordinateSwizzleNV,
19649     pub y: ViewportCoordinateSwizzleNV,
19650     pub z: ViewportCoordinateSwizzleNV,
19651     pub w: ViewportCoordinateSwizzleNV,
19652 }
19653 impl ViewportSwizzleNV {
builder<'a>() -> ViewportSwizzleNVBuilder<'a>19654     pub fn builder<'a>() -> ViewportSwizzleNVBuilder<'a> {
19655         ViewportSwizzleNVBuilder {
19656             inner: ViewportSwizzleNV::default(),
19657             marker: ::std::marker::PhantomData,
19658         }
19659     }
19660 }
19661 #[repr(transparent)]
19662 pub struct ViewportSwizzleNVBuilder<'a> {
19663     inner: ViewportSwizzleNV,
19664     marker: ::std::marker::PhantomData<&'a ()>,
19665 }
19666 impl<'a> ::std::ops::Deref for ViewportSwizzleNVBuilder<'a> {
19667     type Target = ViewportSwizzleNV;
deref(&self) -> &Self::Target19668     fn deref(&self) -> &Self::Target {
19669         &self.inner
19670     }
19671 }
19672 impl<'a> ::std::ops::DerefMut for ViewportSwizzleNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19673     fn deref_mut(&mut self) -> &mut Self::Target {
19674         &mut self.inner
19675     }
19676 }
19677 impl<'a> ViewportSwizzleNVBuilder<'a> {
x(mut self, x: ViewportCoordinateSwizzleNV) -> Self19678     pub fn x(mut self, x: ViewportCoordinateSwizzleNV) -> Self {
19679         self.inner.x = x;
19680         self
19681     }
y(mut self, y: ViewportCoordinateSwizzleNV) -> Self19682     pub fn y(mut self, y: ViewportCoordinateSwizzleNV) -> Self {
19683         self.inner.y = y;
19684         self
19685     }
z(mut self, z: ViewportCoordinateSwizzleNV) -> Self19686     pub fn z(mut self, z: ViewportCoordinateSwizzleNV) -> Self {
19687         self.inner.z = z;
19688         self
19689     }
w(mut self, w: ViewportCoordinateSwizzleNV) -> Self19690     pub fn w(mut self, w: ViewportCoordinateSwizzleNV) -> Self {
19691         self.inner.w = w;
19692         self
19693     }
19694     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19695     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19696     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ViewportSwizzleNV19697     pub fn build(self) -> ViewportSwizzleNV {
19698         self.inner
19699     }
19700 }
19701 #[repr(C)]
19702 #[derive(Copy, Clone, Debug)]
19703 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>"]
19704 pub struct PipelineViewportSwizzleStateCreateInfoNV {
19705     pub s_type: StructureType,
19706     pub p_next: *const c_void,
19707     pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
19708     pub viewport_count: u32,
19709     pub p_viewport_swizzles: *const ViewportSwizzleNV,
19710 }
19711 impl ::std::default::Default for PipelineViewportSwizzleStateCreateInfoNV {
default() -> PipelineViewportSwizzleStateCreateInfoNV19712     fn default() -> PipelineViewportSwizzleStateCreateInfoNV {
19713         PipelineViewportSwizzleStateCreateInfoNV {
19714             s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
19715             p_next: ::std::ptr::null(),
19716             flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
19717             viewport_count: u32::default(),
19718             p_viewport_swizzles: ::std::ptr::null(),
19719         }
19720     }
19721 }
19722 impl PipelineViewportSwizzleStateCreateInfoNV {
builder<'a>() -> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a>19723     pub fn builder<'a>() -> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
19724         PipelineViewportSwizzleStateCreateInfoNVBuilder {
19725             inner: PipelineViewportSwizzleStateCreateInfoNV::default(),
19726             marker: ::std::marker::PhantomData,
19727         }
19728     }
19729 }
19730 #[repr(transparent)]
19731 pub struct PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
19732     inner: PipelineViewportSwizzleStateCreateInfoNV,
19733     marker: ::std::marker::PhantomData<&'a ()>,
19734 }
19735 unsafe impl ExtendsPipelineViewportStateCreateInfo
19736     for PipelineViewportSwizzleStateCreateInfoNVBuilder<'_>
19737 {
19738 }
19739 unsafe impl ExtendsPipelineViewportStateCreateInfo for PipelineViewportSwizzleStateCreateInfoNV {}
19740 impl<'a> ::std::ops::Deref for PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
19741     type Target = PipelineViewportSwizzleStateCreateInfoNV;
deref(&self) -> &Self::Target19742     fn deref(&self) -> &Self::Target {
19743         &self.inner
19744     }
19745 }
19746 impl<'a> ::std::ops::DerefMut for PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19747     fn deref_mut(&mut self) -> &mut Self::Target {
19748         &mut self.inner
19749     }
19750 }
19751 impl<'a> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineViewportSwizzleStateCreateFlagsNV) -> Self19752     pub fn flags(mut self, flags: PipelineViewportSwizzleStateCreateFlagsNV) -> Self {
19753         self.inner.flags = flags;
19754         self
19755     }
viewport_swizzles(mut self, viewport_swizzles: &'a [ViewportSwizzleNV]) -> Self19756     pub fn viewport_swizzles(mut self, viewport_swizzles: &'a [ViewportSwizzleNV]) -> Self {
19757         self.inner.viewport_count = viewport_swizzles.len() as _;
19758         self.inner.p_viewport_swizzles = viewport_swizzles.as_ptr();
19759         self
19760     }
19761     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19762     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19763     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportSwizzleStateCreateInfoNV19764     pub fn build(self) -> PipelineViewportSwizzleStateCreateInfoNV {
19765         self.inner
19766     }
19767 }
19768 #[repr(C)]
19769 #[derive(Copy, Clone, Debug)]
19770 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>"]
19771 pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
19772     pub s_type: StructureType,
19773     pub p_next: *mut c_void,
19774     pub max_discard_rectangles: u32,
19775 }
19776 impl ::std::default::Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
default() -> PhysicalDeviceDiscardRectanglePropertiesEXT19777     fn default() -> PhysicalDeviceDiscardRectanglePropertiesEXT {
19778         PhysicalDeviceDiscardRectanglePropertiesEXT {
19779             s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
19780             p_next: ::std::ptr::null_mut(),
19781             max_discard_rectangles: u32::default(),
19782         }
19783     }
19784 }
19785 impl PhysicalDeviceDiscardRectanglePropertiesEXT {
builder<'a>() -> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a>19786     pub fn builder<'a>() -> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
19787         PhysicalDeviceDiscardRectanglePropertiesEXTBuilder {
19788             inner: PhysicalDeviceDiscardRectanglePropertiesEXT::default(),
19789             marker: ::std::marker::PhantomData,
19790         }
19791     }
19792 }
19793 #[repr(transparent)]
19794 pub struct PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
19795     inner: PhysicalDeviceDiscardRectanglePropertiesEXT,
19796     marker: ::std::marker::PhantomData<&'a ()>,
19797 }
19798 unsafe impl ExtendsPhysicalDeviceProperties2
19799     for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'_>
19800 {
19801 }
19802 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDiscardRectanglePropertiesEXT {}
19803 impl<'a> ::std::ops::Deref for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
19804     type Target = PhysicalDeviceDiscardRectanglePropertiesEXT;
deref(&self) -> &Self::Target19805     fn deref(&self) -> &Self::Target {
19806         &self.inner
19807     }
19808 }
19809 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19810     fn deref_mut(&mut self) -> &mut Self::Target {
19811         &mut self.inner
19812     }
19813 }
19814 impl<'a> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
max_discard_rectangles(mut self, max_discard_rectangles: u32) -> Self19815     pub fn max_discard_rectangles(mut self, max_discard_rectangles: u32) -> Self {
19816         self.inner.max_discard_rectangles = max_discard_rectangles;
19817         self
19818     }
19819     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19820     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19821     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDiscardRectanglePropertiesEXT19822     pub fn build(self) -> PhysicalDeviceDiscardRectanglePropertiesEXT {
19823         self.inner
19824     }
19825 }
19826 #[repr(C)]
19827 #[derive(Copy, Clone, Debug)]
19828 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>"]
19829 pub struct PipelineDiscardRectangleStateCreateInfoEXT {
19830     pub s_type: StructureType,
19831     pub p_next: *const c_void,
19832     pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
19833     pub discard_rectangle_mode: DiscardRectangleModeEXT,
19834     pub discard_rectangle_count: u32,
19835     pub p_discard_rectangles: *const Rect2D,
19836 }
19837 impl ::std::default::Default for PipelineDiscardRectangleStateCreateInfoEXT {
default() -> PipelineDiscardRectangleStateCreateInfoEXT19838     fn default() -> PipelineDiscardRectangleStateCreateInfoEXT {
19839         PipelineDiscardRectangleStateCreateInfoEXT {
19840             s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
19841             p_next: ::std::ptr::null(),
19842             flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
19843             discard_rectangle_mode: DiscardRectangleModeEXT::default(),
19844             discard_rectangle_count: u32::default(),
19845             p_discard_rectangles: ::std::ptr::null(),
19846         }
19847     }
19848 }
19849 impl PipelineDiscardRectangleStateCreateInfoEXT {
builder<'a>() -> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a>19850     pub fn builder<'a>() -> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
19851         PipelineDiscardRectangleStateCreateInfoEXTBuilder {
19852             inner: PipelineDiscardRectangleStateCreateInfoEXT::default(),
19853             marker: ::std::marker::PhantomData,
19854         }
19855     }
19856 }
19857 #[repr(transparent)]
19858 pub struct PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
19859     inner: PipelineDiscardRectangleStateCreateInfoEXT,
19860     marker: ::std::marker::PhantomData<&'a ()>,
19861 }
19862 unsafe impl ExtendsGraphicsPipelineCreateInfo
19863     for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'_>
19864 {
19865 }
19866 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineDiscardRectangleStateCreateInfoEXT {}
19867 impl<'a> ::std::ops::Deref for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
19868     type Target = PipelineDiscardRectangleStateCreateInfoEXT;
deref(&self) -> &Self::Target19869     fn deref(&self) -> &Self::Target {
19870         &self.inner
19871     }
19872 }
19873 impl<'a> ::std::ops::DerefMut for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19874     fn deref_mut(&mut self) -> &mut Self::Target {
19875         &mut self.inner
19876     }
19877 }
19878 impl<'a> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineDiscardRectangleStateCreateFlagsEXT) -> Self19879     pub fn flags(mut self, flags: PipelineDiscardRectangleStateCreateFlagsEXT) -> Self {
19880         self.inner.flags = flags;
19881         self
19882     }
discard_rectangle_mode( mut self, discard_rectangle_mode: DiscardRectangleModeEXT, ) -> Self19883     pub fn discard_rectangle_mode(
19884         mut self,
19885         discard_rectangle_mode: DiscardRectangleModeEXT,
19886     ) -> Self {
19887         self.inner.discard_rectangle_mode = discard_rectangle_mode;
19888         self
19889     }
discard_rectangles(mut self, discard_rectangles: &'a [Rect2D]) -> Self19890     pub fn discard_rectangles(mut self, discard_rectangles: &'a [Rect2D]) -> Self {
19891         self.inner.discard_rectangle_count = discard_rectangles.len() as _;
19892         self.inner.p_discard_rectangles = discard_rectangles.as_ptr();
19893         self
19894     }
19895     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19896     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19897     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineDiscardRectangleStateCreateInfoEXT19898     pub fn build(self) -> PipelineDiscardRectangleStateCreateInfoEXT {
19899         self.inner
19900     }
19901 }
19902 #[repr(C)]
19903 #[derive(Copy, Clone, Debug)]
19904 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>"]
19905 pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
19906     pub s_type: StructureType,
19907     pub p_next: *mut c_void,
19908     pub per_view_position_all_components: Bool32,
19909 }
19910 impl ::std::default::Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
default() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX19911     fn default() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
19912         PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
19913             s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
19914             p_next: ::std::ptr::null_mut(),
19915             per_view_position_all_components: Bool32::default(),
19916         }
19917     }
19918 }
19919 impl PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
builder<'a>() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a>19920     pub fn builder<'a>() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
19921         PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder {
19922             inner: PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::default(),
19923             marker: ::std::marker::PhantomData,
19924         }
19925     }
19926 }
19927 #[repr(transparent)]
19928 pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
19929     inner: PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
19930     marker: ::std::marker::PhantomData<&'a ()>,
19931 }
19932 unsafe impl ExtendsPhysicalDeviceProperties2
19933     for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'_>
19934 {
19935 }
19936 unsafe impl ExtendsPhysicalDeviceProperties2
19937     for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
19938 {
19939 }
19940 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
19941     type Target = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
deref(&self) -> &Self::Target19942     fn deref(&self) -> &Self::Target {
19943         &self.inner
19944     }
19945 }
19946 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19947     fn deref_mut(&mut self) -> &mut Self::Target {
19948         &mut self.inner
19949     }
19950 }
19951 impl<'a> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
per_view_position_all_components( mut self, per_view_position_all_components: bool, ) -> Self19952     pub fn per_view_position_all_components(
19953         mut self,
19954         per_view_position_all_components: bool,
19955     ) -> Self {
19956         self.inner.per_view_position_all_components = per_view_position_all_components.into();
19957         self
19958     }
19959     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19960     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19961     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX19962     pub fn build(self) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
19963         self.inner
19964     }
19965 }
19966 #[repr(C)]
19967 #[derive(Copy, Clone, Default, Debug)]
19968 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInputAttachmentAspectReference.html>"]
19969 pub struct InputAttachmentAspectReference {
19970     pub subpass: u32,
19971     pub input_attachment_index: u32,
19972     pub aspect_mask: ImageAspectFlags,
19973 }
19974 impl InputAttachmentAspectReference {
builder<'a>() -> InputAttachmentAspectReferenceBuilder<'a>19975     pub fn builder<'a>() -> InputAttachmentAspectReferenceBuilder<'a> {
19976         InputAttachmentAspectReferenceBuilder {
19977             inner: InputAttachmentAspectReference::default(),
19978             marker: ::std::marker::PhantomData,
19979         }
19980     }
19981 }
19982 #[repr(transparent)]
19983 pub struct InputAttachmentAspectReferenceBuilder<'a> {
19984     inner: InputAttachmentAspectReference,
19985     marker: ::std::marker::PhantomData<&'a ()>,
19986 }
19987 impl<'a> ::std::ops::Deref for InputAttachmentAspectReferenceBuilder<'a> {
19988     type Target = InputAttachmentAspectReference;
deref(&self) -> &Self::Target19989     fn deref(&self) -> &Self::Target {
19990         &self.inner
19991     }
19992 }
19993 impl<'a> ::std::ops::DerefMut for InputAttachmentAspectReferenceBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19994     fn deref_mut(&mut self) -> &mut Self::Target {
19995         &mut self.inner
19996     }
19997 }
19998 impl<'a> InputAttachmentAspectReferenceBuilder<'a> {
subpass(mut self, subpass: u32) -> Self19999     pub fn subpass(mut self, subpass: u32) -> Self {
20000         self.inner.subpass = subpass;
20001         self
20002     }
input_attachment_index(mut self, input_attachment_index: u32) -> Self20003     pub fn input_attachment_index(mut self, input_attachment_index: u32) -> Self {
20004         self.inner.input_attachment_index = input_attachment_index;
20005         self
20006     }
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self20007     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
20008         self.inner.aspect_mask = aspect_mask;
20009         self
20010     }
20011     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20012     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20013     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> InputAttachmentAspectReference20014     pub fn build(self) -> InputAttachmentAspectReference {
20015         self.inner
20016     }
20017 }
20018 #[repr(C)]
20019 #[derive(Copy, Clone, Debug)]
20020 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>"]
20021 pub struct RenderPassInputAttachmentAspectCreateInfo {
20022     pub s_type: StructureType,
20023     pub p_next: *const c_void,
20024     pub aspect_reference_count: u32,
20025     pub p_aspect_references: *const InputAttachmentAspectReference,
20026 }
20027 impl ::std::default::Default for RenderPassInputAttachmentAspectCreateInfo {
default() -> RenderPassInputAttachmentAspectCreateInfo20028     fn default() -> RenderPassInputAttachmentAspectCreateInfo {
20029         RenderPassInputAttachmentAspectCreateInfo {
20030             s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
20031             p_next: ::std::ptr::null(),
20032             aspect_reference_count: u32::default(),
20033             p_aspect_references: ::std::ptr::null(),
20034         }
20035     }
20036 }
20037 impl RenderPassInputAttachmentAspectCreateInfo {
builder<'a>() -> RenderPassInputAttachmentAspectCreateInfoBuilder<'a>20038     pub fn builder<'a>() -> RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20039         RenderPassInputAttachmentAspectCreateInfoBuilder {
20040             inner: RenderPassInputAttachmentAspectCreateInfo::default(),
20041             marker: ::std::marker::PhantomData,
20042         }
20043     }
20044 }
20045 #[repr(transparent)]
20046 pub struct RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20047     inner: RenderPassInputAttachmentAspectCreateInfo,
20048     marker: ::std::marker::PhantomData<&'a ()>,
20049 }
20050 unsafe impl ExtendsRenderPassCreateInfo for RenderPassInputAttachmentAspectCreateInfoBuilder<'_> {}
20051 unsafe impl ExtendsRenderPassCreateInfo for RenderPassInputAttachmentAspectCreateInfo {}
20052 impl<'a> ::std::ops::Deref for RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20053     type Target = RenderPassInputAttachmentAspectCreateInfo;
deref(&self) -> &Self::Target20054     fn deref(&self) -> &Self::Target {
20055         &self.inner
20056     }
20057 }
20058 impl<'a> ::std::ops::DerefMut for RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20059     fn deref_mut(&mut self) -> &mut Self::Target {
20060         &mut self.inner
20061     }
20062 }
20063 impl<'a> RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
aspect_references( mut self, aspect_references: &'a [InputAttachmentAspectReference], ) -> Self20064     pub fn aspect_references(
20065         mut self,
20066         aspect_references: &'a [InputAttachmentAspectReference],
20067     ) -> Self {
20068         self.inner.aspect_reference_count = aspect_references.len() as _;
20069         self.inner.p_aspect_references = aspect_references.as_ptr();
20070         self
20071     }
20072     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20073     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20074     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassInputAttachmentAspectCreateInfo20075     pub fn build(self) -> RenderPassInputAttachmentAspectCreateInfo {
20076         self.inner
20077     }
20078 }
20079 #[repr(C)]
20080 #[derive(Copy, Clone, Debug)]
20081 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>"]
20082 pub struct PhysicalDeviceSurfaceInfo2KHR {
20083     pub s_type: StructureType,
20084     pub p_next: *const c_void,
20085     pub surface: SurfaceKHR,
20086 }
20087 impl ::std::default::Default for PhysicalDeviceSurfaceInfo2KHR {
default() -> PhysicalDeviceSurfaceInfo2KHR20088     fn default() -> PhysicalDeviceSurfaceInfo2KHR {
20089         PhysicalDeviceSurfaceInfo2KHR {
20090             s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
20091             p_next: ::std::ptr::null(),
20092             surface: SurfaceKHR::default(),
20093         }
20094     }
20095 }
20096 impl PhysicalDeviceSurfaceInfo2KHR {
builder<'a>() -> PhysicalDeviceSurfaceInfo2KHRBuilder<'a>20097     pub fn builder<'a>() -> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20098         PhysicalDeviceSurfaceInfo2KHRBuilder {
20099             inner: PhysicalDeviceSurfaceInfo2KHR::default(),
20100             marker: ::std::marker::PhantomData,
20101         }
20102     }
20103 }
20104 #[repr(transparent)]
20105 pub struct PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20106     inner: PhysicalDeviceSurfaceInfo2KHR,
20107     marker: ::std::marker::PhantomData<&'a ()>,
20108 }
20109 pub unsafe trait ExtendsPhysicalDeviceSurfaceInfo2KHR {}
20110 impl<'a> ::std::ops::Deref for PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20111     type Target = PhysicalDeviceSurfaceInfo2KHR;
deref(&self) -> &Self::Target20112     fn deref(&self) -> &Self::Target {
20113         &self.inner
20114     }
20115 }
20116 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20117     fn deref_mut(&mut self) -> &mut Self::Target {
20118         &mut self.inner
20119     }
20120 }
20121 impl<'a> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
surface(mut self, surface: SurfaceKHR) -> Self20122     pub fn surface(mut self, surface: SurfaceKHR) -> Self {
20123         self.inner.surface = surface;
20124         self
20125     }
20126     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
20127     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
20128     #[doc = r" valid extension structs can be pushed into the chain."]
20129     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
20130     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceSurfaceInfo2KHR>(mut self, next: &'a mut T) -> Self20131     pub fn push_next<T: ExtendsPhysicalDeviceSurfaceInfo2KHR>(mut self, next: &'a mut T) -> Self {
20132         unsafe {
20133             let next_ptr = next as *mut T as *mut BaseOutStructure;
20134             let last_next = ptr_chain_iter(next).last().unwrap();
20135             (*last_next).p_next = self.inner.p_next as _;
20136             self.inner.p_next = next_ptr as _;
20137         }
20138         self
20139     }
20140     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20141     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20142     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSurfaceInfo2KHR20143     pub fn build(self) -> PhysicalDeviceSurfaceInfo2KHR {
20144         self.inner
20145     }
20146 }
20147 #[repr(C)]
20148 #[derive(Copy, Clone, Debug)]
20149 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilities2KHR.html>"]
20150 pub struct SurfaceCapabilities2KHR {
20151     pub s_type: StructureType,
20152     pub p_next: *mut c_void,
20153     pub surface_capabilities: SurfaceCapabilitiesKHR,
20154 }
20155 impl ::std::default::Default for SurfaceCapabilities2KHR {
default() -> SurfaceCapabilities2KHR20156     fn default() -> SurfaceCapabilities2KHR {
20157         SurfaceCapabilities2KHR {
20158             s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
20159             p_next: ::std::ptr::null_mut(),
20160             surface_capabilities: SurfaceCapabilitiesKHR::default(),
20161         }
20162     }
20163 }
20164 impl SurfaceCapabilities2KHR {
builder<'a>() -> SurfaceCapabilities2KHRBuilder<'a>20165     pub fn builder<'a>() -> SurfaceCapabilities2KHRBuilder<'a> {
20166         SurfaceCapabilities2KHRBuilder {
20167             inner: SurfaceCapabilities2KHR::default(),
20168             marker: ::std::marker::PhantomData,
20169         }
20170     }
20171 }
20172 #[repr(transparent)]
20173 pub struct SurfaceCapabilities2KHRBuilder<'a> {
20174     inner: SurfaceCapabilities2KHR,
20175     marker: ::std::marker::PhantomData<&'a ()>,
20176 }
20177 pub unsafe trait ExtendsSurfaceCapabilities2KHR {}
20178 impl<'a> ::std::ops::Deref for SurfaceCapabilities2KHRBuilder<'a> {
20179     type Target = SurfaceCapabilities2KHR;
deref(&self) -> &Self::Target20180     fn deref(&self) -> &Self::Target {
20181         &self.inner
20182     }
20183 }
20184 impl<'a> ::std::ops::DerefMut for SurfaceCapabilities2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20185     fn deref_mut(&mut self) -> &mut Self::Target {
20186         &mut self.inner
20187     }
20188 }
20189 impl<'a> SurfaceCapabilities2KHRBuilder<'a> {
surface_capabilities(mut self, surface_capabilities: SurfaceCapabilitiesKHR) -> Self20190     pub fn surface_capabilities(mut self, surface_capabilities: SurfaceCapabilitiesKHR) -> Self {
20191         self.inner.surface_capabilities = surface_capabilities;
20192         self
20193     }
20194     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
20195     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
20196     #[doc = r" valid extension structs can be pushed into the chain."]
20197     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
20198     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSurfaceCapabilities2KHR>(mut self, next: &'a mut T) -> Self20199     pub fn push_next<T: ExtendsSurfaceCapabilities2KHR>(mut self, next: &'a mut T) -> Self {
20200         unsafe {
20201             let next_ptr = next as *mut T as *mut BaseOutStructure;
20202             let last_next = ptr_chain_iter(next).last().unwrap();
20203             (*last_next).p_next = self.inner.p_next as _;
20204             self.inner.p_next = next_ptr as _;
20205         }
20206         self
20207     }
20208     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20209     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20210     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilities2KHR20211     pub fn build(self) -> SurfaceCapabilities2KHR {
20212         self.inner
20213     }
20214 }
20215 #[repr(C)]
20216 #[derive(Copy, Clone, Debug)]
20217 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFormat2KHR.html>"]
20218 pub struct SurfaceFormat2KHR {
20219     pub s_type: StructureType,
20220     pub p_next: *mut c_void,
20221     pub surface_format: SurfaceFormatKHR,
20222 }
20223 impl ::std::default::Default for SurfaceFormat2KHR {
default() -> SurfaceFormat2KHR20224     fn default() -> SurfaceFormat2KHR {
20225         SurfaceFormat2KHR {
20226             s_type: StructureType::SURFACE_FORMAT_2_KHR,
20227             p_next: ::std::ptr::null_mut(),
20228             surface_format: SurfaceFormatKHR::default(),
20229         }
20230     }
20231 }
20232 impl SurfaceFormat2KHR {
builder<'a>() -> SurfaceFormat2KHRBuilder<'a>20233     pub fn builder<'a>() -> SurfaceFormat2KHRBuilder<'a> {
20234         SurfaceFormat2KHRBuilder {
20235             inner: SurfaceFormat2KHR::default(),
20236             marker: ::std::marker::PhantomData,
20237         }
20238     }
20239 }
20240 #[repr(transparent)]
20241 pub struct SurfaceFormat2KHRBuilder<'a> {
20242     inner: SurfaceFormat2KHR,
20243     marker: ::std::marker::PhantomData<&'a ()>,
20244 }
20245 impl<'a> ::std::ops::Deref for SurfaceFormat2KHRBuilder<'a> {
20246     type Target = SurfaceFormat2KHR;
deref(&self) -> &Self::Target20247     fn deref(&self) -> &Self::Target {
20248         &self.inner
20249     }
20250 }
20251 impl<'a> ::std::ops::DerefMut for SurfaceFormat2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20252     fn deref_mut(&mut self) -> &mut Self::Target {
20253         &mut self.inner
20254     }
20255 }
20256 impl<'a> SurfaceFormat2KHRBuilder<'a> {
surface_format(mut self, surface_format: SurfaceFormatKHR) -> Self20257     pub fn surface_format(mut self, surface_format: SurfaceFormatKHR) -> Self {
20258         self.inner.surface_format = surface_format;
20259         self
20260     }
20261     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20262     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20263     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFormat2KHR20264     pub fn build(self) -> SurfaceFormat2KHR {
20265         self.inner
20266     }
20267 }
20268 #[repr(C)]
20269 #[derive(Copy, Clone, Debug)]
20270 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayProperties2KHR.html>"]
20271 pub struct DisplayProperties2KHR {
20272     pub s_type: StructureType,
20273     pub p_next: *mut c_void,
20274     pub display_properties: DisplayPropertiesKHR,
20275 }
20276 impl ::std::default::Default for DisplayProperties2KHR {
default() -> DisplayProperties2KHR20277     fn default() -> DisplayProperties2KHR {
20278         DisplayProperties2KHR {
20279             s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
20280             p_next: ::std::ptr::null_mut(),
20281             display_properties: DisplayPropertiesKHR::default(),
20282         }
20283     }
20284 }
20285 impl DisplayProperties2KHR {
builder<'a>() -> DisplayProperties2KHRBuilder<'a>20286     pub fn builder<'a>() -> DisplayProperties2KHRBuilder<'a> {
20287         DisplayProperties2KHRBuilder {
20288             inner: DisplayProperties2KHR::default(),
20289             marker: ::std::marker::PhantomData,
20290         }
20291     }
20292 }
20293 #[repr(transparent)]
20294 pub struct DisplayProperties2KHRBuilder<'a> {
20295     inner: DisplayProperties2KHR,
20296     marker: ::std::marker::PhantomData<&'a ()>,
20297 }
20298 impl<'a> ::std::ops::Deref for DisplayProperties2KHRBuilder<'a> {
20299     type Target = DisplayProperties2KHR;
deref(&self) -> &Self::Target20300     fn deref(&self) -> &Self::Target {
20301         &self.inner
20302     }
20303 }
20304 impl<'a> ::std::ops::DerefMut for DisplayProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20305     fn deref_mut(&mut self) -> &mut Self::Target {
20306         &mut self.inner
20307     }
20308 }
20309 impl<'a> DisplayProperties2KHRBuilder<'a> {
display_properties(mut self, display_properties: DisplayPropertiesKHR) -> Self20310     pub fn display_properties(mut self, display_properties: DisplayPropertiesKHR) -> Self {
20311         self.inner.display_properties = display_properties;
20312         self
20313     }
20314     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20315     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20316     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayProperties2KHR20317     pub fn build(self) -> DisplayProperties2KHR {
20318         self.inner
20319     }
20320 }
20321 #[repr(C)]
20322 #[derive(Copy, Clone, Debug)]
20323 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneProperties2KHR.html>"]
20324 pub struct DisplayPlaneProperties2KHR {
20325     pub s_type: StructureType,
20326     pub p_next: *mut c_void,
20327     pub display_plane_properties: DisplayPlanePropertiesKHR,
20328 }
20329 impl ::std::default::Default for DisplayPlaneProperties2KHR {
default() -> DisplayPlaneProperties2KHR20330     fn default() -> DisplayPlaneProperties2KHR {
20331         DisplayPlaneProperties2KHR {
20332             s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
20333             p_next: ::std::ptr::null_mut(),
20334             display_plane_properties: DisplayPlanePropertiesKHR::default(),
20335         }
20336     }
20337 }
20338 impl DisplayPlaneProperties2KHR {
builder<'a>() -> DisplayPlaneProperties2KHRBuilder<'a>20339     pub fn builder<'a>() -> DisplayPlaneProperties2KHRBuilder<'a> {
20340         DisplayPlaneProperties2KHRBuilder {
20341             inner: DisplayPlaneProperties2KHR::default(),
20342             marker: ::std::marker::PhantomData,
20343         }
20344     }
20345 }
20346 #[repr(transparent)]
20347 pub struct DisplayPlaneProperties2KHRBuilder<'a> {
20348     inner: DisplayPlaneProperties2KHR,
20349     marker: ::std::marker::PhantomData<&'a ()>,
20350 }
20351 impl<'a> ::std::ops::Deref for DisplayPlaneProperties2KHRBuilder<'a> {
20352     type Target = DisplayPlaneProperties2KHR;
deref(&self) -> &Self::Target20353     fn deref(&self) -> &Self::Target {
20354         &self.inner
20355     }
20356 }
20357 impl<'a> ::std::ops::DerefMut for DisplayPlaneProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20358     fn deref_mut(&mut self) -> &mut Self::Target {
20359         &mut self.inner
20360     }
20361 }
20362 impl<'a> DisplayPlaneProperties2KHRBuilder<'a> {
display_plane_properties( mut self, display_plane_properties: DisplayPlanePropertiesKHR, ) -> Self20363     pub fn display_plane_properties(
20364         mut self,
20365         display_plane_properties: DisplayPlanePropertiesKHR,
20366     ) -> Self {
20367         self.inner.display_plane_properties = display_plane_properties;
20368         self
20369     }
20370     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20371     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20372     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneProperties2KHR20373     pub fn build(self) -> DisplayPlaneProperties2KHR {
20374         self.inner
20375     }
20376 }
20377 #[repr(C)]
20378 #[derive(Copy, Clone, Debug)]
20379 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeProperties2KHR.html>"]
20380 pub struct DisplayModeProperties2KHR {
20381     pub s_type: StructureType,
20382     pub p_next: *mut c_void,
20383     pub display_mode_properties: DisplayModePropertiesKHR,
20384 }
20385 impl ::std::default::Default for DisplayModeProperties2KHR {
default() -> DisplayModeProperties2KHR20386     fn default() -> DisplayModeProperties2KHR {
20387         DisplayModeProperties2KHR {
20388             s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
20389             p_next: ::std::ptr::null_mut(),
20390             display_mode_properties: DisplayModePropertiesKHR::default(),
20391         }
20392     }
20393 }
20394 impl DisplayModeProperties2KHR {
builder<'a>() -> DisplayModeProperties2KHRBuilder<'a>20395     pub fn builder<'a>() -> DisplayModeProperties2KHRBuilder<'a> {
20396         DisplayModeProperties2KHRBuilder {
20397             inner: DisplayModeProperties2KHR::default(),
20398             marker: ::std::marker::PhantomData,
20399         }
20400     }
20401 }
20402 #[repr(transparent)]
20403 pub struct DisplayModeProperties2KHRBuilder<'a> {
20404     inner: DisplayModeProperties2KHR,
20405     marker: ::std::marker::PhantomData<&'a ()>,
20406 }
20407 impl<'a> ::std::ops::Deref for DisplayModeProperties2KHRBuilder<'a> {
20408     type Target = DisplayModeProperties2KHR;
deref(&self) -> &Self::Target20409     fn deref(&self) -> &Self::Target {
20410         &self.inner
20411     }
20412 }
20413 impl<'a> ::std::ops::DerefMut for DisplayModeProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20414     fn deref_mut(&mut self) -> &mut Self::Target {
20415         &mut self.inner
20416     }
20417 }
20418 impl<'a> DisplayModeProperties2KHRBuilder<'a> {
display_mode_properties( mut self, display_mode_properties: DisplayModePropertiesKHR, ) -> Self20419     pub fn display_mode_properties(
20420         mut self,
20421         display_mode_properties: DisplayModePropertiesKHR,
20422     ) -> Self {
20423         self.inner.display_mode_properties = display_mode_properties;
20424         self
20425     }
20426     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20427     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20428     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModeProperties2KHR20429     pub fn build(self) -> DisplayModeProperties2KHR {
20430         self.inner
20431     }
20432 }
20433 #[repr(C)]
20434 #[derive(Copy, Clone, Debug)]
20435 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneInfo2KHR.html>"]
20436 pub struct DisplayPlaneInfo2KHR {
20437     pub s_type: StructureType,
20438     pub p_next: *const c_void,
20439     pub mode: DisplayModeKHR,
20440     pub plane_index: u32,
20441 }
20442 impl ::std::default::Default for DisplayPlaneInfo2KHR {
default() -> DisplayPlaneInfo2KHR20443     fn default() -> DisplayPlaneInfo2KHR {
20444         DisplayPlaneInfo2KHR {
20445             s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
20446             p_next: ::std::ptr::null(),
20447             mode: DisplayModeKHR::default(),
20448             plane_index: u32::default(),
20449         }
20450     }
20451 }
20452 impl DisplayPlaneInfo2KHR {
builder<'a>() -> DisplayPlaneInfo2KHRBuilder<'a>20453     pub fn builder<'a>() -> DisplayPlaneInfo2KHRBuilder<'a> {
20454         DisplayPlaneInfo2KHRBuilder {
20455             inner: DisplayPlaneInfo2KHR::default(),
20456             marker: ::std::marker::PhantomData,
20457         }
20458     }
20459 }
20460 #[repr(transparent)]
20461 pub struct DisplayPlaneInfo2KHRBuilder<'a> {
20462     inner: DisplayPlaneInfo2KHR,
20463     marker: ::std::marker::PhantomData<&'a ()>,
20464 }
20465 impl<'a> ::std::ops::Deref for DisplayPlaneInfo2KHRBuilder<'a> {
20466     type Target = DisplayPlaneInfo2KHR;
deref(&self) -> &Self::Target20467     fn deref(&self) -> &Self::Target {
20468         &self.inner
20469     }
20470 }
20471 impl<'a> ::std::ops::DerefMut for DisplayPlaneInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20472     fn deref_mut(&mut self) -> &mut Self::Target {
20473         &mut self.inner
20474     }
20475 }
20476 impl<'a> DisplayPlaneInfo2KHRBuilder<'a> {
mode(mut self, mode: DisplayModeKHR) -> Self20477     pub fn mode(mut self, mode: DisplayModeKHR) -> Self {
20478         self.inner.mode = mode;
20479         self
20480     }
plane_index(mut self, plane_index: u32) -> Self20481     pub fn plane_index(mut self, plane_index: u32) -> Self {
20482         self.inner.plane_index = plane_index;
20483         self
20484     }
20485     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20486     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20487     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneInfo2KHR20488     pub fn build(self) -> DisplayPlaneInfo2KHR {
20489         self.inner
20490     }
20491 }
20492 #[repr(C)]
20493 #[derive(Copy, Clone, Debug)]
20494 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneCapabilities2KHR.html>"]
20495 pub struct DisplayPlaneCapabilities2KHR {
20496     pub s_type: StructureType,
20497     pub p_next: *mut c_void,
20498     pub capabilities: DisplayPlaneCapabilitiesKHR,
20499 }
20500 impl ::std::default::Default for DisplayPlaneCapabilities2KHR {
default() -> DisplayPlaneCapabilities2KHR20501     fn default() -> DisplayPlaneCapabilities2KHR {
20502         DisplayPlaneCapabilities2KHR {
20503             s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
20504             p_next: ::std::ptr::null_mut(),
20505             capabilities: DisplayPlaneCapabilitiesKHR::default(),
20506         }
20507     }
20508 }
20509 impl DisplayPlaneCapabilities2KHR {
builder<'a>() -> DisplayPlaneCapabilities2KHRBuilder<'a>20510     pub fn builder<'a>() -> DisplayPlaneCapabilities2KHRBuilder<'a> {
20511         DisplayPlaneCapabilities2KHRBuilder {
20512             inner: DisplayPlaneCapabilities2KHR::default(),
20513             marker: ::std::marker::PhantomData,
20514         }
20515     }
20516 }
20517 #[repr(transparent)]
20518 pub struct DisplayPlaneCapabilities2KHRBuilder<'a> {
20519     inner: DisplayPlaneCapabilities2KHR,
20520     marker: ::std::marker::PhantomData<&'a ()>,
20521 }
20522 impl<'a> ::std::ops::Deref for DisplayPlaneCapabilities2KHRBuilder<'a> {
20523     type Target = DisplayPlaneCapabilities2KHR;
deref(&self) -> &Self::Target20524     fn deref(&self) -> &Self::Target {
20525         &self.inner
20526     }
20527 }
20528 impl<'a> ::std::ops::DerefMut for DisplayPlaneCapabilities2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20529     fn deref_mut(&mut self) -> &mut Self::Target {
20530         &mut self.inner
20531     }
20532 }
20533 impl<'a> DisplayPlaneCapabilities2KHRBuilder<'a> {
capabilities(mut self, capabilities: DisplayPlaneCapabilitiesKHR) -> Self20534     pub fn capabilities(mut self, capabilities: DisplayPlaneCapabilitiesKHR) -> Self {
20535         self.inner.capabilities = capabilities;
20536         self
20537     }
20538     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20539     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20540     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneCapabilities2KHR20541     pub fn build(self) -> DisplayPlaneCapabilities2KHR {
20542         self.inner
20543     }
20544 }
20545 #[repr(C)]
20546 #[derive(Copy, Clone, Debug)]
20547 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>"]
20548 pub struct SharedPresentSurfaceCapabilitiesKHR {
20549     pub s_type: StructureType,
20550     pub p_next: *mut c_void,
20551     pub shared_present_supported_usage_flags: ImageUsageFlags,
20552 }
20553 impl ::std::default::Default for SharedPresentSurfaceCapabilitiesKHR {
default() -> SharedPresentSurfaceCapabilitiesKHR20554     fn default() -> SharedPresentSurfaceCapabilitiesKHR {
20555         SharedPresentSurfaceCapabilitiesKHR {
20556             s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
20557             p_next: ::std::ptr::null_mut(),
20558             shared_present_supported_usage_flags: ImageUsageFlags::default(),
20559         }
20560     }
20561 }
20562 impl SharedPresentSurfaceCapabilitiesKHR {
builder<'a>() -> SharedPresentSurfaceCapabilitiesKHRBuilder<'a>20563     pub fn builder<'a>() -> SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
20564         SharedPresentSurfaceCapabilitiesKHRBuilder {
20565             inner: SharedPresentSurfaceCapabilitiesKHR::default(),
20566             marker: ::std::marker::PhantomData,
20567         }
20568     }
20569 }
20570 #[repr(transparent)]
20571 pub struct SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
20572     inner: SharedPresentSurfaceCapabilitiesKHR,
20573     marker: ::std::marker::PhantomData<&'a ()>,
20574 }
20575 unsafe impl ExtendsSurfaceCapabilities2KHR for SharedPresentSurfaceCapabilitiesKHRBuilder<'_> {}
20576 unsafe impl ExtendsSurfaceCapabilities2KHR for SharedPresentSurfaceCapabilitiesKHR {}
20577 impl<'a> ::std::ops::Deref for SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
20578     type Target = SharedPresentSurfaceCapabilitiesKHR;
deref(&self) -> &Self::Target20579     fn deref(&self) -> &Self::Target {
20580         &self.inner
20581     }
20582 }
20583 impl<'a> ::std::ops::DerefMut for SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20584     fn deref_mut(&mut self) -> &mut Self::Target {
20585         &mut self.inner
20586     }
20587 }
20588 impl<'a> SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
shared_present_supported_usage_flags( mut self, shared_present_supported_usage_flags: ImageUsageFlags, ) -> Self20589     pub fn shared_present_supported_usage_flags(
20590         mut self,
20591         shared_present_supported_usage_flags: ImageUsageFlags,
20592     ) -> Self {
20593         self.inner.shared_present_supported_usage_flags = shared_present_supported_usage_flags;
20594         self
20595     }
20596     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20597     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20598     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SharedPresentSurfaceCapabilitiesKHR20599     pub fn build(self) -> SharedPresentSurfaceCapabilitiesKHR {
20600         self.inner
20601     }
20602 }
20603 #[repr(C)]
20604 #[derive(Copy, Clone, Debug)]
20605 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice16BitStorageFeatures.html>"]
20606 pub struct PhysicalDevice16BitStorageFeatures {
20607     pub s_type: StructureType,
20608     pub p_next: *mut c_void,
20609     pub storage_buffer16_bit_access: Bool32,
20610     pub uniform_and_storage_buffer16_bit_access: Bool32,
20611     pub storage_push_constant16: Bool32,
20612     pub storage_input_output16: Bool32,
20613 }
20614 impl ::std::default::Default for PhysicalDevice16BitStorageFeatures {
default() -> PhysicalDevice16BitStorageFeatures20615     fn default() -> PhysicalDevice16BitStorageFeatures {
20616         PhysicalDevice16BitStorageFeatures {
20617             s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
20618             p_next: ::std::ptr::null_mut(),
20619             storage_buffer16_bit_access: Bool32::default(),
20620             uniform_and_storage_buffer16_bit_access: Bool32::default(),
20621             storage_push_constant16: Bool32::default(),
20622             storage_input_output16: Bool32::default(),
20623         }
20624     }
20625 }
20626 impl PhysicalDevice16BitStorageFeatures {
builder<'a>() -> PhysicalDevice16BitStorageFeaturesBuilder<'a>20627     pub fn builder<'a>() -> PhysicalDevice16BitStorageFeaturesBuilder<'a> {
20628         PhysicalDevice16BitStorageFeaturesBuilder {
20629             inner: PhysicalDevice16BitStorageFeatures::default(),
20630             marker: ::std::marker::PhantomData,
20631         }
20632     }
20633 }
20634 #[repr(transparent)]
20635 pub struct PhysicalDevice16BitStorageFeaturesBuilder<'a> {
20636     inner: PhysicalDevice16BitStorageFeatures,
20637     marker: ::std::marker::PhantomData<&'a ()>,
20638 }
20639 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice16BitStorageFeaturesBuilder<'_> {}
20640 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice16BitStorageFeatures {}
20641 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice16BitStorageFeaturesBuilder<'_> {}
20642 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice16BitStorageFeatures {}
20643 impl<'a> ::std::ops::Deref for PhysicalDevice16BitStorageFeaturesBuilder<'a> {
20644     type Target = PhysicalDevice16BitStorageFeatures;
deref(&self) -> &Self::Target20645     fn deref(&self) -> &Self::Target {
20646         &self.inner
20647     }
20648 }
20649 impl<'a> ::std::ops::DerefMut for PhysicalDevice16BitStorageFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20650     fn deref_mut(&mut self) -> &mut Self::Target {
20651         &mut self.inner
20652     }
20653 }
20654 impl<'a> PhysicalDevice16BitStorageFeaturesBuilder<'a> {
storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self20655     pub fn storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self {
20656         self.inner.storage_buffer16_bit_access = storage_buffer16_bit_access.into();
20657         self
20658     }
uniform_and_storage_buffer16_bit_access( mut self, uniform_and_storage_buffer16_bit_access: bool, ) -> Self20659     pub fn uniform_and_storage_buffer16_bit_access(
20660         mut self,
20661         uniform_and_storage_buffer16_bit_access: bool,
20662     ) -> Self {
20663         self.inner.uniform_and_storage_buffer16_bit_access =
20664             uniform_and_storage_buffer16_bit_access.into();
20665         self
20666     }
storage_push_constant16(mut self, storage_push_constant16: bool) -> Self20667     pub fn storage_push_constant16(mut self, storage_push_constant16: bool) -> Self {
20668         self.inner.storage_push_constant16 = storage_push_constant16.into();
20669         self
20670     }
storage_input_output16(mut self, storage_input_output16: bool) -> Self20671     pub fn storage_input_output16(mut self, storage_input_output16: bool) -> Self {
20672         self.inner.storage_input_output16 = storage_input_output16.into();
20673         self
20674     }
20675     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20676     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20677     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevice16BitStorageFeatures20678     pub fn build(self) -> PhysicalDevice16BitStorageFeatures {
20679         self.inner
20680     }
20681 }
20682 #[repr(C)]
20683 #[derive(Copy, Clone, Debug)]
20684 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html>"]
20685 pub struct PhysicalDeviceSubgroupProperties {
20686     pub s_type: StructureType,
20687     pub p_next: *mut c_void,
20688     pub subgroup_size: u32,
20689     pub supported_stages: ShaderStageFlags,
20690     pub supported_operations: SubgroupFeatureFlags,
20691     pub quad_operations_in_all_stages: Bool32,
20692 }
20693 impl ::std::default::Default for PhysicalDeviceSubgroupProperties {
default() -> PhysicalDeviceSubgroupProperties20694     fn default() -> PhysicalDeviceSubgroupProperties {
20695         PhysicalDeviceSubgroupProperties {
20696             s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
20697             p_next: ::std::ptr::null_mut(),
20698             subgroup_size: u32::default(),
20699             supported_stages: ShaderStageFlags::default(),
20700             supported_operations: SubgroupFeatureFlags::default(),
20701             quad_operations_in_all_stages: Bool32::default(),
20702         }
20703     }
20704 }
20705 impl PhysicalDeviceSubgroupProperties {
builder<'a>() -> PhysicalDeviceSubgroupPropertiesBuilder<'a>20706     pub fn builder<'a>() -> PhysicalDeviceSubgroupPropertiesBuilder<'a> {
20707         PhysicalDeviceSubgroupPropertiesBuilder {
20708             inner: PhysicalDeviceSubgroupProperties::default(),
20709             marker: ::std::marker::PhantomData,
20710         }
20711     }
20712 }
20713 #[repr(transparent)]
20714 pub struct PhysicalDeviceSubgroupPropertiesBuilder<'a> {
20715     inner: PhysicalDeviceSubgroupProperties,
20716     marker: ::std::marker::PhantomData<&'a ()>,
20717 }
20718 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupPropertiesBuilder<'_> {}
20719 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupProperties {}
20720 impl<'a> ::std::ops::Deref for PhysicalDeviceSubgroupPropertiesBuilder<'a> {
20721     type Target = PhysicalDeviceSubgroupProperties;
deref(&self) -> &Self::Target20722     fn deref(&self) -> &Self::Target {
20723         &self.inner
20724     }
20725 }
20726 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubgroupPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20727     fn deref_mut(&mut self) -> &mut Self::Target {
20728         &mut self.inner
20729     }
20730 }
20731 impl<'a> PhysicalDeviceSubgroupPropertiesBuilder<'a> {
subgroup_size(mut self, subgroup_size: u32) -> Self20732     pub fn subgroup_size(mut self, subgroup_size: u32) -> Self {
20733         self.inner.subgroup_size = subgroup_size;
20734         self
20735     }
supported_stages(mut self, supported_stages: ShaderStageFlags) -> Self20736     pub fn supported_stages(mut self, supported_stages: ShaderStageFlags) -> Self {
20737         self.inner.supported_stages = supported_stages;
20738         self
20739     }
supported_operations(mut self, supported_operations: SubgroupFeatureFlags) -> Self20740     pub fn supported_operations(mut self, supported_operations: SubgroupFeatureFlags) -> Self {
20741         self.inner.supported_operations = supported_operations;
20742         self
20743     }
quad_operations_in_all_stages(mut self, quad_operations_in_all_stages: bool) -> Self20744     pub fn quad_operations_in_all_stages(mut self, quad_operations_in_all_stages: bool) -> Self {
20745         self.inner.quad_operations_in_all_stages = quad_operations_in_all_stages.into();
20746         self
20747     }
20748     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20749     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20750     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubgroupProperties20751     pub fn build(self) -> PhysicalDeviceSubgroupProperties {
20752         self.inner
20753     }
20754 }
20755 #[repr(C)]
20756 #[derive(Copy, Clone, Debug)]
20757 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>"]
20758 pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
20759     pub s_type: StructureType,
20760     pub p_next: *mut c_void,
20761     pub shader_subgroup_extended_types: Bool32,
20762 }
20763 impl ::std::default::Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
default() -> PhysicalDeviceShaderSubgroupExtendedTypesFeatures20764     fn default() -> PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
20765         PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
20766             s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
20767             p_next: ::std::ptr::null_mut(),
20768             shader_subgroup_extended_types: Bool32::default(),
20769         }
20770     }
20771 }
20772 impl PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
builder<'a>() -> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a>20773     pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
20774         PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder {
20775             inner: PhysicalDeviceShaderSubgroupExtendedTypesFeatures::default(),
20776             marker: ::std::marker::PhantomData,
20777         }
20778     }
20779 }
20780 #[repr(transparent)]
20781 pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
20782     inner: PhysicalDeviceShaderSubgroupExtendedTypesFeatures,
20783     marker: ::std::marker::PhantomData<&'a ()>,
20784 }
20785 unsafe impl ExtendsPhysicalDeviceFeatures2
20786     for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'_>
20787 {
20788 }
20789 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
20790 unsafe impl ExtendsDeviceCreateInfo
20791     for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'_>
20792 {
20793 }
20794 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
20795 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
20796     type Target = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
deref(&self) -> &Self::Target20797     fn deref(&self) -> &Self::Target {
20798         &self.inner
20799     }
20800 }
20801 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20802     fn deref_mut(&mut self) -> &mut Self::Target {
20803         &mut self.inner
20804     }
20805 }
20806 impl<'a> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self20807     pub fn shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self {
20808         self.inner.shader_subgroup_extended_types = shader_subgroup_extended_types.into();
20809         self
20810     }
20811     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20812     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20813     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSubgroupExtendedTypesFeatures20814     pub fn build(self) -> PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
20815         self.inner
20816     }
20817 }
20818 #[repr(C)]
20819 #[derive(Copy, Clone, Debug)]
20820 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryRequirementsInfo2.html>"]
20821 pub struct BufferMemoryRequirementsInfo2 {
20822     pub s_type: StructureType,
20823     pub p_next: *const c_void,
20824     pub buffer: Buffer,
20825 }
20826 impl ::std::default::Default for BufferMemoryRequirementsInfo2 {
default() -> BufferMemoryRequirementsInfo220827     fn default() -> BufferMemoryRequirementsInfo2 {
20828         BufferMemoryRequirementsInfo2 {
20829             s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
20830             p_next: ::std::ptr::null(),
20831             buffer: Buffer::default(),
20832         }
20833     }
20834 }
20835 impl BufferMemoryRequirementsInfo2 {
builder<'a>() -> BufferMemoryRequirementsInfo2Builder<'a>20836     pub fn builder<'a>() -> BufferMemoryRequirementsInfo2Builder<'a> {
20837         BufferMemoryRequirementsInfo2Builder {
20838             inner: BufferMemoryRequirementsInfo2::default(),
20839             marker: ::std::marker::PhantomData,
20840         }
20841     }
20842 }
20843 #[repr(transparent)]
20844 pub struct BufferMemoryRequirementsInfo2Builder<'a> {
20845     inner: BufferMemoryRequirementsInfo2,
20846     marker: ::std::marker::PhantomData<&'a ()>,
20847 }
20848 impl<'a> ::std::ops::Deref for BufferMemoryRequirementsInfo2Builder<'a> {
20849     type Target = BufferMemoryRequirementsInfo2;
deref(&self) -> &Self::Target20850     fn deref(&self) -> &Self::Target {
20851         &self.inner
20852     }
20853 }
20854 impl<'a> ::std::ops::DerefMut for BufferMemoryRequirementsInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target20855     fn deref_mut(&mut self) -> &mut Self::Target {
20856         &mut self.inner
20857     }
20858 }
20859 impl<'a> BufferMemoryRequirementsInfo2Builder<'a> {
buffer(mut self, buffer: Buffer) -> Self20860     pub fn buffer(mut self, buffer: Buffer) -> Self {
20861         self.inner.buffer = buffer;
20862         self
20863     }
20864     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20865     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20866     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferMemoryRequirementsInfo220867     pub fn build(self) -> BufferMemoryRequirementsInfo2 {
20868         self.inner
20869     }
20870 }
20871 #[repr(C)]
20872 #[derive(Copy, Clone, Debug)]
20873 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryRequirementsInfo2.html>"]
20874 pub struct ImageMemoryRequirementsInfo2 {
20875     pub s_type: StructureType,
20876     pub p_next: *const c_void,
20877     pub image: Image,
20878 }
20879 impl ::std::default::Default for ImageMemoryRequirementsInfo2 {
default() -> ImageMemoryRequirementsInfo220880     fn default() -> ImageMemoryRequirementsInfo2 {
20881         ImageMemoryRequirementsInfo2 {
20882             s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
20883             p_next: ::std::ptr::null(),
20884             image: Image::default(),
20885         }
20886     }
20887 }
20888 impl ImageMemoryRequirementsInfo2 {
builder<'a>() -> ImageMemoryRequirementsInfo2Builder<'a>20889     pub fn builder<'a>() -> ImageMemoryRequirementsInfo2Builder<'a> {
20890         ImageMemoryRequirementsInfo2Builder {
20891             inner: ImageMemoryRequirementsInfo2::default(),
20892             marker: ::std::marker::PhantomData,
20893         }
20894     }
20895 }
20896 #[repr(transparent)]
20897 pub struct ImageMemoryRequirementsInfo2Builder<'a> {
20898     inner: ImageMemoryRequirementsInfo2,
20899     marker: ::std::marker::PhantomData<&'a ()>,
20900 }
20901 pub unsafe trait ExtendsImageMemoryRequirementsInfo2 {}
20902 impl<'a> ::std::ops::Deref for ImageMemoryRequirementsInfo2Builder<'a> {
20903     type Target = ImageMemoryRequirementsInfo2;
deref(&self) -> &Self::Target20904     fn deref(&self) -> &Self::Target {
20905         &self.inner
20906     }
20907 }
20908 impl<'a> ::std::ops::DerefMut for ImageMemoryRequirementsInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target20909     fn deref_mut(&mut self) -> &mut Self::Target {
20910         &mut self.inner
20911     }
20912 }
20913 impl<'a> ImageMemoryRequirementsInfo2Builder<'a> {
image(mut self, image: Image) -> Self20914     pub fn image(mut self, image: Image) -> Self {
20915         self.inner.image = image;
20916         self
20917     }
20918     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
20919     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
20920     #[doc = r" valid extension structs can be pushed into the chain."]
20921     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
20922     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageMemoryRequirementsInfo2>(mut self, next: &'a mut T) -> Self20923     pub fn push_next<T: ExtendsImageMemoryRequirementsInfo2>(mut self, next: &'a mut T) -> Self {
20924         unsafe {
20925             let next_ptr = next as *mut T as *mut BaseOutStructure;
20926             let last_next = ptr_chain_iter(next).last().unwrap();
20927             (*last_next).p_next = self.inner.p_next as _;
20928             self.inner.p_next = next_ptr as _;
20929         }
20930         self
20931     }
20932     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20933     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20934     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageMemoryRequirementsInfo220935     pub fn build(self) -> ImageMemoryRequirementsInfo2 {
20936         self.inner
20937     }
20938 }
20939 #[repr(C)]
20940 #[derive(Copy, Clone, Debug)]
20941 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSparseMemoryRequirementsInfo2.html>"]
20942 pub struct ImageSparseMemoryRequirementsInfo2 {
20943     pub s_type: StructureType,
20944     pub p_next: *const c_void,
20945     pub image: Image,
20946 }
20947 impl ::std::default::Default for ImageSparseMemoryRequirementsInfo2 {
default() -> ImageSparseMemoryRequirementsInfo220948     fn default() -> ImageSparseMemoryRequirementsInfo2 {
20949         ImageSparseMemoryRequirementsInfo2 {
20950             s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
20951             p_next: ::std::ptr::null(),
20952             image: Image::default(),
20953         }
20954     }
20955 }
20956 impl ImageSparseMemoryRequirementsInfo2 {
builder<'a>() -> ImageSparseMemoryRequirementsInfo2Builder<'a>20957     pub fn builder<'a>() -> ImageSparseMemoryRequirementsInfo2Builder<'a> {
20958         ImageSparseMemoryRequirementsInfo2Builder {
20959             inner: ImageSparseMemoryRequirementsInfo2::default(),
20960             marker: ::std::marker::PhantomData,
20961         }
20962     }
20963 }
20964 #[repr(transparent)]
20965 pub struct ImageSparseMemoryRequirementsInfo2Builder<'a> {
20966     inner: ImageSparseMemoryRequirementsInfo2,
20967     marker: ::std::marker::PhantomData<&'a ()>,
20968 }
20969 impl<'a> ::std::ops::Deref for ImageSparseMemoryRequirementsInfo2Builder<'a> {
20970     type Target = ImageSparseMemoryRequirementsInfo2;
deref(&self) -> &Self::Target20971     fn deref(&self) -> &Self::Target {
20972         &self.inner
20973     }
20974 }
20975 impl<'a> ::std::ops::DerefMut for ImageSparseMemoryRequirementsInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target20976     fn deref_mut(&mut self) -> &mut Self::Target {
20977         &mut self.inner
20978     }
20979 }
20980 impl<'a> ImageSparseMemoryRequirementsInfo2Builder<'a> {
image(mut self, image: Image) -> Self20981     pub fn image(mut self, image: Image) -> Self {
20982         self.inner.image = image;
20983         self
20984     }
20985     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20986     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20987     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSparseMemoryRequirementsInfo220988     pub fn build(self) -> ImageSparseMemoryRequirementsInfo2 {
20989         self.inner
20990     }
20991 }
20992 #[repr(C)]
20993 #[derive(Copy, Clone, Debug)]
20994 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryRequirements2.html>"]
20995 pub struct MemoryRequirements2 {
20996     pub s_type: StructureType,
20997     pub p_next: *mut c_void,
20998     pub memory_requirements: MemoryRequirements,
20999 }
21000 impl ::std::default::Default for MemoryRequirements2 {
default() -> MemoryRequirements221001     fn default() -> MemoryRequirements2 {
21002         MemoryRequirements2 {
21003             s_type: StructureType::MEMORY_REQUIREMENTS_2,
21004             p_next: ::std::ptr::null_mut(),
21005             memory_requirements: MemoryRequirements::default(),
21006         }
21007     }
21008 }
21009 impl MemoryRequirements2 {
builder<'a>() -> MemoryRequirements2Builder<'a>21010     pub fn builder<'a>() -> MemoryRequirements2Builder<'a> {
21011         MemoryRequirements2Builder {
21012             inner: MemoryRequirements2::default(),
21013             marker: ::std::marker::PhantomData,
21014         }
21015     }
21016 }
21017 #[repr(transparent)]
21018 pub struct MemoryRequirements2Builder<'a> {
21019     inner: MemoryRequirements2,
21020     marker: ::std::marker::PhantomData<&'a ()>,
21021 }
21022 pub unsafe trait ExtendsMemoryRequirements2 {}
21023 impl<'a> ::std::ops::Deref for MemoryRequirements2Builder<'a> {
21024     type Target = MemoryRequirements2;
deref(&self) -> &Self::Target21025     fn deref(&self) -> &Self::Target {
21026         &self.inner
21027     }
21028 }
21029 impl<'a> ::std::ops::DerefMut for MemoryRequirements2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target21030     fn deref_mut(&mut self) -> &mut Self::Target {
21031         &mut self.inner
21032     }
21033 }
21034 impl<'a> MemoryRequirements2Builder<'a> {
memory_requirements(mut self, memory_requirements: MemoryRequirements) -> Self21035     pub fn memory_requirements(mut self, memory_requirements: MemoryRequirements) -> Self {
21036         self.inner.memory_requirements = memory_requirements;
21037         self
21038     }
21039     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
21040     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
21041     #[doc = r" valid extension structs can be pushed into the chain."]
21042     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
21043     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsMemoryRequirements2>(mut self, next: &'a mut T) -> Self21044     pub fn push_next<T: ExtendsMemoryRequirements2>(mut self, next: &'a mut T) -> Self {
21045         unsafe {
21046             let next_ptr = next as *mut T as *mut BaseOutStructure;
21047             let last_next = ptr_chain_iter(next).last().unwrap();
21048             (*last_next).p_next = self.inner.p_next as _;
21049             self.inner.p_next = next_ptr as _;
21050         }
21051         self
21052     }
21053     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21054     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21055     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryRequirements221056     pub fn build(self) -> MemoryRequirements2 {
21057         self.inner
21058     }
21059 }
21060 #[repr(C)]
21061 #[derive(Copy, Clone, Debug)]
21062 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryRequirements2.html>"]
21063 pub struct SparseImageMemoryRequirements2 {
21064     pub s_type: StructureType,
21065     pub p_next: *mut c_void,
21066     pub memory_requirements: SparseImageMemoryRequirements,
21067 }
21068 impl ::std::default::Default for SparseImageMemoryRequirements2 {
default() -> SparseImageMemoryRequirements221069     fn default() -> SparseImageMemoryRequirements2 {
21070         SparseImageMemoryRequirements2 {
21071             s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
21072             p_next: ::std::ptr::null_mut(),
21073             memory_requirements: SparseImageMemoryRequirements::default(),
21074         }
21075     }
21076 }
21077 impl SparseImageMemoryRequirements2 {
builder<'a>() -> SparseImageMemoryRequirements2Builder<'a>21078     pub fn builder<'a>() -> SparseImageMemoryRequirements2Builder<'a> {
21079         SparseImageMemoryRequirements2Builder {
21080             inner: SparseImageMemoryRequirements2::default(),
21081             marker: ::std::marker::PhantomData,
21082         }
21083     }
21084 }
21085 #[repr(transparent)]
21086 pub struct SparseImageMemoryRequirements2Builder<'a> {
21087     inner: SparseImageMemoryRequirements2,
21088     marker: ::std::marker::PhantomData<&'a ()>,
21089 }
21090 impl<'a> ::std::ops::Deref for SparseImageMemoryRequirements2Builder<'a> {
21091     type Target = SparseImageMemoryRequirements2;
deref(&self) -> &Self::Target21092     fn deref(&self) -> &Self::Target {
21093         &self.inner
21094     }
21095 }
21096 impl<'a> ::std::ops::DerefMut for SparseImageMemoryRequirements2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target21097     fn deref_mut(&mut self) -> &mut Self::Target {
21098         &mut self.inner
21099     }
21100 }
21101 impl<'a> SparseImageMemoryRequirements2Builder<'a> {
memory_requirements( mut self, memory_requirements: SparseImageMemoryRequirements, ) -> Self21102     pub fn memory_requirements(
21103         mut self,
21104         memory_requirements: SparseImageMemoryRequirements,
21105     ) -> Self {
21106         self.inner.memory_requirements = memory_requirements;
21107         self
21108     }
21109     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21110     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21111     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryRequirements221112     pub fn build(self) -> SparseImageMemoryRequirements2 {
21113         self.inner
21114     }
21115 }
21116 #[repr(C)]
21117 #[derive(Copy, Clone, Debug)]
21118 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePointClippingProperties.html>"]
21119 pub struct PhysicalDevicePointClippingProperties {
21120     pub s_type: StructureType,
21121     pub p_next: *mut c_void,
21122     pub point_clipping_behavior: PointClippingBehavior,
21123 }
21124 impl ::std::default::Default for PhysicalDevicePointClippingProperties {
default() -> PhysicalDevicePointClippingProperties21125     fn default() -> PhysicalDevicePointClippingProperties {
21126         PhysicalDevicePointClippingProperties {
21127             s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
21128             p_next: ::std::ptr::null_mut(),
21129             point_clipping_behavior: PointClippingBehavior::default(),
21130         }
21131     }
21132 }
21133 impl PhysicalDevicePointClippingProperties {
builder<'a>() -> PhysicalDevicePointClippingPropertiesBuilder<'a>21134     pub fn builder<'a>() -> PhysicalDevicePointClippingPropertiesBuilder<'a> {
21135         PhysicalDevicePointClippingPropertiesBuilder {
21136             inner: PhysicalDevicePointClippingProperties::default(),
21137             marker: ::std::marker::PhantomData,
21138         }
21139     }
21140 }
21141 #[repr(transparent)]
21142 pub struct PhysicalDevicePointClippingPropertiesBuilder<'a> {
21143     inner: PhysicalDevicePointClippingProperties,
21144     marker: ::std::marker::PhantomData<&'a ()>,
21145 }
21146 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePointClippingPropertiesBuilder<'_> {}
21147 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePointClippingProperties {}
21148 impl<'a> ::std::ops::Deref for PhysicalDevicePointClippingPropertiesBuilder<'a> {
21149     type Target = PhysicalDevicePointClippingProperties;
deref(&self) -> &Self::Target21150     fn deref(&self) -> &Self::Target {
21151         &self.inner
21152     }
21153 }
21154 impl<'a> ::std::ops::DerefMut for PhysicalDevicePointClippingPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21155     fn deref_mut(&mut self) -> &mut Self::Target {
21156         &mut self.inner
21157     }
21158 }
21159 impl<'a> PhysicalDevicePointClippingPropertiesBuilder<'a> {
point_clipping_behavior( mut self, point_clipping_behavior: PointClippingBehavior, ) -> Self21160     pub fn point_clipping_behavior(
21161         mut self,
21162         point_clipping_behavior: PointClippingBehavior,
21163     ) -> Self {
21164         self.inner.point_clipping_behavior = point_clipping_behavior;
21165         self
21166     }
21167     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21168     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21169     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePointClippingProperties21170     pub fn build(self) -> PhysicalDevicePointClippingProperties {
21171         self.inner
21172     }
21173 }
21174 #[repr(C)]
21175 #[derive(Copy, Clone, Debug)]
21176 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryDedicatedRequirements.html>"]
21177 pub struct MemoryDedicatedRequirements {
21178     pub s_type: StructureType,
21179     pub p_next: *mut c_void,
21180     pub prefers_dedicated_allocation: Bool32,
21181     pub requires_dedicated_allocation: Bool32,
21182 }
21183 impl ::std::default::Default for MemoryDedicatedRequirements {
default() -> MemoryDedicatedRequirements21184     fn default() -> MemoryDedicatedRequirements {
21185         MemoryDedicatedRequirements {
21186             s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
21187             p_next: ::std::ptr::null_mut(),
21188             prefers_dedicated_allocation: Bool32::default(),
21189             requires_dedicated_allocation: Bool32::default(),
21190         }
21191     }
21192 }
21193 impl MemoryDedicatedRequirements {
builder<'a>() -> MemoryDedicatedRequirementsBuilder<'a>21194     pub fn builder<'a>() -> MemoryDedicatedRequirementsBuilder<'a> {
21195         MemoryDedicatedRequirementsBuilder {
21196             inner: MemoryDedicatedRequirements::default(),
21197             marker: ::std::marker::PhantomData,
21198         }
21199     }
21200 }
21201 #[repr(transparent)]
21202 pub struct MemoryDedicatedRequirementsBuilder<'a> {
21203     inner: MemoryDedicatedRequirements,
21204     marker: ::std::marker::PhantomData<&'a ()>,
21205 }
21206 unsafe impl ExtendsMemoryRequirements2 for MemoryDedicatedRequirementsBuilder<'_> {}
21207 unsafe impl ExtendsMemoryRequirements2 for MemoryDedicatedRequirements {}
21208 impl<'a> ::std::ops::Deref for MemoryDedicatedRequirementsBuilder<'a> {
21209     type Target = MemoryDedicatedRequirements;
deref(&self) -> &Self::Target21210     fn deref(&self) -> &Self::Target {
21211         &self.inner
21212     }
21213 }
21214 impl<'a> ::std::ops::DerefMut for MemoryDedicatedRequirementsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21215     fn deref_mut(&mut self) -> &mut Self::Target {
21216         &mut self.inner
21217     }
21218 }
21219 impl<'a> MemoryDedicatedRequirementsBuilder<'a> {
prefers_dedicated_allocation(mut self, prefers_dedicated_allocation: bool) -> Self21220     pub fn prefers_dedicated_allocation(mut self, prefers_dedicated_allocation: bool) -> Self {
21221         self.inner.prefers_dedicated_allocation = prefers_dedicated_allocation.into();
21222         self
21223     }
requires_dedicated_allocation(mut self, requires_dedicated_allocation: bool) -> Self21224     pub fn requires_dedicated_allocation(mut self, requires_dedicated_allocation: bool) -> Self {
21225         self.inner.requires_dedicated_allocation = requires_dedicated_allocation.into();
21226         self
21227     }
21228     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21229     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21230     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryDedicatedRequirements21231     pub fn build(self) -> MemoryDedicatedRequirements {
21232         self.inner
21233     }
21234 }
21235 #[repr(C)]
21236 #[derive(Copy, Clone, Debug)]
21237 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryDedicatedAllocateInfo.html>"]
21238 pub struct MemoryDedicatedAllocateInfo {
21239     pub s_type: StructureType,
21240     pub p_next: *const c_void,
21241     pub image: Image,
21242     pub buffer: Buffer,
21243 }
21244 impl ::std::default::Default for MemoryDedicatedAllocateInfo {
default() -> MemoryDedicatedAllocateInfo21245     fn default() -> MemoryDedicatedAllocateInfo {
21246         MemoryDedicatedAllocateInfo {
21247             s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
21248             p_next: ::std::ptr::null(),
21249             image: Image::default(),
21250             buffer: Buffer::default(),
21251         }
21252     }
21253 }
21254 impl MemoryDedicatedAllocateInfo {
builder<'a>() -> MemoryDedicatedAllocateInfoBuilder<'a>21255     pub fn builder<'a>() -> MemoryDedicatedAllocateInfoBuilder<'a> {
21256         MemoryDedicatedAllocateInfoBuilder {
21257             inner: MemoryDedicatedAllocateInfo::default(),
21258             marker: ::std::marker::PhantomData,
21259         }
21260     }
21261 }
21262 #[repr(transparent)]
21263 pub struct MemoryDedicatedAllocateInfoBuilder<'a> {
21264     inner: MemoryDedicatedAllocateInfo,
21265     marker: ::std::marker::PhantomData<&'a ()>,
21266 }
21267 unsafe impl ExtendsMemoryAllocateInfo for MemoryDedicatedAllocateInfoBuilder<'_> {}
21268 unsafe impl ExtendsMemoryAllocateInfo for MemoryDedicatedAllocateInfo {}
21269 impl<'a> ::std::ops::Deref for MemoryDedicatedAllocateInfoBuilder<'a> {
21270     type Target = MemoryDedicatedAllocateInfo;
deref(&self) -> &Self::Target21271     fn deref(&self) -> &Self::Target {
21272         &self.inner
21273     }
21274 }
21275 impl<'a> ::std::ops::DerefMut for MemoryDedicatedAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21276     fn deref_mut(&mut self) -> &mut Self::Target {
21277         &mut self.inner
21278     }
21279 }
21280 impl<'a> MemoryDedicatedAllocateInfoBuilder<'a> {
image(mut self, image: Image) -> Self21281     pub fn image(mut self, image: Image) -> Self {
21282         self.inner.image = image;
21283         self
21284     }
buffer(mut self, buffer: Buffer) -> Self21285     pub fn buffer(mut self, buffer: Buffer) -> Self {
21286         self.inner.buffer = buffer;
21287         self
21288     }
21289     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21290     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21291     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryDedicatedAllocateInfo21292     pub fn build(self) -> MemoryDedicatedAllocateInfo {
21293         self.inner
21294     }
21295 }
21296 #[repr(C)]
21297 #[derive(Copy, Clone, Debug)]
21298 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewUsageCreateInfo.html>"]
21299 pub struct ImageViewUsageCreateInfo {
21300     pub s_type: StructureType,
21301     pub p_next: *const c_void,
21302     pub usage: ImageUsageFlags,
21303 }
21304 impl ::std::default::Default for ImageViewUsageCreateInfo {
default() -> ImageViewUsageCreateInfo21305     fn default() -> ImageViewUsageCreateInfo {
21306         ImageViewUsageCreateInfo {
21307             s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
21308             p_next: ::std::ptr::null(),
21309             usage: ImageUsageFlags::default(),
21310         }
21311     }
21312 }
21313 impl ImageViewUsageCreateInfo {
builder<'a>() -> ImageViewUsageCreateInfoBuilder<'a>21314     pub fn builder<'a>() -> ImageViewUsageCreateInfoBuilder<'a> {
21315         ImageViewUsageCreateInfoBuilder {
21316             inner: ImageViewUsageCreateInfo::default(),
21317             marker: ::std::marker::PhantomData,
21318         }
21319     }
21320 }
21321 #[repr(transparent)]
21322 pub struct ImageViewUsageCreateInfoBuilder<'a> {
21323     inner: ImageViewUsageCreateInfo,
21324     marker: ::std::marker::PhantomData<&'a ()>,
21325 }
21326 unsafe impl ExtendsImageViewCreateInfo for ImageViewUsageCreateInfoBuilder<'_> {}
21327 unsafe impl ExtendsImageViewCreateInfo for ImageViewUsageCreateInfo {}
21328 impl<'a> ::std::ops::Deref for ImageViewUsageCreateInfoBuilder<'a> {
21329     type Target = ImageViewUsageCreateInfo;
deref(&self) -> &Self::Target21330     fn deref(&self) -> &Self::Target {
21331         &self.inner
21332     }
21333 }
21334 impl<'a> ::std::ops::DerefMut for ImageViewUsageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21335     fn deref_mut(&mut self) -> &mut Self::Target {
21336         &mut self.inner
21337     }
21338 }
21339 impl<'a> ImageViewUsageCreateInfoBuilder<'a> {
usage(mut self, usage: ImageUsageFlags) -> Self21340     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
21341         self.inner.usage = usage;
21342         self
21343     }
21344     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21345     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21346     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewUsageCreateInfo21347     pub fn build(self) -> ImageViewUsageCreateInfo {
21348         self.inner
21349     }
21350 }
21351 #[repr(C)]
21352 #[derive(Copy, Clone, Debug)]
21353 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>"]
21354 pub struct PipelineTessellationDomainOriginStateCreateInfo {
21355     pub s_type: StructureType,
21356     pub p_next: *const c_void,
21357     pub domain_origin: TessellationDomainOrigin,
21358 }
21359 impl ::std::default::Default for PipelineTessellationDomainOriginStateCreateInfo {
default() -> PipelineTessellationDomainOriginStateCreateInfo21360     fn default() -> PipelineTessellationDomainOriginStateCreateInfo {
21361         PipelineTessellationDomainOriginStateCreateInfo {
21362             s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
21363             p_next: ::std::ptr::null(),
21364             domain_origin: TessellationDomainOrigin::default(),
21365         }
21366     }
21367 }
21368 impl PipelineTessellationDomainOriginStateCreateInfo {
builder<'a>() -> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a>21369     pub fn builder<'a>() -> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
21370         PipelineTessellationDomainOriginStateCreateInfoBuilder {
21371             inner: PipelineTessellationDomainOriginStateCreateInfo::default(),
21372             marker: ::std::marker::PhantomData,
21373         }
21374     }
21375 }
21376 #[repr(transparent)]
21377 pub struct PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
21378     inner: PipelineTessellationDomainOriginStateCreateInfo,
21379     marker: ::std::marker::PhantomData<&'a ()>,
21380 }
21381 unsafe impl ExtendsPipelineTessellationStateCreateInfo
21382     for PipelineTessellationDomainOriginStateCreateInfoBuilder<'_>
21383 {
21384 }
21385 unsafe impl ExtendsPipelineTessellationStateCreateInfo
21386     for PipelineTessellationDomainOriginStateCreateInfo
21387 {
21388 }
21389 impl<'a> ::std::ops::Deref for PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
21390     type Target = PipelineTessellationDomainOriginStateCreateInfo;
deref(&self) -> &Self::Target21391     fn deref(&self) -> &Self::Target {
21392         &self.inner
21393     }
21394 }
21395 impl<'a> ::std::ops::DerefMut for PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21396     fn deref_mut(&mut self) -> &mut Self::Target {
21397         &mut self.inner
21398     }
21399 }
21400 impl<'a> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
domain_origin(mut self, domain_origin: TessellationDomainOrigin) -> Self21401     pub fn domain_origin(mut self, domain_origin: TessellationDomainOrigin) -> Self {
21402         self.inner.domain_origin = domain_origin;
21403         self
21404     }
21405     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21406     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21407     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineTessellationDomainOriginStateCreateInfo21408     pub fn build(self) -> PipelineTessellationDomainOriginStateCreateInfo {
21409         self.inner
21410     }
21411 }
21412 #[repr(C)]
21413 #[derive(Copy, Clone, Debug)]
21414 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversionInfo.html>"]
21415 pub struct SamplerYcbcrConversionInfo {
21416     pub s_type: StructureType,
21417     pub p_next: *const c_void,
21418     pub conversion: SamplerYcbcrConversion,
21419 }
21420 impl ::std::default::Default for SamplerYcbcrConversionInfo {
default() -> SamplerYcbcrConversionInfo21421     fn default() -> SamplerYcbcrConversionInfo {
21422         SamplerYcbcrConversionInfo {
21423             s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
21424             p_next: ::std::ptr::null(),
21425             conversion: SamplerYcbcrConversion::default(),
21426         }
21427     }
21428 }
21429 impl SamplerYcbcrConversionInfo {
builder<'a>() -> SamplerYcbcrConversionInfoBuilder<'a>21430     pub fn builder<'a>() -> SamplerYcbcrConversionInfoBuilder<'a> {
21431         SamplerYcbcrConversionInfoBuilder {
21432             inner: SamplerYcbcrConversionInfo::default(),
21433             marker: ::std::marker::PhantomData,
21434         }
21435     }
21436 }
21437 #[repr(transparent)]
21438 pub struct SamplerYcbcrConversionInfoBuilder<'a> {
21439     inner: SamplerYcbcrConversionInfo,
21440     marker: ::std::marker::PhantomData<&'a ()>,
21441 }
21442 unsafe impl ExtendsSamplerCreateInfo for SamplerYcbcrConversionInfoBuilder<'_> {}
21443 unsafe impl ExtendsSamplerCreateInfo for SamplerYcbcrConversionInfo {}
21444 unsafe impl ExtendsImageViewCreateInfo for SamplerYcbcrConversionInfoBuilder<'_> {}
21445 unsafe impl ExtendsImageViewCreateInfo for SamplerYcbcrConversionInfo {}
21446 impl<'a> ::std::ops::Deref for SamplerYcbcrConversionInfoBuilder<'a> {
21447     type Target = SamplerYcbcrConversionInfo;
deref(&self) -> &Self::Target21448     fn deref(&self) -> &Self::Target {
21449         &self.inner
21450     }
21451 }
21452 impl<'a> ::std::ops::DerefMut for SamplerYcbcrConversionInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21453     fn deref_mut(&mut self) -> &mut Self::Target {
21454         &mut self.inner
21455     }
21456 }
21457 impl<'a> SamplerYcbcrConversionInfoBuilder<'a> {
conversion(mut self, conversion: SamplerYcbcrConversion) -> Self21458     pub fn conversion(mut self, conversion: SamplerYcbcrConversion) -> Self {
21459         self.inner.conversion = conversion;
21460         self
21461     }
21462     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21463     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21464     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerYcbcrConversionInfo21465     pub fn build(self) -> SamplerYcbcrConversionInfo {
21466         self.inner
21467     }
21468 }
21469 #[repr(C)]
21470 #[derive(Copy, Clone, Debug)]
21471 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversionCreateInfo.html>"]
21472 pub struct SamplerYcbcrConversionCreateInfo {
21473     pub s_type: StructureType,
21474     pub p_next: *const c_void,
21475     pub format: Format,
21476     pub ycbcr_model: SamplerYcbcrModelConversion,
21477     pub ycbcr_range: SamplerYcbcrRange,
21478     pub components: ComponentMapping,
21479     pub x_chroma_offset: ChromaLocation,
21480     pub y_chroma_offset: ChromaLocation,
21481     pub chroma_filter: Filter,
21482     pub force_explicit_reconstruction: Bool32,
21483 }
21484 impl ::std::default::Default for SamplerYcbcrConversionCreateInfo {
default() -> SamplerYcbcrConversionCreateInfo21485     fn default() -> SamplerYcbcrConversionCreateInfo {
21486         SamplerYcbcrConversionCreateInfo {
21487             s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
21488             p_next: ::std::ptr::null(),
21489             format: Format::default(),
21490             ycbcr_model: SamplerYcbcrModelConversion::default(),
21491             ycbcr_range: SamplerYcbcrRange::default(),
21492             components: ComponentMapping::default(),
21493             x_chroma_offset: ChromaLocation::default(),
21494             y_chroma_offset: ChromaLocation::default(),
21495             chroma_filter: Filter::default(),
21496             force_explicit_reconstruction: Bool32::default(),
21497         }
21498     }
21499 }
21500 impl SamplerYcbcrConversionCreateInfo {
builder<'a>() -> SamplerYcbcrConversionCreateInfoBuilder<'a>21501     pub fn builder<'a>() -> SamplerYcbcrConversionCreateInfoBuilder<'a> {
21502         SamplerYcbcrConversionCreateInfoBuilder {
21503             inner: SamplerYcbcrConversionCreateInfo::default(),
21504             marker: ::std::marker::PhantomData,
21505         }
21506     }
21507 }
21508 #[repr(transparent)]
21509 pub struct SamplerYcbcrConversionCreateInfoBuilder<'a> {
21510     inner: SamplerYcbcrConversionCreateInfo,
21511     marker: ::std::marker::PhantomData<&'a ()>,
21512 }
21513 pub unsafe trait ExtendsSamplerYcbcrConversionCreateInfo {}
21514 impl<'a> ::std::ops::Deref for SamplerYcbcrConversionCreateInfoBuilder<'a> {
21515     type Target = SamplerYcbcrConversionCreateInfo;
deref(&self) -> &Self::Target21516     fn deref(&self) -> &Self::Target {
21517         &self.inner
21518     }
21519 }
21520 impl<'a> ::std::ops::DerefMut for SamplerYcbcrConversionCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21521     fn deref_mut(&mut self) -> &mut Self::Target {
21522         &mut self.inner
21523     }
21524 }
21525 impl<'a> SamplerYcbcrConversionCreateInfoBuilder<'a> {
format(mut self, format: Format) -> Self21526     pub fn format(mut self, format: Format) -> Self {
21527         self.inner.format = format;
21528         self
21529     }
ycbcr_model(mut self, ycbcr_model: SamplerYcbcrModelConversion) -> Self21530     pub fn ycbcr_model(mut self, ycbcr_model: SamplerYcbcrModelConversion) -> Self {
21531         self.inner.ycbcr_model = ycbcr_model;
21532         self
21533     }
ycbcr_range(mut self, ycbcr_range: SamplerYcbcrRange) -> Self21534     pub fn ycbcr_range(mut self, ycbcr_range: SamplerYcbcrRange) -> Self {
21535         self.inner.ycbcr_range = ycbcr_range;
21536         self
21537     }
components(mut self, components: ComponentMapping) -> Self21538     pub fn components(mut self, components: ComponentMapping) -> Self {
21539         self.inner.components = components;
21540         self
21541     }
x_chroma_offset(mut self, x_chroma_offset: ChromaLocation) -> Self21542     pub fn x_chroma_offset(mut self, x_chroma_offset: ChromaLocation) -> Self {
21543         self.inner.x_chroma_offset = x_chroma_offset;
21544         self
21545     }
y_chroma_offset(mut self, y_chroma_offset: ChromaLocation) -> Self21546     pub fn y_chroma_offset(mut self, y_chroma_offset: ChromaLocation) -> Self {
21547         self.inner.y_chroma_offset = y_chroma_offset;
21548         self
21549     }
chroma_filter(mut self, chroma_filter: Filter) -> Self21550     pub fn chroma_filter(mut self, chroma_filter: Filter) -> Self {
21551         self.inner.chroma_filter = chroma_filter;
21552         self
21553     }
force_explicit_reconstruction(mut self, force_explicit_reconstruction: bool) -> Self21554     pub fn force_explicit_reconstruction(mut self, force_explicit_reconstruction: bool) -> Self {
21555         self.inner.force_explicit_reconstruction = force_explicit_reconstruction.into();
21556         self
21557     }
21558     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
21559     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
21560     #[doc = r" valid extension structs can be pushed into the chain."]
21561     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
21562     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSamplerYcbcrConversionCreateInfo>( mut self, next: &'a mut T, ) -> Self21563     pub fn push_next<T: ExtendsSamplerYcbcrConversionCreateInfo>(
21564         mut self,
21565         next: &'a mut T,
21566     ) -> Self {
21567         unsafe {
21568             let next_ptr = next as *mut T as *mut BaseOutStructure;
21569             let last_next = ptr_chain_iter(next).last().unwrap();
21570             (*last_next).p_next = self.inner.p_next as _;
21571             self.inner.p_next = next_ptr as _;
21572         }
21573         self
21574     }
21575     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21576     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21577     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerYcbcrConversionCreateInfo21578     pub fn build(self) -> SamplerYcbcrConversionCreateInfo {
21579         self.inner
21580     }
21581 }
21582 #[repr(C)]
21583 #[derive(Copy, Clone, Debug)]
21584 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImagePlaneMemoryInfo.html>"]
21585 pub struct BindImagePlaneMemoryInfo {
21586     pub s_type: StructureType,
21587     pub p_next: *const c_void,
21588     pub plane_aspect: ImageAspectFlags,
21589 }
21590 impl ::std::default::Default for BindImagePlaneMemoryInfo {
default() -> BindImagePlaneMemoryInfo21591     fn default() -> BindImagePlaneMemoryInfo {
21592         BindImagePlaneMemoryInfo {
21593             s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
21594             p_next: ::std::ptr::null(),
21595             plane_aspect: ImageAspectFlags::default(),
21596         }
21597     }
21598 }
21599 impl BindImagePlaneMemoryInfo {
builder<'a>() -> BindImagePlaneMemoryInfoBuilder<'a>21600     pub fn builder<'a>() -> BindImagePlaneMemoryInfoBuilder<'a> {
21601         BindImagePlaneMemoryInfoBuilder {
21602             inner: BindImagePlaneMemoryInfo::default(),
21603             marker: ::std::marker::PhantomData,
21604         }
21605     }
21606 }
21607 #[repr(transparent)]
21608 pub struct BindImagePlaneMemoryInfoBuilder<'a> {
21609     inner: BindImagePlaneMemoryInfo,
21610     marker: ::std::marker::PhantomData<&'a ()>,
21611 }
21612 unsafe impl ExtendsBindImageMemoryInfo for BindImagePlaneMemoryInfoBuilder<'_> {}
21613 unsafe impl ExtendsBindImageMemoryInfo for BindImagePlaneMemoryInfo {}
21614 impl<'a> ::std::ops::Deref for BindImagePlaneMemoryInfoBuilder<'a> {
21615     type Target = BindImagePlaneMemoryInfo;
deref(&self) -> &Self::Target21616     fn deref(&self) -> &Self::Target {
21617         &self.inner
21618     }
21619 }
21620 impl<'a> ::std::ops::DerefMut for BindImagePlaneMemoryInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21621     fn deref_mut(&mut self) -> &mut Self::Target {
21622         &mut self.inner
21623     }
21624 }
21625 impl<'a> BindImagePlaneMemoryInfoBuilder<'a> {
plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self21626     pub fn plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self {
21627         self.inner.plane_aspect = plane_aspect;
21628         self
21629     }
21630     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21631     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21632     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImagePlaneMemoryInfo21633     pub fn build(self) -> BindImagePlaneMemoryInfo {
21634         self.inner
21635     }
21636 }
21637 #[repr(C)]
21638 #[derive(Copy, Clone, Debug)]
21639 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImagePlaneMemoryRequirementsInfo.html>"]
21640 pub struct ImagePlaneMemoryRequirementsInfo {
21641     pub s_type: StructureType,
21642     pub p_next: *const c_void,
21643     pub plane_aspect: ImageAspectFlags,
21644 }
21645 impl ::std::default::Default for ImagePlaneMemoryRequirementsInfo {
default() -> ImagePlaneMemoryRequirementsInfo21646     fn default() -> ImagePlaneMemoryRequirementsInfo {
21647         ImagePlaneMemoryRequirementsInfo {
21648             s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
21649             p_next: ::std::ptr::null(),
21650             plane_aspect: ImageAspectFlags::default(),
21651         }
21652     }
21653 }
21654 impl ImagePlaneMemoryRequirementsInfo {
builder<'a>() -> ImagePlaneMemoryRequirementsInfoBuilder<'a>21655     pub fn builder<'a>() -> ImagePlaneMemoryRequirementsInfoBuilder<'a> {
21656         ImagePlaneMemoryRequirementsInfoBuilder {
21657             inner: ImagePlaneMemoryRequirementsInfo::default(),
21658             marker: ::std::marker::PhantomData,
21659         }
21660     }
21661 }
21662 #[repr(transparent)]
21663 pub struct ImagePlaneMemoryRequirementsInfoBuilder<'a> {
21664     inner: ImagePlaneMemoryRequirementsInfo,
21665     marker: ::std::marker::PhantomData<&'a ()>,
21666 }
21667 unsafe impl ExtendsImageMemoryRequirementsInfo2 for ImagePlaneMemoryRequirementsInfoBuilder<'_> {}
21668 unsafe impl ExtendsImageMemoryRequirementsInfo2 for ImagePlaneMemoryRequirementsInfo {}
21669 impl<'a> ::std::ops::Deref for ImagePlaneMemoryRequirementsInfoBuilder<'a> {
21670     type Target = ImagePlaneMemoryRequirementsInfo;
deref(&self) -> &Self::Target21671     fn deref(&self) -> &Self::Target {
21672         &self.inner
21673     }
21674 }
21675 impl<'a> ::std::ops::DerefMut for ImagePlaneMemoryRequirementsInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21676     fn deref_mut(&mut self) -> &mut Self::Target {
21677         &mut self.inner
21678     }
21679 }
21680 impl<'a> ImagePlaneMemoryRequirementsInfoBuilder<'a> {
plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self21681     pub fn plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self {
21682         self.inner.plane_aspect = plane_aspect;
21683         self
21684     }
21685     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21686     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21687     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImagePlaneMemoryRequirementsInfo21688     pub fn build(self) -> ImagePlaneMemoryRequirementsInfo {
21689         self.inner
21690     }
21691 }
21692 #[repr(C)]
21693 #[derive(Copy, Clone, Debug)]
21694 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>"]
21695 pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
21696     pub s_type: StructureType,
21697     pub p_next: *mut c_void,
21698     pub sampler_ycbcr_conversion: Bool32,
21699 }
21700 impl ::std::default::Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
default() -> PhysicalDeviceSamplerYcbcrConversionFeatures21701     fn default() -> PhysicalDeviceSamplerYcbcrConversionFeatures {
21702         PhysicalDeviceSamplerYcbcrConversionFeatures {
21703             s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
21704             p_next: ::std::ptr::null_mut(),
21705             sampler_ycbcr_conversion: Bool32::default(),
21706         }
21707     }
21708 }
21709 impl PhysicalDeviceSamplerYcbcrConversionFeatures {
builder<'a>() -> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a>21710     pub fn builder<'a>() -> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
21711         PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder {
21712             inner: PhysicalDeviceSamplerYcbcrConversionFeatures::default(),
21713             marker: ::std::marker::PhantomData,
21714         }
21715     }
21716 }
21717 #[repr(transparent)]
21718 pub struct PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
21719     inner: PhysicalDeviceSamplerYcbcrConversionFeatures,
21720     marker: ::std::marker::PhantomData<&'a ()>,
21721 }
21722 unsafe impl ExtendsPhysicalDeviceFeatures2
21723     for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'_>
21724 {
21725 }
21726 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSamplerYcbcrConversionFeatures {}
21727 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'_> {}
21728 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSamplerYcbcrConversionFeatures {}
21729 impl<'a> ::std::ops::Deref for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
21730     type Target = PhysicalDeviceSamplerYcbcrConversionFeatures;
deref(&self) -> &Self::Target21731     fn deref(&self) -> &Self::Target {
21732         &self.inner
21733     }
21734 }
21735 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21736     fn deref_mut(&mut self) -> &mut Self::Target {
21737         &mut self.inner
21738     }
21739 }
21740 impl<'a> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self21741     pub fn sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self {
21742         self.inner.sampler_ycbcr_conversion = sampler_ycbcr_conversion.into();
21743         self
21744     }
21745     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21746     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21747     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSamplerYcbcrConversionFeatures21748     pub fn build(self) -> PhysicalDeviceSamplerYcbcrConversionFeatures {
21749         self.inner
21750     }
21751 }
21752 #[repr(C)]
21753 #[derive(Copy, Clone, Debug)]
21754 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>"]
21755 pub struct SamplerYcbcrConversionImageFormatProperties {
21756     pub s_type: StructureType,
21757     pub p_next: *mut c_void,
21758     pub combined_image_sampler_descriptor_count: u32,
21759 }
21760 impl ::std::default::Default for SamplerYcbcrConversionImageFormatProperties {
default() -> SamplerYcbcrConversionImageFormatProperties21761     fn default() -> SamplerYcbcrConversionImageFormatProperties {
21762         SamplerYcbcrConversionImageFormatProperties {
21763             s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
21764             p_next: ::std::ptr::null_mut(),
21765             combined_image_sampler_descriptor_count: u32::default(),
21766         }
21767     }
21768 }
21769 impl SamplerYcbcrConversionImageFormatProperties {
builder<'a>() -> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a>21770     pub fn builder<'a>() -> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
21771         SamplerYcbcrConversionImageFormatPropertiesBuilder {
21772             inner: SamplerYcbcrConversionImageFormatProperties::default(),
21773             marker: ::std::marker::PhantomData,
21774         }
21775     }
21776 }
21777 #[repr(transparent)]
21778 pub struct SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
21779     inner: SamplerYcbcrConversionImageFormatProperties,
21780     marker: ::std::marker::PhantomData<&'a ()>,
21781 }
21782 unsafe impl ExtendsImageFormatProperties2
21783     for SamplerYcbcrConversionImageFormatPropertiesBuilder<'_>
21784 {
21785 }
21786 unsafe impl ExtendsImageFormatProperties2 for SamplerYcbcrConversionImageFormatProperties {}
21787 impl<'a> ::std::ops::Deref for SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
21788     type Target = SamplerYcbcrConversionImageFormatProperties;
deref(&self) -> &Self::Target21789     fn deref(&self) -> &Self::Target {
21790         &self.inner
21791     }
21792 }
21793 impl<'a> ::std::ops::DerefMut for SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21794     fn deref_mut(&mut self) -> &mut Self::Target {
21795         &mut self.inner
21796     }
21797 }
21798 impl<'a> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
combined_image_sampler_descriptor_count( mut self, combined_image_sampler_descriptor_count: u32, ) -> Self21799     pub fn combined_image_sampler_descriptor_count(
21800         mut self,
21801         combined_image_sampler_descriptor_count: u32,
21802     ) -> Self {
21803         self.inner.combined_image_sampler_descriptor_count =
21804             combined_image_sampler_descriptor_count;
21805         self
21806     }
21807     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21808     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21809     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerYcbcrConversionImageFormatProperties21810     pub fn build(self) -> SamplerYcbcrConversionImageFormatProperties {
21811         self.inner
21812     }
21813 }
21814 #[repr(C)]
21815 #[derive(Copy, Clone, Debug)]
21816 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTextureLODGatherFormatPropertiesAMD.html>"]
21817 pub struct TextureLODGatherFormatPropertiesAMD {
21818     pub s_type: StructureType,
21819     pub p_next: *mut c_void,
21820     pub supports_texture_gather_lod_bias_amd: Bool32,
21821 }
21822 impl ::std::default::Default for TextureLODGatherFormatPropertiesAMD {
default() -> TextureLODGatherFormatPropertiesAMD21823     fn default() -> TextureLODGatherFormatPropertiesAMD {
21824         TextureLODGatherFormatPropertiesAMD {
21825             s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
21826             p_next: ::std::ptr::null_mut(),
21827             supports_texture_gather_lod_bias_amd: Bool32::default(),
21828         }
21829     }
21830 }
21831 impl TextureLODGatherFormatPropertiesAMD {
builder<'a>() -> TextureLODGatherFormatPropertiesAMDBuilder<'a>21832     pub fn builder<'a>() -> TextureLODGatherFormatPropertiesAMDBuilder<'a> {
21833         TextureLODGatherFormatPropertiesAMDBuilder {
21834             inner: TextureLODGatherFormatPropertiesAMD::default(),
21835             marker: ::std::marker::PhantomData,
21836         }
21837     }
21838 }
21839 #[repr(transparent)]
21840 pub struct TextureLODGatherFormatPropertiesAMDBuilder<'a> {
21841     inner: TextureLODGatherFormatPropertiesAMD,
21842     marker: ::std::marker::PhantomData<&'a ()>,
21843 }
21844 unsafe impl ExtendsImageFormatProperties2 for TextureLODGatherFormatPropertiesAMDBuilder<'_> {}
21845 unsafe impl ExtendsImageFormatProperties2 for TextureLODGatherFormatPropertiesAMD {}
21846 impl<'a> ::std::ops::Deref for TextureLODGatherFormatPropertiesAMDBuilder<'a> {
21847     type Target = TextureLODGatherFormatPropertiesAMD;
deref(&self) -> &Self::Target21848     fn deref(&self) -> &Self::Target {
21849         &self.inner
21850     }
21851 }
21852 impl<'a> ::std::ops::DerefMut for TextureLODGatherFormatPropertiesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21853     fn deref_mut(&mut self) -> &mut Self::Target {
21854         &mut self.inner
21855     }
21856 }
21857 impl<'a> TextureLODGatherFormatPropertiesAMDBuilder<'a> {
supports_texture_gather_lod_bias_amd( mut self, supports_texture_gather_lod_bias_amd: bool, ) -> Self21858     pub fn supports_texture_gather_lod_bias_amd(
21859         mut self,
21860         supports_texture_gather_lod_bias_amd: bool,
21861     ) -> Self {
21862         self.inner.supports_texture_gather_lod_bias_amd =
21863             supports_texture_gather_lod_bias_amd.into();
21864         self
21865     }
21866     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21867     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21868     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> TextureLODGatherFormatPropertiesAMD21869     pub fn build(self) -> TextureLODGatherFormatPropertiesAMD {
21870         self.inner
21871     }
21872 }
21873 #[repr(C)]
21874 #[derive(Copy, Clone, Debug)]
21875 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkConditionalRenderingBeginInfoEXT.html>"]
21876 pub struct ConditionalRenderingBeginInfoEXT {
21877     pub s_type: StructureType,
21878     pub p_next: *const c_void,
21879     pub buffer: Buffer,
21880     pub offset: DeviceSize,
21881     pub flags: ConditionalRenderingFlagsEXT,
21882 }
21883 impl ::std::default::Default for ConditionalRenderingBeginInfoEXT {
default() -> ConditionalRenderingBeginInfoEXT21884     fn default() -> ConditionalRenderingBeginInfoEXT {
21885         ConditionalRenderingBeginInfoEXT {
21886             s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
21887             p_next: ::std::ptr::null(),
21888             buffer: Buffer::default(),
21889             offset: DeviceSize::default(),
21890             flags: ConditionalRenderingFlagsEXT::default(),
21891         }
21892     }
21893 }
21894 impl ConditionalRenderingBeginInfoEXT {
builder<'a>() -> ConditionalRenderingBeginInfoEXTBuilder<'a>21895     pub fn builder<'a>() -> ConditionalRenderingBeginInfoEXTBuilder<'a> {
21896         ConditionalRenderingBeginInfoEXTBuilder {
21897             inner: ConditionalRenderingBeginInfoEXT::default(),
21898             marker: ::std::marker::PhantomData,
21899         }
21900     }
21901 }
21902 #[repr(transparent)]
21903 pub struct ConditionalRenderingBeginInfoEXTBuilder<'a> {
21904     inner: ConditionalRenderingBeginInfoEXT,
21905     marker: ::std::marker::PhantomData<&'a ()>,
21906 }
21907 impl<'a> ::std::ops::Deref for ConditionalRenderingBeginInfoEXTBuilder<'a> {
21908     type Target = ConditionalRenderingBeginInfoEXT;
deref(&self) -> &Self::Target21909     fn deref(&self) -> &Self::Target {
21910         &self.inner
21911     }
21912 }
21913 impl<'a> ::std::ops::DerefMut for ConditionalRenderingBeginInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21914     fn deref_mut(&mut self) -> &mut Self::Target {
21915         &mut self.inner
21916     }
21917 }
21918 impl<'a> ConditionalRenderingBeginInfoEXTBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self21919     pub fn buffer(mut self, buffer: Buffer) -> Self {
21920         self.inner.buffer = buffer;
21921         self
21922     }
offset(mut self, offset: DeviceSize) -> Self21923     pub fn offset(mut self, offset: DeviceSize) -> Self {
21924         self.inner.offset = offset;
21925         self
21926     }
flags(mut self, flags: ConditionalRenderingFlagsEXT) -> Self21927     pub fn flags(mut self, flags: ConditionalRenderingFlagsEXT) -> Self {
21928         self.inner.flags = flags;
21929         self
21930     }
21931     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21932     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21933     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ConditionalRenderingBeginInfoEXT21934     pub fn build(self) -> ConditionalRenderingBeginInfoEXT {
21935         self.inner
21936     }
21937 }
21938 #[repr(C)]
21939 #[derive(Copy, Clone, Debug)]
21940 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkProtectedSubmitInfo.html>"]
21941 pub struct ProtectedSubmitInfo {
21942     pub s_type: StructureType,
21943     pub p_next: *const c_void,
21944     pub protected_submit: Bool32,
21945 }
21946 impl ::std::default::Default for ProtectedSubmitInfo {
default() -> ProtectedSubmitInfo21947     fn default() -> ProtectedSubmitInfo {
21948         ProtectedSubmitInfo {
21949             s_type: StructureType::PROTECTED_SUBMIT_INFO,
21950             p_next: ::std::ptr::null(),
21951             protected_submit: Bool32::default(),
21952         }
21953     }
21954 }
21955 impl ProtectedSubmitInfo {
builder<'a>() -> ProtectedSubmitInfoBuilder<'a>21956     pub fn builder<'a>() -> ProtectedSubmitInfoBuilder<'a> {
21957         ProtectedSubmitInfoBuilder {
21958             inner: ProtectedSubmitInfo::default(),
21959             marker: ::std::marker::PhantomData,
21960         }
21961     }
21962 }
21963 #[repr(transparent)]
21964 pub struct ProtectedSubmitInfoBuilder<'a> {
21965     inner: ProtectedSubmitInfo,
21966     marker: ::std::marker::PhantomData<&'a ()>,
21967 }
21968 unsafe impl ExtendsSubmitInfo for ProtectedSubmitInfoBuilder<'_> {}
21969 unsafe impl ExtendsSubmitInfo for ProtectedSubmitInfo {}
21970 impl<'a> ::std::ops::Deref for ProtectedSubmitInfoBuilder<'a> {
21971     type Target = ProtectedSubmitInfo;
deref(&self) -> &Self::Target21972     fn deref(&self) -> &Self::Target {
21973         &self.inner
21974     }
21975 }
21976 impl<'a> ::std::ops::DerefMut for ProtectedSubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21977     fn deref_mut(&mut self) -> &mut Self::Target {
21978         &mut self.inner
21979     }
21980 }
21981 impl<'a> ProtectedSubmitInfoBuilder<'a> {
protected_submit(mut self, protected_submit: bool) -> Self21982     pub fn protected_submit(mut self, protected_submit: bool) -> Self {
21983         self.inner.protected_submit = protected_submit.into();
21984         self
21985     }
21986     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21987     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21988     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ProtectedSubmitInfo21989     pub fn build(self) -> ProtectedSubmitInfo {
21990         self.inner
21991     }
21992 }
21993 #[repr(C)]
21994 #[derive(Copy, Clone, Debug)]
21995 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>"]
21996 pub struct PhysicalDeviceProtectedMemoryFeatures {
21997     pub s_type: StructureType,
21998     pub p_next: *mut c_void,
21999     pub protected_memory: Bool32,
22000 }
22001 impl ::std::default::Default for PhysicalDeviceProtectedMemoryFeatures {
default() -> PhysicalDeviceProtectedMemoryFeatures22002     fn default() -> PhysicalDeviceProtectedMemoryFeatures {
22003         PhysicalDeviceProtectedMemoryFeatures {
22004             s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
22005             p_next: ::std::ptr::null_mut(),
22006             protected_memory: Bool32::default(),
22007         }
22008     }
22009 }
22010 impl PhysicalDeviceProtectedMemoryFeatures {
builder<'a>() -> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a>22011     pub fn builder<'a>() -> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22012         PhysicalDeviceProtectedMemoryFeaturesBuilder {
22013             inner: PhysicalDeviceProtectedMemoryFeatures::default(),
22014             marker: ::std::marker::PhantomData,
22015         }
22016     }
22017 }
22018 #[repr(transparent)]
22019 pub struct PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22020     inner: PhysicalDeviceProtectedMemoryFeatures,
22021     marker: ::std::marker::PhantomData<&'a ()>,
22022 }
22023 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProtectedMemoryFeaturesBuilder<'_> {}
22024 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProtectedMemoryFeatures {}
22025 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProtectedMemoryFeaturesBuilder<'_> {}
22026 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProtectedMemoryFeatures {}
22027 impl<'a> ::std::ops::Deref for PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22028     type Target = PhysicalDeviceProtectedMemoryFeatures;
deref(&self) -> &Self::Target22029     fn deref(&self) -> &Self::Target {
22030         &self.inner
22031     }
22032 }
22033 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22034     fn deref_mut(&mut self) -> &mut Self::Target {
22035         &mut self.inner
22036     }
22037 }
22038 impl<'a> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
protected_memory(mut self, protected_memory: bool) -> Self22039     pub fn protected_memory(mut self, protected_memory: bool) -> Self {
22040         self.inner.protected_memory = protected_memory.into();
22041         self
22042     }
22043     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22044     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22045     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProtectedMemoryFeatures22046     pub fn build(self) -> PhysicalDeviceProtectedMemoryFeatures {
22047         self.inner
22048     }
22049 }
22050 #[repr(C)]
22051 #[derive(Copy, Clone, Debug)]
22052 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>"]
22053 pub struct PhysicalDeviceProtectedMemoryProperties {
22054     pub s_type: StructureType,
22055     pub p_next: *mut c_void,
22056     pub protected_no_fault: Bool32,
22057 }
22058 impl ::std::default::Default for PhysicalDeviceProtectedMemoryProperties {
default() -> PhysicalDeviceProtectedMemoryProperties22059     fn default() -> PhysicalDeviceProtectedMemoryProperties {
22060         PhysicalDeviceProtectedMemoryProperties {
22061             s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
22062             p_next: ::std::ptr::null_mut(),
22063             protected_no_fault: Bool32::default(),
22064         }
22065     }
22066 }
22067 impl PhysicalDeviceProtectedMemoryProperties {
builder<'a>() -> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a>22068     pub fn builder<'a>() -> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22069         PhysicalDeviceProtectedMemoryPropertiesBuilder {
22070             inner: PhysicalDeviceProtectedMemoryProperties::default(),
22071             marker: ::std::marker::PhantomData,
22072         }
22073     }
22074 }
22075 #[repr(transparent)]
22076 pub struct PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22077     inner: PhysicalDeviceProtectedMemoryProperties,
22078     marker: ::std::marker::PhantomData<&'a ()>,
22079 }
22080 unsafe impl ExtendsPhysicalDeviceProperties2
22081     for PhysicalDeviceProtectedMemoryPropertiesBuilder<'_>
22082 {
22083 }
22084 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceProtectedMemoryProperties {}
22085 impl<'a> ::std::ops::Deref for PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22086     type Target = PhysicalDeviceProtectedMemoryProperties;
deref(&self) -> &Self::Target22087     fn deref(&self) -> &Self::Target {
22088         &self.inner
22089     }
22090 }
22091 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22092     fn deref_mut(&mut self) -> &mut Self::Target {
22093         &mut self.inner
22094     }
22095 }
22096 impl<'a> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
protected_no_fault(mut self, protected_no_fault: bool) -> Self22097     pub fn protected_no_fault(mut self, protected_no_fault: bool) -> Self {
22098         self.inner.protected_no_fault = protected_no_fault.into();
22099         self
22100     }
22101     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22102     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22103     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProtectedMemoryProperties22104     pub fn build(self) -> PhysicalDeviceProtectedMemoryProperties {
22105         self.inner
22106     }
22107 }
22108 #[repr(C)]
22109 #[derive(Copy, Clone, Debug)]
22110 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueInfo2.html>"]
22111 pub struct DeviceQueueInfo2 {
22112     pub s_type: StructureType,
22113     pub p_next: *const c_void,
22114     pub flags: DeviceQueueCreateFlags,
22115     pub queue_family_index: u32,
22116     pub queue_index: u32,
22117 }
22118 impl ::std::default::Default for DeviceQueueInfo2 {
default() -> DeviceQueueInfo222119     fn default() -> DeviceQueueInfo2 {
22120         DeviceQueueInfo2 {
22121             s_type: StructureType::DEVICE_QUEUE_INFO_2,
22122             p_next: ::std::ptr::null(),
22123             flags: DeviceQueueCreateFlags::default(),
22124             queue_family_index: u32::default(),
22125             queue_index: u32::default(),
22126         }
22127     }
22128 }
22129 impl DeviceQueueInfo2 {
builder<'a>() -> DeviceQueueInfo2Builder<'a>22130     pub fn builder<'a>() -> DeviceQueueInfo2Builder<'a> {
22131         DeviceQueueInfo2Builder {
22132             inner: DeviceQueueInfo2::default(),
22133             marker: ::std::marker::PhantomData,
22134         }
22135     }
22136 }
22137 #[repr(transparent)]
22138 pub struct DeviceQueueInfo2Builder<'a> {
22139     inner: DeviceQueueInfo2,
22140     marker: ::std::marker::PhantomData<&'a ()>,
22141 }
22142 impl<'a> ::std::ops::Deref for DeviceQueueInfo2Builder<'a> {
22143     type Target = DeviceQueueInfo2;
deref(&self) -> &Self::Target22144     fn deref(&self) -> &Self::Target {
22145         &self.inner
22146     }
22147 }
22148 impl<'a> ::std::ops::DerefMut for DeviceQueueInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target22149     fn deref_mut(&mut self) -> &mut Self::Target {
22150         &mut self.inner
22151     }
22152 }
22153 impl<'a> DeviceQueueInfo2Builder<'a> {
flags(mut self, flags: DeviceQueueCreateFlags) -> Self22154     pub fn flags(mut self, flags: DeviceQueueCreateFlags) -> Self {
22155         self.inner.flags = flags;
22156         self
22157     }
queue_family_index(mut self, queue_family_index: u32) -> Self22158     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
22159         self.inner.queue_family_index = queue_family_index;
22160         self
22161     }
queue_index(mut self, queue_index: u32) -> Self22162     pub fn queue_index(mut self, queue_index: u32) -> Self {
22163         self.inner.queue_index = queue_index;
22164         self
22165     }
22166     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22167     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22168     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceQueueInfo222169     pub fn build(self) -> DeviceQueueInfo2 {
22170         self.inner
22171     }
22172 }
22173 #[repr(C)]
22174 #[derive(Copy, Clone, Debug)]
22175 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>"]
22176 pub struct PipelineCoverageToColorStateCreateInfoNV {
22177     pub s_type: StructureType,
22178     pub p_next: *const c_void,
22179     pub flags: PipelineCoverageToColorStateCreateFlagsNV,
22180     pub coverage_to_color_enable: Bool32,
22181     pub coverage_to_color_location: u32,
22182 }
22183 impl ::std::default::Default for PipelineCoverageToColorStateCreateInfoNV {
default() -> PipelineCoverageToColorStateCreateInfoNV22184     fn default() -> PipelineCoverageToColorStateCreateInfoNV {
22185         PipelineCoverageToColorStateCreateInfoNV {
22186             s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
22187             p_next: ::std::ptr::null(),
22188             flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
22189             coverage_to_color_enable: Bool32::default(),
22190             coverage_to_color_location: u32::default(),
22191         }
22192     }
22193 }
22194 impl PipelineCoverageToColorStateCreateInfoNV {
builder<'a>() -> PipelineCoverageToColorStateCreateInfoNVBuilder<'a>22195     pub fn builder<'a>() -> PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22196         PipelineCoverageToColorStateCreateInfoNVBuilder {
22197             inner: PipelineCoverageToColorStateCreateInfoNV::default(),
22198             marker: ::std::marker::PhantomData,
22199         }
22200     }
22201 }
22202 #[repr(transparent)]
22203 pub struct PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22204     inner: PipelineCoverageToColorStateCreateInfoNV,
22205     marker: ::std::marker::PhantomData<&'a ()>,
22206 }
22207 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
22208     for PipelineCoverageToColorStateCreateInfoNVBuilder<'_>
22209 {
22210 }
22211 unsafe impl ExtendsPipelineMultisampleStateCreateInfo for PipelineCoverageToColorStateCreateInfoNV {}
22212 impl<'a> ::std::ops::Deref for PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22213     type Target = PipelineCoverageToColorStateCreateInfoNV;
deref(&self) -> &Self::Target22214     fn deref(&self) -> &Self::Target {
22215         &self.inner
22216     }
22217 }
22218 impl<'a> ::std::ops::DerefMut for PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22219     fn deref_mut(&mut self) -> &mut Self::Target {
22220         &mut self.inner
22221     }
22222 }
22223 impl<'a> PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCoverageToColorStateCreateFlagsNV) -> Self22224     pub fn flags(mut self, flags: PipelineCoverageToColorStateCreateFlagsNV) -> Self {
22225         self.inner.flags = flags;
22226         self
22227     }
coverage_to_color_enable(mut self, coverage_to_color_enable: bool) -> Self22228     pub fn coverage_to_color_enable(mut self, coverage_to_color_enable: bool) -> Self {
22229         self.inner.coverage_to_color_enable = coverage_to_color_enable.into();
22230         self
22231     }
coverage_to_color_location(mut self, coverage_to_color_location: u32) -> Self22232     pub fn coverage_to_color_location(mut self, coverage_to_color_location: u32) -> Self {
22233         self.inner.coverage_to_color_location = coverage_to_color_location;
22234         self
22235     }
22236     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22237     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22238     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCoverageToColorStateCreateInfoNV22239     pub fn build(self) -> PipelineCoverageToColorStateCreateInfoNV {
22240         self.inner
22241     }
22242 }
22243 #[repr(C)]
22244 #[derive(Copy, Clone, Debug)]
22245 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>"]
22246 pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
22247     pub s_type: StructureType,
22248     pub p_next: *mut c_void,
22249     pub filter_minmax_single_component_formats: Bool32,
22250     pub filter_minmax_image_component_mapping: Bool32,
22251 }
22252 impl ::std::default::Default for PhysicalDeviceSamplerFilterMinmaxProperties {
default() -> PhysicalDeviceSamplerFilterMinmaxProperties22253     fn default() -> PhysicalDeviceSamplerFilterMinmaxProperties {
22254         PhysicalDeviceSamplerFilterMinmaxProperties {
22255             s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
22256             p_next: ::std::ptr::null_mut(),
22257             filter_minmax_single_component_formats: Bool32::default(),
22258             filter_minmax_image_component_mapping: Bool32::default(),
22259         }
22260     }
22261 }
22262 impl PhysicalDeviceSamplerFilterMinmaxProperties {
builder<'a>() -> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a>22263     pub fn builder<'a>() -> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22264         PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder {
22265             inner: PhysicalDeviceSamplerFilterMinmaxProperties::default(),
22266             marker: ::std::marker::PhantomData,
22267         }
22268     }
22269 }
22270 #[repr(transparent)]
22271 pub struct PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22272     inner: PhysicalDeviceSamplerFilterMinmaxProperties,
22273     marker: ::std::marker::PhantomData<&'a ()>,
22274 }
22275 unsafe impl ExtendsPhysicalDeviceProperties2
22276     for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'_>
22277 {
22278 }
22279 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSamplerFilterMinmaxProperties {}
22280 impl<'a> ::std::ops::Deref for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22281     type Target = PhysicalDeviceSamplerFilterMinmaxProperties;
deref(&self) -> &Self::Target22282     fn deref(&self) -> &Self::Target {
22283         &self.inner
22284     }
22285 }
22286 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22287     fn deref_mut(&mut self) -> &mut Self::Target {
22288         &mut self.inner
22289     }
22290 }
22291 impl<'a> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
filter_minmax_single_component_formats( mut self, filter_minmax_single_component_formats: bool, ) -> Self22292     pub fn filter_minmax_single_component_formats(
22293         mut self,
22294         filter_minmax_single_component_formats: bool,
22295     ) -> Self {
22296         self.inner.filter_minmax_single_component_formats =
22297             filter_minmax_single_component_formats.into();
22298         self
22299     }
filter_minmax_image_component_mapping( mut self, filter_minmax_image_component_mapping: bool, ) -> Self22300     pub fn filter_minmax_image_component_mapping(
22301         mut self,
22302         filter_minmax_image_component_mapping: bool,
22303     ) -> Self {
22304         self.inner.filter_minmax_image_component_mapping =
22305             filter_minmax_image_component_mapping.into();
22306         self
22307     }
22308     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22309     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22310     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSamplerFilterMinmaxProperties22311     pub fn build(self) -> PhysicalDeviceSamplerFilterMinmaxProperties {
22312         self.inner
22313     }
22314 }
22315 #[repr(C)]
22316 #[derive(Copy, Clone, Default, Debug)]
22317 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleLocationEXT.html>"]
22318 pub struct SampleLocationEXT {
22319     pub x: f32,
22320     pub y: f32,
22321 }
22322 impl SampleLocationEXT {
builder<'a>() -> SampleLocationEXTBuilder<'a>22323     pub fn builder<'a>() -> SampleLocationEXTBuilder<'a> {
22324         SampleLocationEXTBuilder {
22325             inner: SampleLocationEXT::default(),
22326             marker: ::std::marker::PhantomData,
22327         }
22328     }
22329 }
22330 #[repr(transparent)]
22331 pub struct SampleLocationEXTBuilder<'a> {
22332     inner: SampleLocationEXT,
22333     marker: ::std::marker::PhantomData<&'a ()>,
22334 }
22335 impl<'a> ::std::ops::Deref for SampleLocationEXTBuilder<'a> {
22336     type Target = SampleLocationEXT;
deref(&self) -> &Self::Target22337     fn deref(&self) -> &Self::Target {
22338         &self.inner
22339     }
22340 }
22341 impl<'a> ::std::ops::DerefMut for SampleLocationEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22342     fn deref_mut(&mut self) -> &mut Self::Target {
22343         &mut self.inner
22344     }
22345 }
22346 impl<'a> SampleLocationEXTBuilder<'a> {
x(mut self, x: f32) -> Self22347     pub fn x(mut self, x: f32) -> Self {
22348         self.inner.x = x;
22349         self
22350     }
y(mut self, y: f32) -> Self22351     pub fn y(mut self, y: f32) -> Self {
22352         self.inner.y = y;
22353         self
22354     }
22355     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22356     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22357     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SampleLocationEXT22358     pub fn build(self) -> SampleLocationEXT {
22359         self.inner
22360     }
22361 }
22362 #[repr(C)]
22363 #[derive(Copy, Clone, Debug)]
22364 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleLocationsInfoEXT.html>"]
22365 pub struct SampleLocationsInfoEXT {
22366     pub s_type: StructureType,
22367     pub p_next: *const c_void,
22368     pub sample_locations_per_pixel: SampleCountFlags,
22369     pub sample_location_grid_size: Extent2D,
22370     pub sample_locations_count: u32,
22371     pub p_sample_locations: *const SampleLocationEXT,
22372 }
22373 impl ::std::default::Default for SampleLocationsInfoEXT {
default() -> SampleLocationsInfoEXT22374     fn default() -> SampleLocationsInfoEXT {
22375         SampleLocationsInfoEXT {
22376             s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
22377             p_next: ::std::ptr::null(),
22378             sample_locations_per_pixel: SampleCountFlags::default(),
22379             sample_location_grid_size: Extent2D::default(),
22380             sample_locations_count: u32::default(),
22381             p_sample_locations: ::std::ptr::null(),
22382         }
22383     }
22384 }
22385 impl SampleLocationsInfoEXT {
builder<'a>() -> SampleLocationsInfoEXTBuilder<'a>22386     pub fn builder<'a>() -> SampleLocationsInfoEXTBuilder<'a> {
22387         SampleLocationsInfoEXTBuilder {
22388             inner: SampleLocationsInfoEXT::default(),
22389             marker: ::std::marker::PhantomData,
22390         }
22391     }
22392 }
22393 #[repr(transparent)]
22394 pub struct SampleLocationsInfoEXTBuilder<'a> {
22395     inner: SampleLocationsInfoEXT,
22396     marker: ::std::marker::PhantomData<&'a ()>,
22397 }
22398 unsafe impl ExtendsImageMemoryBarrier for SampleLocationsInfoEXTBuilder<'_> {}
22399 unsafe impl ExtendsImageMemoryBarrier for SampleLocationsInfoEXT {}
22400 unsafe impl ExtendsImageMemoryBarrier2KHR for SampleLocationsInfoEXTBuilder<'_> {}
22401 unsafe impl ExtendsImageMemoryBarrier2KHR for SampleLocationsInfoEXT {}
22402 impl<'a> ::std::ops::Deref for SampleLocationsInfoEXTBuilder<'a> {
22403     type Target = SampleLocationsInfoEXT;
deref(&self) -> &Self::Target22404     fn deref(&self) -> &Self::Target {
22405         &self.inner
22406     }
22407 }
22408 impl<'a> ::std::ops::DerefMut for SampleLocationsInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22409     fn deref_mut(&mut self) -> &mut Self::Target {
22410         &mut self.inner
22411     }
22412 }
22413 impl<'a> SampleLocationsInfoEXTBuilder<'a> {
sample_locations_per_pixel( mut self, sample_locations_per_pixel: SampleCountFlags, ) -> Self22414     pub fn sample_locations_per_pixel(
22415         mut self,
22416         sample_locations_per_pixel: SampleCountFlags,
22417     ) -> Self {
22418         self.inner.sample_locations_per_pixel = sample_locations_per_pixel;
22419         self
22420     }
sample_location_grid_size(mut self, sample_location_grid_size: Extent2D) -> Self22421     pub fn sample_location_grid_size(mut self, sample_location_grid_size: Extent2D) -> Self {
22422         self.inner.sample_location_grid_size = sample_location_grid_size;
22423         self
22424     }
sample_locations(mut self, sample_locations: &'a [SampleLocationEXT]) -> Self22425     pub fn sample_locations(mut self, sample_locations: &'a [SampleLocationEXT]) -> Self {
22426         self.inner.sample_locations_count = sample_locations.len() as _;
22427         self.inner.p_sample_locations = sample_locations.as_ptr();
22428         self
22429     }
22430     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22431     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22432     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SampleLocationsInfoEXT22433     pub fn build(self) -> SampleLocationsInfoEXT {
22434         self.inner
22435     }
22436 }
22437 #[repr(C)]
22438 #[derive(Copy, Clone, Default, Debug)]
22439 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentSampleLocationsEXT.html>"]
22440 pub struct AttachmentSampleLocationsEXT {
22441     pub attachment_index: u32,
22442     pub sample_locations_info: SampleLocationsInfoEXT,
22443 }
22444 impl AttachmentSampleLocationsEXT {
builder<'a>() -> AttachmentSampleLocationsEXTBuilder<'a>22445     pub fn builder<'a>() -> AttachmentSampleLocationsEXTBuilder<'a> {
22446         AttachmentSampleLocationsEXTBuilder {
22447             inner: AttachmentSampleLocationsEXT::default(),
22448             marker: ::std::marker::PhantomData,
22449         }
22450     }
22451 }
22452 #[repr(transparent)]
22453 pub struct AttachmentSampleLocationsEXTBuilder<'a> {
22454     inner: AttachmentSampleLocationsEXT,
22455     marker: ::std::marker::PhantomData<&'a ()>,
22456 }
22457 impl<'a> ::std::ops::Deref for AttachmentSampleLocationsEXTBuilder<'a> {
22458     type Target = AttachmentSampleLocationsEXT;
deref(&self) -> &Self::Target22459     fn deref(&self) -> &Self::Target {
22460         &self.inner
22461     }
22462 }
22463 impl<'a> ::std::ops::DerefMut for AttachmentSampleLocationsEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22464     fn deref_mut(&mut self) -> &mut Self::Target {
22465         &mut self.inner
22466     }
22467 }
22468 impl<'a> AttachmentSampleLocationsEXTBuilder<'a> {
attachment_index(mut self, attachment_index: u32) -> Self22469     pub fn attachment_index(mut self, attachment_index: u32) -> Self {
22470         self.inner.attachment_index = attachment_index;
22471         self
22472     }
sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self22473     pub fn sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self {
22474         self.inner.sample_locations_info = sample_locations_info;
22475         self
22476     }
22477     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22478     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22479     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentSampleLocationsEXT22480     pub fn build(self) -> AttachmentSampleLocationsEXT {
22481         self.inner
22482     }
22483 }
22484 #[repr(C)]
22485 #[derive(Copy, Clone, Default, Debug)]
22486 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassSampleLocationsEXT.html>"]
22487 pub struct SubpassSampleLocationsEXT {
22488     pub subpass_index: u32,
22489     pub sample_locations_info: SampleLocationsInfoEXT,
22490 }
22491 impl SubpassSampleLocationsEXT {
builder<'a>() -> SubpassSampleLocationsEXTBuilder<'a>22492     pub fn builder<'a>() -> SubpassSampleLocationsEXTBuilder<'a> {
22493         SubpassSampleLocationsEXTBuilder {
22494             inner: SubpassSampleLocationsEXT::default(),
22495             marker: ::std::marker::PhantomData,
22496         }
22497     }
22498 }
22499 #[repr(transparent)]
22500 pub struct SubpassSampleLocationsEXTBuilder<'a> {
22501     inner: SubpassSampleLocationsEXT,
22502     marker: ::std::marker::PhantomData<&'a ()>,
22503 }
22504 impl<'a> ::std::ops::Deref for SubpassSampleLocationsEXTBuilder<'a> {
22505     type Target = SubpassSampleLocationsEXT;
deref(&self) -> &Self::Target22506     fn deref(&self) -> &Self::Target {
22507         &self.inner
22508     }
22509 }
22510 impl<'a> ::std::ops::DerefMut for SubpassSampleLocationsEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22511     fn deref_mut(&mut self) -> &mut Self::Target {
22512         &mut self.inner
22513     }
22514 }
22515 impl<'a> SubpassSampleLocationsEXTBuilder<'a> {
subpass_index(mut self, subpass_index: u32) -> Self22516     pub fn subpass_index(mut self, subpass_index: u32) -> Self {
22517         self.inner.subpass_index = subpass_index;
22518         self
22519     }
sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self22520     pub fn sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self {
22521         self.inner.sample_locations_info = sample_locations_info;
22522         self
22523     }
22524     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22525     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22526     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassSampleLocationsEXT22527     pub fn build(self) -> SubpassSampleLocationsEXT {
22528         self.inner
22529     }
22530 }
22531 #[repr(C)]
22532 #[derive(Copy, Clone, Debug)]
22533 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>"]
22534 pub struct RenderPassSampleLocationsBeginInfoEXT {
22535     pub s_type: StructureType,
22536     pub p_next: *const c_void,
22537     pub attachment_initial_sample_locations_count: u32,
22538     pub p_attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
22539     pub post_subpass_sample_locations_count: u32,
22540     pub p_post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
22541 }
22542 impl ::std::default::Default for RenderPassSampleLocationsBeginInfoEXT {
default() -> RenderPassSampleLocationsBeginInfoEXT22543     fn default() -> RenderPassSampleLocationsBeginInfoEXT {
22544         RenderPassSampleLocationsBeginInfoEXT {
22545             s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
22546             p_next: ::std::ptr::null(),
22547             attachment_initial_sample_locations_count: u32::default(),
22548             p_attachment_initial_sample_locations: ::std::ptr::null(),
22549             post_subpass_sample_locations_count: u32::default(),
22550             p_post_subpass_sample_locations: ::std::ptr::null(),
22551         }
22552     }
22553 }
22554 impl RenderPassSampleLocationsBeginInfoEXT {
builder<'a>() -> RenderPassSampleLocationsBeginInfoEXTBuilder<'a>22555     pub fn builder<'a>() -> RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
22556         RenderPassSampleLocationsBeginInfoEXTBuilder {
22557             inner: RenderPassSampleLocationsBeginInfoEXT::default(),
22558             marker: ::std::marker::PhantomData,
22559         }
22560     }
22561 }
22562 #[repr(transparent)]
22563 pub struct RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
22564     inner: RenderPassSampleLocationsBeginInfoEXT,
22565     marker: ::std::marker::PhantomData<&'a ()>,
22566 }
22567 unsafe impl ExtendsRenderPassBeginInfo for RenderPassSampleLocationsBeginInfoEXTBuilder<'_> {}
22568 unsafe impl ExtendsRenderPassBeginInfo for RenderPassSampleLocationsBeginInfoEXT {}
22569 impl<'a> ::std::ops::Deref for RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
22570     type Target = RenderPassSampleLocationsBeginInfoEXT;
deref(&self) -> &Self::Target22571     fn deref(&self) -> &Self::Target {
22572         &self.inner
22573     }
22574 }
22575 impl<'a> ::std::ops::DerefMut for RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22576     fn deref_mut(&mut self) -> &mut Self::Target {
22577         &mut self.inner
22578     }
22579 }
22580 impl<'a> RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
attachment_initial_sample_locations( mut self, attachment_initial_sample_locations: &'a [AttachmentSampleLocationsEXT], ) -> Self22581     pub fn attachment_initial_sample_locations(
22582         mut self,
22583         attachment_initial_sample_locations: &'a [AttachmentSampleLocationsEXT],
22584     ) -> Self {
22585         self.inner.attachment_initial_sample_locations_count =
22586             attachment_initial_sample_locations.len() as _;
22587         self.inner.p_attachment_initial_sample_locations =
22588             attachment_initial_sample_locations.as_ptr();
22589         self
22590     }
post_subpass_sample_locations( mut self, post_subpass_sample_locations: &'a [SubpassSampleLocationsEXT], ) -> Self22591     pub fn post_subpass_sample_locations(
22592         mut self,
22593         post_subpass_sample_locations: &'a [SubpassSampleLocationsEXT],
22594     ) -> Self {
22595         self.inner.post_subpass_sample_locations_count = post_subpass_sample_locations.len() as _;
22596         self.inner.p_post_subpass_sample_locations = post_subpass_sample_locations.as_ptr();
22597         self
22598     }
22599     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22600     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22601     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassSampleLocationsBeginInfoEXT22602     pub fn build(self) -> RenderPassSampleLocationsBeginInfoEXT {
22603         self.inner
22604     }
22605 }
22606 #[repr(C)]
22607 #[derive(Copy, Clone, Debug)]
22608 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>"]
22609 pub struct PipelineSampleLocationsStateCreateInfoEXT {
22610     pub s_type: StructureType,
22611     pub p_next: *const c_void,
22612     pub sample_locations_enable: Bool32,
22613     pub sample_locations_info: SampleLocationsInfoEXT,
22614 }
22615 impl ::std::default::Default for PipelineSampleLocationsStateCreateInfoEXT {
default() -> PipelineSampleLocationsStateCreateInfoEXT22616     fn default() -> PipelineSampleLocationsStateCreateInfoEXT {
22617         PipelineSampleLocationsStateCreateInfoEXT {
22618             s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
22619             p_next: ::std::ptr::null(),
22620             sample_locations_enable: Bool32::default(),
22621             sample_locations_info: SampleLocationsInfoEXT::default(),
22622         }
22623     }
22624 }
22625 impl PipelineSampleLocationsStateCreateInfoEXT {
builder<'a>() -> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a>22626     pub fn builder<'a>() -> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
22627         PipelineSampleLocationsStateCreateInfoEXTBuilder {
22628             inner: PipelineSampleLocationsStateCreateInfoEXT::default(),
22629             marker: ::std::marker::PhantomData,
22630         }
22631     }
22632 }
22633 #[repr(transparent)]
22634 pub struct PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
22635     inner: PipelineSampleLocationsStateCreateInfoEXT,
22636     marker: ::std::marker::PhantomData<&'a ()>,
22637 }
22638 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
22639     for PipelineSampleLocationsStateCreateInfoEXTBuilder<'_>
22640 {
22641 }
22642 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
22643     for PipelineSampleLocationsStateCreateInfoEXT
22644 {
22645 }
22646 impl<'a> ::std::ops::Deref for PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
22647     type Target = PipelineSampleLocationsStateCreateInfoEXT;
deref(&self) -> &Self::Target22648     fn deref(&self) -> &Self::Target {
22649         &self.inner
22650     }
22651 }
22652 impl<'a> ::std::ops::DerefMut for PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22653     fn deref_mut(&mut self) -> &mut Self::Target {
22654         &mut self.inner
22655     }
22656 }
22657 impl<'a> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
sample_locations_enable(mut self, sample_locations_enable: bool) -> Self22658     pub fn sample_locations_enable(mut self, sample_locations_enable: bool) -> Self {
22659         self.inner.sample_locations_enable = sample_locations_enable.into();
22660         self
22661     }
sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self22662     pub fn sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self {
22663         self.inner.sample_locations_info = sample_locations_info;
22664         self
22665     }
22666     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22667     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22668     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineSampleLocationsStateCreateInfoEXT22669     pub fn build(self) -> PipelineSampleLocationsStateCreateInfoEXT {
22670         self.inner
22671     }
22672 }
22673 #[repr(C)]
22674 #[derive(Copy, Clone, Debug)]
22675 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>"]
22676 pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
22677     pub s_type: StructureType,
22678     pub p_next: *mut c_void,
22679     pub sample_location_sample_counts: SampleCountFlags,
22680     pub max_sample_location_grid_size: Extent2D,
22681     pub sample_location_coordinate_range: [f32; 2],
22682     pub sample_location_sub_pixel_bits: u32,
22683     pub variable_sample_locations: Bool32,
22684 }
22685 impl ::std::default::Default for PhysicalDeviceSampleLocationsPropertiesEXT {
default() -> PhysicalDeviceSampleLocationsPropertiesEXT22686     fn default() -> PhysicalDeviceSampleLocationsPropertiesEXT {
22687         PhysicalDeviceSampleLocationsPropertiesEXT {
22688             s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
22689             p_next: ::std::ptr::null_mut(),
22690             sample_location_sample_counts: SampleCountFlags::default(),
22691             max_sample_location_grid_size: Extent2D::default(),
22692             sample_location_coordinate_range: unsafe { ::std::mem::zeroed() },
22693             sample_location_sub_pixel_bits: u32::default(),
22694             variable_sample_locations: Bool32::default(),
22695         }
22696     }
22697 }
22698 impl PhysicalDeviceSampleLocationsPropertiesEXT {
builder<'a>() -> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a>22699     pub fn builder<'a>() -> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
22700         PhysicalDeviceSampleLocationsPropertiesEXTBuilder {
22701             inner: PhysicalDeviceSampleLocationsPropertiesEXT::default(),
22702             marker: ::std::marker::PhantomData,
22703         }
22704     }
22705 }
22706 #[repr(transparent)]
22707 pub struct PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
22708     inner: PhysicalDeviceSampleLocationsPropertiesEXT,
22709     marker: ::std::marker::PhantomData<&'a ()>,
22710 }
22711 unsafe impl ExtendsPhysicalDeviceProperties2
22712     for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'_>
22713 {
22714 }
22715 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSampleLocationsPropertiesEXT {}
22716 impl<'a> ::std::ops::Deref for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
22717     type Target = PhysicalDeviceSampleLocationsPropertiesEXT;
deref(&self) -> &Self::Target22718     fn deref(&self) -> &Self::Target {
22719         &self.inner
22720     }
22721 }
22722 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22723     fn deref_mut(&mut self) -> &mut Self::Target {
22724         &mut self.inner
22725     }
22726 }
22727 impl<'a> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
sample_location_sample_counts( mut self, sample_location_sample_counts: SampleCountFlags, ) -> Self22728     pub fn sample_location_sample_counts(
22729         mut self,
22730         sample_location_sample_counts: SampleCountFlags,
22731     ) -> Self {
22732         self.inner.sample_location_sample_counts = sample_location_sample_counts;
22733         self
22734     }
max_sample_location_grid_size( mut self, max_sample_location_grid_size: Extent2D, ) -> Self22735     pub fn max_sample_location_grid_size(
22736         mut self,
22737         max_sample_location_grid_size: Extent2D,
22738     ) -> Self {
22739         self.inner.max_sample_location_grid_size = max_sample_location_grid_size;
22740         self
22741     }
sample_location_coordinate_range( mut self, sample_location_coordinate_range: [f32; 2], ) -> Self22742     pub fn sample_location_coordinate_range(
22743         mut self,
22744         sample_location_coordinate_range: [f32; 2],
22745     ) -> Self {
22746         self.inner.sample_location_coordinate_range = sample_location_coordinate_range;
22747         self
22748     }
sample_location_sub_pixel_bits(mut self, sample_location_sub_pixel_bits: u32) -> Self22749     pub fn sample_location_sub_pixel_bits(mut self, sample_location_sub_pixel_bits: u32) -> Self {
22750         self.inner.sample_location_sub_pixel_bits = sample_location_sub_pixel_bits;
22751         self
22752     }
variable_sample_locations(mut self, variable_sample_locations: bool) -> Self22753     pub fn variable_sample_locations(mut self, variable_sample_locations: bool) -> Self {
22754         self.inner.variable_sample_locations = variable_sample_locations.into();
22755         self
22756     }
22757     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22758     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22759     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSampleLocationsPropertiesEXT22760     pub fn build(self) -> PhysicalDeviceSampleLocationsPropertiesEXT {
22761         self.inner
22762     }
22763 }
22764 #[repr(C)]
22765 #[derive(Copy, Clone, Debug)]
22766 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMultisamplePropertiesEXT.html>"]
22767 pub struct MultisamplePropertiesEXT {
22768     pub s_type: StructureType,
22769     pub p_next: *mut c_void,
22770     pub max_sample_location_grid_size: Extent2D,
22771 }
22772 impl ::std::default::Default for MultisamplePropertiesEXT {
default() -> MultisamplePropertiesEXT22773     fn default() -> MultisamplePropertiesEXT {
22774         MultisamplePropertiesEXT {
22775             s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
22776             p_next: ::std::ptr::null_mut(),
22777             max_sample_location_grid_size: Extent2D::default(),
22778         }
22779     }
22780 }
22781 impl MultisamplePropertiesEXT {
builder<'a>() -> MultisamplePropertiesEXTBuilder<'a>22782     pub fn builder<'a>() -> MultisamplePropertiesEXTBuilder<'a> {
22783         MultisamplePropertiesEXTBuilder {
22784             inner: MultisamplePropertiesEXT::default(),
22785             marker: ::std::marker::PhantomData,
22786         }
22787     }
22788 }
22789 #[repr(transparent)]
22790 pub struct MultisamplePropertiesEXTBuilder<'a> {
22791     inner: MultisamplePropertiesEXT,
22792     marker: ::std::marker::PhantomData<&'a ()>,
22793 }
22794 impl<'a> ::std::ops::Deref for MultisamplePropertiesEXTBuilder<'a> {
22795     type Target = MultisamplePropertiesEXT;
deref(&self) -> &Self::Target22796     fn deref(&self) -> &Self::Target {
22797         &self.inner
22798     }
22799 }
22800 impl<'a> ::std::ops::DerefMut for MultisamplePropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22801     fn deref_mut(&mut self) -> &mut Self::Target {
22802         &mut self.inner
22803     }
22804 }
22805 impl<'a> MultisamplePropertiesEXTBuilder<'a> {
max_sample_location_grid_size( mut self, max_sample_location_grid_size: Extent2D, ) -> Self22806     pub fn max_sample_location_grid_size(
22807         mut self,
22808         max_sample_location_grid_size: Extent2D,
22809     ) -> Self {
22810         self.inner.max_sample_location_grid_size = max_sample_location_grid_size;
22811         self
22812     }
22813     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22814     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22815     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MultisamplePropertiesEXT22816     pub fn build(self) -> MultisamplePropertiesEXT {
22817         self.inner
22818     }
22819 }
22820 #[repr(C)]
22821 #[derive(Copy, Clone, Debug)]
22822 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerReductionModeCreateInfo.html>"]
22823 pub struct SamplerReductionModeCreateInfo {
22824     pub s_type: StructureType,
22825     pub p_next: *const c_void,
22826     pub reduction_mode: SamplerReductionMode,
22827 }
22828 impl ::std::default::Default for SamplerReductionModeCreateInfo {
default() -> SamplerReductionModeCreateInfo22829     fn default() -> SamplerReductionModeCreateInfo {
22830         SamplerReductionModeCreateInfo {
22831             s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
22832             p_next: ::std::ptr::null(),
22833             reduction_mode: SamplerReductionMode::default(),
22834         }
22835     }
22836 }
22837 impl SamplerReductionModeCreateInfo {
builder<'a>() -> SamplerReductionModeCreateInfoBuilder<'a>22838     pub fn builder<'a>() -> SamplerReductionModeCreateInfoBuilder<'a> {
22839         SamplerReductionModeCreateInfoBuilder {
22840             inner: SamplerReductionModeCreateInfo::default(),
22841             marker: ::std::marker::PhantomData,
22842         }
22843     }
22844 }
22845 #[repr(transparent)]
22846 pub struct SamplerReductionModeCreateInfoBuilder<'a> {
22847     inner: SamplerReductionModeCreateInfo,
22848     marker: ::std::marker::PhantomData<&'a ()>,
22849 }
22850 unsafe impl ExtendsSamplerCreateInfo for SamplerReductionModeCreateInfoBuilder<'_> {}
22851 unsafe impl ExtendsSamplerCreateInfo for SamplerReductionModeCreateInfo {}
22852 impl<'a> ::std::ops::Deref for SamplerReductionModeCreateInfoBuilder<'a> {
22853     type Target = SamplerReductionModeCreateInfo;
deref(&self) -> &Self::Target22854     fn deref(&self) -> &Self::Target {
22855         &self.inner
22856     }
22857 }
22858 impl<'a> ::std::ops::DerefMut for SamplerReductionModeCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22859     fn deref_mut(&mut self) -> &mut Self::Target {
22860         &mut self.inner
22861     }
22862 }
22863 impl<'a> SamplerReductionModeCreateInfoBuilder<'a> {
reduction_mode(mut self, reduction_mode: SamplerReductionMode) -> Self22864     pub fn reduction_mode(mut self, reduction_mode: SamplerReductionMode) -> Self {
22865         self.inner.reduction_mode = reduction_mode;
22866         self
22867     }
22868     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22869     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22870     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerReductionModeCreateInfo22871     pub fn build(self) -> SamplerReductionModeCreateInfo {
22872         self.inner
22873     }
22874 }
22875 #[repr(C)]
22876 #[derive(Copy, Clone, Debug)]
22877 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>"]
22878 pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
22879     pub s_type: StructureType,
22880     pub p_next: *mut c_void,
22881     pub advanced_blend_coherent_operations: Bool32,
22882 }
22883 impl ::std::default::Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
default() -> PhysicalDeviceBlendOperationAdvancedFeaturesEXT22884     fn default() -> PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
22885         PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
22886             s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
22887             p_next: ::std::ptr::null_mut(),
22888             advanced_blend_coherent_operations: Bool32::default(),
22889         }
22890     }
22891 }
22892 impl PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
builder<'a>() -> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a>22893     pub fn builder<'a>() -> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
22894         PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder {
22895             inner: PhysicalDeviceBlendOperationAdvancedFeaturesEXT::default(),
22896             marker: ::std::marker::PhantomData,
22897         }
22898     }
22899 }
22900 #[repr(transparent)]
22901 pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
22902     inner: PhysicalDeviceBlendOperationAdvancedFeaturesEXT,
22903     marker: ::std::marker::PhantomData<&'a ()>,
22904 }
22905 unsafe impl ExtendsPhysicalDeviceFeatures2
22906     for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'_>
22907 {
22908 }
22909 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
22910 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'_> {}
22911 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
22912 impl<'a> ::std::ops::Deref for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
22913     type Target = PhysicalDeviceBlendOperationAdvancedFeaturesEXT;
deref(&self) -> &Self::Target22914     fn deref(&self) -> &Self::Target {
22915         &self.inner
22916     }
22917 }
22918 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22919     fn deref_mut(&mut self) -> &mut Self::Target {
22920         &mut self.inner
22921     }
22922 }
22923 impl<'a> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
advanced_blend_coherent_operations( mut self, advanced_blend_coherent_operations: bool, ) -> Self22924     pub fn advanced_blend_coherent_operations(
22925         mut self,
22926         advanced_blend_coherent_operations: bool,
22927     ) -> Self {
22928         self.inner.advanced_blend_coherent_operations = advanced_blend_coherent_operations.into();
22929         self
22930     }
22931     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22932     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22933     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBlendOperationAdvancedFeaturesEXT22934     pub fn build(self) -> PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
22935         self.inner
22936     }
22937 }
22938 #[repr(C)]
22939 #[derive(Copy, Clone, Debug)]
22940 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>"]
22941 pub struct PhysicalDeviceMultiDrawFeaturesEXT {
22942     pub s_type: StructureType,
22943     pub p_next: *mut c_void,
22944     pub multi_draw: Bool32,
22945 }
22946 impl ::std::default::Default for PhysicalDeviceMultiDrawFeaturesEXT {
default() -> PhysicalDeviceMultiDrawFeaturesEXT22947     fn default() -> PhysicalDeviceMultiDrawFeaturesEXT {
22948         PhysicalDeviceMultiDrawFeaturesEXT {
22949             s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
22950             p_next: ::std::ptr::null_mut(),
22951             multi_draw: Bool32::default(),
22952         }
22953     }
22954 }
22955 impl PhysicalDeviceMultiDrawFeaturesEXT {
builder<'a>() -> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a>22956     pub fn builder<'a>() -> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
22957         PhysicalDeviceMultiDrawFeaturesEXTBuilder {
22958             inner: PhysicalDeviceMultiDrawFeaturesEXT::default(),
22959             marker: ::std::marker::PhantomData,
22960         }
22961     }
22962 }
22963 #[repr(transparent)]
22964 pub struct PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
22965     inner: PhysicalDeviceMultiDrawFeaturesEXT,
22966     marker: ::std::marker::PhantomData<&'a ()>,
22967 }
22968 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'_> {}
22969 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiDrawFeaturesEXT {}
22970 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'_> {}
22971 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiDrawFeaturesEXT {}
22972 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
22973     type Target = PhysicalDeviceMultiDrawFeaturesEXT;
deref(&self) -> &Self::Target22974     fn deref(&self) -> &Self::Target {
22975         &self.inner
22976     }
22977 }
22978 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22979     fn deref_mut(&mut self) -> &mut Self::Target {
22980         &mut self.inner
22981     }
22982 }
22983 impl<'a> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
multi_draw(mut self, multi_draw: bool) -> Self22984     pub fn multi_draw(mut self, multi_draw: bool) -> Self {
22985         self.inner.multi_draw = multi_draw.into();
22986         self
22987     }
22988     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22989     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22990     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiDrawFeaturesEXT22991     pub fn build(self) -> PhysicalDeviceMultiDrawFeaturesEXT {
22992         self.inner
22993     }
22994 }
22995 #[repr(C)]
22996 #[derive(Copy, Clone, Debug)]
22997 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>"]
22998 pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
22999     pub s_type: StructureType,
23000     pub p_next: *mut c_void,
23001     pub advanced_blend_max_color_attachments: u32,
23002     pub advanced_blend_independent_blend: Bool32,
23003     pub advanced_blend_non_premultiplied_src_color: Bool32,
23004     pub advanced_blend_non_premultiplied_dst_color: Bool32,
23005     pub advanced_blend_correlated_overlap: Bool32,
23006     pub advanced_blend_all_operations: Bool32,
23007 }
23008 impl ::std::default::Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
default() -> PhysicalDeviceBlendOperationAdvancedPropertiesEXT23009     fn default() -> PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
23010         PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
23011             s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
23012             p_next: ::std::ptr::null_mut(),
23013             advanced_blend_max_color_attachments: u32::default(),
23014             advanced_blend_independent_blend: Bool32::default(),
23015             advanced_blend_non_premultiplied_src_color: Bool32::default(),
23016             advanced_blend_non_premultiplied_dst_color: Bool32::default(),
23017             advanced_blend_correlated_overlap: Bool32::default(),
23018             advanced_blend_all_operations: Bool32::default(),
23019         }
23020     }
23021 }
23022 impl PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
builder<'a>() -> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a>23023     pub fn builder<'a>() -> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23024         PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder {
23025             inner: PhysicalDeviceBlendOperationAdvancedPropertiesEXT::default(),
23026             marker: ::std::marker::PhantomData,
23027         }
23028     }
23029 }
23030 #[repr(transparent)]
23031 pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23032     inner: PhysicalDeviceBlendOperationAdvancedPropertiesEXT,
23033     marker: ::std::marker::PhantomData<&'a ()>,
23034 }
23035 unsafe impl ExtendsPhysicalDeviceProperties2
23036     for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'_>
23037 {
23038 }
23039 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
23040 impl<'a> ::std::ops::Deref for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23041     type Target = PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
deref(&self) -> &Self::Target23042     fn deref(&self) -> &Self::Target {
23043         &self.inner
23044     }
23045 }
23046 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23047     fn deref_mut(&mut self) -> &mut Self::Target {
23048         &mut self.inner
23049     }
23050 }
23051 impl<'a> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
advanced_blend_max_color_attachments( mut self, advanced_blend_max_color_attachments: u32, ) -> Self23052     pub fn advanced_blend_max_color_attachments(
23053         mut self,
23054         advanced_blend_max_color_attachments: u32,
23055     ) -> Self {
23056         self.inner.advanced_blend_max_color_attachments = advanced_blend_max_color_attachments;
23057         self
23058     }
advanced_blend_independent_blend( mut self, advanced_blend_independent_blend: bool, ) -> Self23059     pub fn advanced_blend_independent_blend(
23060         mut self,
23061         advanced_blend_independent_blend: bool,
23062     ) -> Self {
23063         self.inner.advanced_blend_independent_blend = advanced_blend_independent_blend.into();
23064         self
23065     }
advanced_blend_non_premultiplied_src_color( mut self, advanced_blend_non_premultiplied_src_color: bool, ) -> Self23066     pub fn advanced_blend_non_premultiplied_src_color(
23067         mut self,
23068         advanced_blend_non_premultiplied_src_color: bool,
23069     ) -> Self {
23070         self.inner.advanced_blend_non_premultiplied_src_color =
23071             advanced_blend_non_premultiplied_src_color.into();
23072         self
23073     }
advanced_blend_non_premultiplied_dst_color( mut self, advanced_blend_non_premultiplied_dst_color: bool, ) -> Self23074     pub fn advanced_blend_non_premultiplied_dst_color(
23075         mut self,
23076         advanced_blend_non_premultiplied_dst_color: bool,
23077     ) -> Self {
23078         self.inner.advanced_blend_non_premultiplied_dst_color =
23079             advanced_blend_non_premultiplied_dst_color.into();
23080         self
23081     }
advanced_blend_correlated_overlap( mut self, advanced_blend_correlated_overlap: bool, ) -> Self23082     pub fn advanced_blend_correlated_overlap(
23083         mut self,
23084         advanced_blend_correlated_overlap: bool,
23085     ) -> Self {
23086         self.inner.advanced_blend_correlated_overlap = advanced_blend_correlated_overlap.into();
23087         self
23088     }
advanced_blend_all_operations(mut self, advanced_blend_all_operations: bool) -> Self23089     pub fn advanced_blend_all_operations(mut self, advanced_blend_all_operations: bool) -> Self {
23090         self.inner.advanced_blend_all_operations = advanced_blend_all_operations.into();
23091         self
23092     }
23093     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23094     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23095     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBlendOperationAdvancedPropertiesEXT23096     pub fn build(self) -> PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
23097         self.inner
23098     }
23099 }
23100 #[repr(C)]
23101 #[derive(Copy, Clone, Debug)]
23102 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>"]
23103 pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
23104     pub s_type: StructureType,
23105     pub p_next: *const c_void,
23106     pub src_premultiplied: Bool32,
23107     pub dst_premultiplied: Bool32,
23108     pub blend_overlap: BlendOverlapEXT,
23109 }
23110 impl ::std::default::Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
default() -> PipelineColorBlendAdvancedStateCreateInfoEXT23111     fn default() -> PipelineColorBlendAdvancedStateCreateInfoEXT {
23112         PipelineColorBlendAdvancedStateCreateInfoEXT {
23113             s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
23114             p_next: ::std::ptr::null(),
23115             src_premultiplied: Bool32::default(),
23116             dst_premultiplied: Bool32::default(),
23117             blend_overlap: BlendOverlapEXT::default(),
23118         }
23119     }
23120 }
23121 impl PipelineColorBlendAdvancedStateCreateInfoEXT {
builder<'a>() -> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a>23122     pub fn builder<'a>() -> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23123         PipelineColorBlendAdvancedStateCreateInfoEXTBuilder {
23124             inner: PipelineColorBlendAdvancedStateCreateInfoEXT::default(),
23125             marker: ::std::marker::PhantomData,
23126         }
23127     }
23128 }
23129 #[repr(transparent)]
23130 pub struct PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23131     inner: PipelineColorBlendAdvancedStateCreateInfoEXT,
23132     marker: ::std::marker::PhantomData<&'a ()>,
23133 }
23134 unsafe impl ExtendsPipelineColorBlendStateCreateInfo
23135     for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'_>
23136 {
23137 }
23138 unsafe impl ExtendsPipelineColorBlendStateCreateInfo
23139     for PipelineColorBlendAdvancedStateCreateInfoEXT
23140 {
23141 }
23142 impl<'a> ::std::ops::Deref for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23143     type Target = PipelineColorBlendAdvancedStateCreateInfoEXT;
deref(&self) -> &Self::Target23144     fn deref(&self) -> &Self::Target {
23145         &self.inner
23146     }
23147 }
23148 impl<'a> ::std::ops::DerefMut for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23149     fn deref_mut(&mut self) -> &mut Self::Target {
23150         &mut self.inner
23151     }
23152 }
23153 impl<'a> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
src_premultiplied(mut self, src_premultiplied: bool) -> Self23154     pub fn src_premultiplied(mut self, src_premultiplied: bool) -> Self {
23155         self.inner.src_premultiplied = src_premultiplied.into();
23156         self
23157     }
dst_premultiplied(mut self, dst_premultiplied: bool) -> Self23158     pub fn dst_premultiplied(mut self, dst_premultiplied: bool) -> Self {
23159         self.inner.dst_premultiplied = dst_premultiplied.into();
23160         self
23161     }
blend_overlap(mut self, blend_overlap: BlendOverlapEXT) -> Self23162     pub fn blend_overlap(mut self, blend_overlap: BlendOverlapEXT) -> Self {
23163         self.inner.blend_overlap = blend_overlap;
23164         self
23165     }
23166     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23167     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23168     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorBlendAdvancedStateCreateInfoEXT23169     pub fn build(self) -> PipelineColorBlendAdvancedStateCreateInfoEXT {
23170         self.inner
23171     }
23172 }
23173 #[repr(C)]
23174 #[derive(Copy, Clone, Debug)]
23175 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>"]
23176 pub struct PhysicalDeviceInlineUniformBlockFeaturesEXT {
23177     pub s_type: StructureType,
23178     pub p_next: *mut c_void,
23179     pub inline_uniform_block: Bool32,
23180     pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
23181 }
23182 impl ::std::default::Default for PhysicalDeviceInlineUniformBlockFeaturesEXT {
default() -> PhysicalDeviceInlineUniformBlockFeaturesEXT23183     fn default() -> PhysicalDeviceInlineUniformBlockFeaturesEXT {
23184         PhysicalDeviceInlineUniformBlockFeaturesEXT {
23185             s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
23186             p_next: ::std::ptr::null_mut(),
23187             inline_uniform_block: Bool32::default(),
23188             descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
23189         }
23190     }
23191 }
23192 impl PhysicalDeviceInlineUniformBlockFeaturesEXT {
builder<'a>() -> PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a>23193     pub fn builder<'a>() -> PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
23194         PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder {
23195             inner: PhysicalDeviceInlineUniformBlockFeaturesEXT::default(),
23196             marker: ::std::marker::PhantomData,
23197         }
23198     }
23199 }
23200 #[repr(transparent)]
23201 pub struct PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
23202     inner: PhysicalDeviceInlineUniformBlockFeaturesEXT,
23203     marker: ::std::marker::PhantomData<&'a ()>,
23204 }
23205 unsafe impl ExtendsPhysicalDeviceFeatures2
23206     for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'_>
23207 {
23208 }
23209 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInlineUniformBlockFeaturesEXT {}
23210 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'_> {}
23211 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInlineUniformBlockFeaturesEXT {}
23212 impl<'a> ::std::ops::Deref for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
23213     type Target = PhysicalDeviceInlineUniformBlockFeaturesEXT;
deref(&self) -> &Self::Target23214     fn deref(&self) -> &Self::Target {
23215         &self.inner
23216     }
23217 }
23218 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23219     fn deref_mut(&mut self) -> &mut Self::Target {
23220         &mut self.inner
23221     }
23222 }
23223 impl<'a> PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
inline_uniform_block(mut self, inline_uniform_block: bool) -> Self23224     pub fn inline_uniform_block(mut self, inline_uniform_block: bool) -> Self {
23225         self.inner.inline_uniform_block = inline_uniform_block.into();
23226         self
23227     }
descriptor_binding_inline_uniform_block_update_after_bind( mut self, descriptor_binding_inline_uniform_block_update_after_bind: bool, ) -> Self23228     pub fn descriptor_binding_inline_uniform_block_update_after_bind(
23229         mut self,
23230         descriptor_binding_inline_uniform_block_update_after_bind: bool,
23231     ) -> Self {
23232         self.inner
23233             .descriptor_binding_inline_uniform_block_update_after_bind =
23234             descriptor_binding_inline_uniform_block_update_after_bind.into();
23235         self
23236     }
23237     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23238     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23239     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInlineUniformBlockFeaturesEXT23240     pub fn build(self) -> PhysicalDeviceInlineUniformBlockFeaturesEXT {
23241         self.inner
23242     }
23243 }
23244 #[repr(C)]
23245 #[derive(Copy, Clone, Debug)]
23246 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>"]
23247 pub struct PhysicalDeviceInlineUniformBlockPropertiesEXT {
23248     pub s_type: StructureType,
23249     pub p_next: *mut c_void,
23250     pub max_inline_uniform_block_size: u32,
23251     pub max_per_stage_descriptor_inline_uniform_blocks: u32,
23252     pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
23253     pub max_descriptor_set_inline_uniform_blocks: u32,
23254     pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
23255 }
23256 impl ::std::default::Default for PhysicalDeviceInlineUniformBlockPropertiesEXT {
default() -> PhysicalDeviceInlineUniformBlockPropertiesEXT23257     fn default() -> PhysicalDeviceInlineUniformBlockPropertiesEXT {
23258         PhysicalDeviceInlineUniformBlockPropertiesEXT {
23259             s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,
23260             p_next: ::std::ptr::null_mut(),
23261             max_inline_uniform_block_size: u32::default(),
23262             max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
23263             max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
23264             max_descriptor_set_inline_uniform_blocks: u32::default(),
23265             max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
23266         }
23267     }
23268 }
23269 impl PhysicalDeviceInlineUniformBlockPropertiesEXT {
builder<'a>() -> PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a>23270     pub fn builder<'a>() -> PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
23271         PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder {
23272             inner: PhysicalDeviceInlineUniformBlockPropertiesEXT::default(),
23273             marker: ::std::marker::PhantomData,
23274         }
23275     }
23276 }
23277 #[repr(transparent)]
23278 pub struct PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
23279     inner: PhysicalDeviceInlineUniformBlockPropertiesEXT,
23280     marker: ::std::marker::PhantomData<&'a ()>,
23281 }
23282 unsafe impl ExtendsPhysicalDeviceProperties2
23283     for PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'_>
23284 {
23285 }
23286 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceInlineUniformBlockPropertiesEXT {}
23287 impl<'a> ::std::ops::Deref for PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
23288     type Target = PhysicalDeviceInlineUniformBlockPropertiesEXT;
deref(&self) -> &Self::Target23289     fn deref(&self) -> &Self::Target {
23290         &self.inner
23291     }
23292 }
23293 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23294     fn deref_mut(&mut self) -> &mut Self::Target {
23295         &mut self.inner
23296     }
23297 }
23298 impl<'a> PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
max_inline_uniform_block_size(mut self, max_inline_uniform_block_size: u32) -> Self23299     pub fn max_inline_uniform_block_size(mut self, max_inline_uniform_block_size: u32) -> Self {
23300         self.inner.max_inline_uniform_block_size = max_inline_uniform_block_size;
23301         self
23302     }
max_per_stage_descriptor_inline_uniform_blocks( mut self, max_per_stage_descriptor_inline_uniform_blocks: u32, ) -> Self23303     pub fn max_per_stage_descriptor_inline_uniform_blocks(
23304         mut self,
23305         max_per_stage_descriptor_inline_uniform_blocks: u32,
23306     ) -> Self {
23307         self.inner.max_per_stage_descriptor_inline_uniform_blocks =
23308             max_per_stage_descriptor_inline_uniform_blocks;
23309         self
23310     }
max_per_stage_descriptor_update_after_bind_inline_uniform_blocks( mut self, max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32, ) -> Self23311     pub fn max_per_stage_descriptor_update_after_bind_inline_uniform_blocks(
23312         mut self,
23313         max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
23314     ) -> Self {
23315         self.inner
23316             .max_per_stage_descriptor_update_after_bind_inline_uniform_blocks =
23317             max_per_stage_descriptor_update_after_bind_inline_uniform_blocks;
23318         self
23319     }
max_descriptor_set_inline_uniform_blocks( mut self, max_descriptor_set_inline_uniform_blocks: u32, ) -> Self23320     pub fn max_descriptor_set_inline_uniform_blocks(
23321         mut self,
23322         max_descriptor_set_inline_uniform_blocks: u32,
23323     ) -> Self {
23324         self.inner.max_descriptor_set_inline_uniform_blocks =
23325             max_descriptor_set_inline_uniform_blocks;
23326         self
23327     }
max_descriptor_set_update_after_bind_inline_uniform_blocks( mut self, max_descriptor_set_update_after_bind_inline_uniform_blocks: u32, ) -> Self23328     pub fn max_descriptor_set_update_after_bind_inline_uniform_blocks(
23329         mut self,
23330         max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
23331     ) -> Self {
23332         self.inner
23333             .max_descriptor_set_update_after_bind_inline_uniform_blocks =
23334             max_descriptor_set_update_after_bind_inline_uniform_blocks;
23335         self
23336     }
23337     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23338     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23339     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInlineUniformBlockPropertiesEXT23340     pub fn build(self) -> PhysicalDeviceInlineUniformBlockPropertiesEXT {
23341         self.inner
23342     }
23343 }
23344 #[repr(C)]
23345 #[derive(Copy, Clone, Debug)]
23346 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>"]
23347 pub struct WriteDescriptorSetInlineUniformBlockEXT {
23348     pub s_type: StructureType,
23349     pub p_next: *const c_void,
23350     pub data_size: u32,
23351     pub p_data: *const c_void,
23352 }
23353 impl ::std::default::Default for WriteDescriptorSetInlineUniformBlockEXT {
default() -> WriteDescriptorSetInlineUniformBlockEXT23354     fn default() -> WriteDescriptorSetInlineUniformBlockEXT {
23355         WriteDescriptorSetInlineUniformBlockEXT {
23356             s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,
23357             p_next: ::std::ptr::null(),
23358             data_size: u32::default(),
23359             p_data: ::std::ptr::null(),
23360         }
23361     }
23362 }
23363 impl WriteDescriptorSetInlineUniformBlockEXT {
builder<'a>() -> WriteDescriptorSetInlineUniformBlockEXTBuilder<'a>23364     pub fn builder<'a>() -> WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
23365         WriteDescriptorSetInlineUniformBlockEXTBuilder {
23366             inner: WriteDescriptorSetInlineUniformBlockEXT::default(),
23367             marker: ::std::marker::PhantomData,
23368         }
23369     }
23370 }
23371 #[repr(transparent)]
23372 pub struct WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
23373     inner: WriteDescriptorSetInlineUniformBlockEXT,
23374     marker: ::std::marker::PhantomData<&'a ()>,
23375 }
23376 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetInlineUniformBlockEXTBuilder<'_> {}
23377 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetInlineUniformBlockEXT {}
23378 impl<'a> ::std::ops::Deref for WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
23379     type Target = WriteDescriptorSetInlineUniformBlockEXT;
deref(&self) -> &Self::Target23380     fn deref(&self) -> &Self::Target {
23381         &self.inner
23382     }
23383 }
23384 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23385     fn deref_mut(&mut self) -> &mut Self::Target {
23386         &mut self.inner
23387     }
23388 }
23389 impl<'a> WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
data(mut self, data: &'a [u8]) -> Self23390     pub fn data(mut self, data: &'a [u8]) -> Self {
23391         self.inner.data_size = data.len() as _;
23392         self.inner.p_data = data.as_ptr() as *const c_void;
23393         self
23394     }
23395     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23396     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23397     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSetInlineUniformBlockEXT23398     pub fn build(self) -> WriteDescriptorSetInlineUniformBlockEXT {
23399         self.inner
23400     }
23401 }
23402 #[repr(C)]
23403 #[derive(Copy, Clone, Debug)]
23404 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>"]
23405 pub struct DescriptorPoolInlineUniformBlockCreateInfoEXT {
23406     pub s_type: StructureType,
23407     pub p_next: *const c_void,
23408     pub max_inline_uniform_block_bindings: u32,
23409 }
23410 impl ::std::default::Default for DescriptorPoolInlineUniformBlockCreateInfoEXT {
default() -> DescriptorPoolInlineUniformBlockCreateInfoEXT23411     fn default() -> DescriptorPoolInlineUniformBlockCreateInfoEXT {
23412         DescriptorPoolInlineUniformBlockCreateInfoEXT {
23413             s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,
23414             p_next: ::std::ptr::null(),
23415             max_inline_uniform_block_bindings: u32::default(),
23416         }
23417     }
23418 }
23419 impl DescriptorPoolInlineUniformBlockCreateInfoEXT {
builder<'a>() -> DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a>23420     pub fn builder<'a>() -> DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
23421         DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder {
23422             inner: DescriptorPoolInlineUniformBlockCreateInfoEXT::default(),
23423             marker: ::std::marker::PhantomData,
23424         }
23425     }
23426 }
23427 #[repr(transparent)]
23428 pub struct DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
23429     inner: DescriptorPoolInlineUniformBlockCreateInfoEXT,
23430     marker: ::std::marker::PhantomData<&'a ()>,
23431 }
23432 unsafe impl ExtendsDescriptorPoolCreateInfo
23433     for DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'_>
23434 {
23435 }
23436 unsafe impl ExtendsDescriptorPoolCreateInfo for DescriptorPoolInlineUniformBlockCreateInfoEXT {}
23437 impl<'a> ::std::ops::Deref for DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
23438     type Target = DescriptorPoolInlineUniformBlockCreateInfoEXT;
deref(&self) -> &Self::Target23439     fn deref(&self) -> &Self::Target {
23440         &self.inner
23441     }
23442 }
23443 impl<'a> ::std::ops::DerefMut for DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23444     fn deref_mut(&mut self) -> &mut Self::Target {
23445         &mut self.inner
23446     }
23447 }
23448 impl<'a> DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
max_inline_uniform_block_bindings( mut self, max_inline_uniform_block_bindings: u32, ) -> Self23449     pub fn max_inline_uniform_block_bindings(
23450         mut self,
23451         max_inline_uniform_block_bindings: u32,
23452     ) -> Self {
23453         self.inner.max_inline_uniform_block_bindings = max_inline_uniform_block_bindings;
23454         self
23455     }
23456     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23457     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23458     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorPoolInlineUniformBlockCreateInfoEXT23459     pub fn build(self) -> DescriptorPoolInlineUniformBlockCreateInfoEXT {
23460         self.inner
23461     }
23462 }
23463 #[repr(C)]
23464 #[derive(Copy, Clone, Debug)]
23465 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>"]
23466 pub struct PipelineCoverageModulationStateCreateInfoNV {
23467     pub s_type: StructureType,
23468     pub p_next: *const c_void,
23469     pub flags: PipelineCoverageModulationStateCreateFlagsNV,
23470     pub coverage_modulation_mode: CoverageModulationModeNV,
23471     pub coverage_modulation_table_enable: Bool32,
23472     pub coverage_modulation_table_count: u32,
23473     pub p_coverage_modulation_table: *const f32,
23474 }
23475 impl ::std::default::Default for PipelineCoverageModulationStateCreateInfoNV {
default() -> PipelineCoverageModulationStateCreateInfoNV23476     fn default() -> PipelineCoverageModulationStateCreateInfoNV {
23477         PipelineCoverageModulationStateCreateInfoNV {
23478             s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
23479             p_next: ::std::ptr::null(),
23480             flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
23481             coverage_modulation_mode: CoverageModulationModeNV::default(),
23482             coverage_modulation_table_enable: Bool32::default(),
23483             coverage_modulation_table_count: u32::default(),
23484             p_coverage_modulation_table: ::std::ptr::null(),
23485         }
23486     }
23487 }
23488 impl PipelineCoverageModulationStateCreateInfoNV {
builder<'a>() -> PipelineCoverageModulationStateCreateInfoNVBuilder<'a>23489     pub fn builder<'a>() -> PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23490         PipelineCoverageModulationStateCreateInfoNVBuilder {
23491             inner: PipelineCoverageModulationStateCreateInfoNV::default(),
23492             marker: ::std::marker::PhantomData,
23493         }
23494     }
23495 }
23496 #[repr(transparent)]
23497 pub struct PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23498     inner: PipelineCoverageModulationStateCreateInfoNV,
23499     marker: ::std::marker::PhantomData<&'a ()>,
23500 }
23501 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
23502     for PipelineCoverageModulationStateCreateInfoNVBuilder<'_>
23503 {
23504 }
23505 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
23506     for PipelineCoverageModulationStateCreateInfoNV
23507 {
23508 }
23509 impl<'a> ::std::ops::Deref for PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23510     type Target = PipelineCoverageModulationStateCreateInfoNV;
deref(&self) -> &Self::Target23511     fn deref(&self) -> &Self::Target {
23512         &self.inner
23513     }
23514 }
23515 impl<'a> ::std::ops::DerefMut for PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23516     fn deref_mut(&mut self) -> &mut Self::Target {
23517         &mut self.inner
23518     }
23519 }
23520 impl<'a> PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCoverageModulationStateCreateFlagsNV) -> Self23521     pub fn flags(mut self, flags: PipelineCoverageModulationStateCreateFlagsNV) -> Self {
23522         self.inner.flags = flags;
23523         self
23524     }
coverage_modulation_mode( mut self, coverage_modulation_mode: CoverageModulationModeNV, ) -> Self23525     pub fn coverage_modulation_mode(
23526         mut self,
23527         coverage_modulation_mode: CoverageModulationModeNV,
23528     ) -> Self {
23529         self.inner.coverage_modulation_mode = coverage_modulation_mode;
23530         self
23531     }
coverage_modulation_table_enable( mut self, coverage_modulation_table_enable: bool, ) -> Self23532     pub fn coverage_modulation_table_enable(
23533         mut self,
23534         coverage_modulation_table_enable: bool,
23535     ) -> Self {
23536         self.inner.coverage_modulation_table_enable = coverage_modulation_table_enable.into();
23537         self
23538     }
coverage_modulation_table(mut self, coverage_modulation_table: &'a [f32]) -> Self23539     pub fn coverage_modulation_table(mut self, coverage_modulation_table: &'a [f32]) -> Self {
23540         self.inner.coverage_modulation_table_count = coverage_modulation_table.len() as _;
23541         self.inner.p_coverage_modulation_table = coverage_modulation_table.as_ptr();
23542         self
23543     }
23544     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23545     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23546     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCoverageModulationStateCreateInfoNV23547     pub fn build(self) -> PipelineCoverageModulationStateCreateInfoNV {
23548         self.inner
23549     }
23550 }
23551 #[repr(C)]
23552 #[derive(Copy, Clone, Debug)]
23553 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatListCreateInfo.html>"]
23554 pub struct ImageFormatListCreateInfo {
23555     pub s_type: StructureType,
23556     pub p_next: *const c_void,
23557     pub view_format_count: u32,
23558     pub p_view_formats: *const Format,
23559 }
23560 impl ::std::default::Default for ImageFormatListCreateInfo {
default() -> ImageFormatListCreateInfo23561     fn default() -> ImageFormatListCreateInfo {
23562         ImageFormatListCreateInfo {
23563             s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
23564             p_next: ::std::ptr::null(),
23565             view_format_count: u32::default(),
23566             p_view_formats: ::std::ptr::null(),
23567         }
23568     }
23569 }
23570 impl ImageFormatListCreateInfo {
builder<'a>() -> ImageFormatListCreateInfoBuilder<'a>23571     pub fn builder<'a>() -> ImageFormatListCreateInfoBuilder<'a> {
23572         ImageFormatListCreateInfoBuilder {
23573             inner: ImageFormatListCreateInfo::default(),
23574             marker: ::std::marker::PhantomData,
23575         }
23576     }
23577 }
23578 #[repr(transparent)]
23579 pub struct ImageFormatListCreateInfoBuilder<'a> {
23580     inner: ImageFormatListCreateInfo,
23581     marker: ::std::marker::PhantomData<&'a ()>,
23582 }
23583 unsafe impl ExtendsImageCreateInfo for ImageFormatListCreateInfoBuilder<'_> {}
23584 unsafe impl ExtendsImageCreateInfo for ImageFormatListCreateInfo {}
23585 unsafe impl ExtendsSwapchainCreateInfoKHR for ImageFormatListCreateInfoBuilder<'_> {}
23586 unsafe impl ExtendsSwapchainCreateInfoKHR for ImageFormatListCreateInfo {}
23587 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageFormatListCreateInfoBuilder<'_> {}
23588 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageFormatListCreateInfo {}
23589 impl<'a> ::std::ops::Deref for ImageFormatListCreateInfoBuilder<'a> {
23590     type Target = ImageFormatListCreateInfo;
deref(&self) -> &Self::Target23591     fn deref(&self) -> &Self::Target {
23592         &self.inner
23593     }
23594 }
23595 impl<'a> ::std::ops::DerefMut for ImageFormatListCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23596     fn deref_mut(&mut self) -> &mut Self::Target {
23597         &mut self.inner
23598     }
23599 }
23600 impl<'a> ImageFormatListCreateInfoBuilder<'a> {
view_formats(mut self, view_formats: &'a [Format]) -> Self23601     pub fn view_formats(mut self, view_formats: &'a [Format]) -> Self {
23602         self.inner.view_format_count = view_formats.len() as _;
23603         self.inner.p_view_formats = view_formats.as_ptr();
23604         self
23605     }
23606     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23607     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23608     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageFormatListCreateInfo23609     pub fn build(self) -> ImageFormatListCreateInfo {
23610         self.inner
23611     }
23612 }
23613 #[repr(C)]
23614 #[derive(Copy, Clone, Debug)]
23615 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheCreateInfoEXT.html>"]
23616 pub struct ValidationCacheCreateInfoEXT {
23617     pub s_type: StructureType,
23618     pub p_next: *const c_void,
23619     pub flags: ValidationCacheCreateFlagsEXT,
23620     pub initial_data_size: usize,
23621     pub p_initial_data: *const c_void,
23622 }
23623 impl ::std::default::Default for ValidationCacheCreateInfoEXT {
default() -> ValidationCacheCreateInfoEXT23624     fn default() -> ValidationCacheCreateInfoEXT {
23625         ValidationCacheCreateInfoEXT {
23626             s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
23627             p_next: ::std::ptr::null(),
23628             flags: ValidationCacheCreateFlagsEXT::default(),
23629             initial_data_size: usize::default(),
23630             p_initial_data: ::std::ptr::null(),
23631         }
23632     }
23633 }
23634 impl ValidationCacheCreateInfoEXT {
builder<'a>() -> ValidationCacheCreateInfoEXTBuilder<'a>23635     pub fn builder<'a>() -> ValidationCacheCreateInfoEXTBuilder<'a> {
23636         ValidationCacheCreateInfoEXTBuilder {
23637             inner: ValidationCacheCreateInfoEXT::default(),
23638             marker: ::std::marker::PhantomData,
23639         }
23640     }
23641 }
23642 #[repr(transparent)]
23643 pub struct ValidationCacheCreateInfoEXTBuilder<'a> {
23644     inner: ValidationCacheCreateInfoEXT,
23645     marker: ::std::marker::PhantomData<&'a ()>,
23646 }
23647 impl<'a> ::std::ops::Deref for ValidationCacheCreateInfoEXTBuilder<'a> {
23648     type Target = ValidationCacheCreateInfoEXT;
deref(&self) -> &Self::Target23649     fn deref(&self) -> &Self::Target {
23650         &self.inner
23651     }
23652 }
23653 impl<'a> ::std::ops::DerefMut for ValidationCacheCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23654     fn deref_mut(&mut self) -> &mut Self::Target {
23655         &mut self.inner
23656     }
23657 }
23658 impl<'a> ValidationCacheCreateInfoEXTBuilder<'a> {
flags(mut self, flags: ValidationCacheCreateFlagsEXT) -> Self23659     pub fn flags(mut self, flags: ValidationCacheCreateFlagsEXT) -> Self {
23660         self.inner.flags = flags;
23661         self
23662     }
initial_data(mut self, initial_data: &'a [u8]) -> Self23663     pub fn initial_data(mut self, initial_data: &'a [u8]) -> Self {
23664         self.inner.initial_data_size = initial_data.len() as _;
23665         self.inner.p_initial_data = initial_data.as_ptr() as *const c_void;
23666         self
23667     }
23668     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23669     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23670     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ValidationCacheCreateInfoEXT23671     pub fn build(self) -> ValidationCacheCreateInfoEXT {
23672         self.inner
23673     }
23674 }
23675 #[repr(C)]
23676 #[derive(Copy, Clone, Debug)]
23677 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>"]
23678 pub struct ShaderModuleValidationCacheCreateInfoEXT {
23679     pub s_type: StructureType,
23680     pub p_next: *const c_void,
23681     pub validation_cache: ValidationCacheEXT,
23682 }
23683 impl ::std::default::Default for ShaderModuleValidationCacheCreateInfoEXT {
default() -> ShaderModuleValidationCacheCreateInfoEXT23684     fn default() -> ShaderModuleValidationCacheCreateInfoEXT {
23685         ShaderModuleValidationCacheCreateInfoEXT {
23686             s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
23687             p_next: ::std::ptr::null(),
23688             validation_cache: ValidationCacheEXT::default(),
23689         }
23690     }
23691 }
23692 impl ShaderModuleValidationCacheCreateInfoEXT {
builder<'a>() -> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a>23693     pub fn builder<'a>() -> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
23694         ShaderModuleValidationCacheCreateInfoEXTBuilder {
23695             inner: ShaderModuleValidationCacheCreateInfoEXT::default(),
23696             marker: ::std::marker::PhantomData,
23697         }
23698     }
23699 }
23700 #[repr(transparent)]
23701 pub struct ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
23702     inner: ShaderModuleValidationCacheCreateInfoEXT,
23703     marker: ::std::marker::PhantomData<&'a ()>,
23704 }
23705 unsafe impl ExtendsShaderModuleCreateInfo for ShaderModuleValidationCacheCreateInfoEXTBuilder<'_> {}
23706 unsafe impl ExtendsShaderModuleCreateInfo for ShaderModuleValidationCacheCreateInfoEXT {}
23707 impl<'a> ::std::ops::Deref for ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
23708     type Target = ShaderModuleValidationCacheCreateInfoEXT;
deref(&self) -> &Self::Target23709     fn deref(&self) -> &Self::Target {
23710         &self.inner
23711     }
23712 }
23713 impl<'a> ::std::ops::DerefMut for ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23714     fn deref_mut(&mut self) -> &mut Self::Target {
23715         &mut self.inner
23716     }
23717 }
23718 impl<'a> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
validation_cache(mut self, validation_cache: ValidationCacheEXT) -> Self23719     pub fn validation_cache(mut self, validation_cache: ValidationCacheEXT) -> Self {
23720         self.inner.validation_cache = validation_cache;
23721         self
23722     }
23723     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23724     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23725     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderModuleValidationCacheCreateInfoEXT23726     pub fn build(self) -> ShaderModuleValidationCacheCreateInfoEXT {
23727         self.inner
23728     }
23729 }
23730 #[repr(C)]
23731 #[derive(Copy, Clone, Debug)]
23732 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMaintenance3Properties.html>"]
23733 pub struct PhysicalDeviceMaintenance3Properties {
23734     pub s_type: StructureType,
23735     pub p_next: *mut c_void,
23736     pub max_per_set_descriptors: u32,
23737     pub max_memory_allocation_size: DeviceSize,
23738 }
23739 impl ::std::default::Default for PhysicalDeviceMaintenance3Properties {
default() -> PhysicalDeviceMaintenance3Properties23740     fn default() -> PhysicalDeviceMaintenance3Properties {
23741         PhysicalDeviceMaintenance3Properties {
23742             s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
23743             p_next: ::std::ptr::null_mut(),
23744             max_per_set_descriptors: u32::default(),
23745             max_memory_allocation_size: DeviceSize::default(),
23746         }
23747     }
23748 }
23749 impl PhysicalDeviceMaintenance3Properties {
builder<'a>() -> PhysicalDeviceMaintenance3PropertiesBuilder<'a>23750     pub fn builder<'a>() -> PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
23751         PhysicalDeviceMaintenance3PropertiesBuilder {
23752             inner: PhysicalDeviceMaintenance3Properties::default(),
23753             marker: ::std::marker::PhantomData,
23754         }
23755     }
23756 }
23757 #[repr(transparent)]
23758 pub struct PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
23759     inner: PhysicalDeviceMaintenance3Properties,
23760     marker: ::std::marker::PhantomData<&'a ()>,
23761 }
23762 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance3PropertiesBuilder<'_> {}
23763 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance3Properties {}
23764 impl<'a> ::std::ops::Deref for PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
23765     type Target = PhysicalDeviceMaintenance3Properties;
deref(&self) -> &Self::Target23766     fn deref(&self) -> &Self::Target {
23767         &self.inner
23768     }
23769 }
23770 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23771     fn deref_mut(&mut self) -> &mut Self::Target {
23772         &mut self.inner
23773     }
23774 }
23775 impl<'a> PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self23776     pub fn max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self {
23777         self.inner.max_per_set_descriptors = max_per_set_descriptors;
23778         self
23779     }
max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self23780     pub fn max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self {
23781         self.inner.max_memory_allocation_size = max_memory_allocation_size;
23782         self
23783     }
23784     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23785     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23786     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMaintenance3Properties23787     pub fn build(self) -> PhysicalDeviceMaintenance3Properties {
23788         self.inner
23789     }
23790 }
23791 #[repr(C)]
23792 #[derive(Copy, Clone, Debug)]
23793 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutSupport.html>"]
23794 pub struct DescriptorSetLayoutSupport {
23795     pub s_type: StructureType,
23796     pub p_next: *mut c_void,
23797     pub supported: Bool32,
23798 }
23799 impl ::std::default::Default for DescriptorSetLayoutSupport {
default() -> DescriptorSetLayoutSupport23800     fn default() -> DescriptorSetLayoutSupport {
23801         DescriptorSetLayoutSupport {
23802             s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
23803             p_next: ::std::ptr::null_mut(),
23804             supported: Bool32::default(),
23805         }
23806     }
23807 }
23808 impl DescriptorSetLayoutSupport {
builder<'a>() -> DescriptorSetLayoutSupportBuilder<'a>23809     pub fn builder<'a>() -> DescriptorSetLayoutSupportBuilder<'a> {
23810         DescriptorSetLayoutSupportBuilder {
23811             inner: DescriptorSetLayoutSupport::default(),
23812             marker: ::std::marker::PhantomData,
23813         }
23814     }
23815 }
23816 #[repr(transparent)]
23817 pub struct DescriptorSetLayoutSupportBuilder<'a> {
23818     inner: DescriptorSetLayoutSupport,
23819     marker: ::std::marker::PhantomData<&'a ()>,
23820 }
23821 pub unsafe trait ExtendsDescriptorSetLayoutSupport {}
23822 impl<'a> ::std::ops::Deref for DescriptorSetLayoutSupportBuilder<'a> {
23823     type Target = DescriptorSetLayoutSupport;
deref(&self) -> &Self::Target23824     fn deref(&self) -> &Self::Target {
23825         &self.inner
23826     }
23827 }
23828 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutSupportBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23829     fn deref_mut(&mut self) -> &mut Self::Target {
23830         &mut self.inner
23831     }
23832 }
23833 impl<'a> DescriptorSetLayoutSupportBuilder<'a> {
supported(mut self, supported: bool) -> Self23834     pub fn supported(mut self, supported: bool) -> Self {
23835         self.inner.supported = supported.into();
23836         self
23837     }
23838     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
23839     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
23840     #[doc = r" valid extension structs can be pushed into the chain."]
23841     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
23842     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorSetLayoutSupport>(mut self, next: &'a mut T) -> Self23843     pub fn push_next<T: ExtendsDescriptorSetLayoutSupport>(mut self, next: &'a mut T) -> Self {
23844         unsafe {
23845             let next_ptr = next as *mut T as *mut BaseOutStructure;
23846             let last_next = ptr_chain_iter(next).last().unwrap();
23847             (*last_next).p_next = self.inner.p_next as _;
23848             self.inner.p_next = next_ptr as _;
23849         }
23850         self
23851     }
23852     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23853     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23854     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutSupport23855     pub fn build(self) -> DescriptorSetLayoutSupport {
23856         self.inner
23857     }
23858 }
23859 #[repr(C)]
23860 #[derive(Copy, Clone, Debug)]
23861 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>"]
23862 pub struct PhysicalDeviceShaderDrawParametersFeatures {
23863     pub s_type: StructureType,
23864     pub p_next: *mut c_void,
23865     pub shader_draw_parameters: Bool32,
23866 }
23867 impl ::std::default::Default for PhysicalDeviceShaderDrawParametersFeatures {
default() -> PhysicalDeviceShaderDrawParametersFeatures23868     fn default() -> PhysicalDeviceShaderDrawParametersFeatures {
23869         PhysicalDeviceShaderDrawParametersFeatures {
23870             s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
23871             p_next: ::std::ptr::null_mut(),
23872             shader_draw_parameters: Bool32::default(),
23873         }
23874     }
23875 }
23876 impl PhysicalDeviceShaderDrawParametersFeatures {
builder<'a>() -> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a>23877     pub fn builder<'a>() -> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
23878         PhysicalDeviceShaderDrawParametersFeaturesBuilder {
23879             inner: PhysicalDeviceShaderDrawParametersFeatures::default(),
23880             marker: ::std::marker::PhantomData,
23881         }
23882     }
23883 }
23884 #[repr(transparent)]
23885 pub struct PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
23886     inner: PhysicalDeviceShaderDrawParametersFeatures,
23887     marker: ::std::marker::PhantomData<&'a ()>,
23888 }
23889 unsafe impl ExtendsPhysicalDeviceFeatures2
23890     for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'_>
23891 {
23892 }
23893 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderDrawParametersFeatures {}
23894 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'_> {}
23895 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDrawParametersFeatures {}
23896 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
23897     type Target = PhysicalDeviceShaderDrawParametersFeatures;
deref(&self) -> &Self::Target23898     fn deref(&self) -> &Self::Target {
23899         &self.inner
23900     }
23901 }
23902 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23903     fn deref_mut(&mut self) -> &mut Self::Target {
23904         &mut self.inner
23905     }
23906 }
23907 impl<'a> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self23908     pub fn shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self {
23909         self.inner.shader_draw_parameters = shader_draw_parameters.into();
23910         self
23911     }
23912     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23913     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23914     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderDrawParametersFeatures23915     pub fn build(self) -> PhysicalDeviceShaderDrawParametersFeatures {
23916         self.inner
23917     }
23918 }
23919 #[repr(C)]
23920 #[derive(Copy, Clone, Debug)]
23921 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>"]
23922 pub struct PhysicalDeviceShaderFloat16Int8Features {
23923     pub s_type: StructureType,
23924     pub p_next: *mut c_void,
23925     pub shader_float16: Bool32,
23926     pub shader_int8: Bool32,
23927 }
23928 impl ::std::default::Default for PhysicalDeviceShaderFloat16Int8Features {
default() -> PhysicalDeviceShaderFloat16Int8Features23929     fn default() -> PhysicalDeviceShaderFloat16Int8Features {
23930         PhysicalDeviceShaderFloat16Int8Features {
23931             s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
23932             p_next: ::std::ptr::null_mut(),
23933             shader_float16: Bool32::default(),
23934             shader_int8: Bool32::default(),
23935         }
23936     }
23937 }
23938 impl PhysicalDeviceShaderFloat16Int8Features {
builder<'a>() -> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a>23939     pub fn builder<'a>() -> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
23940         PhysicalDeviceShaderFloat16Int8FeaturesBuilder {
23941             inner: PhysicalDeviceShaderFloat16Int8Features::default(),
23942             marker: ::std::marker::PhantomData,
23943         }
23944     }
23945 }
23946 #[repr(transparent)]
23947 pub struct PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
23948     inner: PhysicalDeviceShaderFloat16Int8Features,
23949     marker: ::std::marker::PhantomData<&'a ()>,
23950 }
23951 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'_> {}
23952 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderFloat16Int8Features {}
23953 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'_> {}
23954 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderFloat16Int8Features {}
23955 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
23956     type Target = PhysicalDeviceShaderFloat16Int8Features;
deref(&self) -> &Self::Target23957     fn deref(&self) -> &Self::Target {
23958         &self.inner
23959     }
23960 }
23961 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23962     fn deref_mut(&mut self) -> &mut Self::Target {
23963         &mut self.inner
23964     }
23965 }
23966 impl<'a> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
shader_float16(mut self, shader_float16: bool) -> Self23967     pub fn shader_float16(mut self, shader_float16: bool) -> Self {
23968         self.inner.shader_float16 = shader_float16.into();
23969         self
23970     }
shader_int8(mut self, shader_int8: bool) -> Self23971     pub fn shader_int8(mut self, shader_int8: bool) -> Self {
23972         self.inner.shader_int8 = shader_int8.into();
23973         self
23974     }
23975     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23976     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23977     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderFloat16Int8Features23978     pub fn build(self) -> PhysicalDeviceShaderFloat16Int8Features {
23979         self.inner
23980     }
23981 }
23982 #[repr(C)]
23983 #[derive(Copy, Clone, Debug)]
23984 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFloatControlsProperties.html>"]
23985 pub struct PhysicalDeviceFloatControlsProperties {
23986     pub s_type: StructureType,
23987     pub p_next: *mut c_void,
23988     pub denorm_behavior_independence: ShaderFloatControlsIndependence,
23989     pub rounding_mode_independence: ShaderFloatControlsIndependence,
23990     pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
23991     pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
23992     pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
23993     pub shader_denorm_preserve_float16: Bool32,
23994     pub shader_denorm_preserve_float32: Bool32,
23995     pub shader_denorm_preserve_float64: Bool32,
23996     pub shader_denorm_flush_to_zero_float16: Bool32,
23997     pub shader_denorm_flush_to_zero_float32: Bool32,
23998     pub shader_denorm_flush_to_zero_float64: Bool32,
23999     pub shader_rounding_mode_rte_float16: Bool32,
24000     pub shader_rounding_mode_rte_float32: Bool32,
24001     pub shader_rounding_mode_rte_float64: Bool32,
24002     pub shader_rounding_mode_rtz_float16: Bool32,
24003     pub shader_rounding_mode_rtz_float32: Bool32,
24004     pub shader_rounding_mode_rtz_float64: Bool32,
24005 }
24006 impl ::std::default::Default for PhysicalDeviceFloatControlsProperties {
default() -> PhysicalDeviceFloatControlsProperties24007     fn default() -> PhysicalDeviceFloatControlsProperties {
24008         PhysicalDeviceFloatControlsProperties {
24009             s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
24010             p_next: ::std::ptr::null_mut(),
24011             denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
24012             rounding_mode_independence: ShaderFloatControlsIndependence::default(),
24013             shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
24014             shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
24015             shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
24016             shader_denorm_preserve_float16: Bool32::default(),
24017             shader_denorm_preserve_float32: Bool32::default(),
24018             shader_denorm_preserve_float64: Bool32::default(),
24019             shader_denorm_flush_to_zero_float16: Bool32::default(),
24020             shader_denorm_flush_to_zero_float32: Bool32::default(),
24021             shader_denorm_flush_to_zero_float64: Bool32::default(),
24022             shader_rounding_mode_rte_float16: Bool32::default(),
24023             shader_rounding_mode_rte_float32: Bool32::default(),
24024             shader_rounding_mode_rte_float64: Bool32::default(),
24025             shader_rounding_mode_rtz_float16: Bool32::default(),
24026             shader_rounding_mode_rtz_float32: Bool32::default(),
24027             shader_rounding_mode_rtz_float64: Bool32::default(),
24028         }
24029     }
24030 }
24031 impl PhysicalDeviceFloatControlsProperties {
builder<'a>() -> PhysicalDeviceFloatControlsPropertiesBuilder<'a>24032     pub fn builder<'a>() -> PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
24033         PhysicalDeviceFloatControlsPropertiesBuilder {
24034             inner: PhysicalDeviceFloatControlsProperties::default(),
24035             marker: ::std::marker::PhantomData,
24036         }
24037     }
24038 }
24039 #[repr(transparent)]
24040 pub struct PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
24041     inner: PhysicalDeviceFloatControlsProperties,
24042     marker: ::std::marker::PhantomData<&'a ()>,
24043 }
24044 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFloatControlsPropertiesBuilder<'_> {}
24045 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFloatControlsProperties {}
24046 impl<'a> ::std::ops::Deref for PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
24047     type Target = PhysicalDeviceFloatControlsProperties;
deref(&self) -> &Self::Target24048     fn deref(&self) -> &Self::Target {
24049         &self.inner
24050     }
24051 }
24052 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24053     fn deref_mut(&mut self) -> &mut Self::Target {
24054         &mut self.inner
24055     }
24056 }
24057 impl<'a> PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
denorm_behavior_independence( mut self, denorm_behavior_independence: ShaderFloatControlsIndependence, ) -> Self24058     pub fn denorm_behavior_independence(
24059         mut self,
24060         denorm_behavior_independence: ShaderFloatControlsIndependence,
24061     ) -> Self {
24062         self.inner.denorm_behavior_independence = denorm_behavior_independence;
24063         self
24064     }
rounding_mode_independence( mut self, rounding_mode_independence: ShaderFloatControlsIndependence, ) -> Self24065     pub fn rounding_mode_independence(
24066         mut self,
24067         rounding_mode_independence: ShaderFloatControlsIndependence,
24068     ) -> Self {
24069         self.inner.rounding_mode_independence = rounding_mode_independence;
24070         self
24071     }
shader_signed_zero_inf_nan_preserve_float16( mut self, shader_signed_zero_inf_nan_preserve_float16: bool, ) -> Self24072     pub fn shader_signed_zero_inf_nan_preserve_float16(
24073         mut self,
24074         shader_signed_zero_inf_nan_preserve_float16: bool,
24075     ) -> Self {
24076         self.inner.shader_signed_zero_inf_nan_preserve_float16 =
24077             shader_signed_zero_inf_nan_preserve_float16.into();
24078         self
24079     }
shader_signed_zero_inf_nan_preserve_float32( mut self, shader_signed_zero_inf_nan_preserve_float32: bool, ) -> Self24080     pub fn shader_signed_zero_inf_nan_preserve_float32(
24081         mut self,
24082         shader_signed_zero_inf_nan_preserve_float32: bool,
24083     ) -> Self {
24084         self.inner.shader_signed_zero_inf_nan_preserve_float32 =
24085             shader_signed_zero_inf_nan_preserve_float32.into();
24086         self
24087     }
shader_signed_zero_inf_nan_preserve_float64( mut self, shader_signed_zero_inf_nan_preserve_float64: bool, ) -> Self24088     pub fn shader_signed_zero_inf_nan_preserve_float64(
24089         mut self,
24090         shader_signed_zero_inf_nan_preserve_float64: bool,
24091     ) -> Self {
24092         self.inner.shader_signed_zero_inf_nan_preserve_float64 =
24093             shader_signed_zero_inf_nan_preserve_float64.into();
24094         self
24095     }
shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self24096     pub fn shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self {
24097         self.inner.shader_denorm_preserve_float16 = shader_denorm_preserve_float16.into();
24098         self
24099     }
shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self24100     pub fn shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self {
24101         self.inner.shader_denorm_preserve_float32 = shader_denorm_preserve_float32.into();
24102         self
24103     }
shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self24104     pub fn shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self {
24105         self.inner.shader_denorm_preserve_float64 = shader_denorm_preserve_float64.into();
24106         self
24107     }
shader_denorm_flush_to_zero_float16( mut self, shader_denorm_flush_to_zero_float16: bool, ) -> Self24108     pub fn shader_denorm_flush_to_zero_float16(
24109         mut self,
24110         shader_denorm_flush_to_zero_float16: bool,
24111     ) -> Self {
24112         self.inner.shader_denorm_flush_to_zero_float16 = shader_denorm_flush_to_zero_float16.into();
24113         self
24114     }
shader_denorm_flush_to_zero_float32( mut self, shader_denorm_flush_to_zero_float32: bool, ) -> Self24115     pub fn shader_denorm_flush_to_zero_float32(
24116         mut self,
24117         shader_denorm_flush_to_zero_float32: bool,
24118     ) -> Self {
24119         self.inner.shader_denorm_flush_to_zero_float32 = shader_denorm_flush_to_zero_float32.into();
24120         self
24121     }
shader_denorm_flush_to_zero_float64( mut self, shader_denorm_flush_to_zero_float64: bool, ) -> Self24122     pub fn shader_denorm_flush_to_zero_float64(
24123         mut self,
24124         shader_denorm_flush_to_zero_float64: bool,
24125     ) -> Self {
24126         self.inner.shader_denorm_flush_to_zero_float64 = shader_denorm_flush_to_zero_float64.into();
24127         self
24128     }
shader_rounding_mode_rte_float16( mut self, shader_rounding_mode_rte_float16: bool, ) -> Self24129     pub fn shader_rounding_mode_rte_float16(
24130         mut self,
24131         shader_rounding_mode_rte_float16: bool,
24132     ) -> Self {
24133         self.inner.shader_rounding_mode_rte_float16 = shader_rounding_mode_rte_float16.into();
24134         self
24135     }
shader_rounding_mode_rte_float32( mut self, shader_rounding_mode_rte_float32: bool, ) -> Self24136     pub fn shader_rounding_mode_rte_float32(
24137         mut self,
24138         shader_rounding_mode_rte_float32: bool,
24139     ) -> Self {
24140         self.inner.shader_rounding_mode_rte_float32 = shader_rounding_mode_rte_float32.into();
24141         self
24142     }
shader_rounding_mode_rte_float64( mut self, shader_rounding_mode_rte_float64: bool, ) -> Self24143     pub fn shader_rounding_mode_rte_float64(
24144         mut self,
24145         shader_rounding_mode_rte_float64: bool,
24146     ) -> Self {
24147         self.inner.shader_rounding_mode_rte_float64 = shader_rounding_mode_rte_float64.into();
24148         self
24149     }
shader_rounding_mode_rtz_float16( mut self, shader_rounding_mode_rtz_float16: bool, ) -> Self24150     pub fn shader_rounding_mode_rtz_float16(
24151         mut self,
24152         shader_rounding_mode_rtz_float16: bool,
24153     ) -> Self {
24154         self.inner.shader_rounding_mode_rtz_float16 = shader_rounding_mode_rtz_float16.into();
24155         self
24156     }
shader_rounding_mode_rtz_float32( mut self, shader_rounding_mode_rtz_float32: bool, ) -> Self24157     pub fn shader_rounding_mode_rtz_float32(
24158         mut self,
24159         shader_rounding_mode_rtz_float32: bool,
24160     ) -> Self {
24161         self.inner.shader_rounding_mode_rtz_float32 = shader_rounding_mode_rtz_float32.into();
24162         self
24163     }
shader_rounding_mode_rtz_float64( mut self, shader_rounding_mode_rtz_float64: bool, ) -> Self24164     pub fn shader_rounding_mode_rtz_float64(
24165         mut self,
24166         shader_rounding_mode_rtz_float64: bool,
24167     ) -> Self {
24168         self.inner.shader_rounding_mode_rtz_float64 = shader_rounding_mode_rtz_float64.into();
24169         self
24170     }
24171     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24172     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24173     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFloatControlsProperties24174     pub fn build(self) -> PhysicalDeviceFloatControlsProperties {
24175         self.inner
24176     }
24177 }
24178 #[repr(C)]
24179 #[derive(Copy, Clone, Debug)]
24180 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>"]
24181 pub struct PhysicalDeviceHostQueryResetFeatures {
24182     pub s_type: StructureType,
24183     pub p_next: *mut c_void,
24184     pub host_query_reset: Bool32,
24185 }
24186 impl ::std::default::Default for PhysicalDeviceHostQueryResetFeatures {
default() -> PhysicalDeviceHostQueryResetFeatures24187     fn default() -> PhysicalDeviceHostQueryResetFeatures {
24188         PhysicalDeviceHostQueryResetFeatures {
24189             s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
24190             p_next: ::std::ptr::null_mut(),
24191             host_query_reset: Bool32::default(),
24192         }
24193     }
24194 }
24195 impl PhysicalDeviceHostQueryResetFeatures {
builder<'a>() -> PhysicalDeviceHostQueryResetFeaturesBuilder<'a>24196     pub fn builder<'a>() -> PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
24197         PhysicalDeviceHostQueryResetFeaturesBuilder {
24198             inner: PhysicalDeviceHostQueryResetFeatures::default(),
24199             marker: ::std::marker::PhantomData,
24200         }
24201     }
24202 }
24203 #[repr(transparent)]
24204 pub struct PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
24205     inner: PhysicalDeviceHostQueryResetFeatures,
24206     marker: ::std::marker::PhantomData<&'a ()>,
24207 }
24208 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceHostQueryResetFeaturesBuilder<'_> {}
24209 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceHostQueryResetFeatures {}
24210 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceHostQueryResetFeaturesBuilder<'_> {}
24211 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceHostQueryResetFeatures {}
24212 impl<'a> ::std::ops::Deref for PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
24213     type Target = PhysicalDeviceHostQueryResetFeatures;
deref(&self) -> &Self::Target24214     fn deref(&self) -> &Self::Target {
24215         &self.inner
24216     }
24217 }
24218 impl<'a> ::std::ops::DerefMut for PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24219     fn deref_mut(&mut self) -> &mut Self::Target {
24220         &mut self.inner
24221     }
24222 }
24223 impl<'a> PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
host_query_reset(mut self, host_query_reset: bool) -> Self24224     pub fn host_query_reset(mut self, host_query_reset: bool) -> Self {
24225         self.inner.host_query_reset = host_query_reset.into();
24226         self
24227     }
24228     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24229     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24230     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceHostQueryResetFeatures24231     pub fn build(self) -> PhysicalDeviceHostQueryResetFeatures {
24232         self.inner
24233     }
24234 }
24235 #[repr(C)]
24236 #[derive(Copy, Clone, Default, Debug)]
24237 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkNativeBufferUsage2ANDROID.html>"]
24238 pub struct NativeBufferUsage2ANDROID {
24239     pub consumer: u64,
24240     pub producer: u64,
24241 }
24242 impl NativeBufferUsage2ANDROID {
builder<'a>() -> NativeBufferUsage2ANDROIDBuilder<'a>24243     pub fn builder<'a>() -> NativeBufferUsage2ANDROIDBuilder<'a> {
24244         NativeBufferUsage2ANDROIDBuilder {
24245             inner: NativeBufferUsage2ANDROID::default(),
24246             marker: ::std::marker::PhantomData,
24247         }
24248     }
24249 }
24250 #[repr(transparent)]
24251 pub struct NativeBufferUsage2ANDROIDBuilder<'a> {
24252     inner: NativeBufferUsage2ANDROID,
24253     marker: ::std::marker::PhantomData<&'a ()>,
24254 }
24255 impl<'a> ::std::ops::Deref for NativeBufferUsage2ANDROIDBuilder<'a> {
24256     type Target = NativeBufferUsage2ANDROID;
deref(&self) -> &Self::Target24257     fn deref(&self) -> &Self::Target {
24258         &self.inner
24259     }
24260 }
24261 impl<'a> ::std::ops::DerefMut for NativeBufferUsage2ANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24262     fn deref_mut(&mut self) -> &mut Self::Target {
24263         &mut self.inner
24264     }
24265 }
24266 impl<'a> NativeBufferUsage2ANDROIDBuilder<'a> {
consumer(mut self, consumer: u64) -> Self24267     pub fn consumer(mut self, consumer: u64) -> Self {
24268         self.inner.consumer = consumer;
24269         self
24270     }
producer(mut self, producer: u64) -> Self24271     pub fn producer(mut self, producer: u64) -> Self {
24272         self.inner.producer = producer;
24273         self
24274     }
24275     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24276     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24277     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> NativeBufferUsage2ANDROID24278     pub fn build(self) -> NativeBufferUsage2ANDROID {
24279         self.inner
24280     }
24281 }
24282 #[repr(C)]
24283 #[derive(Copy, Clone, Debug)]
24284 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkNativeBufferANDROID.html>"]
24285 pub struct NativeBufferANDROID {
24286     pub s_type: StructureType,
24287     pub p_next: *const c_void,
24288     pub handle: *const c_void,
24289     pub stride: c_int,
24290     pub format: c_int,
24291     pub usage: c_int,
24292     pub usage2: NativeBufferUsage2ANDROID,
24293 }
24294 impl ::std::default::Default for NativeBufferANDROID {
default() -> NativeBufferANDROID24295     fn default() -> NativeBufferANDROID {
24296         NativeBufferANDROID {
24297             s_type: StructureType::NATIVE_BUFFER_ANDROID,
24298             p_next: ::std::ptr::null(),
24299             handle: ::std::ptr::null(),
24300             stride: c_int::default(),
24301             format: c_int::default(),
24302             usage: c_int::default(),
24303             usage2: NativeBufferUsage2ANDROID::default(),
24304         }
24305     }
24306 }
24307 impl NativeBufferANDROID {
builder<'a>() -> NativeBufferANDROIDBuilder<'a>24308     pub fn builder<'a>() -> NativeBufferANDROIDBuilder<'a> {
24309         NativeBufferANDROIDBuilder {
24310             inner: NativeBufferANDROID::default(),
24311             marker: ::std::marker::PhantomData,
24312         }
24313     }
24314 }
24315 #[repr(transparent)]
24316 pub struct NativeBufferANDROIDBuilder<'a> {
24317     inner: NativeBufferANDROID,
24318     marker: ::std::marker::PhantomData<&'a ()>,
24319 }
24320 impl<'a> ::std::ops::Deref for NativeBufferANDROIDBuilder<'a> {
24321     type Target = NativeBufferANDROID;
deref(&self) -> &Self::Target24322     fn deref(&self) -> &Self::Target {
24323         &self.inner
24324     }
24325 }
24326 impl<'a> ::std::ops::DerefMut for NativeBufferANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24327     fn deref_mut(&mut self) -> &mut Self::Target {
24328         &mut self.inner
24329     }
24330 }
24331 impl<'a> NativeBufferANDROIDBuilder<'a> {
handle(mut self, handle: *const c_void) -> Self24332     pub fn handle(mut self, handle: *const c_void) -> Self {
24333         self.inner.handle = handle;
24334         self
24335     }
stride(mut self, stride: c_int) -> Self24336     pub fn stride(mut self, stride: c_int) -> Self {
24337         self.inner.stride = stride;
24338         self
24339     }
format(mut self, format: c_int) -> Self24340     pub fn format(mut self, format: c_int) -> Self {
24341         self.inner.format = format;
24342         self
24343     }
usage(mut self, usage: c_int) -> Self24344     pub fn usage(mut self, usage: c_int) -> Self {
24345         self.inner.usage = usage;
24346         self
24347     }
usage2(mut self, usage2: NativeBufferUsage2ANDROID) -> Self24348     pub fn usage2(mut self, usage2: NativeBufferUsage2ANDROID) -> Self {
24349         self.inner.usage2 = usage2;
24350         self
24351     }
24352     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24353     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24354     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> NativeBufferANDROID24355     pub fn build(self) -> NativeBufferANDROID {
24356         self.inner
24357     }
24358 }
24359 #[repr(C)]
24360 #[derive(Copy, Clone, Debug)]
24361 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainImageCreateInfoANDROID.html>"]
24362 pub struct SwapchainImageCreateInfoANDROID {
24363     pub s_type: StructureType,
24364     pub p_next: *const c_void,
24365     pub usage: SwapchainImageUsageFlagsANDROID,
24366 }
24367 impl ::std::default::Default for SwapchainImageCreateInfoANDROID {
default() -> SwapchainImageCreateInfoANDROID24368     fn default() -> SwapchainImageCreateInfoANDROID {
24369         SwapchainImageCreateInfoANDROID {
24370             s_type: StructureType::SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID,
24371             p_next: ::std::ptr::null(),
24372             usage: SwapchainImageUsageFlagsANDROID::default(),
24373         }
24374     }
24375 }
24376 impl SwapchainImageCreateInfoANDROID {
builder<'a>() -> SwapchainImageCreateInfoANDROIDBuilder<'a>24377     pub fn builder<'a>() -> SwapchainImageCreateInfoANDROIDBuilder<'a> {
24378         SwapchainImageCreateInfoANDROIDBuilder {
24379             inner: SwapchainImageCreateInfoANDROID::default(),
24380             marker: ::std::marker::PhantomData,
24381         }
24382     }
24383 }
24384 #[repr(transparent)]
24385 pub struct SwapchainImageCreateInfoANDROIDBuilder<'a> {
24386     inner: SwapchainImageCreateInfoANDROID,
24387     marker: ::std::marker::PhantomData<&'a ()>,
24388 }
24389 impl<'a> ::std::ops::Deref for SwapchainImageCreateInfoANDROIDBuilder<'a> {
24390     type Target = SwapchainImageCreateInfoANDROID;
deref(&self) -> &Self::Target24391     fn deref(&self) -> &Self::Target {
24392         &self.inner
24393     }
24394 }
24395 impl<'a> ::std::ops::DerefMut for SwapchainImageCreateInfoANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24396     fn deref_mut(&mut self) -> &mut Self::Target {
24397         &mut self.inner
24398     }
24399 }
24400 impl<'a> SwapchainImageCreateInfoANDROIDBuilder<'a> {
usage(mut self, usage: SwapchainImageUsageFlagsANDROID) -> Self24401     pub fn usage(mut self, usage: SwapchainImageUsageFlagsANDROID) -> Self {
24402         self.inner.usage = usage;
24403         self
24404     }
24405     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24406     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24407     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainImageCreateInfoANDROID24408     pub fn build(self) -> SwapchainImageCreateInfoANDROID {
24409         self.inner
24410     }
24411 }
24412 #[repr(C)]
24413 #[derive(Copy, Clone, Debug)]
24414 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePresentationPropertiesANDROID.html>"]
24415 pub struct PhysicalDevicePresentationPropertiesANDROID {
24416     pub s_type: StructureType,
24417     pub p_next: *const c_void,
24418     pub shared_image: Bool32,
24419 }
24420 impl ::std::default::Default for PhysicalDevicePresentationPropertiesANDROID {
default() -> PhysicalDevicePresentationPropertiesANDROID24421     fn default() -> PhysicalDevicePresentationPropertiesANDROID {
24422         PhysicalDevicePresentationPropertiesANDROID {
24423             s_type: StructureType::PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID,
24424             p_next: ::std::ptr::null(),
24425             shared_image: Bool32::default(),
24426         }
24427     }
24428 }
24429 impl PhysicalDevicePresentationPropertiesANDROID {
builder<'a>() -> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a>24430     pub fn builder<'a>() -> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
24431         PhysicalDevicePresentationPropertiesANDROIDBuilder {
24432             inner: PhysicalDevicePresentationPropertiesANDROID::default(),
24433             marker: ::std::marker::PhantomData,
24434         }
24435     }
24436 }
24437 #[repr(transparent)]
24438 pub struct PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
24439     inner: PhysicalDevicePresentationPropertiesANDROID,
24440     marker: ::std::marker::PhantomData<&'a ()>,
24441 }
24442 impl<'a> ::std::ops::Deref for PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
24443     type Target = PhysicalDevicePresentationPropertiesANDROID;
deref(&self) -> &Self::Target24444     fn deref(&self) -> &Self::Target {
24445         &self.inner
24446     }
24447 }
24448 impl<'a> ::std::ops::DerefMut for PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24449     fn deref_mut(&mut self) -> &mut Self::Target {
24450         &mut self.inner
24451     }
24452 }
24453 impl<'a> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
shared_image(mut self, shared_image: bool) -> Self24454     pub fn shared_image(mut self, shared_image: bool) -> Self {
24455         self.inner.shared_image = shared_image.into();
24456         self
24457     }
24458     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24459     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24460     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePresentationPropertiesANDROID24461     pub fn build(self) -> PhysicalDevicePresentationPropertiesANDROID {
24462         self.inner
24463     }
24464 }
24465 #[repr(C)]
24466 #[derive(Copy, Clone, Default, Debug)]
24467 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderResourceUsageAMD.html>"]
24468 pub struct ShaderResourceUsageAMD {
24469     pub num_used_vgprs: u32,
24470     pub num_used_sgprs: u32,
24471     pub lds_size_per_local_work_group: u32,
24472     pub lds_usage_size_in_bytes: usize,
24473     pub scratch_mem_usage_in_bytes: usize,
24474 }
24475 impl ShaderResourceUsageAMD {
builder<'a>() -> ShaderResourceUsageAMDBuilder<'a>24476     pub fn builder<'a>() -> ShaderResourceUsageAMDBuilder<'a> {
24477         ShaderResourceUsageAMDBuilder {
24478             inner: ShaderResourceUsageAMD::default(),
24479             marker: ::std::marker::PhantomData,
24480         }
24481     }
24482 }
24483 #[repr(transparent)]
24484 pub struct ShaderResourceUsageAMDBuilder<'a> {
24485     inner: ShaderResourceUsageAMD,
24486     marker: ::std::marker::PhantomData<&'a ()>,
24487 }
24488 impl<'a> ::std::ops::Deref for ShaderResourceUsageAMDBuilder<'a> {
24489     type Target = ShaderResourceUsageAMD;
deref(&self) -> &Self::Target24490     fn deref(&self) -> &Self::Target {
24491         &self.inner
24492     }
24493 }
24494 impl<'a> ::std::ops::DerefMut for ShaderResourceUsageAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24495     fn deref_mut(&mut self) -> &mut Self::Target {
24496         &mut self.inner
24497     }
24498 }
24499 impl<'a> ShaderResourceUsageAMDBuilder<'a> {
num_used_vgprs(mut self, num_used_vgprs: u32) -> Self24500     pub fn num_used_vgprs(mut self, num_used_vgprs: u32) -> Self {
24501         self.inner.num_used_vgprs = num_used_vgprs;
24502         self
24503     }
num_used_sgprs(mut self, num_used_sgprs: u32) -> Self24504     pub fn num_used_sgprs(mut self, num_used_sgprs: u32) -> Self {
24505         self.inner.num_used_sgprs = num_used_sgprs;
24506         self
24507     }
lds_size_per_local_work_group(mut self, lds_size_per_local_work_group: u32) -> Self24508     pub fn lds_size_per_local_work_group(mut self, lds_size_per_local_work_group: u32) -> Self {
24509         self.inner.lds_size_per_local_work_group = lds_size_per_local_work_group;
24510         self
24511     }
lds_usage_size_in_bytes(mut self, lds_usage_size_in_bytes: usize) -> Self24512     pub fn lds_usage_size_in_bytes(mut self, lds_usage_size_in_bytes: usize) -> Self {
24513         self.inner.lds_usage_size_in_bytes = lds_usage_size_in_bytes;
24514         self
24515     }
scratch_mem_usage_in_bytes(mut self, scratch_mem_usage_in_bytes: usize) -> Self24516     pub fn scratch_mem_usage_in_bytes(mut self, scratch_mem_usage_in_bytes: usize) -> Self {
24517         self.inner.scratch_mem_usage_in_bytes = scratch_mem_usage_in_bytes;
24518         self
24519     }
24520     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24521     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24522     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderResourceUsageAMD24523     pub fn build(self) -> ShaderResourceUsageAMD {
24524         self.inner
24525     }
24526 }
24527 #[repr(C)]
24528 #[derive(Copy, Clone, Debug)]
24529 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderStatisticsInfoAMD.html>"]
24530 pub struct ShaderStatisticsInfoAMD {
24531     pub shader_stage_mask: ShaderStageFlags,
24532     pub resource_usage: ShaderResourceUsageAMD,
24533     pub num_physical_vgprs: u32,
24534     pub num_physical_sgprs: u32,
24535     pub num_available_vgprs: u32,
24536     pub num_available_sgprs: u32,
24537     pub compute_work_group_size: [u32; 3],
24538 }
24539 impl ::std::default::Default for ShaderStatisticsInfoAMD {
default() -> ShaderStatisticsInfoAMD24540     fn default() -> ShaderStatisticsInfoAMD {
24541         ShaderStatisticsInfoAMD {
24542             shader_stage_mask: ShaderStageFlags::default(),
24543             resource_usage: ShaderResourceUsageAMD::default(),
24544             num_physical_vgprs: u32::default(),
24545             num_physical_sgprs: u32::default(),
24546             num_available_vgprs: u32::default(),
24547             num_available_sgprs: u32::default(),
24548             compute_work_group_size: unsafe { ::std::mem::zeroed() },
24549         }
24550     }
24551 }
24552 impl ShaderStatisticsInfoAMD {
builder<'a>() -> ShaderStatisticsInfoAMDBuilder<'a>24553     pub fn builder<'a>() -> ShaderStatisticsInfoAMDBuilder<'a> {
24554         ShaderStatisticsInfoAMDBuilder {
24555             inner: ShaderStatisticsInfoAMD::default(),
24556             marker: ::std::marker::PhantomData,
24557         }
24558     }
24559 }
24560 #[repr(transparent)]
24561 pub struct ShaderStatisticsInfoAMDBuilder<'a> {
24562     inner: ShaderStatisticsInfoAMD,
24563     marker: ::std::marker::PhantomData<&'a ()>,
24564 }
24565 impl<'a> ::std::ops::Deref for ShaderStatisticsInfoAMDBuilder<'a> {
24566     type Target = ShaderStatisticsInfoAMD;
deref(&self) -> &Self::Target24567     fn deref(&self) -> &Self::Target {
24568         &self.inner
24569     }
24570 }
24571 impl<'a> ::std::ops::DerefMut for ShaderStatisticsInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24572     fn deref_mut(&mut self) -> &mut Self::Target {
24573         &mut self.inner
24574     }
24575 }
24576 impl<'a> ShaderStatisticsInfoAMDBuilder<'a> {
shader_stage_mask(mut self, shader_stage_mask: ShaderStageFlags) -> Self24577     pub fn shader_stage_mask(mut self, shader_stage_mask: ShaderStageFlags) -> Self {
24578         self.inner.shader_stage_mask = shader_stage_mask;
24579         self
24580     }
resource_usage(mut self, resource_usage: ShaderResourceUsageAMD) -> Self24581     pub fn resource_usage(mut self, resource_usage: ShaderResourceUsageAMD) -> Self {
24582         self.inner.resource_usage = resource_usage;
24583         self
24584     }
num_physical_vgprs(mut self, num_physical_vgprs: u32) -> Self24585     pub fn num_physical_vgprs(mut self, num_physical_vgprs: u32) -> Self {
24586         self.inner.num_physical_vgprs = num_physical_vgprs;
24587         self
24588     }
num_physical_sgprs(mut self, num_physical_sgprs: u32) -> Self24589     pub fn num_physical_sgprs(mut self, num_physical_sgprs: u32) -> Self {
24590         self.inner.num_physical_sgprs = num_physical_sgprs;
24591         self
24592     }
num_available_vgprs(mut self, num_available_vgprs: u32) -> Self24593     pub fn num_available_vgprs(mut self, num_available_vgprs: u32) -> Self {
24594         self.inner.num_available_vgprs = num_available_vgprs;
24595         self
24596     }
num_available_sgprs(mut self, num_available_sgprs: u32) -> Self24597     pub fn num_available_sgprs(mut self, num_available_sgprs: u32) -> Self {
24598         self.inner.num_available_sgprs = num_available_sgprs;
24599         self
24600     }
compute_work_group_size(mut self, compute_work_group_size: [u32; 3]) -> Self24601     pub fn compute_work_group_size(mut self, compute_work_group_size: [u32; 3]) -> Self {
24602         self.inner.compute_work_group_size = compute_work_group_size;
24603         self
24604     }
24605     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24606     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24607     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderStatisticsInfoAMD24608     pub fn build(self) -> ShaderStatisticsInfoAMD {
24609         self.inner
24610     }
24611 }
24612 #[repr(C)]
24613 #[derive(Copy, Clone, Debug)]
24614 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>"]
24615 pub struct DeviceQueueGlobalPriorityCreateInfoEXT {
24616     pub s_type: StructureType,
24617     pub p_next: *const c_void,
24618     pub global_priority: QueueGlobalPriorityEXT,
24619 }
24620 impl ::std::default::Default for DeviceQueueGlobalPriorityCreateInfoEXT {
default() -> DeviceQueueGlobalPriorityCreateInfoEXT24621     fn default() -> DeviceQueueGlobalPriorityCreateInfoEXT {
24622         DeviceQueueGlobalPriorityCreateInfoEXT {
24623             s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
24624             p_next: ::std::ptr::null(),
24625             global_priority: QueueGlobalPriorityEXT::default(),
24626         }
24627     }
24628 }
24629 impl DeviceQueueGlobalPriorityCreateInfoEXT {
builder<'a>() -> DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a>24630     pub fn builder<'a>() -> DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
24631         DeviceQueueGlobalPriorityCreateInfoEXTBuilder {
24632             inner: DeviceQueueGlobalPriorityCreateInfoEXT::default(),
24633             marker: ::std::marker::PhantomData,
24634         }
24635     }
24636 }
24637 #[repr(transparent)]
24638 pub struct DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
24639     inner: DeviceQueueGlobalPriorityCreateInfoEXT,
24640     marker: ::std::marker::PhantomData<&'a ()>,
24641 }
24642 unsafe impl ExtendsDeviceQueueCreateInfo for DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'_> {}
24643 unsafe impl ExtendsDeviceQueueCreateInfo for DeviceQueueGlobalPriorityCreateInfoEXT {}
24644 impl<'a> ::std::ops::Deref for DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
24645     type Target = DeviceQueueGlobalPriorityCreateInfoEXT;
deref(&self) -> &Self::Target24646     fn deref(&self) -> &Self::Target {
24647         &self.inner
24648     }
24649 }
24650 impl<'a> ::std::ops::DerefMut for DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24651     fn deref_mut(&mut self) -> &mut Self::Target {
24652         &mut self.inner
24653     }
24654 }
24655 impl<'a> DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
global_priority(mut self, global_priority: QueueGlobalPriorityEXT) -> Self24656     pub fn global_priority(mut self, global_priority: QueueGlobalPriorityEXT) -> Self {
24657         self.inner.global_priority = global_priority;
24658         self
24659     }
24660     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24661     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24662     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceQueueGlobalPriorityCreateInfoEXT24663     pub fn build(self) -> DeviceQueueGlobalPriorityCreateInfoEXT {
24664         self.inner
24665     }
24666 }
24667 #[repr(C)]
24668 #[derive(Copy, Clone, Debug)]
24669 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>"]
24670 pub struct PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
24671     pub s_type: StructureType,
24672     pub p_next: *mut c_void,
24673     pub global_priority_query: Bool32,
24674 }
24675 impl ::std::default::Default for PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
default() -> PhysicalDeviceGlobalPriorityQueryFeaturesEXT24676     fn default() -> PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
24677         PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
24678             s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT,
24679             p_next: ::std::ptr::null_mut(),
24680             global_priority_query: Bool32::default(),
24681         }
24682     }
24683 }
24684 impl PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
builder<'a>() -> PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a>24685     pub fn builder<'a>() -> PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
24686         PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder {
24687             inner: PhysicalDeviceGlobalPriorityQueryFeaturesEXT::default(),
24688             marker: ::std::marker::PhantomData,
24689         }
24690     }
24691 }
24692 #[repr(transparent)]
24693 pub struct PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
24694     inner: PhysicalDeviceGlobalPriorityQueryFeaturesEXT,
24695     marker: ::std::marker::PhantomData<&'a ()>,
24696 }
24697 unsafe impl ExtendsPhysicalDeviceFeatures2
24698     for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'_>
24699 {
24700 }
24701 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceGlobalPriorityQueryFeaturesEXT {}
24702 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'_> {}
24703 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceGlobalPriorityQueryFeaturesEXT {}
24704 impl<'a> ::std::ops::Deref for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
24705     type Target = PhysicalDeviceGlobalPriorityQueryFeaturesEXT;
deref(&self) -> &Self::Target24706     fn deref(&self) -> &Self::Target {
24707         &self.inner
24708     }
24709 }
24710 impl<'a> ::std::ops::DerefMut for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24711     fn deref_mut(&mut self) -> &mut Self::Target {
24712         &mut self.inner
24713     }
24714 }
24715 impl<'a> PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
global_priority_query(mut self, global_priority_query: bool) -> Self24716     pub fn global_priority_query(mut self, global_priority_query: bool) -> Self {
24717         self.inner.global_priority_query = global_priority_query.into();
24718         self
24719     }
24720     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24721     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24722     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceGlobalPriorityQueryFeaturesEXT24723     pub fn build(self) -> PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
24724         self.inner
24725     }
24726 }
24727 #[repr(C)]
24728 #[derive(Copy, Clone, Debug)]
24729 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>"]
24730 pub struct QueueFamilyGlobalPriorityPropertiesEXT {
24731     pub s_type: StructureType,
24732     pub p_next: *mut c_void,
24733     pub priority_count: u32,
24734     pub priorities: [QueueGlobalPriorityEXT; MAX_GLOBAL_PRIORITY_SIZE_EXT],
24735 }
24736 impl ::std::default::Default for QueueFamilyGlobalPriorityPropertiesEXT {
default() -> QueueFamilyGlobalPriorityPropertiesEXT24737     fn default() -> QueueFamilyGlobalPriorityPropertiesEXT {
24738         QueueFamilyGlobalPriorityPropertiesEXT {
24739             s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT,
24740             p_next: ::std::ptr::null_mut(),
24741             priority_count: u32::default(),
24742             priorities: unsafe { ::std::mem::zeroed() },
24743         }
24744     }
24745 }
24746 impl QueueFamilyGlobalPriorityPropertiesEXT {
builder<'a>() -> QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a>24747     pub fn builder<'a>() -> QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
24748         QueueFamilyGlobalPriorityPropertiesEXTBuilder {
24749             inner: QueueFamilyGlobalPriorityPropertiesEXT::default(),
24750             marker: ::std::marker::PhantomData,
24751         }
24752     }
24753 }
24754 #[repr(transparent)]
24755 pub struct QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
24756     inner: QueueFamilyGlobalPriorityPropertiesEXT,
24757     marker: ::std::marker::PhantomData<&'a ()>,
24758 }
24759 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyGlobalPriorityPropertiesEXTBuilder<'_> {}
24760 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyGlobalPriorityPropertiesEXT {}
24761 impl<'a> ::std::ops::Deref for QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
24762     type Target = QueueFamilyGlobalPriorityPropertiesEXT;
deref(&self) -> &Self::Target24763     fn deref(&self) -> &Self::Target {
24764         &self.inner
24765     }
24766 }
24767 impl<'a> ::std::ops::DerefMut for QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24768     fn deref_mut(&mut self) -> &mut Self::Target {
24769         &mut self.inner
24770     }
24771 }
24772 impl<'a> QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
priority_count(mut self, priority_count: u32) -> Self24773     pub fn priority_count(mut self, priority_count: u32) -> Self {
24774         self.inner.priority_count = priority_count;
24775         self
24776     }
priorities( mut self, priorities: [QueueGlobalPriorityEXT; MAX_GLOBAL_PRIORITY_SIZE_EXT], ) -> Self24777     pub fn priorities(
24778         mut self,
24779         priorities: [QueueGlobalPriorityEXT; MAX_GLOBAL_PRIORITY_SIZE_EXT],
24780     ) -> Self {
24781         self.inner.priorities = priorities;
24782         self
24783     }
24784     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24785     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24786     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyGlobalPriorityPropertiesEXT24787     pub fn build(self) -> QueueFamilyGlobalPriorityPropertiesEXT {
24788         self.inner
24789     }
24790 }
24791 #[repr(C)]
24792 #[derive(Copy, Clone, Debug)]
24793 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsObjectNameInfoEXT.html>"]
24794 pub struct DebugUtilsObjectNameInfoEXT {
24795     pub s_type: StructureType,
24796     pub p_next: *const c_void,
24797     pub object_type: ObjectType,
24798     pub object_handle: u64,
24799     pub p_object_name: *const c_char,
24800 }
24801 impl ::std::default::Default for DebugUtilsObjectNameInfoEXT {
default() -> DebugUtilsObjectNameInfoEXT24802     fn default() -> DebugUtilsObjectNameInfoEXT {
24803         DebugUtilsObjectNameInfoEXT {
24804             s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
24805             p_next: ::std::ptr::null(),
24806             object_type: ObjectType::default(),
24807             object_handle: u64::default(),
24808             p_object_name: ::std::ptr::null(),
24809         }
24810     }
24811 }
24812 impl DebugUtilsObjectNameInfoEXT {
builder<'a>() -> DebugUtilsObjectNameInfoEXTBuilder<'a>24813     pub fn builder<'a>() -> DebugUtilsObjectNameInfoEXTBuilder<'a> {
24814         DebugUtilsObjectNameInfoEXTBuilder {
24815             inner: DebugUtilsObjectNameInfoEXT::default(),
24816             marker: ::std::marker::PhantomData,
24817         }
24818     }
24819 }
24820 #[repr(transparent)]
24821 pub struct DebugUtilsObjectNameInfoEXTBuilder<'a> {
24822     inner: DebugUtilsObjectNameInfoEXT,
24823     marker: ::std::marker::PhantomData<&'a ()>,
24824 }
24825 impl<'a> ::std::ops::Deref for DebugUtilsObjectNameInfoEXTBuilder<'a> {
24826     type Target = DebugUtilsObjectNameInfoEXT;
deref(&self) -> &Self::Target24827     fn deref(&self) -> &Self::Target {
24828         &self.inner
24829     }
24830 }
24831 impl<'a> ::std::ops::DerefMut for DebugUtilsObjectNameInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24832     fn deref_mut(&mut self) -> &mut Self::Target {
24833         &mut self.inner
24834     }
24835 }
24836 impl<'a> DebugUtilsObjectNameInfoEXTBuilder<'a> {
object_type(mut self, object_type: ObjectType) -> Self24837     pub fn object_type(mut self, object_type: ObjectType) -> Self {
24838         self.inner.object_type = object_type;
24839         self
24840     }
object_handle(mut self, object_handle: u64) -> Self24841     pub fn object_handle(mut self, object_handle: u64) -> Self {
24842         self.inner.object_handle = object_handle;
24843         self
24844     }
object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self24845     pub fn object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self {
24846         self.inner.p_object_name = object_name.as_ptr();
24847         self
24848     }
24849     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24850     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24851     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsObjectNameInfoEXT24852     pub fn build(self) -> DebugUtilsObjectNameInfoEXT {
24853         self.inner
24854     }
24855 }
24856 #[repr(C)]
24857 #[derive(Copy, Clone, Debug)]
24858 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsObjectTagInfoEXT.html>"]
24859 pub struct DebugUtilsObjectTagInfoEXT {
24860     pub s_type: StructureType,
24861     pub p_next: *const c_void,
24862     pub object_type: ObjectType,
24863     pub object_handle: u64,
24864     pub tag_name: u64,
24865     pub tag_size: usize,
24866     pub p_tag: *const c_void,
24867 }
24868 impl ::std::default::Default for DebugUtilsObjectTagInfoEXT {
default() -> DebugUtilsObjectTagInfoEXT24869     fn default() -> DebugUtilsObjectTagInfoEXT {
24870         DebugUtilsObjectTagInfoEXT {
24871             s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
24872             p_next: ::std::ptr::null(),
24873             object_type: ObjectType::default(),
24874             object_handle: u64::default(),
24875             tag_name: u64::default(),
24876             tag_size: usize::default(),
24877             p_tag: ::std::ptr::null(),
24878         }
24879     }
24880 }
24881 impl DebugUtilsObjectTagInfoEXT {
builder<'a>() -> DebugUtilsObjectTagInfoEXTBuilder<'a>24882     pub fn builder<'a>() -> DebugUtilsObjectTagInfoEXTBuilder<'a> {
24883         DebugUtilsObjectTagInfoEXTBuilder {
24884             inner: DebugUtilsObjectTagInfoEXT::default(),
24885             marker: ::std::marker::PhantomData,
24886         }
24887     }
24888 }
24889 #[repr(transparent)]
24890 pub struct DebugUtilsObjectTagInfoEXTBuilder<'a> {
24891     inner: DebugUtilsObjectTagInfoEXT,
24892     marker: ::std::marker::PhantomData<&'a ()>,
24893 }
24894 impl<'a> ::std::ops::Deref for DebugUtilsObjectTagInfoEXTBuilder<'a> {
24895     type Target = DebugUtilsObjectTagInfoEXT;
deref(&self) -> &Self::Target24896     fn deref(&self) -> &Self::Target {
24897         &self.inner
24898     }
24899 }
24900 impl<'a> ::std::ops::DerefMut for DebugUtilsObjectTagInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24901     fn deref_mut(&mut self) -> &mut Self::Target {
24902         &mut self.inner
24903     }
24904 }
24905 impl<'a> DebugUtilsObjectTagInfoEXTBuilder<'a> {
object_type(mut self, object_type: ObjectType) -> Self24906     pub fn object_type(mut self, object_type: ObjectType) -> Self {
24907         self.inner.object_type = object_type;
24908         self
24909     }
object_handle(mut self, object_handle: u64) -> Self24910     pub fn object_handle(mut self, object_handle: u64) -> Self {
24911         self.inner.object_handle = object_handle;
24912         self
24913     }
tag_name(mut self, tag_name: u64) -> Self24914     pub fn tag_name(mut self, tag_name: u64) -> Self {
24915         self.inner.tag_name = tag_name;
24916         self
24917     }
tag(mut self, tag: &'a [u8]) -> Self24918     pub fn tag(mut self, tag: &'a [u8]) -> Self {
24919         self.inner.tag_size = tag.len() as _;
24920         self.inner.p_tag = tag.as_ptr() as *const c_void;
24921         self
24922     }
24923     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24924     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24925     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsObjectTagInfoEXT24926     pub fn build(self) -> DebugUtilsObjectTagInfoEXT {
24927         self.inner
24928     }
24929 }
24930 #[repr(C)]
24931 #[derive(Copy, Clone, Debug)]
24932 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsLabelEXT.html>"]
24933 pub struct DebugUtilsLabelEXT {
24934     pub s_type: StructureType,
24935     pub p_next: *const c_void,
24936     pub p_label_name: *const c_char,
24937     pub color: [f32; 4],
24938 }
24939 impl ::std::default::Default for DebugUtilsLabelEXT {
default() -> DebugUtilsLabelEXT24940     fn default() -> DebugUtilsLabelEXT {
24941         DebugUtilsLabelEXT {
24942             s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
24943             p_next: ::std::ptr::null(),
24944             p_label_name: ::std::ptr::null(),
24945             color: unsafe { ::std::mem::zeroed() },
24946         }
24947     }
24948 }
24949 impl DebugUtilsLabelEXT {
builder<'a>() -> DebugUtilsLabelEXTBuilder<'a>24950     pub fn builder<'a>() -> DebugUtilsLabelEXTBuilder<'a> {
24951         DebugUtilsLabelEXTBuilder {
24952             inner: DebugUtilsLabelEXT::default(),
24953             marker: ::std::marker::PhantomData,
24954         }
24955     }
24956 }
24957 #[repr(transparent)]
24958 pub struct DebugUtilsLabelEXTBuilder<'a> {
24959     inner: DebugUtilsLabelEXT,
24960     marker: ::std::marker::PhantomData<&'a ()>,
24961 }
24962 impl<'a> ::std::ops::Deref for DebugUtilsLabelEXTBuilder<'a> {
24963     type Target = DebugUtilsLabelEXT;
deref(&self) -> &Self::Target24964     fn deref(&self) -> &Self::Target {
24965         &self.inner
24966     }
24967 }
24968 impl<'a> ::std::ops::DerefMut for DebugUtilsLabelEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24969     fn deref_mut(&mut self) -> &mut Self::Target {
24970         &mut self.inner
24971     }
24972 }
24973 impl<'a> DebugUtilsLabelEXTBuilder<'a> {
label_name(mut self, label_name: &'a ::std::ffi::CStr) -> Self24974     pub fn label_name(mut self, label_name: &'a ::std::ffi::CStr) -> Self {
24975         self.inner.p_label_name = label_name.as_ptr();
24976         self
24977     }
color(mut self, color: [f32; 4]) -> Self24978     pub fn color(mut self, color: [f32; 4]) -> Self {
24979         self.inner.color = color;
24980         self
24981     }
24982     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24983     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24984     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsLabelEXT24985     pub fn build(self) -> DebugUtilsLabelEXT {
24986         self.inner
24987     }
24988 }
24989 #[repr(C)]
24990 #[derive(Copy, Clone)]
24991 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>"]
24992 pub struct DebugUtilsMessengerCreateInfoEXT {
24993     pub s_type: StructureType,
24994     pub p_next: *const c_void,
24995     pub flags: DebugUtilsMessengerCreateFlagsEXT,
24996     pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
24997     pub message_type: DebugUtilsMessageTypeFlagsEXT,
24998     pub pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
24999     pub p_user_data: *mut c_void,
25000 }
25001 impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result25002     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
25003         fmt.debug_struct("DebugUtilsMessengerCreateInfoEXT")
25004             .field("s_type", &self.s_type)
25005             .field("p_next", &self.p_next)
25006             .field("flags", &self.flags)
25007             .field("message_severity", &self.message_severity)
25008             .field("message_type", &self.message_type)
25009             .field(
25010                 "pfn_user_callback",
25011                 &(self.pfn_user_callback.map(|x| x as *const ())),
25012             )
25013             .field("p_user_data", &self.p_user_data)
25014             .finish()
25015     }
25016 }
25017 impl ::std::default::Default for DebugUtilsMessengerCreateInfoEXT {
default() -> DebugUtilsMessengerCreateInfoEXT25018     fn default() -> DebugUtilsMessengerCreateInfoEXT {
25019         DebugUtilsMessengerCreateInfoEXT {
25020             s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
25021             p_next: ::std::ptr::null(),
25022             flags: DebugUtilsMessengerCreateFlagsEXT::default(),
25023             message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
25024             message_type: DebugUtilsMessageTypeFlagsEXT::default(),
25025             pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
25026             p_user_data: ::std::ptr::null_mut(),
25027         }
25028     }
25029 }
25030 impl DebugUtilsMessengerCreateInfoEXT {
builder<'a>() -> DebugUtilsMessengerCreateInfoEXTBuilder<'a>25031     pub fn builder<'a>() -> DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
25032         DebugUtilsMessengerCreateInfoEXTBuilder {
25033             inner: DebugUtilsMessengerCreateInfoEXT::default(),
25034             marker: ::std::marker::PhantomData,
25035         }
25036     }
25037 }
25038 #[repr(transparent)]
25039 pub struct DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
25040     inner: DebugUtilsMessengerCreateInfoEXT,
25041     marker: ::std::marker::PhantomData<&'a ()>,
25042 }
25043 unsafe impl ExtendsInstanceCreateInfo for DebugUtilsMessengerCreateInfoEXTBuilder<'_> {}
25044 unsafe impl ExtendsInstanceCreateInfo for DebugUtilsMessengerCreateInfoEXT {}
25045 impl<'a> ::std::ops::Deref for DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
25046     type Target = DebugUtilsMessengerCreateInfoEXT;
deref(&self) -> &Self::Target25047     fn deref(&self) -> &Self::Target {
25048         &self.inner
25049     }
25050 }
25051 impl<'a> ::std::ops::DerefMut for DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25052     fn deref_mut(&mut self) -> &mut Self::Target {
25053         &mut self.inner
25054     }
25055 }
25056 impl<'a> DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DebugUtilsMessengerCreateFlagsEXT) -> Self25057     pub fn flags(mut self, flags: DebugUtilsMessengerCreateFlagsEXT) -> Self {
25058         self.inner.flags = flags;
25059         self
25060     }
message_severity(mut self, message_severity: DebugUtilsMessageSeverityFlagsEXT) -> Self25061     pub fn message_severity(mut self, message_severity: DebugUtilsMessageSeverityFlagsEXT) -> Self {
25062         self.inner.message_severity = message_severity;
25063         self
25064     }
message_type(mut self, message_type: DebugUtilsMessageTypeFlagsEXT) -> Self25065     pub fn message_type(mut self, message_type: DebugUtilsMessageTypeFlagsEXT) -> Self {
25066         self.inner.message_type = message_type;
25067         self
25068     }
pfn_user_callback( mut self, pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT, ) -> Self25069     pub fn pfn_user_callback(
25070         mut self,
25071         pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
25072     ) -> Self {
25073         self.inner.pfn_user_callback = pfn_user_callback;
25074         self
25075     }
user_data(mut self, user_data: *mut c_void) -> Self25076     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
25077         self.inner.p_user_data = user_data;
25078         self
25079     }
25080     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25081     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25082     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsMessengerCreateInfoEXT25083     pub fn build(self) -> DebugUtilsMessengerCreateInfoEXT {
25084         self.inner
25085     }
25086 }
25087 #[repr(C)]
25088 #[derive(Copy, Clone, Debug)]
25089 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>"]
25090 pub struct DebugUtilsMessengerCallbackDataEXT {
25091     pub s_type: StructureType,
25092     pub p_next: *const c_void,
25093     pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
25094     pub p_message_id_name: *const c_char,
25095     pub message_id_number: i32,
25096     pub p_message: *const c_char,
25097     pub queue_label_count: u32,
25098     pub p_queue_labels: *const DebugUtilsLabelEXT,
25099     pub cmd_buf_label_count: u32,
25100     pub p_cmd_buf_labels: *const DebugUtilsLabelEXT,
25101     pub object_count: u32,
25102     pub p_objects: *const DebugUtilsObjectNameInfoEXT,
25103 }
25104 impl ::std::default::Default for DebugUtilsMessengerCallbackDataEXT {
default() -> DebugUtilsMessengerCallbackDataEXT25105     fn default() -> DebugUtilsMessengerCallbackDataEXT {
25106         DebugUtilsMessengerCallbackDataEXT {
25107             s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
25108             p_next: ::std::ptr::null(),
25109             flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
25110             p_message_id_name: ::std::ptr::null(),
25111             message_id_number: i32::default(),
25112             p_message: ::std::ptr::null(),
25113             queue_label_count: u32::default(),
25114             p_queue_labels: ::std::ptr::null(),
25115             cmd_buf_label_count: u32::default(),
25116             p_cmd_buf_labels: ::std::ptr::null(),
25117             object_count: u32::default(),
25118             p_objects: ::std::ptr::null(),
25119         }
25120     }
25121 }
25122 impl DebugUtilsMessengerCallbackDataEXT {
builder<'a>() -> DebugUtilsMessengerCallbackDataEXTBuilder<'a>25123     pub fn builder<'a>() -> DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
25124         DebugUtilsMessengerCallbackDataEXTBuilder {
25125             inner: DebugUtilsMessengerCallbackDataEXT::default(),
25126             marker: ::std::marker::PhantomData,
25127         }
25128     }
25129 }
25130 #[repr(transparent)]
25131 pub struct DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
25132     inner: DebugUtilsMessengerCallbackDataEXT,
25133     marker: ::std::marker::PhantomData<&'a ()>,
25134 }
25135 impl<'a> ::std::ops::Deref for DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
25136     type Target = DebugUtilsMessengerCallbackDataEXT;
deref(&self) -> &Self::Target25137     fn deref(&self) -> &Self::Target {
25138         &self.inner
25139     }
25140 }
25141 impl<'a> ::std::ops::DerefMut for DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25142     fn deref_mut(&mut self) -> &mut Self::Target {
25143         &mut self.inner
25144     }
25145 }
25146 impl<'a> DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
flags(mut self, flags: DebugUtilsMessengerCallbackDataFlagsEXT) -> Self25147     pub fn flags(mut self, flags: DebugUtilsMessengerCallbackDataFlagsEXT) -> Self {
25148         self.inner.flags = flags;
25149         self
25150     }
message_id_name(mut self, message_id_name: &'a ::std::ffi::CStr) -> Self25151     pub fn message_id_name(mut self, message_id_name: &'a ::std::ffi::CStr) -> Self {
25152         self.inner.p_message_id_name = message_id_name.as_ptr();
25153         self
25154     }
message_id_number(mut self, message_id_number: i32) -> Self25155     pub fn message_id_number(mut self, message_id_number: i32) -> Self {
25156         self.inner.message_id_number = message_id_number;
25157         self
25158     }
message(mut self, message: &'a ::std::ffi::CStr) -> Self25159     pub fn message(mut self, message: &'a ::std::ffi::CStr) -> Self {
25160         self.inner.p_message = message.as_ptr();
25161         self
25162     }
queue_labels(mut self, queue_labels: &'a [DebugUtilsLabelEXT]) -> Self25163     pub fn queue_labels(mut self, queue_labels: &'a [DebugUtilsLabelEXT]) -> Self {
25164         self.inner.queue_label_count = queue_labels.len() as _;
25165         self.inner.p_queue_labels = queue_labels.as_ptr();
25166         self
25167     }
cmd_buf_labels(mut self, cmd_buf_labels: &'a [DebugUtilsLabelEXT]) -> Self25168     pub fn cmd_buf_labels(mut self, cmd_buf_labels: &'a [DebugUtilsLabelEXT]) -> Self {
25169         self.inner.cmd_buf_label_count = cmd_buf_labels.len() as _;
25170         self.inner.p_cmd_buf_labels = cmd_buf_labels.as_ptr();
25171         self
25172     }
objects(mut self, objects: &'a [DebugUtilsObjectNameInfoEXT]) -> Self25173     pub fn objects(mut self, objects: &'a [DebugUtilsObjectNameInfoEXT]) -> Self {
25174         self.inner.object_count = objects.len() as _;
25175         self.inner.p_objects = objects.as_ptr();
25176         self
25177     }
25178     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25179     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25180     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsMessengerCallbackDataEXT25181     pub fn build(self) -> DebugUtilsMessengerCallbackDataEXT {
25182         self.inner
25183     }
25184 }
25185 #[repr(C)]
25186 #[derive(Copy, Clone, Debug)]
25187 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>"]
25188 pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
25189     pub s_type: StructureType,
25190     pub p_next: *mut c_void,
25191     pub device_memory_report: Bool32,
25192 }
25193 impl ::std::default::Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
default() -> PhysicalDeviceDeviceMemoryReportFeaturesEXT25194     fn default() -> PhysicalDeviceDeviceMemoryReportFeaturesEXT {
25195         PhysicalDeviceDeviceMemoryReportFeaturesEXT {
25196             s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
25197             p_next: ::std::ptr::null_mut(),
25198             device_memory_report: Bool32::default(),
25199         }
25200     }
25201 }
25202 impl PhysicalDeviceDeviceMemoryReportFeaturesEXT {
builder<'a>() -> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a>25203     pub fn builder<'a>() -> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
25204         PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder {
25205             inner: PhysicalDeviceDeviceMemoryReportFeaturesEXT::default(),
25206             marker: ::std::marker::PhantomData,
25207         }
25208     }
25209 }
25210 #[repr(transparent)]
25211 pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
25212     inner: PhysicalDeviceDeviceMemoryReportFeaturesEXT,
25213     marker: ::std::marker::PhantomData<&'a ()>,
25214 }
25215 unsafe impl ExtendsPhysicalDeviceFeatures2
25216     for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'_>
25217 {
25218 }
25219 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
25220 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'_> {}
25221 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
25222 impl<'a> ::std::ops::Deref for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
25223     type Target = PhysicalDeviceDeviceMemoryReportFeaturesEXT;
deref(&self) -> &Self::Target25224     fn deref(&self) -> &Self::Target {
25225         &self.inner
25226     }
25227 }
25228 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25229     fn deref_mut(&mut self) -> &mut Self::Target {
25230         &mut self.inner
25231     }
25232 }
25233 impl<'a> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
device_memory_report(mut self, device_memory_report: bool) -> Self25234     pub fn device_memory_report(mut self, device_memory_report: bool) -> Self {
25235         self.inner.device_memory_report = device_memory_report.into();
25236         self
25237     }
25238     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25239     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25240     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDeviceMemoryReportFeaturesEXT25241     pub fn build(self) -> PhysicalDeviceDeviceMemoryReportFeaturesEXT {
25242         self.inner
25243     }
25244 }
25245 #[repr(C)]
25246 #[derive(Copy, Clone)]
25247 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>"]
25248 pub struct DeviceDeviceMemoryReportCreateInfoEXT {
25249     pub s_type: StructureType,
25250     pub p_next: *const c_void,
25251     pub flags: DeviceMemoryReportFlagsEXT,
25252     pub pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
25253     pub p_user_data: *mut c_void,
25254 }
25255 impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result25256     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
25257         fmt.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
25258             .field("s_type", &self.s_type)
25259             .field("p_next", &self.p_next)
25260             .field("flags", &self.flags)
25261             .field(
25262                 "pfn_user_callback",
25263                 &(self.pfn_user_callback.map(|x| x as *const ())),
25264             )
25265             .field("p_user_data", &self.p_user_data)
25266             .finish()
25267     }
25268 }
25269 impl ::std::default::Default for DeviceDeviceMemoryReportCreateInfoEXT {
default() -> DeviceDeviceMemoryReportCreateInfoEXT25270     fn default() -> DeviceDeviceMemoryReportCreateInfoEXT {
25271         DeviceDeviceMemoryReportCreateInfoEXT {
25272             s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
25273             p_next: ::std::ptr::null(),
25274             flags: DeviceMemoryReportFlagsEXT::default(),
25275             pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
25276             p_user_data: ::std::ptr::null_mut(),
25277         }
25278     }
25279 }
25280 impl DeviceDeviceMemoryReportCreateInfoEXT {
builder<'a>() -> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a>25281     pub fn builder<'a>() -> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
25282         DeviceDeviceMemoryReportCreateInfoEXTBuilder {
25283             inner: DeviceDeviceMemoryReportCreateInfoEXT::default(),
25284             marker: ::std::marker::PhantomData,
25285         }
25286     }
25287 }
25288 #[repr(transparent)]
25289 pub struct DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
25290     inner: DeviceDeviceMemoryReportCreateInfoEXT,
25291     marker: ::std::marker::PhantomData<&'a ()>,
25292 }
25293 unsafe impl ExtendsDeviceCreateInfo for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'_> {}
25294 unsafe impl ExtendsDeviceCreateInfo for DeviceDeviceMemoryReportCreateInfoEXT {}
25295 impl<'a> ::std::ops::Deref for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
25296     type Target = DeviceDeviceMemoryReportCreateInfoEXT;
deref(&self) -> &Self::Target25297     fn deref(&self) -> &Self::Target {
25298         &self.inner
25299     }
25300 }
25301 impl<'a> ::std::ops::DerefMut for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25302     fn deref_mut(&mut self) -> &mut Self::Target {
25303         &mut self.inner
25304     }
25305 }
25306 impl<'a> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self25307     pub fn flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self {
25308         self.inner.flags = flags;
25309         self
25310     }
pfn_user_callback( mut self, pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT, ) -> Self25311     pub fn pfn_user_callback(
25312         mut self,
25313         pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
25314     ) -> Self {
25315         self.inner.pfn_user_callback = pfn_user_callback;
25316         self
25317     }
user_data(mut self, user_data: *mut c_void) -> Self25318     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
25319         self.inner.p_user_data = user_data;
25320         self
25321     }
25322     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25323     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25324     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceDeviceMemoryReportCreateInfoEXT25325     pub fn build(self) -> DeviceDeviceMemoryReportCreateInfoEXT {
25326         self.inner
25327     }
25328 }
25329 #[repr(C)]
25330 #[derive(Copy, Clone, Debug)]
25331 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryReportCallbackDataEXT.html>"]
25332 pub struct DeviceMemoryReportCallbackDataEXT {
25333     pub s_type: StructureType,
25334     pub p_next: *mut c_void,
25335     pub flags: DeviceMemoryReportFlagsEXT,
25336     pub ty: DeviceMemoryReportEventTypeEXT,
25337     pub memory_object_id: u64,
25338     pub size: DeviceSize,
25339     pub object_type: ObjectType,
25340     pub object_handle: u64,
25341     pub heap_index: u32,
25342 }
25343 impl ::std::default::Default for DeviceMemoryReportCallbackDataEXT {
default() -> DeviceMemoryReportCallbackDataEXT25344     fn default() -> DeviceMemoryReportCallbackDataEXT {
25345         DeviceMemoryReportCallbackDataEXT {
25346             s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
25347             p_next: ::std::ptr::null_mut(),
25348             flags: DeviceMemoryReportFlagsEXT::default(),
25349             ty: DeviceMemoryReportEventTypeEXT::default(),
25350             memory_object_id: u64::default(),
25351             size: DeviceSize::default(),
25352             object_type: ObjectType::default(),
25353             object_handle: u64::default(),
25354             heap_index: u32::default(),
25355         }
25356     }
25357 }
25358 impl DeviceMemoryReportCallbackDataEXT {
builder<'a>() -> DeviceMemoryReportCallbackDataEXTBuilder<'a>25359     pub fn builder<'a>() -> DeviceMemoryReportCallbackDataEXTBuilder<'a> {
25360         DeviceMemoryReportCallbackDataEXTBuilder {
25361             inner: DeviceMemoryReportCallbackDataEXT::default(),
25362             marker: ::std::marker::PhantomData,
25363         }
25364     }
25365 }
25366 #[repr(transparent)]
25367 pub struct DeviceMemoryReportCallbackDataEXTBuilder<'a> {
25368     inner: DeviceMemoryReportCallbackDataEXT,
25369     marker: ::std::marker::PhantomData<&'a ()>,
25370 }
25371 impl<'a> ::std::ops::Deref for DeviceMemoryReportCallbackDataEXTBuilder<'a> {
25372     type Target = DeviceMemoryReportCallbackDataEXT;
deref(&self) -> &Self::Target25373     fn deref(&self) -> &Self::Target {
25374         &self.inner
25375     }
25376 }
25377 impl<'a> ::std::ops::DerefMut for DeviceMemoryReportCallbackDataEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25378     fn deref_mut(&mut self) -> &mut Self::Target {
25379         &mut self.inner
25380     }
25381 }
25382 impl<'a> DeviceMemoryReportCallbackDataEXTBuilder<'a> {
flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self25383     pub fn flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self {
25384         self.inner.flags = flags;
25385         self
25386     }
ty(mut self, ty: DeviceMemoryReportEventTypeEXT) -> Self25387     pub fn ty(mut self, ty: DeviceMemoryReportEventTypeEXT) -> Self {
25388         self.inner.ty = ty;
25389         self
25390     }
memory_object_id(mut self, memory_object_id: u64) -> Self25391     pub fn memory_object_id(mut self, memory_object_id: u64) -> Self {
25392         self.inner.memory_object_id = memory_object_id;
25393         self
25394     }
size(mut self, size: DeviceSize) -> Self25395     pub fn size(mut self, size: DeviceSize) -> Self {
25396         self.inner.size = size;
25397         self
25398     }
object_type(mut self, object_type: ObjectType) -> Self25399     pub fn object_type(mut self, object_type: ObjectType) -> Self {
25400         self.inner.object_type = object_type;
25401         self
25402     }
object_handle(mut self, object_handle: u64) -> Self25403     pub fn object_handle(mut self, object_handle: u64) -> Self {
25404         self.inner.object_handle = object_handle;
25405         self
25406     }
heap_index(mut self, heap_index: u32) -> Self25407     pub fn heap_index(mut self, heap_index: u32) -> Self {
25408         self.inner.heap_index = heap_index;
25409         self
25410     }
25411     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25412     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25413     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceMemoryReportCallbackDataEXT25414     pub fn build(self) -> DeviceMemoryReportCallbackDataEXT {
25415         self.inner
25416     }
25417 }
25418 #[repr(C)]
25419 #[derive(Copy, Clone, Debug)]
25420 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryHostPointerInfoEXT.html>"]
25421 pub struct ImportMemoryHostPointerInfoEXT {
25422     pub s_type: StructureType,
25423     pub p_next: *const c_void,
25424     pub handle_type: ExternalMemoryHandleTypeFlags,
25425     pub p_host_pointer: *mut c_void,
25426 }
25427 impl ::std::default::Default for ImportMemoryHostPointerInfoEXT {
default() -> ImportMemoryHostPointerInfoEXT25428     fn default() -> ImportMemoryHostPointerInfoEXT {
25429         ImportMemoryHostPointerInfoEXT {
25430             s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
25431             p_next: ::std::ptr::null(),
25432             handle_type: ExternalMemoryHandleTypeFlags::default(),
25433             p_host_pointer: ::std::ptr::null_mut(),
25434         }
25435     }
25436 }
25437 impl ImportMemoryHostPointerInfoEXT {
builder<'a>() -> ImportMemoryHostPointerInfoEXTBuilder<'a>25438     pub fn builder<'a>() -> ImportMemoryHostPointerInfoEXTBuilder<'a> {
25439         ImportMemoryHostPointerInfoEXTBuilder {
25440             inner: ImportMemoryHostPointerInfoEXT::default(),
25441             marker: ::std::marker::PhantomData,
25442         }
25443     }
25444 }
25445 #[repr(transparent)]
25446 pub struct ImportMemoryHostPointerInfoEXTBuilder<'a> {
25447     inner: ImportMemoryHostPointerInfoEXT,
25448     marker: ::std::marker::PhantomData<&'a ()>,
25449 }
25450 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryHostPointerInfoEXTBuilder<'_> {}
25451 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryHostPointerInfoEXT {}
25452 impl<'a> ::std::ops::Deref for ImportMemoryHostPointerInfoEXTBuilder<'a> {
25453     type Target = ImportMemoryHostPointerInfoEXT;
deref(&self) -> &Self::Target25454     fn deref(&self) -> &Self::Target {
25455         &self.inner
25456     }
25457 }
25458 impl<'a> ::std::ops::DerefMut for ImportMemoryHostPointerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25459     fn deref_mut(&mut self) -> &mut Self::Target {
25460         &mut self.inner
25461     }
25462 }
25463 impl<'a> ImportMemoryHostPointerInfoEXTBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self25464     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
25465         self.inner.handle_type = handle_type;
25466         self
25467     }
host_pointer(mut self, host_pointer: *mut c_void) -> Self25468     pub fn host_pointer(mut self, host_pointer: *mut c_void) -> Self {
25469         self.inner.p_host_pointer = host_pointer;
25470         self
25471     }
25472     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25473     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25474     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryHostPointerInfoEXT25475     pub fn build(self) -> ImportMemoryHostPointerInfoEXT {
25476         self.inner
25477     }
25478 }
25479 #[repr(C)]
25480 #[derive(Copy, Clone, Debug)]
25481 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHostPointerPropertiesEXT.html>"]
25482 pub struct MemoryHostPointerPropertiesEXT {
25483     pub s_type: StructureType,
25484     pub p_next: *mut c_void,
25485     pub memory_type_bits: u32,
25486 }
25487 impl ::std::default::Default for MemoryHostPointerPropertiesEXT {
default() -> MemoryHostPointerPropertiesEXT25488     fn default() -> MemoryHostPointerPropertiesEXT {
25489         MemoryHostPointerPropertiesEXT {
25490             s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
25491             p_next: ::std::ptr::null_mut(),
25492             memory_type_bits: u32::default(),
25493         }
25494     }
25495 }
25496 impl MemoryHostPointerPropertiesEXT {
builder<'a>() -> MemoryHostPointerPropertiesEXTBuilder<'a>25497     pub fn builder<'a>() -> MemoryHostPointerPropertiesEXTBuilder<'a> {
25498         MemoryHostPointerPropertiesEXTBuilder {
25499             inner: MemoryHostPointerPropertiesEXT::default(),
25500             marker: ::std::marker::PhantomData,
25501         }
25502     }
25503 }
25504 #[repr(transparent)]
25505 pub struct MemoryHostPointerPropertiesEXTBuilder<'a> {
25506     inner: MemoryHostPointerPropertiesEXT,
25507     marker: ::std::marker::PhantomData<&'a ()>,
25508 }
25509 impl<'a> ::std::ops::Deref for MemoryHostPointerPropertiesEXTBuilder<'a> {
25510     type Target = MemoryHostPointerPropertiesEXT;
deref(&self) -> &Self::Target25511     fn deref(&self) -> &Self::Target {
25512         &self.inner
25513     }
25514 }
25515 impl<'a> ::std::ops::DerefMut for MemoryHostPointerPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25516     fn deref_mut(&mut self) -> &mut Self::Target {
25517         &mut self.inner
25518     }
25519 }
25520 impl<'a> MemoryHostPointerPropertiesEXTBuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self25521     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
25522         self.inner.memory_type_bits = memory_type_bits;
25523         self
25524     }
25525     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25526     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25527     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryHostPointerPropertiesEXT25528     pub fn build(self) -> MemoryHostPointerPropertiesEXT {
25529         self.inner
25530     }
25531 }
25532 #[repr(C)]
25533 #[derive(Copy, Clone, Debug)]
25534 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>"]
25535 pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
25536     pub s_type: StructureType,
25537     pub p_next: *mut c_void,
25538     pub min_imported_host_pointer_alignment: DeviceSize,
25539 }
25540 impl ::std::default::Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
default() -> PhysicalDeviceExternalMemoryHostPropertiesEXT25541     fn default() -> PhysicalDeviceExternalMemoryHostPropertiesEXT {
25542         PhysicalDeviceExternalMemoryHostPropertiesEXT {
25543             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
25544             p_next: ::std::ptr::null_mut(),
25545             min_imported_host_pointer_alignment: DeviceSize::default(),
25546         }
25547     }
25548 }
25549 impl PhysicalDeviceExternalMemoryHostPropertiesEXT {
builder<'a>() -> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a>25550     pub fn builder<'a>() -> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
25551         PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder {
25552             inner: PhysicalDeviceExternalMemoryHostPropertiesEXT::default(),
25553             marker: ::std::marker::PhantomData,
25554         }
25555     }
25556 }
25557 #[repr(transparent)]
25558 pub struct PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
25559     inner: PhysicalDeviceExternalMemoryHostPropertiesEXT,
25560     marker: ::std::marker::PhantomData<&'a ()>,
25561 }
25562 unsafe impl ExtendsPhysicalDeviceProperties2
25563     for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'_>
25564 {
25565 }
25566 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
25567 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
25568     type Target = PhysicalDeviceExternalMemoryHostPropertiesEXT;
deref(&self) -> &Self::Target25569     fn deref(&self) -> &Self::Target {
25570         &self.inner
25571     }
25572 }
25573 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25574     fn deref_mut(&mut self) -> &mut Self::Target {
25575         &mut self.inner
25576     }
25577 }
25578 impl<'a> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
min_imported_host_pointer_alignment( mut self, min_imported_host_pointer_alignment: DeviceSize, ) -> Self25579     pub fn min_imported_host_pointer_alignment(
25580         mut self,
25581         min_imported_host_pointer_alignment: DeviceSize,
25582     ) -> Self {
25583         self.inner.min_imported_host_pointer_alignment = min_imported_host_pointer_alignment;
25584         self
25585     }
25586     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25587     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25588     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalMemoryHostPropertiesEXT25589     pub fn build(self) -> PhysicalDeviceExternalMemoryHostPropertiesEXT {
25590         self.inner
25591     }
25592 }
25593 #[repr(C)]
25594 #[derive(Copy, Clone, Debug)]
25595 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>"]
25596 pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
25597     pub s_type: StructureType,
25598     pub p_next: *mut c_void,
25599     pub primitive_overestimation_size: f32,
25600     pub max_extra_primitive_overestimation_size: f32,
25601     pub extra_primitive_overestimation_size_granularity: f32,
25602     pub primitive_underestimation: Bool32,
25603     pub conservative_point_and_line_rasterization: Bool32,
25604     pub degenerate_triangles_rasterized: Bool32,
25605     pub degenerate_lines_rasterized: Bool32,
25606     pub fully_covered_fragment_shader_input_variable: Bool32,
25607     pub conservative_rasterization_post_depth_coverage: Bool32,
25608 }
25609 impl ::std::default::Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
default() -> PhysicalDeviceConservativeRasterizationPropertiesEXT25610     fn default() -> PhysicalDeviceConservativeRasterizationPropertiesEXT {
25611         PhysicalDeviceConservativeRasterizationPropertiesEXT {
25612             s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
25613             p_next: ::std::ptr::null_mut(),
25614             primitive_overestimation_size: f32::default(),
25615             max_extra_primitive_overestimation_size: f32::default(),
25616             extra_primitive_overestimation_size_granularity: f32::default(),
25617             primitive_underestimation: Bool32::default(),
25618             conservative_point_and_line_rasterization: Bool32::default(),
25619             degenerate_triangles_rasterized: Bool32::default(),
25620             degenerate_lines_rasterized: Bool32::default(),
25621             fully_covered_fragment_shader_input_variable: Bool32::default(),
25622             conservative_rasterization_post_depth_coverage: Bool32::default(),
25623         }
25624     }
25625 }
25626 impl PhysicalDeviceConservativeRasterizationPropertiesEXT {
builder<'a>() -> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a>25627     pub fn builder<'a>() -> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
25628         PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder {
25629             inner: PhysicalDeviceConservativeRasterizationPropertiesEXT::default(),
25630             marker: ::std::marker::PhantomData,
25631         }
25632     }
25633 }
25634 #[repr(transparent)]
25635 pub struct PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
25636     inner: PhysicalDeviceConservativeRasterizationPropertiesEXT,
25637     marker: ::std::marker::PhantomData<&'a ()>,
25638 }
25639 unsafe impl ExtendsPhysicalDeviceProperties2
25640     for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'_>
25641 {
25642 }
25643 unsafe impl ExtendsPhysicalDeviceProperties2
25644     for PhysicalDeviceConservativeRasterizationPropertiesEXT
25645 {
25646 }
25647 impl<'a> ::std::ops::Deref for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
25648     type Target = PhysicalDeviceConservativeRasterizationPropertiesEXT;
deref(&self) -> &Self::Target25649     fn deref(&self) -> &Self::Target {
25650         &self.inner
25651     }
25652 }
25653 impl<'a> ::std::ops::DerefMut for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25654     fn deref_mut(&mut self) -> &mut Self::Target {
25655         &mut self.inner
25656     }
25657 }
25658 impl<'a> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
primitive_overestimation_size(mut self, primitive_overestimation_size: f32) -> Self25659     pub fn primitive_overestimation_size(mut self, primitive_overestimation_size: f32) -> Self {
25660         self.inner.primitive_overestimation_size = primitive_overestimation_size;
25661         self
25662     }
max_extra_primitive_overestimation_size( mut self, max_extra_primitive_overestimation_size: f32, ) -> Self25663     pub fn max_extra_primitive_overestimation_size(
25664         mut self,
25665         max_extra_primitive_overestimation_size: f32,
25666     ) -> Self {
25667         self.inner.max_extra_primitive_overestimation_size =
25668             max_extra_primitive_overestimation_size;
25669         self
25670     }
extra_primitive_overestimation_size_granularity( mut self, extra_primitive_overestimation_size_granularity: f32, ) -> Self25671     pub fn extra_primitive_overestimation_size_granularity(
25672         mut self,
25673         extra_primitive_overestimation_size_granularity: f32,
25674     ) -> Self {
25675         self.inner.extra_primitive_overestimation_size_granularity =
25676             extra_primitive_overestimation_size_granularity;
25677         self
25678     }
primitive_underestimation(mut self, primitive_underestimation: bool) -> Self25679     pub fn primitive_underestimation(mut self, primitive_underestimation: bool) -> Self {
25680         self.inner.primitive_underestimation = primitive_underestimation.into();
25681         self
25682     }
conservative_point_and_line_rasterization( mut self, conservative_point_and_line_rasterization: bool, ) -> Self25683     pub fn conservative_point_and_line_rasterization(
25684         mut self,
25685         conservative_point_and_line_rasterization: bool,
25686     ) -> Self {
25687         self.inner.conservative_point_and_line_rasterization =
25688             conservative_point_and_line_rasterization.into();
25689         self
25690     }
degenerate_triangles_rasterized( mut self, degenerate_triangles_rasterized: bool, ) -> Self25691     pub fn degenerate_triangles_rasterized(
25692         mut self,
25693         degenerate_triangles_rasterized: bool,
25694     ) -> Self {
25695         self.inner.degenerate_triangles_rasterized = degenerate_triangles_rasterized.into();
25696         self
25697     }
degenerate_lines_rasterized(mut self, degenerate_lines_rasterized: bool) -> Self25698     pub fn degenerate_lines_rasterized(mut self, degenerate_lines_rasterized: bool) -> Self {
25699         self.inner.degenerate_lines_rasterized = degenerate_lines_rasterized.into();
25700         self
25701     }
fully_covered_fragment_shader_input_variable( mut self, fully_covered_fragment_shader_input_variable: bool, ) -> Self25702     pub fn fully_covered_fragment_shader_input_variable(
25703         mut self,
25704         fully_covered_fragment_shader_input_variable: bool,
25705     ) -> Self {
25706         self.inner.fully_covered_fragment_shader_input_variable =
25707             fully_covered_fragment_shader_input_variable.into();
25708         self
25709     }
conservative_rasterization_post_depth_coverage( mut self, conservative_rasterization_post_depth_coverage: bool, ) -> Self25710     pub fn conservative_rasterization_post_depth_coverage(
25711         mut self,
25712         conservative_rasterization_post_depth_coverage: bool,
25713     ) -> Self {
25714         self.inner.conservative_rasterization_post_depth_coverage =
25715             conservative_rasterization_post_depth_coverage.into();
25716         self
25717     }
25718     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25719     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25720     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceConservativeRasterizationPropertiesEXT25721     pub fn build(self) -> PhysicalDeviceConservativeRasterizationPropertiesEXT {
25722         self.inner
25723     }
25724 }
25725 #[repr(C)]
25726 #[derive(Copy, Clone, Debug)]
25727 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCalibratedTimestampInfoEXT.html>"]
25728 pub struct CalibratedTimestampInfoEXT {
25729     pub s_type: StructureType,
25730     pub p_next: *const c_void,
25731     pub time_domain: TimeDomainEXT,
25732 }
25733 impl ::std::default::Default for CalibratedTimestampInfoEXT {
default() -> CalibratedTimestampInfoEXT25734     fn default() -> CalibratedTimestampInfoEXT {
25735         CalibratedTimestampInfoEXT {
25736             s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_EXT,
25737             p_next: ::std::ptr::null(),
25738             time_domain: TimeDomainEXT::default(),
25739         }
25740     }
25741 }
25742 impl CalibratedTimestampInfoEXT {
builder<'a>() -> CalibratedTimestampInfoEXTBuilder<'a>25743     pub fn builder<'a>() -> CalibratedTimestampInfoEXTBuilder<'a> {
25744         CalibratedTimestampInfoEXTBuilder {
25745             inner: CalibratedTimestampInfoEXT::default(),
25746             marker: ::std::marker::PhantomData,
25747         }
25748     }
25749 }
25750 #[repr(transparent)]
25751 pub struct CalibratedTimestampInfoEXTBuilder<'a> {
25752     inner: CalibratedTimestampInfoEXT,
25753     marker: ::std::marker::PhantomData<&'a ()>,
25754 }
25755 impl<'a> ::std::ops::Deref for CalibratedTimestampInfoEXTBuilder<'a> {
25756     type Target = CalibratedTimestampInfoEXT;
deref(&self) -> &Self::Target25757     fn deref(&self) -> &Self::Target {
25758         &self.inner
25759     }
25760 }
25761 impl<'a> ::std::ops::DerefMut for CalibratedTimestampInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25762     fn deref_mut(&mut self) -> &mut Self::Target {
25763         &mut self.inner
25764     }
25765 }
25766 impl<'a> CalibratedTimestampInfoEXTBuilder<'a> {
time_domain(mut self, time_domain: TimeDomainEXT) -> Self25767     pub fn time_domain(mut self, time_domain: TimeDomainEXT) -> Self {
25768         self.inner.time_domain = time_domain;
25769         self
25770     }
25771     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25772     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25773     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CalibratedTimestampInfoEXT25774     pub fn build(self) -> CalibratedTimestampInfoEXT {
25775         self.inner
25776     }
25777 }
25778 #[repr(C)]
25779 #[derive(Copy, Clone, Debug)]
25780 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>"]
25781 pub struct PhysicalDeviceShaderCorePropertiesAMD {
25782     pub s_type: StructureType,
25783     pub p_next: *mut c_void,
25784     pub shader_engine_count: u32,
25785     pub shader_arrays_per_engine_count: u32,
25786     pub compute_units_per_shader_array: u32,
25787     pub simd_per_compute_unit: u32,
25788     pub wavefronts_per_simd: u32,
25789     pub wavefront_size: u32,
25790     pub sgprs_per_simd: u32,
25791     pub min_sgpr_allocation: u32,
25792     pub max_sgpr_allocation: u32,
25793     pub sgpr_allocation_granularity: u32,
25794     pub vgprs_per_simd: u32,
25795     pub min_vgpr_allocation: u32,
25796     pub max_vgpr_allocation: u32,
25797     pub vgpr_allocation_granularity: u32,
25798 }
25799 impl ::std::default::Default for PhysicalDeviceShaderCorePropertiesAMD {
default() -> PhysicalDeviceShaderCorePropertiesAMD25800     fn default() -> PhysicalDeviceShaderCorePropertiesAMD {
25801         PhysicalDeviceShaderCorePropertiesAMD {
25802             s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
25803             p_next: ::std::ptr::null_mut(),
25804             shader_engine_count: u32::default(),
25805             shader_arrays_per_engine_count: u32::default(),
25806             compute_units_per_shader_array: u32::default(),
25807             simd_per_compute_unit: u32::default(),
25808             wavefronts_per_simd: u32::default(),
25809             wavefront_size: u32::default(),
25810             sgprs_per_simd: u32::default(),
25811             min_sgpr_allocation: u32::default(),
25812             max_sgpr_allocation: u32::default(),
25813             sgpr_allocation_granularity: u32::default(),
25814             vgprs_per_simd: u32::default(),
25815             min_vgpr_allocation: u32::default(),
25816             max_vgpr_allocation: u32::default(),
25817             vgpr_allocation_granularity: u32::default(),
25818         }
25819     }
25820 }
25821 impl PhysicalDeviceShaderCorePropertiesAMD {
builder<'a>() -> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a>25822     pub fn builder<'a>() -> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
25823         PhysicalDeviceShaderCorePropertiesAMDBuilder {
25824             inner: PhysicalDeviceShaderCorePropertiesAMD::default(),
25825             marker: ::std::marker::PhantomData,
25826         }
25827     }
25828 }
25829 #[repr(transparent)]
25830 pub struct PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
25831     inner: PhysicalDeviceShaderCorePropertiesAMD,
25832     marker: ::std::marker::PhantomData<&'a ()>,
25833 }
25834 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCorePropertiesAMDBuilder<'_> {}
25835 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCorePropertiesAMD {}
25836 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
25837     type Target = PhysicalDeviceShaderCorePropertiesAMD;
deref(&self) -> &Self::Target25838     fn deref(&self) -> &Self::Target {
25839         &self.inner
25840     }
25841 }
25842 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25843     fn deref_mut(&mut self) -> &mut Self::Target {
25844         &mut self.inner
25845     }
25846 }
25847 impl<'a> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
shader_engine_count(mut self, shader_engine_count: u32) -> Self25848     pub fn shader_engine_count(mut self, shader_engine_count: u32) -> Self {
25849         self.inner.shader_engine_count = shader_engine_count;
25850         self
25851     }
shader_arrays_per_engine_count(mut self, shader_arrays_per_engine_count: u32) -> Self25852     pub fn shader_arrays_per_engine_count(mut self, shader_arrays_per_engine_count: u32) -> Self {
25853         self.inner.shader_arrays_per_engine_count = shader_arrays_per_engine_count;
25854         self
25855     }
compute_units_per_shader_array(mut self, compute_units_per_shader_array: u32) -> Self25856     pub fn compute_units_per_shader_array(mut self, compute_units_per_shader_array: u32) -> Self {
25857         self.inner.compute_units_per_shader_array = compute_units_per_shader_array;
25858         self
25859     }
simd_per_compute_unit(mut self, simd_per_compute_unit: u32) -> Self25860     pub fn simd_per_compute_unit(mut self, simd_per_compute_unit: u32) -> Self {
25861         self.inner.simd_per_compute_unit = simd_per_compute_unit;
25862         self
25863     }
wavefronts_per_simd(mut self, wavefronts_per_simd: u32) -> Self25864     pub fn wavefronts_per_simd(mut self, wavefronts_per_simd: u32) -> Self {
25865         self.inner.wavefronts_per_simd = wavefronts_per_simd;
25866         self
25867     }
wavefront_size(mut self, wavefront_size: u32) -> Self25868     pub fn wavefront_size(mut self, wavefront_size: u32) -> Self {
25869         self.inner.wavefront_size = wavefront_size;
25870         self
25871     }
sgprs_per_simd(mut self, sgprs_per_simd: u32) -> Self25872     pub fn sgprs_per_simd(mut self, sgprs_per_simd: u32) -> Self {
25873         self.inner.sgprs_per_simd = sgprs_per_simd;
25874         self
25875     }
min_sgpr_allocation(mut self, min_sgpr_allocation: u32) -> Self25876     pub fn min_sgpr_allocation(mut self, min_sgpr_allocation: u32) -> Self {
25877         self.inner.min_sgpr_allocation = min_sgpr_allocation;
25878         self
25879     }
max_sgpr_allocation(mut self, max_sgpr_allocation: u32) -> Self25880     pub fn max_sgpr_allocation(mut self, max_sgpr_allocation: u32) -> Self {
25881         self.inner.max_sgpr_allocation = max_sgpr_allocation;
25882         self
25883     }
sgpr_allocation_granularity(mut self, sgpr_allocation_granularity: u32) -> Self25884     pub fn sgpr_allocation_granularity(mut self, sgpr_allocation_granularity: u32) -> Self {
25885         self.inner.sgpr_allocation_granularity = sgpr_allocation_granularity;
25886         self
25887     }
vgprs_per_simd(mut self, vgprs_per_simd: u32) -> Self25888     pub fn vgprs_per_simd(mut self, vgprs_per_simd: u32) -> Self {
25889         self.inner.vgprs_per_simd = vgprs_per_simd;
25890         self
25891     }
min_vgpr_allocation(mut self, min_vgpr_allocation: u32) -> Self25892     pub fn min_vgpr_allocation(mut self, min_vgpr_allocation: u32) -> Self {
25893         self.inner.min_vgpr_allocation = min_vgpr_allocation;
25894         self
25895     }
max_vgpr_allocation(mut self, max_vgpr_allocation: u32) -> Self25896     pub fn max_vgpr_allocation(mut self, max_vgpr_allocation: u32) -> Self {
25897         self.inner.max_vgpr_allocation = max_vgpr_allocation;
25898         self
25899     }
vgpr_allocation_granularity(mut self, vgpr_allocation_granularity: u32) -> Self25900     pub fn vgpr_allocation_granularity(mut self, vgpr_allocation_granularity: u32) -> Self {
25901         self.inner.vgpr_allocation_granularity = vgpr_allocation_granularity;
25902         self
25903     }
25904     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25905     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25906     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderCorePropertiesAMD25907     pub fn build(self) -> PhysicalDeviceShaderCorePropertiesAMD {
25908         self.inner
25909     }
25910 }
25911 #[repr(C)]
25912 #[derive(Copy, Clone, Debug)]
25913 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>"]
25914 pub struct PhysicalDeviceShaderCoreProperties2AMD {
25915     pub s_type: StructureType,
25916     pub p_next: *mut c_void,
25917     pub shader_core_features: ShaderCorePropertiesFlagsAMD,
25918     pub active_compute_unit_count: u32,
25919 }
25920 impl ::std::default::Default for PhysicalDeviceShaderCoreProperties2AMD {
default() -> PhysicalDeviceShaderCoreProperties2AMD25921     fn default() -> PhysicalDeviceShaderCoreProperties2AMD {
25922         PhysicalDeviceShaderCoreProperties2AMD {
25923             s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
25924             p_next: ::std::ptr::null_mut(),
25925             shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
25926             active_compute_unit_count: u32::default(),
25927         }
25928     }
25929 }
25930 impl PhysicalDeviceShaderCoreProperties2AMD {
builder<'a>() -> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a>25931     pub fn builder<'a>() -> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
25932         PhysicalDeviceShaderCoreProperties2AMDBuilder {
25933             inner: PhysicalDeviceShaderCoreProperties2AMD::default(),
25934             marker: ::std::marker::PhantomData,
25935         }
25936     }
25937 }
25938 #[repr(transparent)]
25939 pub struct PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
25940     inner: PhysicalDeviceShaderCoreProperties2AMD,
25941     marker: ::std::marker::PhantomData<&'a ()>,
25942 }
25943 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCoreProperties2AMDBuilder<'_> {}
25944 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCoreProperties2AMD {}
25945 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
25946     type Target = PhysicalDeviceShaderCoreProperties2AMD;
deref(&self) -> &Self::Target25947     fn deref(&self) -> &Self::Target {
25948         &self.inner
25949     }
25950 }
25951 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25952     fn deref_mut(&mut self) -> &mut Self::Target {
25953         &mut self.inner
25954     }
25955 }
25956 impl<'a> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
shader_core_features( mut self, shader_core_features: ShaderCorePropertiesFlagsAMD, ) -> Self25957     pub fn shader_core_features(
25958         mut self,
25959         shader_core_features: ShaderCorePropertiesFlagsAMD,
25960     ) -> Self {
25961         self.inner.shader_core_features = shader_core_features;
25962         self
25963     }
active_compute_unit_count(mut self, active_compute_unit_count: u32) -> Self25964     pub fn active_compute_unit_count(mut self, active_compute_unit_count: u32) -> Self {
25965         self.inner.active_compute_unit_count = active_compute_unit_count;
25966         self
25967     }
25968     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25969     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25970     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderCoreProperties2AMD25971     pub fn build(self) -> PhysicalDeviceShaderCoreProperties2AMD {
25972         self.inner
25973     }
25974 }
25975 #[repr(C)]
25976 #[derive(Copy, Clone, Debug)]
25977 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>"]
25978 pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
25979     pub s_type: StructureType,
25980     pub p_next: *const c_void,
25981     pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
25982     pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
25983     pub extra_primitive_overestimation_size: f32,
25984 }
25985 impl ::std::default::Default for PipelineRasterizationConservativeStateCreateInfoEXT {
default() -> PipelineRasterizationConservativeStateCreateInfoEXT25986     fn default() -> PipelineRasterizationConservativeStateCreateInfoEXT {
25987         PipelineRasterizationConservativeStateCreateInfoEXT {
25988             s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
25989             p_next: ::std::ptr::null(),
25990             flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
25991             conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
25992             extra_primitive_overestimation_size: f32::default(),
25993         }
25994     }
25995 }
25996 impl PipelineRasterizationConservativeStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a>25997     pub fn builder<'a>() -> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
25998         PipelineRasterizationConservativeStateCreateInfoEXTBuilder {
25999             inner: PipelineRasterizationConservativeStateCreateInfoEXT::default(),
26000             marker: ::std::marker::PhantomData,
26001         }
26002     }
26003 }
26004 #[repr(transparent)]
26005 pub struct PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26006     inner: PipelineRasterizationConservativeStateCreateInfoEXT,
26007     marker: ::std::marker::PhantomData<&'a ()>,
26008 }
26009 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
26010     for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'_>
26011 {
26012 }
26013 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
26014     for PipelineRasterizationConservativeStateCreateInfoEXT
26015 {
26016 }
26017 impl<'a> ::std::ops::Deref for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26018     type Target = PipelineRasterizationConservativeStateCreateInfoEXT;
deref(&self) -> &Self::Target26019     fn deref(&self) -> &Self::Target {
26020         &self.inner
26021     }
26022 }
26023 impl<'a> ::std::ops::DerefMut for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26024     fn deref_mut(&mut self) -> &mut Self::Target {
26025         &mut self.inner
26026     }
26027 }
26028 impl<'a> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineRasterizationConservativeStateCreateFlagsEXT) -> Self26029     pub fn flags(mut self, flags: PipelineRasterizationConservativeStateCreateFlagsEXT) -> Self {
26030         self.inner.flags = flags;
26031         self
26032     }
conservative_rasterization_mode( mut self, conservative_rasterization_mode: ConservativeRasterizationModeEXT, ) -> Self26033     pub fn conservative_rasterization_mode(
26034         mut self,
26035         conservative_rasterization_mode: ConservativeRasterizationModeEXT,
26036     ) -> Self {
26037         self.inner.conservative_rasterization_mode = conservative_rasterization_mode;
26038         self
26039     }
extra_primitive_overestimation_size( mut self, extra_primitive_overestimation_size: f32, ) -> Self26040     pub fn extra_primitive_overestimation_size(
26041         mut self,
26042         extra_primitive_overestimation_size: f32,
26043     ) -> Self {
26044         self.inner.extra_primitive_overestimation_size = extra_primitive_overestimation_size;
26045         self
26046     }
26047     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26048     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26049     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationConservativeStateCreateInfoEXT26050     pub fn build(self) -> PipelineRasterizationConservativeStateCreateInfoEXT {
26051         self.inner
26052     }
26053 }
26054 #[repr(C)]
26055 #[derive(Copy, Clone, Debug)]
26056 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>"]
26057 pub struct PhysicalDeviceDescriptorIndexingFeatures {
26058     pub s_type: StructureType,
26059     pub p_next: *mut c_void,
26060     pub shader_input_attachment_array_dynamic_indexing: Bool32,
26061     pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
26062     pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
26063     pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
26064     pub shader_sampled_image_array_non_uniform_indexing: Bool32,
26065     pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
26066     pub shader_storage_image_array_non_uniform_indexing: Bool32,
26067     pub shader_input_attachment_array_non_uniform_indexing: Bool32,
26068     pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
26069     pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
26070     pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
26071     pub descriptor_binding_sampled_image_update_after_bind: Bool32,
26072     pub descriptor_binding_storage_image_update_after_bind: Bool32,
26073     pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
26074     pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
26075     pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
26076     pub descriptor_binding_update_unused_while_pending: Bool32,
26077     pub descriptor_binding_partially_bound: Bool32,
26078     pub descriptor_binding_variable_descriptor_count: Bool32,
26079     pub runtime_descriptor_array: Bool32,
26080 }
26081 impl ::std::default::Default for PhysicalDeviceDescriptorIndexingFeatures {
default() -> PhysicalDeviceDescriptorIndexingFeatures26082     fn default() -> PhysicalDeviceDescriptorIndexingFeatures {
26083         PhysicalDeviceDescriptorIndexingFeatures {
26084             s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
26085             p_next: ::std::ptr::null_mut(),
26086             shader_input_attachment_array_dynamic_indexing: Bool32::default(),
26087             shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
26088             shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
26089             shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
26090             shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
26091             shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
26092             shader_storage_image_array_non_uniform_indexing: Bool32::default(),
26093             shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
26094             shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
26095             shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
26096             descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
26097             descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
26098             descriptor_binding_storage_image_update_after_bind: Bool32::default(),
26099             descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
26100             descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
26101             descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
26102             descriptor_binding_update_unused_while_pending: Bool32::default(),
26103             descriptor_binding_partially_bound: Bool32::default(),
26104             descriptor_binding_variable_descriptor_count: Bool32::default(),
26105             runtime_descriptor_array: Bool32::default(),
26106         }
26107     }
26108 }
26109 impl PhysicalDeviceDescriptorIndexingFeatures {
builder<'a>() -> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a>26110     pub fn builder<'a>() -> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26111         PhysicalDeviceDescriptorIndexingFeaturesBuilder {
26112             inner: PhysicalDeviceDescriptorIndexingFeatures::default(),
26113             marker: ::std::marker::PhantomData,
26114         }
26115     }
26116 }
26117 #[repr(transparent)]
26118 pub struct PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26119     inner: PhysicalDeviceDescriptorIndexingFeatures,
26120     marker: ::std::marker::PhantomData<&'a ()>,
26121 }
26122 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'_> {}
26123 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDescriptorIndexingFeatures {}
26124 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'_> {}
26125 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorIndexingFeatures {}
26126 impl<'a> ::std::ops::Deref for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26127     type Target = PhysicalDeviceDescriptorIndexingFeatures;
deref(&self) -> &Self::Target26128     fn deref(&self) -> &Self::Target {
26129         &self.inner
26130     }
26131 }
26132 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26133     fn deref_mut(&mut self) -> &mut Self::Target {
26134         &mut self.inner
26135     }
26136 }
26137 impl<'a> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
shader_input_attachment_array_dynamic_indexing( mut self, shader_input_attachment_array_dynamic_indexing: bool, ) -> Self26138     pub fn shader_input_attachment_array_dynamic_indexing(
26139         mut self,
26140         shader_input_attachment_array_dynamic_indexing: bool,
26141     ) -> Self {
26142         self.inner.shader_input_attachment_array_dynamic_indexing =
26143             shader_input_attachment_array_dynamic_indexing.into();
26144         self
26145     }
shader_uniform_texel_buffer_array_dynamic_indexing( mut self, shader_uniform_texel_buffer_array_dynamic_indexing: bool, ) -> Self26146     pub fn shader_uniform_texel_buffer_array_dynamic_indexing(
26147         mut self,
26148         shader_uniform_texel_buffer_array_dynamic_indexing: bool,
26149     ) -> Self {
26150         self.inner
26151             .shader_uniform_texel_buffer_array_dynamic_indexing =
26152             shader_uniform_texel_buffer_array_dynamic_indexing.into();
26153         self
26154     }
shader_storage_texel_buffer_array_dynamic_indexing( mut self, shader_storage_texel_buffer_array_dynamic_indexing: bool, ) -> Self26155     pub fn shader_storage_texel_buffer_array_dynamic_indexing(
26156         mut self,
26157         shader_storage_texel_buffer_array_dynamic_indexing: bool,
26158     ) -> Self {
26159         self.inner
26160             .shader_storage_texel_buffer_array_dynamic_indexing =
26161             shader_storage_texel_buffer_array_dynamic_indexing.into();
26162         self
26163     }
shader_uniform_buffer_array_non_uniform_indexing( mut self, shader_uniform_buffer_array_non_uniform_indexing: bool, ) -> Self26164     pub fn shader_uniform_buffer_array_non_uniform_indexing(
26165         mut self,
26166         shader_uniform_buffer_array_non_uniform_indexing: bool,
26167     ) -> Self {
26168         self.inner.shader_uniform_buffer_array_non_uniform_indexing =
26169             shader_uniform_buffer_array_non_uniform_indexing.into();
26170         self
26171     }
shader_sampled_image_array_non_uniform_indexing( mut self, shader_sampled_image_array_non_uniform_indexing: bool, ) -> Self26172     pub fn shader_sampled_image_array_non_uniform_indexing(
26173         mut self,
26174         shader_sampled_image_array_non_uniform_indexing: bool,
26175     ) -> Self {
26176         self.inner.shader_sampled_image_array_non_uniform_indexing =
26177             shader_sampled_image_array_non_uniform_indexing.into();
26178         self
26179     }
shader_storage_buffer_array_non_uniform_indexing( mut self, shader_storage_buffer_array_non_uniform_indexing: bool, ) -> Self26180     pub fn shader_storage_buffer_array_non_uniform_indexing(
26181         mut self,
26182         shader_storage_buffer_array_non_uniform_indexing: bool,
26183     ) -> Self {
26184         self.inner.shader_storage_buffer_array_non_uniform_indexing =
26185             shader_storage_buffer_array_non_uniform_indexing.into();
26186         self
26187     }
shader_storage_image_array_non_uniform_indexing( mut self, shader_storage_image_array_non_uniform_indexing: bool, ) -> Self26188     pub fn shader_storage_image_array_non_uniform_indexing(
26189         mut self,
26190         shader_storage_image_array_non_uniform_indexing: bool,
26191     ) -> Self {
26192         self.inner.shader_storage_image_array_non_uniform_indexing =
26193             shader_storage_image_array_non_uniform_indexing.into();
26194         self
26195     }
shader_input_attachment_array_non_uniform_indexing( mut self, shader_input_attachment_array_non_uniform_indexing: bool, ) -> Self26196     pub fn shader_input_attachment_array_non_uniform_indexing(
26197         mut self,
26198         shader_input_attachment_array_non_uniform_indexing: bool,
26199     ) -> Self {
26200         self.inner
26201             .shader_input_attachment_array_non_uniform_indexing =
26202             shader_input_attachment_array_non_uniform_indexing.into();
26203         self
26204     }
shader_uniform_texel_buffer_array_non_uniform_indexing( mut self, shader_uniform_texel_buffer_array_non_uniform_indexing: bool, ) -> Self26205     pub fn shader_uniform_texel_buffer_array_non_uniform_indexing(
26206         mut self,
26207         shader_uniform_texel_buffer_array_non_uniform_indexing: bool,
26208     ) -> Self {
26209         self.inner
26210             .shader_uniform_texel_buffer_array_non_uniform_indexing =
26211             shader_uniform_texel_buffer_array_non_uniform_indexing.into();
26212         self
26213     }
shader_storage_texel_buffer_array_non_uniform_indexing( mut self, shader_storage_texel_buffer_array_non_uniform_indexing: bool, ) -> Self26214     pub fn shader_storage_texel_buffer_array_non_uniform_indexing(
26215         mut self,
26216         shader_storage_texel_buffer_array_non_uniform_indexing: bool,
26217     ) -> Self {
26218         self.inner
26219             .shader_storage_texel_buffer_array_non_uniform_indexing =
26220             shader_storage_texel_buffer_array_non_uniform_indexing.into();
26221         self
26222     }
descriptor_binding_uniform_buffer_update_after_bind( mut self, descriptor_binding_uniform_buffer_update_after_bind: bool, ) -> Self26223     pub fn descriptor_binding_uniform_buffer_update_after_bind(
26224         mut self,
26225         descriptor_binding_uniform_buffer_update_after_bind: bool,
26226     ) -> Self {
26227         self.inner
26228             .descriptor_binding_uniform_buffer_update_after_bind =
26229             descriptor_binding_uniform_buffer_update_after_bind.into();
26230         self
26231     }
descriptor_binding_sampled_image_update_after_bind( mut self, descriptor_binding_sampled_image_update_after_bind: bool, ) -> Self26232     pub fn descriptor_binding_sampled_image_update_after_bind(
26233         mut self,
26234         descriptor_binding_sampled_image_update_after_bind: bool,
26235     ) -> Self {
26236         self.inner
26237             .descriptor_binding_sampled_image_update_after_bind =
26238             descriptor_binding_sampled_image_update_after_bind.into();
26239         self
26240     }
descriptor_binding_storage_image_update_after_bind( mut self, descriptor_binding_storage_image_update_after_bind: bool, ) -> Self26241     pub fn descriptor_binding_storage_image_update_after_bind(
26242         mut self,
26243         descriptor_binding_storage_image_update_after_bind: bool,
26244     ) -> Self {
26245         self.inner
26246             .descriptor_binding_storage_image_update_after_bind =
26247             descriptor_binding_storage_image_update_after_bind.into();
26248         self
26249     }
descriptor_binding_storage_buffer_update_after_bind( mut self, descriptor_binding_storage_buffer_update_after_bind: bool, ) -> Self26250     pub fn descriptor_binding_storage_buffer_update_after_bind(
26251         mut self,
26252         descriptor_binding_storage_buffer_update_after_bind: bool,
26253     ) -> Self {
26254         self.inner
26255             .descriptor_binding_storage_buffer_update_after_bind =
26256             descriptor_binding_storage_buffer_update_after_bind.into();
26257         self
26258     }
descriptor_binding_uniform_texel_buffer_update_after_bind( mut self, descriptor_binding_uniform_texel_buffer_update_after_bind: bool, ) -> Self26259     pub fn descriptor_binding_uniform_texel_buffer_update_after_bind(
26260         mut self,
26261         descriptor_binding_uniform_texel_buffer_update_after_bind: bool,
26262     ) -> Self {
26263         self.inner
26264             .descriptor_binding_uniform_texel_buffer_update_after_bind =
26265             descriptor_binding_uniform_texel_buffer_update_after_bind.into();
26266         self
26267     }
descriptor_binding_storage_texel_buffer_update_after_bind( mut self, descriptor_binding_storage_texel_buffer_update_after_bind: bool, ) -> Self26268     pub fn descriptor_binding_storage_texel_buffer_update_after_bind(
26269         mut self,
26270         descriptor_binding_storage_texel_buffer_update_after_bind: bool,
26271     ) -> Self {
26272         self.inner
26273             .descriptor_binding_storage_texel_buffer_update_after_bind =
26274             descriptor_binding_storage_texel_buffer_update_after_bind.into();
26275         self
26276     }
descriptor_binding_update_unused_while_pending( mut self, descriptor_binding_update_unused_while_pending: bool, ) -> Self26277     pub fn descriptor_binding_update_unused_while_pending(
26278         mut self,
26279         descriptor_binding_update_unused_while_pending: bool,
26280     ) -> Self {
26281         self.inner.descriptor_binding_update_unused_while_pending =
26282             descriptor_binding_update_unused_while_pending.into();
26283         self
26284     }
descriptor_binding_partially_bound( mut self, descriptor_binding_partially_bound: bool, ) -> Self26285     pub fn descriptor_binding_partially_bound(
26286         mut self,
26287         descriptor_binding_partially_bound: bool,
26288     ) -> Self {
26289         self.inner.descriptor_binding_partially_bound = descriptor_binding_partially_bound.into();
26290         self
26291     }
descriptor_binding_variable_descriptor_count( mut self, descriptor_binding_variable_descriptor_count: bool, ) -> Self26292     pub fn descriptor_binding_variable_descriptor_count(
26293         mut self,
26294         descriptor_binding_variable_descriptor_count: bool,
26295     ) -> Self {
26296         self.inner.descriptor_binding_variable_descriptor_count =
26297             descriptor_binding_variable_descriptor_count.into();
26298         self
26299     }
runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self26300     pub fn runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self {
26301         self.inner.runtime_descriptor_array = runtime_descriptor_array.into();
26302         self
26303     }
26304     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26305     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26306     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDescriptorIndexingFeatures26307     pub fn build(self) -> PhysicalDeviceDescriptorIndexingFeatures {
26308         self.inner
26309     }
26310 }
26311 #[repr(C)]
26312 #[derive(Copy, Clone, Debug)]
26313 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>"]
26314 pub struct PhysicalDeviceDescriptorIndexingProperties {
26315     pub s_type: StructureType,
26316     pub p_next: *mut c_void,
26317     pub max_update_after_bind_descriptors_in_all_pools: u32,
26318     pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
26319     pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
26320     pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
26321     pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
26322     pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
26323     pub robust_buffer_access_update_after_bind: Bool32,
26324     pub quad_divergent_implicit_lod: Bool32,
26325     pub max_per_stage_descriptor_update_after_bind_samplers: u32,
26326     pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
26327     pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
26328     pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
26329     pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
26330     pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
26331     pub max_per_stage_update_after_bind_resources: u32,
26332     pub max_descriptor_set_update_after_bind_samplers: u32,
26333     pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
26334     pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
26335     pub max_descriptor_set_update_after_bind_storage_buffers: u32,
26336     pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
26337     pub max_descriptor_set_update_after_bind_sampled_images: u32,
26338     pub max_descriptor_set_update_after_bind_storage_images: u32,
26339     pub max_descriptor_set_update_after_bind_input_attachments: u32,
26340 }
26341 impl ::std::default::Default for PhysicalDeviceDescriptorIndexingProperties {
default() -> PhysicalDeviceDescriptorIndexingProperties26342     fn default() -> PhysicalDeviceDescriptorIndexingProperties {
26343         PhysicalDeviceDescriptorIndexingProperties {
26344             s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
26345             p_next: ::std::ptr::null_mut(),
26346             max_update_after_bind_descriptors_in_all_pools: u32::default(),
26347             shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
26348             shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
26349             shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
26350             shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
26351             shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
26352             robust_buffer_access_update_after_bind: Bool32::default(),
26353             quad_divergent_implicit_lod: Bool32::default(),
26354             max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
26355             max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
26356             max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
26357             max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
26358             max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
26359             max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
26360             max_per_stage_update_after_bind_resources: u32::default(),
26361             max_descriptor_set_update_after_bind_samplers: u32::default(),
26362             max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
26363             max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
26364             max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
26365             max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
26366             max_descriptor_set_update_after_bind_sampled_images: u32::default(),
26367             max_descriptor_set_update_after_bind_storage_images: u32::default(),
26368             max_descriptor_set_update_after_bind_input_attachments: u32::default(),
26369         }
26370     }
26371 }
26372 impl PhysicalDeviceDescriptorIndexingProperties {
builder<'a>() -> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a>26373     pub fn builder<'a>() -> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
26374         PhysicalDeviceDescriptorIndexingPropertiesBuilder {
26375             inner: PhysicalDeviceDescriptorIndexingProperties::default(),
26376             marker: ::std::marker::PhantomData,
26377         }
26378     }
26379 }
26380 #[repr(transparent)]
26381 pub struct PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
26382     inner: PhysicalDeviceDescriptorIndexingProperties,
26383     marker: ::std::marker::PhantomData<&'a ()>,
26384 }
26385 unsafe impl ExtendsPhysicalDeviceProperties2
26386     for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'_>
26387 {
26388 }
26389 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDescriptorIndexingProperties {}
26390 impl<'a> ::std::ops::Deref for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
26391     type Target = PhysicalDeviceDescriptorIndexingProperties;
deref(&self) -> &Self::Target26392     fn deref(&self) -> &Self::Target {
26393         &self.inner
26394     }
26395 }
26396 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26397     fn deref_mut(&mut self) -> &mut Self::Target {
26398         &mut self.inner
26399     }
26400 }
26401 impl<'a> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
max_update_after_bind_descriptors_in_all_pools( mut self, max_update_after_bind_descriptors_in_all_pools: u32, ) -> Self26402     pub fn max_update_after_bind_descriptors_in_all_pools(
26403         mut self,
26404         max_update_after_bind_descriptors_in_all_pools: u32,
26405     ) -> Self {
26406         self.inner.max_update_after_bind_descriptors_in_all_pools =
26407             max_update_after_bind_descriptors_in_all_pools;
26408         self
26409     }
shader_uniform_buffer_array_non_uniform_indexing_native( mut self, shader_uniform_buffer_array_non_uniform_indexing_native: bool, ) -> Self26410     pub fn shader_uniform_buffer_array_non_uniform_indexing_native(
26411         mut self,
26412         shader_uniform_buffer_array_non_uniform_indexing_native: bool,
26413     ) -> Self {
26414         self.inner
26415             .shader_uniform_buffer_array_non_uniform_indexing_native =
26416             shader_uniform_buffer_array_non_uniform_indexing_native.into();
26417         self
26418     }
shader_sampled_image_array_non_uniform_indexing_native( mut self, shader_sampled_image_array_non_uniform_indexing_native: bool, ) -> Self26419     pub fn shader_sampled_image_array_non_uniform_indexing_native(
26420         mut self,
26421         shader_sampled_image_array_non_uniform_indexing_native: bool,
26422     ) -> Self {
26423         self.inner
26424             .shader_sampled_image_array_non_uniform_indexing_native =
26425             shader_sampled_image_array_non_uniform_indexing_native.into();
26426         self
26427     }
shader_storage_buffer_array_non_uniform_indexing_native( mut self, shader_storage_buffer_array_non_uniform_indexing_native: bool, ) -> Self26428     pub fn shader_storage_buffer_array_non_uniform_indexing_native(
26429         mut self,
26430         shader_storage_buffer_array_non_uniform_indexing_native: bool,
26431     ) -> Self {
26432         self.inner
26433             .shader_storage_buffer_array_non_uniform_indexing_native =
26434             shader_storage_buffer_array_non_uniform_indexing_native.into();
26435         self
26436     }
shader_storage_image_array_non_uniform_indexing_native( mut self, shader_storage_image_array_non_uniform_indexing_native: bool, ) -> Self26437     pub fn shader_storage_image_array_non_uniform_indexing_native(
26438         mut self,
26439         shader_storage_image_array_non_uniform_indexing_native: bool,
26440     ) -> Self {
26441         self.inner
26442             .shader_storage_image_array_non_uniform_indexing_native =
26443             shader_storage_image_array_non_uniform_indexing_native.into();
26444         self
26445     }
shader_input_attachment_array_non_uniform_indexing_native( mut self, shader_input_attachment_array_non_uniform_indexing_native: bool, ) -> Self26446     pub fn shader_input_attachment_array_non_uniform_indexing_native(
26447         mut self,
26448         shader_input_attachment_array_non_uniform_indexing_native: bool,
26449     ) -> Self {
26450         self.inner
26451             .shader_input_attachment_array_non_uniform_indexing_native =
26452             shader_input_attachment_array_non_uniform_indexing_native.into();
26453         self
26454     }
robust_buffer_access_update_after_bind( mut self, robust_buffer_access_update_after_bind: bool, ) -> Self26455     pub fn robust_buffer_access_update_after_bind(
26456         mut self,
26457         robust_buffer_access_update_after_bind: bool,
26458     ) -> Self {
26459         self.inner.robust_buffer_access_update_after_bind =
26460             robust_buffer_access_update_after_bind.into();
26461         self
26462     }
quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self26463     pub fn quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self {
26464         self.inner.quad_divergent_implicit_lod = quad_divergent_implicit_lod.into();
26465         self
26466     }
max_per_stage_descriptor_update_after_bind_samplers( mut self, max_per_stage_descriptor_update_after_bind_samplers: u32, ) -> Self26467     pub fn max_per_stage_descriptor_update_after_bind_samplers(
26468         mut self,
26469         max_per_stage_descriptor_update_after_bind_samplers: u32,
26470     ) -> Self {
26471         self.inner
26472             .max_per_stage_descriptor_update_after_bind_samplers =
26473             max_per_stage_descriptor_update_after_bind_samplers;
26474         self
26475     }
max_per_stage_descriptor_update_after_bind_uniform_buffers( mut self, max_per_stage_descriptor_update_after_bind_uniform_buffers: u32, ) -> Self26476     pub fn max_per_stage_descriptor_update_after_bind_uniform_buffers(
26477         mut self,
26478         max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
26479     ) -> Self {
26480         self.inner
26481             .max_per_stage_descriptor_update_after_bind_uniform_buffers =
26482             max_per_stage_descriptor_update_after_bind_uniform_buffers;
26483         self
26484     }
max_per_stage_descriptor_update_after_bind_storage_buffers( mut self, max_per_stage_descriptor_update_after_bind_storage_buffers: u32, ) -> Self26485     pub fn max_per_stage_descriptor_update_after_bind_storage_buffers(
26486         mut self,
26487         max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
26488     ) -> Self {
26489         self.inner
26490             .max_per_stage_descriptor_update_after_bind_storage_buffers =
26491             max_per_stage_descriptor_update_after_bind_storage_buffers;
26492         self
26493     }
max_per_stage_descriptor_update_after_bind_sampled_images( mut self, max_per_stage_descriptor_update_after_bind_sampled_images: u32, ) -> Self26494     pub fn max_per_stage_descriptor_update_after_bind_sampled_images(
26495         mut self,
26496         max_per_stage_descriptor_update_after_bind_sampled_images: u32,
26497     ) -> Self {
26498         self.inner
26499             .max_per_stage_descriptor_update_after_bind_sampled_images =
26500             max_per_stage_descriptor_update_after_bind_sampled_images;
26501         self
26502     }
max_per_stage_descriptor_update_after_bind_storage_images( mut self, max_per_stage_descriptor_update_after_bind_storage_images: u32, ) -> Self26503     pub fn max_per_stage_descriptor_update_after_bind_storage_images(
26504         mut self,
26505         max_per_stage_descriptor_update_after_bind_storage_images: u32,
26506     ) -> Self {
26507         self.inner
26508             .max_per_stage_descriptor_update_after_bind_storage_images =
26509             max_per_stage_descriptor_update_after_bind_storage_images;
26510         self
26511     }
max_per_stage_descriptor_update_after_bind_input_attachments( mut self, max_per_stage_descriptor_update_after_bind_input_attachments: u32, ) -> Self26512     pub fn max_per_stage_descriptor_update_after_bind_input_attachments(
26513         mut self,
26514         max_per_stage_descriptor_update_after_bind_input_attachments: u32,
26515     ) -> Self {
26516         self.inner
26517             .max_per_stage_descriptor_update_after_bind_input_attachments =
26518             max_per_stage_descriptor_update_after_bind_input_attachments;
26519         self
26520     }
max_per_stage_update_after_bind_resources( mut self, max_per_stage_update_after_bind_resources: u32, ) -> Self26521     pub fn max_per_stage_update_after_bind_resources(
26522         mut self,
26523         max_per_stage_update_after_bind_resources: u32,
26524     ) -> Self {
26525         self.inner.max_per_stage_update_after_bind_resources =
26526             max_per_stage_update_after_bind_resources;
26527         self
26528     }
max_descriptor_set_update_after_bind_samplers( mut self, max_descriptor_set_update_after_bind_samplers: u32, ) -> Self26529     pub fn max_descriptor_set_update_after_bind_samplers(
26530         mut self,
26531         max_descriptor_set_update_after_bind_samplers: u32,
26532     ) -> Self {
26533         self.inner.max_descriptor_set_update_after_bind_samplers =
26534             max_descriptor_set_update_after_bind_samplers;
26535         self
26536     }
max_descriptor_set_update_after_bind_uniform_buffers( mut self, max_descriptor_set_update_after_bind_uniform_buffers: u32, ) -> Self26537     pub fn max_descriptor_set_update_after_bind_uniform_buffers(
26538         mut self,
26539         max_descriptor_set_update_after_bind_uniform_buffers: u32,
26540     ) -> Self {
26541         self.inner
26542             .max_descriptor_set_update_after_bind_uniform_buffers =
26543             max_descriptor_set_update_after_bind_uniform_buffers;
26544         self
26545     }
max_descriptor_set_update_after_bind_uniform_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32, ) -> Self26546     pub fn max_descriptor_set_update_after_bind_uniform_buffers_dynamic(
26547         mut self,
26548         max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
26549     ) -> Self {
26550         self.inner
26551             .max_descriptor_set_update_after_bind_uniform_buffers_dynamic =
26552             max_descriptor_set_update_after_bind_uniform_buffers_dynamic;
26553         self
26554     }
max_descriptor_set_update_after_bind_storage_buffers( mut self, max_descriptor_set_update_after_bind_storage_buffers: u32, ) -> Self26555     pub fn max_descriptor_set_update_after_bind_storage_buffers(
26556         mut self,
26557         max_descriptor_set_update_after_bind_storage_buffers: u32,
26558     ) -> Self {
26559         self.inner
26560             .max_descriptor_set_update_after_bind_storage_buffers =
26561             max_descriptor_set_update_after_bind_storage_buffers;
26562         self
26563     }
max_descriptor_set_update_after_bind_storage_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32, ) -> Self26564     pub fn max_descriptor_set_update_after_bind_storage_buffers_dynamic(
26565         mut self,
26566         max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
26567     ) -> Self {
26568         self.inner
26569             .max_descriptor_set_update_after_bind_storage_buffers_dynamic =
26570             max_descriptor_set_update_after_bind_storage_buffers_dynamic;
26571         self
26572     }
max_descriptor_set_update_after_bind_sampled_images( mut self, max_descriptor_set_update_after_bind_sampled_images: u32, ) -> Self26573     pub fn max_descriptor_set_update_after_bind_sampled_images(
26574         mut self,
26575         max_descriptor_set_update_after_bind_sampled_images: u32,
26576     ) -> Self {
26577         self.inner
26578             .max_descriptor_set_update_after_bind_sampled_images =
26579             max_descriptor_set_update_after_bind_sampled_images;
26580         self
26581     }
max_descriptor_set_update_after_bind_storage_images( mut self, max_descriptor_set_update_after_bind_storage_images: u32, ) -> Self26582     pub fn max_descriptor_set_update_after_bind_storage_images(
26583         mut self,
26584         max_descriptor_set_update_after_bind_storage_images: u32,
26585     ) -> Self {
26586         self.inner
26587             .max_descriptor_set_update_after_bind_storage_images =
26588             max_descriptor_set_update_after_bind_storage_images;
26589         self
26590     }
max_descriptor_set_update_after_bind_input_attachments( mut self, max_descriptor_set_update_after_bind_input_attachments: u32, ) -> Self26591     pub fn max_descriptor_set_update_after_bind_input_attachments(
26592         mut self,
26593         max_descriptor_set_update_after_bind_input_attachments: u32,
26594     ) -> Self {
26595         self.inner
26596             .max_descriptor_set_update_after_bind_input_attachments =
26597             max_descriptor_set_update_after_bind_input_attachments;
26598         self
26599     }
26600     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26601     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26602     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDescriptorIndexingProperties26603     pub fn build(self) -> PhysicalDeviceDescriptorIndexingProperties {
26604         self.inner
26605     }
26606 }
26607 #[repr(C)]
26608 #[derive(Copy, Clone, Debug)]
26609 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>"]
26610 pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
26611     pub s_type: StructureType,
26612     pub p_next: *const c_void,
26613     pub binding_count: u32,
26614     pub p_binding_flags: *const DescriptorBindingFlags,
26615 }
26616 impl ::std::default::Default for DescriptorSetLayoutBindingFlagsCreateInfo {
default() -> DescriptorSetLayoutBindingFlagsCreateInfo26617     fn default() -> DescriptorSetLayoutBindingFlagsCreateInfo {
26618         DescriptorSetLayoutBindingFlagsCreateInfo {
26619             s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
26620             p_next: ::std::ptr::null(),
26621             binding_count: u32::default(),
26622             p_binding_flags: ::std::ptr::null(),
26623         }
26624     }
26625 }
26626 impl DescriptorSetLayoutBindingFlagsCreateInfo {
builder<'a>() -> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a>26627     pub fn builder<'a>() -> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
26628         DescriptorSetLayoutBindingFlagsCreateInfoBuilder {
26629             inner: DescriptorSetLayoutBindingFlagsCreateInfo::default(),
26630             marker: ::std::marker::PhantomData,
26631         }
26632     }
26633 }
26634 #[repr(transparent)]
26635 pub struct DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
26636     inner: DescriptorSetLayoutBindingFlagsCreateInfo,
26637     marker: ::std::marker::PhantomData<&'a ()>,
26638 }
26639 unsafe impl ExtendsDescriptorSetLayoutCreateInfo
26640     for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'_>
26641 {
26642 }
26643 unsafe impl ExtendsDescriptorSetLayoutCreateInfo for DescriptorSetLayoutBindingFlagsCreateInfo {}
26644 impl<'a> ::std::ops::Deref for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
26645     type Target = DescriptorSetLayoutBindingFlagsCreateInfo;
deref(&self) -> &Self::Target26646     fn deref(&self) -> &Self::Target {
26647         &self.inner
26648     }
26649 }
26650 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26651     fn deref_mut(&mut self) -> &mut Self::Target {
26652         &mut self.inner
26653     }
26654 }
26655 impl<'a> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
binding_flags(mut self, binding_flags: &'a [DescriptorBindingFlags]) -> Self26656     pub fn binding_flags(mut self, binding_flags: &'a [DescriptorBindingFlags]) -> Self {
26657         self.inner.binding_count = binding_flags.len() as _;
26658         self.inner.p_binding_flags = binding_flags.as_ptr();
26659         self
26660     }
26661     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26662     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26663     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutBindingFlagsCreateInfo26664     pub fn build(self) -> DescriptorSetLayoutBindingFlagsCreateInfo {
26665         self.inner
26666     }
26667 }
26668 #[repr(C)]
26669 #[derive(Copy, Clone, Debug)]
26670 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>"]
26671 pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
26672     pub s_type: StructureType,
26673     pub p_next: *const c_void,
26674     pub descriptor_set_count: u32,
26675     pub p_descriptor_counts: *const u32,
26676 }
26677 impl ::std::default::Default for DescriptorSetVariableDescriptorCountAllocateInfo {
default() -> DescriptorSetVariableDescriptorCountAllocateInfo26678     fn default() -> DescriptorSetVariableDescriptorCountAllocateInfo {
26679         DescriptorSetVariableDescriptorCountAllocateInfo {
26680             s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
26681             p_next: ::std::ptr::null(),
26682             descriptor_set_count: u32::default(),
26683             p_descriptor_counts: ::std::ptr::null(),
26684         }
26685     }
26686 }
26687 impl DescriptorSetVariableDescriptorCountAllocateInfo {
builder<'a>() -> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a>26688     pub fn builder<'a>() -> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
26689         DescriptorSetVariableDescriptorCountAllocateInfoBuilder {
26690             inner: DescriptorSetVariableDescriptorCountAllocateInfo::default(),
26691             marker: ::std::marker::PhantomData,
26692         }
26693     }
26694 }
26695 #[repr(transparent)]
26696 pub struct DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
26697     inner: DescriptorSetVariableDescriptorCountAllocateInfo,
26698     marker: ::std::marker::PhantomData<&'a ()>,
26699 }
26700 unsafe impl ExtendsDescriptorSetAllocateInfo
26701     for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'_>
26702 {
26703 }
26704 unsafe impl ExtendsDescriptorSetAllocateInfo for DescriptorSetVariableDescriptorCountAllocateInfo {}
26705 impl<'a> ::std::ops::Deref for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
26706     type Target = DescriptorSetVariableDescriptorCountAllocateInfo;
deref(&self) -> &Self::Target26707     fn deref(&self) -> &Self::Target {
26708         &self.inner
26709     }
26710 }
26711 impl<'a> ::std::ops::DerefMut for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26712     fn deref_mut(&mut self) -> &mut Self::Target {
26713         &mut self.inner
26714     }
26715 }
26716 impl<'a> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
descriptor_counts(mut self, descriptor_counts: &'a [u32]) -> Self26717     pub fn descriptor_counts(mut self, descriptor_counts: &'a [u32]) -> Self {
26718         self.inner.descriptor_set_count = descriptor_counts.len() as _;
26719         self.inner.p_descriptor_counts = descriptor_counts.as_ptr();
26720         self
26721     }
26722     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26723     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26724     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetVariableDescriptorCountAllocateInfo26725     pub fn build(self) -> DescriptorSetVariableDescriptorCountAllocateInfo {
26726         self.inner
26727     }
26728 }
26729 #[repr(C)]
26730 #[derive(Copy, Clone, Debug)]
26731 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>"]
26732 pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
26733     pub s_type: StructureType,
26734     pub p_next: *mut c_void,
26735     pub max_variable_descriptor_count: u32,
26736 }
26737 impl ::std::default::Default for DescriptorSetVariableDescriptorCountLayoutSupport {
default() -> DescriptorSetVariableDescriptorCountLayoutSupport26738     fn default() -> DescriptorSetVariableDescriptorCountLayoutSupport {
26739         DescriptorSetVariableDescriptorCountLayoutSupport {
26740             s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
26741             p_next: ::std::ptr::null_mut(),
26742             max_variable_descriptor_count: u32::default(),
26743         }
26744     }
26745 }
26746 impl DescriptorSetVariableDescriptorCountLayoutSupport {
builder<'a>() -> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a>26747     pub fn builder<'a>() -> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
26748         DescriptorSetVariableDescriptorCountLayoutSupportBuilder {
26749             inner: DescriptorSetVariableDescriptorCountLayoutSupport::default(),
26750             marker: ::std::marker::PhantomData,
26751         }
26752     }
26753 }
26754 #[repr(transparent)]
26755 pub struct DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
26756     inner: DescriptorSetVariableDescriptorCountLayoutSupport,
26757     marker: ::std::marker::PhantomData<&'a ()>,
26758 }
26759 unsafe impl ExtendsDescriptorSetLayoutSupport
26760     for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'_>
26761 {
26762 }
26763 unsafe impl ExtendsDescriptorSetLayoutSupport
26764     for DescriptorSetVariableDescriptorCountLayoutSupport
26765 {
26766 }
26767 impl<'a> ::std::ops::Deref for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
26768     type Target = DescriptorSetVariableDescriptorCountLayoutSupport;
deref(&self) -> &Self::Target26769     fn deref(&self) -> &Self::Target {
26770         &self.inner
26771     }
26772 }
26773 impl<'a> ::std::ops::DerefMut for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26774     fn deref_mut(&mut self) -> &mut Self::Target {
26775         &mut self.inner
26776     }
26777 }
26778 impl<'a> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
max_variable_descriptor_count(mut self, max_variable_descriptor_count: u32) -> Self26779     pub fn max_variable_descriptor_count(mut self, max_variable_descriptor_count: u32) -> Self {
26780         self.inner.max_variable_descriptor_count = max_variable_descriptor_count;
26781         self
26782     }
26783     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26784     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26785     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetVariableDescriptorCountLayoutSupport26786     pub fn build(self) -> DescriptorSetVariableDescriptorCountLayoutSupport {
26787         self.inner
26788     }
26789 }
26790 #[repr(C)]
26791 #[derive(Copy, Clone, Debug)]
26792 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescription2.html>"]
26793 pub struct AttachmentDescription2 {
26794     pub s_type: StructureType,
26795     pub p_next: *const c_void,
26796     pub flags: AttachmentDescriptionFlags,
26797     pub format: Format,
26798     pub samples: SampleCountFlags,
26799     pub load_op: AttachmentLoadOp,
26800     pub store_op: AttachmentStoreOp,
26801     pub stencil_load_op: AttachmentLoadOp,
26802     pub stencil_store_op: AttachmentStoreOp,
26803     pub initial_layout: ImageLayout,
26804     pub final_layout: ImageLayout,
26805 }
26806 impl ::std::default::Default for AttachmentDescription2 {
default() -> AttachmentDescription226807     fn default() -> AttachmentDescription2 {
26808         AttachmentDescription2 {
26809             s_type: StructureType::ATTACHMENT_DESCRIPTION_2,
26810             p_next: ::std::ptr::null(),
26811             flags: AttachmentDescriptionFlags::default(),
26812             format: Format::default(),
26813             samples: SampleCountFlags::default(),
26814             load_op: AttachmentLoadOp::default(),
26815             store_op: AttachmentStoreOp::default(),
26816             stencil_load_op: AttachmentLoadOp::default(),
26817             stencil_store_op: AttachmentStoreOp::default(),
26818             initial_layout: ImageLayout::default(),
26819             final_layout: ImageLayout::default(),
26820         }
26821     }
26822 }
26823 impl AttachmentDescription2 {
builder<'a>() -> AttachmentDescription2Builder<'a>26824     pub fn builder<'a>() -> AttachmentDescription2Builder<'a> {
26825         AttachmentDescription2Builder {
26826             inner: AttachmentDescription2::default(),
26827             marker: ::std::marker::PhantomData,
26828         }
26829     }
26830 }
26831 #[repr(transparent)]
26832 pub struct AttachmentDescription2Builder<'a> {
26833     inner: AttachmentDescription2,
26834     marker: ::std::marker::PhantomData<&'a ()>,
26835 }
26836 pub unsafe trait ExtendsAttachmentDescription2 {}
26837 impl<'a> ::std::ops::Deref for AttachmentDescription2Builder<'a> {
26838     type Target = AttachmentDescription2;
deref(&self) -> &Self::Target26839     fn deref(&self) -> &Self::Target {
26840         &self.inner
26841     }
26842 }
26843 impl<'a> ::std::ops::DerefMut for AttachmentDescription2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target26844     fn deref_mut(&mut self) -> &mut Self::Target {
26845         &mut self.inner
26846     }
26847 }
26848 impl<'a> AttachmentDescription2Builder<'a> {
flags(mut self, flags: AttachmentDescriptionFlags) -> Self26849     pub fn flags(mut self, flags: AttachmentDescriptionFlags) -> Self {
26850         self.inner.flags = flags;
26851         self
26852     }
format(mut self, format: Format) -> Self26853     pub fn format(mut self, format: Format) -> Self {
26854         self.inner.format = format;
26855         self
26856     }
samples(mut self, samples: SampleCountFlags) -> Self26857     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
26858         self.inner.samples = samples;
26859         self
26860     }
load_op(mut self, load_op: AttachmentLoadOp) -> Self26861     pub fn load_op(mut self, load_op: AttachmentLoadOp) -> Self {
26862         self.inner.load_op = load_op;
26863         self
26864     }
store_op(mut self, store_op: AttachmentStoreOp) -> Self26865     pub fn store_op(mut self, store_op: AttachmentStoreOp) -> Self {
26866         self.inner.store_op = store_op;
26867         self
26868     }
stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self26869     pub fn stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self {
26870         self.inner.stencil_load_op = stencil_load_op;
26871         self
26872     }
stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self26873     pub fn stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self {
26874         self.inner.stencil_store_op = stencil_store_op;
26875         self
26876     }
initial_layout(mut self, initial_layout: ImageLayout) -> Self26877     pub fn initial_layout(mut self, initial_layout: ImageLayout) -> Self {
26878         self.inner.initial_layout = initial_layout;
26879         self
26880     }
final_layout(mut self, final_layout: ImageLayout) -> Self26881     pub fn final_layout(mut self, final_layout: ImageLayout) -> Self {
26882         self.inner.final_layout = final_layout;
26883         self
26884     }
26885     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
26886     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
26887     #[doc = r" valid extension structs can be pushed into the chain."]
26888     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
26889     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAttachmentDescription2>(mut self, next: &'a mut T) -> Self26890     pub fn push_next<T: ExtendsAttachmentDescription2>(mut self, next: &'a mut T) -> Self {
26891         unsafe {
26892             let next_ptr = next as *mut T as *mut BaseOutStructure;
26893             let last_next = ptr_chain_iter(next).last().unwrap();
26894             (*last_next).p_next = self.inner.p_next as _;
26895             self.inner.p_next = next_ptr as _;
26896         }
26897         self
26898     }
26899     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26900     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26901     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentDescription226902     pub fn build(self) -> AttachmentDescription2 {
26903         self.inner
26904     }
26905 }
26906 #[repr(C)]
26907 #[derive(Copy, Clone, Debug)]
26908 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReference2.html>"]
26909 pub struct AttachmentReference2 {
26910     pub s_type: StructureType,
26911     pub p_next: *const c_void,
26912     pub attachment: u32,
26913     pub layout: ImageLayout,
26914     pub aspect_mask: ImageAspectFlags,
26915 }
26916 impl ::std::default::Default for AttachmentReference2 {
default() -> AttachmentReference226917     fn default() -> AttachmentReference2 {
26918         AttachmentReference2 {
26919             s_type: StructureType::ATTACHMENT_REFERENCE_2,
26920             p_next: ::std::ptr::null(),
26921             attachment: u32::default(),
26922             layout: ImageLayout::default(),
26923             aspect_mask: ImageAspectFlags::default(),
26924         }
26925     }
26926 }
26927 impl AttachmentReference2 {
builder<'a>() -> AttachmentReference2Builder<'a>26928     pub fn builder<'a>() -> AttachmentReference2Builder<'a> {
26929         AttachmentReference2Builder {
26930             inner: AttachmentReference2::default(),
26931             marker: ::std::marker::PhantomData,
26932         }
26933     }
26934 }
26935 #[repr(transparent)]
26936 pub struct AttachmentReference2Builder<'a> {
26937     inner: AttachmentReference2,
26938     marker: ::std::marker::PhantomData<&'a ()>,
26939 }
26940 pub unsafe trait ExtendsAttachmentReference2 {}
26941 impl<'a> ::std::ops::Deref for AttachmentReference2Builder<'a> {
26942     type Target = AttachmentReference2;
deref(&self) -> &Self::Target26943     fn deref(&self) -> &Self::Target {
26944         &self.inner
26945     }
26946 }
26947 impl<'a> ::std::ops::DerefMut for AttachmentReference2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target26948     fn deref_mut(&mut self) -> &mut Self::Target {
26949         &mut self.inner
26950     }
26951 }
26952 impl<'a> AttachmentReference2Builder<'a> {
attachment(mut self, attachment: u32) -> Self26953     pub fn attachment(mut self, attachment: u32) -> Self {
26954         self.inner.attachment = attachment;
26955         self
26956     }
layout(mut self, layout: ImageLayout) -> Self26957     pub fn layout(mut self, layout: ImageLayout) -> Self {
26958         self.inner.layout = layout;
26959         self
26960     }
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self26961     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
26962         self.inner.aspect_mask = aspect_mask;
26963         self
26964     }
26965     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
26966     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
26967     #[doc = r" valid extension structs can be pushed into the chain."]
26968     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
26969     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAttachmentReference2>(mut self, next: &'a mut T) -> Self26970     pub fn push_next<T: ExtendsAttachmentReference2>(mut self, next: &'a mut T) -> Self {
26971         unsafe {
26972             let next_ptr = next as *mut T as *mut BaseOutStructure;
26973             let last_next = ptr_chain_iter(next).last().unwrap();
26974             (*last_next).p_next = self.inner.p_next as _;
26975             self.inner.p_next = next_ptr as _;
26976         }
26977         self
26978     }
26979     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26980     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26981     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentReference226982     pub fn build(self) -> AttachmentReference2 {
26983         self.inner
26984     }
26985 }
26986 #[repr(C)]
26987 #[derive(Copy, Clone, Debug)]
26988 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescription2.html>"]
26989 pub struct SubpassDescription2 {
26990     pub s_type: StructureType,
26991     pub p_next: *const c_void,
26992     pub flags: SubpassDescriptionFlags,
26993     pub pipeline_bind_point: PipelineBindPoint,
26994     pub view_mask: u32,
26995     pub input_attachment_count: u32,
26996     pub p_input_attachments: *const AttachmentReference2,
26997     pub color_attachment_count: u32,
26998     pub p_color_attachments: *const AttachmentReference2,
26999     pub p_resolve_attachments: *const AttachmentReference2,
27000     pub p_depth_stencil_attachment: *const AttachmentReference2,
27001     pub preserve_attachment_count: u32,
27002     pub p_preserve_attachments: *const u32,
27003 }
27004 impl ::std::default::Default for SubpassDescription2 {
default() -> SubpassDescription227005     fn default() -> SubpassDescription2 {
27006         SubpassDescription2 {
27007             s_type: StructureType::SUBPASS_DESCRIPTION_2,
27008             p_next: ::std::ptr::null(),
27009             flags: SubpassDescriptionFlags::default(),
27010             pipeline_bind_point: PipelineBindPoint::default(),
27011             view_mask: u32::default(),
27012             input_attachment_count: u32::default(),
27013             p_input_attachments: ::std::ptr::null(),
27014             color_attachment_count: u32::default(),
27015             p_color_attachments: ::std::ptr::null(),
27016             p_resolve_attachments: ::std::ptr::null(),
27017             p_depth_stencil_attachment: ::std::ptr::null(),
27018             preserve_attachment_count: u32::default(),
27019             p_preserve_attachments: ::std::ptr::null(),
27020         }
27021     }
27022 }
27023 impl SubpassDescription2 {
builder<'a>() -> SubpassDescription2Builder<'a>27024     pub fn builder<'a>() -> SubpassDescription2Builder<'a> {
27025         SubpassDescription2Builder {
27026             inner: SubpassDescription2::default(),
27027             marker: ::std::marker::PhantomData,
27028         }
27029     }
27030 }
27031 #[repr(transparent)]
27032 pub struct SubpassDescription2Builder<'a> {
27033     inner: SubpassDescription2,
27034     marker: ::std::marker::PhantomData<&'a ()>,
27035 }
27036 pub unsafe trait ExtendsSubpassDescription2 {}
27037 impl<'a> ::std::ops::Deref for SubpassDescription2Builder<'a> {
27038     type Target = SubpassDescription2;
deref(&self) -> &Self::Target27039     fn deref(&self) -> &Self::Target {
27040         &self.inner
27041     }
27042 }
27043 impl<'a> ::std::ops::DerefMut for SubpassDescription2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27044     fn deref_mut(&mut self) -> &mut Self::Target {
27045         &mut self.inner
27046     }
27047 }
27048 impl<'a> SubpassDescription2Builder<'a> {
flags(mut self, flags: SubpassDescriptionFlags) -> Self27049     pub fn flags(mut self, flags: SubpassDescriptionFlags) -> Self {
27050         self.inner.flags = flags;
27051         self
27052     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self27053     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
27054         self.inner.pipeline_bind_point = pipeline_bind_point;
27055         self
27056     }
view_mask(mut self, view_mask: u32) -> Self27057     pub fn view_mask(mut self, view_mask: u32) -> Self {
27058         self.inner.view_mask = view_mask;
27059         self
27060     }
input_attachments(mut self, input_attachments: &'a [AttachmentReference2]) -> Self27061     pub fn input_attachments(mut self, input_attachments: &'a [AttachmentReference2]) -> Self {
27062         self.inner.input_attachment_count = input_attachments.len() as _;
27063         self.inner.p_input_attachments = input_attachments.as_ptr();
27064         self
27065     }
color_attachments(mut self, color_attachments: &'a [AttachmentReference2]) -> Self27066     pub fn color_attachments(mut self, color_attachments: &'a [AttachmentReference2]) -> Self {
27067         self.inner.color_attachment_count = color_attachments.len() as _;
27068         self.inner.p_color_attachments = color_attachments.as_ptr();
27069         self
27070     }
resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference2]) -> Self27071     pub fn resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference2]) -> Self {
27072         self.inner.color_attachment_count = resolve_attachments.len() as _;
27073         self.inner.p_resolve_attachments = resolve_attachments.as_ptr();
27074         self
27075     }
depth_stencil_attachment( mut self, depth_stencil_attachment: &'a AttachmentReference2, ) -> Self27076     pub fn depth_stencil_attachment(
27077         mut self,
27078         depth_stencil_attachment: &'a AttachmentReference2,
27079     ) -> Self {
27080         self.inner.p_depth_stencil_attachment = depth_stencil_attachment;
27081         self
27082     }
preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self27083     pub fn preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self {
27084         self.inner.preserve_attachment_count = preserve_attachments.len() as _;
27085         self.inner.p_preserve_attachments = preserve_attachments.as_ptr();
27086         self
27087     }
27088     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27089     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27090     #[doc = r" valid extension structs can be pushed into the chain."]
27091     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27092     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubpassDescription2>(mut self, next: &'a mut T) -> Self27093     pub fn push_next<T: ExtendsSubpassDescription2>(mut self, next: &'a mut T) -> Self {
27094         unsafe {
27095             let next_ptr = next as *mut T as *mut BaseOutStructure;
27096             let last_next = ptr_chain_iter(next).last().unwrap();
27097             (*last_next).p_next = self.inner.p_next as _;
27098             self.inner.p_next = next_ptr as _;
27099         }
27100         self
27101     }
27102     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27103     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27104     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDescription227105     pub fn build(self) -> SubpassDescription2 {
27106         self.inner
27107     }
27108 }
27109 #[repr(C)]
27110 #[derive(Copy, Clone, Debug)]
27111 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDependency2.html>"]
27112 pub struct SubpassDependency2 {
27113     pub s_type: StructureType,
27114     pub p_next: *const c_void,
27115     pub src_subpass: u32,
27116     pub dst_subpass: u32,
27117     pub src_stage_mask: PipelineStageFlags,
27118     pub dst_stage_mask: PipelineStageFlags,
27119     pub src_access_mask: AccessFlags,
27120     pub dst_access_mask: AccessFlags,
27121     pub dependency_flags: DependencyFlags,
27122     pub view_offset: i32,
27123 }
27124 impl ::std::default::Default for SubpassDependency2 {
default() -> SubpassDependency227125     fn default() -> SubpassDependency2 {
27126         SubpassDependency2 {
27127             s_type: StructureType::SUBPASS_DEPENDENCY_2,
27128             p_next: ::std::ptr::null(),
27129             src_subpass: u32::default(),
27130             dst_subpass: u32::default(),
27131             src_stage_mask: PipelineStageFlags::default(),
27132             dst_stage_mask: PipelineStageFlags::default(),
27133             src_access_mask: AccessFlags::default(),
27134             dst_access_mask: AccessFlags::default(),
27135             dependency_flags: DependencyFlags::default(),
27136             view_offset: i32::default(),
27137         }
27138     }
27139 }
27140 impl SubpassDependency2 {
builder<'a>() -> SubpassDependency2Builder<'a>27141     pub fn builder<'a>() -> SubpassDependency2Builder<'a> {
27142         SubpassDependency2Builder {
27143             inner: SubpassDependency2::default(),
27144             marker: ::std::marker::PhantomData,
27145         }
27146     }
27147 }
27148 #[repr(transparent)]
27149 pub struct SubpassDependency2Builder<'a> {
27150     inner: SubpassDependency2,
27151     marker: ::std::marker::PhantomData<&'a ()>,
27152 }
27153 pub unsafe trait ExtendsSubpassDependency2 {}
27154 impl<'a> ::std::ops::Deref for SubpassDependency2Builder<'a> {
27155     type Target = SubpassDependency2;
deref(&self) -> &Self::Target27156     fn deref(&self) -> &Self::Target {
27157         &self.inner
27158     }
27159 }
27160 impl<'a> ::std::ops::DerefMut for SubpassDependency2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27161     fn deref_mut(&mut self) -> &mut Self::Target {
27162         &mut self.inner
27163     }
27164 }
27165 impl<'a> SubpassDependency2Builder<'a> {
src_subpass(mut self, src_subpass: u32) -> Self27166     pub fn src_subpass(mut self, src_subpass: u32) -> Self {
27167         self.inner.src_subpass = src_subpass;
27168         self
27169     }
dst_subpass(mut self, dst_subpass: u32) -> Self27170     pub fn dst_subpass(mut self, dst_subpass: u32) -> Self {
27171         self.inner.dst_subpass = dst_subpass;
27172         self
27173     }
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self27174     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self {
27175         self.inner.src_stage_mask = src_stage_mask;
27176         self
27177     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self27178     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self {
27179         self.inner.dst_stage_mask = dst_stage_mask;
27180         self
27181     }
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self27182     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
27183         self.inner.src_access_mask = src_access_mask;
27184         self
27185     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self27186     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
27187         self.inner.dst_access_mask = dst_access_mask;
27188         self
27189     }
dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self27190     pub fn dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self {
27191         self.inner.dependency_flags = dependency_flags;
27192         self
27193     }
view_offset(mut self, view_offset: i32) -> Self27194     pub fn view_offset(mut self, view_offset: i32) -> Self {
27195         self.inner.view_offset = view_offset;
27196         self
27197     }
27198     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27199     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27200     #[doc = r" valid extension structs can be pushed into the chain."]
27201     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27202     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubpassDependency2>(mut self, next: &'a mut T) -> Self27203     pub fn push_next<T: ExtendsSubpassDependency2>(mut self, next: &'a mut T) -> Self {
27204         unsafe {
27205             let next_ptr = next as *mut T as *mut BaseOutStructure;
27206             let last_next = ptr_chain_iter(next).last().unwrap();
27207             (*last_next).p_next = self.inner.p_next as _;
27208             self.inner.p_next = next_ptr as _;
27209         }
27210         self
27211     }
27212     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27213     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27214     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDependency227215     pub fn build(self) -> SubpassDependency2 {
27216         self.inner
27217     }
27218 }
27219 #[repr(C)]
27220 #[derive(Copy, Clone, Debug)]
27221 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateInfo2.html>"]
27222 pub struct RenderPassCreateInfo2 {
27223     pub s_type: StructureType,
27224     pub p_next: *const c_void,
27225     pub flags: RenderPassCreateFlags,
27226     pub attachment_count: u32,
27227     pub p_attachments: *const AttachmentDescription2,
27228     pub subpass_count: u32,
27229     pub p_subpasses: *const SubpassDescription2,
27230     pub dependency_count: u32,
27231     pub p_dependencies: *const SubpassDependency2,
27232     pub correlated_view_mask_count: u32,
27233     pub p_correlated_view_masks: *const u32,
27234 }
27235 impl ::std::default::Default for RenderPassCreateInfo2 {
default() -> RenderPassCreateInfo227236     fn default() -> RenderPassCreateInfo2 {
27237         RenderPassCreateInfo2 {
27238             s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
27239             p_next: ::std::ptr::null(),
27240             flags: RenderPassCreateFlags::default(),
27241             attachment_count: u32::default(),
27242             p_attachments: ::std::ptr::null(),
27243             subpass_count: u32::default(),
27244             p_subpasses: ::std::ptr::null(),
27245             dependency_count: u32::default(),
27246             p_dependencies: ::std::ptr::null(),
27247             correlated_view_mask_count: u32::default(),
27248             p_correlated_view_masks: ::std::ptr::null(),
27249         }
27250     }
27251 }
27252 impl RenderPassCreateInfo2 {
builder<'a>() -> RenderPassCreateInfo2Builder<'a>27253     pub fn builder<'a>() -> RenderPassCreateInfo2Builder<'a> {
27254         RenderPassCreateInfo2Builder {
27255             inner: RenderPassCreateInfo2::default(),
27256             marker: ::std::marker::PhantomData,
27257         }
27258     }
27259 }
27260 #[repr(transparent)]
27261 pub struct RenderPassCreateInfo2Builder<'a> {
27262     inner: RenderPassCreateInfo2,
27263     marker: ::std::marker::PhantomData<&'a ()>,
27264 }
27265 pub unsafe trait ExtendsRenderPassCreateInfo2 {}
27266 impl<'a> ::std::ops::Deref for RenderPassCreateInfo2Builder<'a> {
27267     type Target = RenderPassCreateInfo2;
deref(&self) -> &Self::Target27268     fn deref(&self) -> &Self::Target {
27269         &self.inner
27270     }
27271 }
27272 impl<'a> ::std::ops::DerefMut for RenderPassCreateInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27273     fn deref_mut(&mut self) -> &mut Self::Target {
27274         &mut self.inner
27275     }
27276 }
27277 impl<'a> RenderPassCreateInfo2Builder<'a> {
flags(mut self, flags: RenderPassCreateFlags) -> Self27278     pub fn flags(mut self, flags: RenderPassCreateFlags) -> Self {
27279         self.inner.flags = flags;
27280         self
27281     }
attachments(mut self, attachments: &'a [AttachmentDescription2]) -> Self27282     pub fn attachments(mut self, attachments: &'a [AttachmentDescription2]) -> Self {
27283         self.inner.attachment_count = attachments.len() as _;
27284         self.inner.p_attachments = attachments.as_ptr();
27285         self
27286     }
subpasses(mut self, subpasses: &'a [SubpassDescription2]) -> Self27287     pub fn subpasses(mut self, subpasses: &'a [SubpassDescription2]) -> Self {
27288         self.inner.subpass_count = subpasses.len() as _;
27289         self.inner.p_subpasses = subpasses.as_ptr();
27290         self
27291     }
dependencies(mut self, dependencies: &'a [SubpassDependency2]) -> Self27292     pub fn dependencies(mut self, dependencies: &'a [SubpassDependency2]) -> Self {
27293         self.inner.dependency_count = dependencies.len() as _;
27294         self.inner.p_dependencies = dependencies.as_ptr();
27295         self
27296     }
correlated_view_masks(mut self, correlated_view_masks: &'a [u32]) -> Self27297     pub fn correlated_view_masks(mut self, correlated_view_masks: &'a [u32]) -> Self {
27298         self.inner.correlated_view_mask_count = correlated_view_masks.len() as _;
27299         self.inner.p_correlated_view_masks = correlated_view_masks.as_ptr();
27300         self
27301     }
27302     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27303     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27304     #[doc = r" valid extension structs can be pushed into the chain."]
27305     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27306     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRenderPassCreateInfo2>(mut self, next: &'a mut T) -> Self27307     pub fn push_next<T: ExtendsRenderPassCreateInfo2>(mut self, next: &'a mut T) -> Self {
27308         unsafe {
27309             let next_ptr = next as *mut T as *mut BaseOutStructure;
27310             let last_next = ptr_chain_iter(next).last().unwrap();
27311             (*last_next).p_next = self.inner.p_next as _;
27312             self.inner.p_next = next_ptr as _;
27313         }
27314         self
27315     }
27316     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27317     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27318     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassCreateInfo227319     pub fn build(self) -> RenderPassCreateInfo2 {
27320         self.inner
27321     }
27322 }
27323 #[repr(C)]
27324 #[derive(Copy, Clone, Debug)]
27325 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassBeginInfo.html>"]
27326 pub struct SubpassBeginInfo {
27327     pub s_type: StructureType,
27328     pub p_next: *const c_void,
27329     pub contents: SubpassContents,
27330 }
27331 impl ::std::default::Default for SubpassBeginInfo {
default() -> SubpassBeginInfo27332     fn default() -> SubpassBeginInfo {
27333         SubpassBeginInfo {
27334             s_type: StructureType::SUBPASS_BEGIN_INFO,
27335             p_next: ::std::ptr::null(),
27336             contents: SubpassContents::default(),
27337         }
27338     }
27339 }
27340 impl SubpassBeginInfo {
builder<'a>() -> SubpassBeginInfoBuilder<'a>27341     pub fn builder<'a>() -> SubpassBeginInfoBuilder<'a> {
27342         SubpassBeginInfoBuilder {
27343             inner: SubpassBeginInfo::default(),
27344             marker: ::std::marker::PhantomData,
27345         }
27346     }
27347 }
27348 #[repr(transparent)]
27349 pub struct SubpassBeginInfoBuilder<'a> {
27350     inner: SubpassBeginInfo,
27351     marker: ::std::marker::PhantomData<&'a ()>,
27352 }
27353 impl<'a> ::std::ops::Deref for SubpassBeginInfoBuilder<'a> {
27354     type Target = SubpassBeginInfo;
deref(&self) -> &Self::Target27355     fn deref(&self) -> &Self::Target {
27356         &self.inner
27357     }
27358 }
27359 impl<'a> ::std::ops::DerefMut for SubpassBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27360     fn deref_mut(&mut self) -> &mut Self::Target {
27361         &mut self.inner
27362     }
27363 }
27364 impl<'a> SubpassBeginInfoBuilder<'a> {
contents(mut self, contents: SubpassContents) -> Self27365     pub fn contents(mut self, contents: SubpassContents) -> Self {
27366         self.inner.contents = contents;
27367         self
27368     }
27369     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27370     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27371     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassBeginInfo27372     pub fn build(self) -> SubpassBeginInfo {
27373         self.inner
27374     }
27375 }
27376 #[repr(C)]
27377 #[derive(Copy, Clone, Debug)]
27378 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassEndInfo.html>"]
27379 pub struct SubpassEndInfo {
27380     pub s_type: StructureType,
27381     pub p_next: *const c_void,
27382 }
27383 impl ::std::default::Default for SubpassEndInfo {
default() -> SubpassEndInfo27384     fn default() -> SubpassEndInfo {
27385         SubpassEndInfo {
27386             s_type: StructureType::SUBPASS_END_INFO,
27387             p_next: ::std::ptr::null(),
27388         }
27389     }
27390 }
27391 impl SubpassEndInfo {
builder<'a>() -> SubpassEndInfoBuilder<'a>27392     pub fn builder<'a>() -> SubpassEndInfoBuilder<'a> {
27393         SubpassEndInfoBuilder {
27394             inner: SubpassEndInfo::default(),
27395             marker: ::std::marker::PhantomData,
27396         }
27397     }
27398 }
27399 #[repr(transparent)]
27400 pub struct SubpassEndInfoBuilder<'a> {
27401     inner: SubpassEndInfo,
27402     marker: ::std::marker::PhantomData<&'a ()>,
27403 }
27404 impl<'a> ::std::ops::Deref for SubpassEndInfoBuilder<'a> {
27405     type Target = SubpassEndInfo;
deref(&self) -> &Self::Target27406     fn deref(&self) -> &Self::Target {
27407         &self.inner
27408     }
27409 }
27410 impl<'a> ::std::ops::DerefMut for SubpassEndInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27411     fn deref_mut(&mut self) -> &mut Self::Target {
27412         &mut self.inner
27413     }
27414 }
27415 impl<'a> SubpassEndInfoBuilder<'a> {
27416     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27417     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27418     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassEndInfo27419     pub fn build(self) -> SubpassEndInfo {
27420         self.inner
27421     }
27422 }
27423 #[repr(C)]
27424 #[derive(Copy, Clone, Debug)]
27425 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>"]
27426 pub struct PhysicalDeviceTimelineSemaphoreFeatures {
27427     pub s_type: StructureType,
27428     pub p_next: *mut c_void,
27429     pub timeline_semaphore: Bool32,
27430 }
27431 impl ::std::default::Default for PhysicalDeviceTimelineSemaphoreFeatures {
default() -> PhysicalDeviceTimelineSemaphoreFeatures27432     fn default() -> PhysicalDeviceTimelineSemaphoreFeatures {
27433         PhysicalDeviceTimelineSemaphoreFeatures {
27434             s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
27435             p_next: ::std::ptr::null_mut(),
27436             timeline_semaphore: Bool32::default(),
27437         }
27438     }
27439 }
27440 impl PhysicalDeviceTimelineSemaphoreFeatures {
builder<'a>() -> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a>27441     pub fn builder<'a>() -> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
27442         PhysicalDeviceTimelineSemaphoreFeaturesBuilder {
27443             inner: PhysicalDeviceTimelineSemaphoreFeatures::default(),
27444             marker: ::std::marker::PhantomData,
27445         }
27446     }
27447 }
27448 #[repr(transparent)]
27449 pub struct PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
27450     inner: PhysicalDeviceTimelineSemaphoreFeatures,
27451     marker: ::std::marker::PhantomData<&'a ()>,
27452 }
27453 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'_> {}
27454 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTimelineSemaphoreFeatures {}
27455 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'_> {}
27456 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTimelineSemaphoreFeatures {}
27457 impl<'a> ::std::ops::Deref for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
27458     type Target = PhysicalDeviceTimelineSemaphoreFeatures;
deref(&self) -> &Self::Target27459     fn deref(&self) -> &Self::Target {
27460         &self.inner
27461     }
27462 }
27463 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27464     fn deref_mut(&mut self) -> &mut Self::Target {
27465         &mut self.inner
27466     }
27467 }
27468 impl<'a> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
timeline_semaphore(mut self, timeline_semaphore: bool) -> Self27469     pub fn timeline_semaphore(mut self, timeline_semaphore: bool) -> Self {
27470         self.inner.timeline_semaphore = timeline_semaphore.into();
27471         self
27472     }
27473     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27474     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27475     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTimelineSemaphoreFeatures27476     pub fn build(self) -> PhysicalDeviceTimelineSemaphoreFeatures {
27477         self.inner
27478     }
27479 }
27480 #[repr(C)]
27481 #[derive(Copy, Clone, Debug)]
27482 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>"]
27483 pub struct PhysicalDeviceTimelineSemaphoreProperties {
27484     pub s_type: StructureType,
27485     pub p_next: *mut c_void,
27486     pub max_timeline_semaphore_value_difference: u64,
27487 }
27488 impl ::std::default::Default for PhysicalDeviceTimelineSemaphoreProperties {
default() -> PhysicalDeviceTimelineSemaphoreProperties27489     fn default() -> PhysicalDeviceTimelineSemaphoreProperties {
27490         PhysicalDeviceTimelineSemaphoreProperties {
27491             s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
27492             p_next: ::std::ptr::null_mut(),
27493             max_timeline_semaphore_value_difference: u64::default(),
27494         }
27495     }
27496 }
27497 impl PhysicalDeviceTimelineSemaphoreProperties {
builder<'a>() -> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a>27498     pub fn builder<'a>() -> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
27499         PhysicalDeviceTimelineSemaphorePropertiesBuilder {
27500             inner: PhysicalDeviceTimelineSemaphoreProperties::default(),
27501             marker: ::std::marker::PhantomData,
27502         }
27503     }
27504 }
27505 #[repr(transparent)]
27506 pub struct PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
27507     inner: PhysicalDeviceTimelineSemaphoreProperties,
27508     marker: ::std::marker::PhantomData<&'a ()>,
27509 }
27510 unsafe impl ExtendsPhysicalDeviceProperties2
27511     for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'_>
27512 {
27513 }
27514 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTimelineSemaphoreProperties {}
27515 impl<'a> ::std::ops::Deref for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
27516     type Target = PhysicalDeviceTimelineSemaphoreProperties;
deref(&self) -> &Self::Target27517     fn deref(&self) -> &Self::Target {
27518         &self.inner
27519     }
27520 }
27521 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27522     fn deref_mut(&mut self) -> &mut Self::Target {
27523         &mut self.inner
27524     }
27525 }
27526 impl<'a> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
max_timeline_semaphore_value_difference( mut self, max_timeline_semaphore_value_difference: u64, ) -> Self27527     pub fn max_timeline_semaphore_value_difference(
27528         mut self,
27529         max_timeline_semaphore_value_difference: u64,
27530     ) -> Self {
27531         self.inner.max_timeline_semaphore_value_difference =
27532             max_timeline_semaphore_value_difference;
27533         self
27534     }
27535     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27536     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27537     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTimelineSemaphoreProperties27538     pub fn build(self) -> PhysicalDeviceTimelineSemaphoreProperties {
27539         self.inner
27540     }
27541 }
27542 #[repr(C)]
27543 #[derive(Copy, Clone, Debug)]
27544 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreTypeCreateInfo.html>"]
27545 pub struct SemaphoreTypeCreateInfo {
27546     pub s_type: StructureType,
27547     pub p_next: *const c_void,
27548     pub semaphore_type: SemaphoreType,
27549     pub initial_value: u64,
27550 }
27551 impl ::std::default::Default for SemaphoreTypeCreateInfo {
default() -> SemaphoreTypeCreateInfo27552     fn default() -> SemaphoreTypeCreateInfo {
27553         SemaphoreTypeCreateInfo {
27554             s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
27555             p_next: ::std::ptr::null(),
27556             semaphore_type: SemaphoreType::default(),
27557             initial_value: u64::default(),
27558         }
27559     }
27560 }
27561 impl SemaphoreTypeCreateInfo {
builder<'a>() -> SemaphoreTypeCreateInfoBuilder<'a>27562     pub fn builder<'a>() -> SemaphoreTypeCreateInfoBuilder<'a> {
27563         SemaphoreTypeCreateInfoBuilder {
27564             inner: SemaphoreTypeCreateInfo::default(),
27565             marker: ::std::marker::PhantomData,
27566         }
27567     }
27568 }
27569 #[repr(transparent)]
27570 pub struct SemaphoreTypeCreateInfoBuilder<'a> {
27571     inner: SemaphoreTypeCreateInfo,
27572     marker: ::std::marker::PhantomData<&'a ()>,
27573 }
27574 unsafe impl ExtendsSemaphoreCreateInfo for SemaphoreTypeCreateInfoBuilder<'_> {}
27575 unsafe impl ExtendsSemaphoreCreateInfo for SemaphoreTypeCreateInfo {}
27576 unsafe impl ExtendsPhysicalDeviceExternalSemaphoreInfo for SemaphoreTypeCreateInfoBuilder<'_> {}
27577 unsafe impl ExtendsPhysicalDeviceExternalSemaphoreInfo for SemaphoreTypeCreateInfo {}
27578 impl<'a> ::std::ops::Deref for SemaphoreTypeCreateInfoBuilder<'a> {
27579     type Target = SemaphoreTypeCreateInfo;
deref(&self) -> &Self::Target27580     fn deref(&self) -> &Self::Target {
27581         &self.inner
27582     }
27583 }
27584 impl<'a> ::std::ops::DerefMut for SemaphoreTypeCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27585     fn deref_mut(&mut self) -> &mut Self::Target {
27586         &mut self.inner
27587     }
27588 }
27589 impl<'a> SemaphoreTypeCreateInfoBuilder<'a> {
semaphore_type(mut self, semaphore_type: SemaphoreType) -> Self27590     pub fn semaphore_type(mut self, semaphore_type: SemaphoreType) -> Self {
27591         self.inner.semaphore_type = semaphore_type;
27592         self
27593     }
initial_value(mut self, initial_value: u64) -> Self27594     pub fn initial_value(mut self, initial_value: u64) -> Self {
27595         self.inner.initial_value = initial_value;
27596         self
27597     }
27598     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27599     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27600     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreTypeCreateInfo27601     pub fn build(self) -> SemaphoreTypeCreateInfo {
27602         self.inner
27603     }
27604 }
27605 #[repr(C)]
27606 #[derive(Copy, Clone, Debug)]
27607 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTimelineSemaphoreSubmitInfo.html>"]
27608 pub struct TimelineSemaphoreSubmitInfo {
27609     pub s_type: StructureType,
27610     pub p_next: *const c_void,
27611     pub wait_semaphore_value_count: u32,
27612     pub p_wait_semaphore_values: *const u64,
27613     pub signal_semaphore_value_count: u32,
27614     pub p_signal_semaphore_values: *const u64,
27615 }
27616 impl ::std::default::Default for TimelineSemaphoreSubmitInfo {
default() -> TimelineSemaphoreSubmitInfo27617     fn default() -> TimelineSemaphoreSubmitInfo {
27618         TimelineSemaphoreSubmitInfo {
27619             s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
27620             p_next: ::std::ptr::null(),
27621             wait_semaphore_value_count: u32::default(),
27622             p_wait_semaphore_values: ::std::ptr::null(),
27623             signal_semaphore_value_count: u32::default(),
27624             p_signal_semaphore_values: ::std::ptr::null(),
27625         }
27626     }
27627 }
27628 impl TimelineSemaphoreSubmitInfo {
builder<'a>() -> TimelineSemaphoreSubmitInfoBuilder<'a>27629     pub fn builder<'a>() -> TimelineSemaphoreSubmitInfoBuilder<'a> {
27630         TimelineSemaphoreSubmitInfoBuilder {
27631             inner: TimelineSemaphoreSubmitInfo::default(),
27632             marker: ::std::marker::PhantomData,
27633         }
27634     }
27635 }
27636 #[repr(transparent)]
27637 pub struct TimelineSemaphoreSubmitInfoBuilder<'a> {
27638     inner: TimelineSemaphoreSubmitInfo,
27639     marker: ::std::marker::PhantomData<&'a ()>,
27640 }
27641 unsafe impl ExtendsSubmitInfo for TimelineSemaphoreSubmitInfoBuilder<'_> {}
27642 unsafe impl ExtendsSubmitInfo for TimelineSemaphoreSubmitInfo {}
27643 unsafe impl ExtendsBindSparseInfo for TimelineSemaphoreSubmitInfoBuilder<'_> {}
27644 unsafe impl ExtendsBindSparseInfo for TimelineSemaphoreSubmitInfo {}
27645 impl<'a> ::std::ops::Deref for TimelineSemaphoreSubmitInfoBuilder<'a> {
27646     type Target = TimelineSemaphoreSubmitInfo;
deref(&self) -> &Self::Target27647     fn deref(&self) -> &Self::Target {
27648         &self.inner
27649     }
27650 }
27651 impl<'a> ::std::ops::DerefMut for TimelineSemaphoreSubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27652     fn deref_mut(&mut self) -> &mut Self::Target {
27653         &mut self.inner
27654     }
27655 }
27656 impl<'a> TimelineSemaphoreSubmitInfoBuilder<'a> {
wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self27657     pub fn wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self {
27658         self.inner.wait_semaphore_value_count = wait_semaphore_values.len() as _;
27659         self.inner.p_wait_semaphore_values = wait_semaphore_values.as_ptr();
27660         self
27661     }
signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self27662     pub fn signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self {
27663         self.inner.signal_semaphore_value_count = signal_semaphore_values.len() as _;
27664         self.inner.p_signal_semaphore_values = signal_semaphore_values.as_ptr();
27665         self
27666     }
27667     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27668     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27669     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> TimelineSemaphoreSubmitInfo27670     pub fn build(self) -> TimelineSemaphoreSubmitInfo {
27671         self.inner
27672     }
27673 }
27674 #[repr(C)]
27675 #[derive(Copy, Clone, Debug)]
27676 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreWaitInfo.html>"]
27677 pub struct SemaphoreWaitInfo {
27678     pub s_type: StructureType,
27679     pub p_next: *const c_void,
27680     pub flags: SemaphoreWaitFlags,
27681     pub semaphore_count: u32,
27682     pub p_semaphores: *const Semaphore,
27683     pub p_values: *const u64,
27684 }
27685 impl ::std::default::Default for SemaphoreWaitInfo {
default() -> SemaphoreWaitInfo27686     fn default() -> SemaphoreWaitInfo {
27687         SemaphoreWaitInfo {
27688             s_type: StructureType::SEMAPHORE_WAIT_INFO,
27689             p_next: ::std::ptr::null(),
27690             flags: SemaphoreWaitFlags::default(),
27691             semaphore_count: u32::default(),
27692             p_semaphores: ::std::ptr::null(),
27693             p_values: ::std::ptr::null(),
27694         }
27695     }
27696 }
27697 impl SemaphoreWaitInfo {
builder<'a>() -> SemaphoreWaitInfoBuilder<'a>27698     pub fn builder<'a>() -> SemaphoreWaitInfoBuilder<'a> {
27699         SemaphoreWaitInfoBuilder {
27700             inner: SemaphoreWaitInfo::default(),
27701             marker: ::std::marker::PhantomData,
27702         }
27703     }
27704 }
27705 #[repr(transparent)]
27706 pub struct SemaphoreWaitInfoBuilder<'a> {
27707     inner: SemaphoreWaitInfo,
27708     marker: ::std::marker::PhantomData<&'a ()>,
27709 }
27710 impl<'a> ::std::ops::Deref for SemaphoreWaitInfoBuilder<'a> {
27711     type Target = SemaphoreWaitInfo;
deref(&self) -> &Self::Target27712     fn deref(&self) -> &Self::Target {
27713         &self.inner
27714     }
27715 }
27716 impl<'a> ::std::ops::DerefMut for SemaphoreWaitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27717     fn deref_mut(&mut self) -> &mut Self::Target {
27718         &mut self.inner
27719     }
27720 }
27721 impl<'a> SemaphoreWaitInfoBuilder<'a> {
flags(mut self, flags: SemaphoreWaitFlags) -> Self27722     pub fn flags(mut self, flags: SemaphoreWaitFlags) -> Self {
27723         self.inner.flags = flags;
27724         self
27725     }
semaphores(mut self, semaphores: &'a [Semaphore]) -> Self27726     pub fn semaphores(mut self, semaphores: &'a [Semaphore]) -> Self {
27727         self.inner.semaphore_count = semaphores.len() as _;
27728         self.inner.p_semaphores = semaphores.as_ptr();
27729         self
27730     }
values(mut self, values: &'a [u64]) -> Self27731     pub fn values(mut self, values: &'a [u64]) -> Self {
27732         self.inner.semaphore_count = values.len() as _;
27733         self.inner.p_values = values.as_ptr();
27734         self
27735     }
27736     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27737     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27738     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreWaitInfo27739     pub fn build(self) -> SemaphoreWaitInfo {
27740         self.inner
27741     }
27742 }
27743 #[repr(C)]
27744 #[derive(Copy, Clone, Debug)]
27745 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreSignalInfo.html>"]
27746 pub struct SemaphoreSignalInfo {
27747     pub s_type: StructureType,
27748     pub p_next: *const c_void,
27749     pub semaphore: Semaphore,
27750     pub value: u64,
27751 }
27752 impl ::std::default::Default for SemaphoreSignalInfo {
default() -> SemaphoreSignalInfo27753     fn default() -> SemaphoreSignalInfo {
27754         SemaphoreSignalInfo {
27755             s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
27756             p_next: ::std::ptr::null(),
27757             semaphore: Semaphore::default(),
27758             value: u64::default(),
27759         }
27760     }
27761 }
27762 impl SemaphoreSignalInfo {
builder<'a>() -> SemaphoreSignalInfoBuilder<'a>27763     pub fn builder<'a>() -> SemaphoreSignalInfoBuilder<'a> {
27764         SemaphoreSignalInfoBuilder {
27765             inner: SemaphoreSignalInfo::default(),
27766             marker: ::std::marker::PhantomData,
27767         }
27768     }
27769 }
27770 #[repr(transparent)]
27771 pub struct SemaphoreSignalInfoBuilder<'a> {
27772     inner: SemaphoreSignalInfo,
27773     marker: ::std::marker::PhantomData<&'a ()>,
27774 }
27775 impl<'a> ::std::ops::Deref for SemaphoreSignalInfoBuilder<'a> {
27776     type Target = SemaphoreSignalInfo;
deref(&self) -> &Self::Target27777     fn deref(&self) -> &Self::Target {
27778         &self.inner
27779     }
27780 }
27781 impl<'a> ::std::ops::DerefMut for SemaphoreSignalInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27782     fn deref_mut(&mut self) -> &mut Self::Target {
27783         &mut self.inner
27784     }
27785 }
27786 impl<'a> SemaphoreSignalInfoBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self27787     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
27788         self.inner.semaphore = semaphore;
27789         self
27790     }
value(mut self, value: u64) -> Self27791     pub fn value(mut self, value: u64) -> Self {
27792         self.inner.value = value;
27793         self
27794     }
27795     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27796     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27797     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreSignalInfo27798     pub fn build(self) -> SemaphoreSignalInfo {
27799         self.inner
27800     }
27801 }
27802 #[repr(C)]
27803 #[derive(Copy, Clone, Default, Debug)]
27804 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>"]
27805 pub struct VertexInputBindingDivisorDescriptionEXT {
27806     pub binding: u32,
27807     pub divisor: u32,
27808 }
27809 impl VertexInputBindingDivisorDescriptionEXT {
builder<'a>() -> VertexInputBindingDivisorDescriptionEXTBuilder<'a>27810     pub fn builder<'a>() -> VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
27811         VertexInputBindingDivisorDescriptionEXTBuilder {
27812             inner: VertexInputBindingDivisorDescriptionEXT::default(),
27813             marker: ::std::marker::PhantomData,
27814         }
27815     }
27816 }
27817 #[repr(transparent)]
27818 pub struct VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
27819     inner: VertexInputBindingDivisorDescriptionEXT,
27820     marker: ::std::marker::PhantomData<&'a ()>,
27821 }
27822 impl<'a> ::std::ops::Deref for VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
27823     type Target = VertexInputBindingDivisorDescriptionEXT;
deref(&self) -> &Self::Target27824     fn deref(&self) -> &Self::Target {
27825         &self.inner
27826     }
27827 }
27828 impl<'a> ::std::ops::DerefMut for VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27829     fn deref_mut(&mut self) -> &mut Self::Target {
27830         &mut self.inner
27831     }
27832 }
27833 impl<'a> VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
binding(mut self, binding: u32) -> Self27834     pub fn binding(mut self, binding: u32) -> Self {
27835         self.inner.binding = binding;
27836         self
27837     }
divisor(mut self, divisor: u32) -> Self27838     pub fn divisor(mut self, divisor: u32) -> Self {
27839         self.inner.divisor = divisor;
27840         self
27841     }
27842     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27843     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27844     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputBindingDivisorDescriptionEXT27845     pub fn build(self) -> VertexInputBindingDivisorDescriptionEXT {
27846         self.inner
27847     }
27848 }
27849 #[repr(C)]
27850 #[derive(Copy, Clone, Debug)]
27851 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>"]
27852 pub struct PipelineVertexInputDivisorStateCreateInfoEXT {
27853     pub s_type: StructureType,
27854     pub p_next: *const c_void,
27855     pub vertex_binding_divisor_count: u32,
27856     pub p_vertex_binding_divisors: *const VertexInputBindingDivisorDescriptionEXT,
27857 }
27858 impl ::std::default::Default for PipelineVertexInputDivisorStateCreateInfoEXT {
default() -> PipelineVertexInputDivisorStateCreateInfoEXT27859     fn default() -> PipelineVertexInputDivisorStateCreateInfoEXT {
27860         PipelineVertexInputDivisorStateCreateInfoEXT {
27861             s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,
27862             p_next: ::std::ptr::null(),
27863             vertex_binding_divisor_count: u32::default(),
27864             p_vertex_binding_divisors: ::std::ptr::null(),
27865         }
27866     }
27867 }
27868 impl PipelineVertexInputDivisorStateCreateInfoEXT {
builder<'a>() -> PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a>27869     pub fn builder<'a>() -> PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
27870         PipelineVertexInputDivisorStateCreateInfoEXTBuilder {
27871             inner: PipelineVertexInputDivisorStateCreateInfoEXT::default(),
27872             marker: ::std::marker::PhantomData,
27873         }
27874     }
27875 }
27876 #[repr(transparent)]
27877 pub struct PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
27878     inner: PipelineVertexInputDivisorStateCreateInfoEXT,
27879     marker: ::std::marker::PhantomData<&'a ()>,
27880 }
27881 unsafe impl ExtendsPipelineVertexInputStateCreateInfo
27882     for PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'_>
27883 {
27884 }
27885 unsafe impl ExtendsPipelineVertexInputStateCreateInfo
27886     for PipelineVertexInputDivisorStateCreateInfoEXT
27887 {
27888 }
27889 impl<'a> ::std::ops::Deref for PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
27890     type Target = PipelineVertexInputDivisorStateCreateInfoEXT;
deref(&self) -> &Self::Target27891     fn deref(&self) -> &Self::Target {
27892         &self.inner
27893     }
27894 }
27895 impl<'a> ::std::ops::DerefMut for PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27896     fn deref_mut(&mut self) -> &mut Self::Target {
27897         &mut self.inner
27898     }
27899 }
27900 impl<'a> PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
vertex_binding_divisors( mut self, vertex_binding_divisors: &'a [VertexInputBindingDivisorDescriptionEXT], ) -> Self27901     pub fn vertex_binding_divisors(
27902         mut self,
27903         vertex_binding_divisors: &'a [VertexInputBindingDivisorDescriptionEXT],
27904     ) -> Self {
27905         self.inner.vertex_binding_divisor_count = vertex_binding_divisors.len() as _;
27906         self.inner.p_vertex_binding_divisors = vertex_binding_divisors.as_ptr();
27907         self
27908     }
27909     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27910     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27911     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineVertexInputDivisorStateCreateInfoEXT27912     pub fn build(self) -> PipelineVertexInputDivisorStateCreateInfoEXT {
27913         self.inner
27914     }
27915 }
27916 #[repr(C)]
27917 #[derive(Copy, Clone, Debug)]
27918 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>"]
27919 pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
27920     pub s_type: StructureType,
27921     pub p_next: *mut c_void,
27922     pub max_vertex_attrib_divisor: u32,
27923 }
27924 impl ::std::default::Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
default() -> PhysicalDeviceVertexAttributeDivisorPropertiesEXT27925     fn default() -> PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
27926         PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
27927             s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
27928             p_next: ::std::ptr::null_mut(),
27929             max_vertex_attrib_divisor: u32::default(),
27930         }
27931     }
27932 }
27933 impl PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
builder<'a>() -> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a>27934     pub fn builder<'a>() -> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
27935         PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder {
27936             inner: PhysicalDeviceVertexAttributeDivisorPropertiesEXT::default(),
27937             marker: ::std::marker::PhantomData,
27938         }
27939     }
27940 }
27941 #[repr(transparent)]
27942 pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
27943     inner: PhysicalDeviceVertexAttributeDivisorPropertiesEXT,
27944     marker: ::std::marker::PhantomData<&'a ()>,
27945 }
27946 unsafe impl ExtendsPhysicalDeviceProperties2
27947     for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'_>
27948 {
27949 }
27950 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
27951 impl<'a> ::std::ops::Deref for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
27952     type Target = PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
deref(&self) -> &Self::Target27953     fn deref(&self) -> &Self::Target {
27954         &self.inner
27955     }
27956 }
27957 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27958     fn deref_mut(&mut self) -> &mut Self::Target {
27959         &mut self.inner
27960     }
27961 }
27962 impl<'a> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
max_vertex_attrib_divisor(mut self, max_vertex_attrib_divisor: u32) -> Self27963     pub fn max_vertex_attrib_divisor(mut self, max_vertex_attrib_divisor: u32) -> Self {
27964         self.inner.max_vertex_attrib_divisor = max_vertex_attrib_divisor;
27965         self
27966     }
27967     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27968     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27969     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVertexAttributeDivisorPropertiesEXT27970     pub fn build(self) -> PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
27971         self.inner
27972     }
27973 }
27974 #[repr(C)]
27975 #[derive(Copy, Clone, Debug)]
27976 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>"]
27977 pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
27978     pub s_type: StructureType,
27979     pub p_next: *mut c_void,
27980     pub pci_domain: u32,
27981     pub pci_bus: u32,
27982     pub pci_device: u32,
27983     pub pci_function: u32,
27984 }
27985 impl ::std::default::Default for PhysicalDevicePCIBusInfoPropertiesEXT {
default() -> PhysicalDevicePCIBusInfoPropertiesEXT27986     fn default() -> PhysicalDevicePCIBusInfoPropertiesEXT {
27987         PhysicalDevicePCIBusInfoPropertiesEXT {
27988             s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
27989             p_next: ::std::ptr::null_mut(),
27990             pci_domain: u32::default(),
27991             pci_bus: u32::default(),
27992             pci_device: u32::default(),
27993             pci_function: u32::default(),
27994         }
27995     }
27996 }
27997 impl PhysicalDevicePCIBusInfoPropertiesEXT {
builder<'a>() -> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a>27998     pub fn builder<'a>() -> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
27999         PhysicalDevicePCIBusInfoPropertiesEXTBuilder {
28000             inner: PhysicalDevicePCIBusInfoPropertiesEXT::default(),
28001             marker: ::std::marker::PhantomData,
28002         }
28003     }
28004 }
28005 #[repr(transparent)]
28006 pub struct PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28007     inner: PhysicalDevicePCIBusInfoPropertiesEXT,
28008     marker: ::std::marker::PhantomData<&'a ()>,
28009 }
28010 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'_> {}
28011 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePCIBusInfoPropertiesEXT {}
28012 impl<'a> ::std::ops::Deref for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28013     type Target = PhysicalDevicePCIBusInfoPropertiesEXT;
deref(&self) -> &Self::Target28014     fn deref(&self) -> &Self::Target {
28015         &self.inner
28016     }
28017 }
28018 impl<'a> ::std::ops::DerefMut for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28019     fn deref_mut(&mut self) -> &mut Self::Target {
28020         &mut self.inner
28021     }
28022 }
28023 impl<'a> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
pci_domain(mut self, pci_domain: u32) -> Self28024     pub fn pci_domain(mut self, pci_domain: u32) -> Self {
28025         self.inner.pci_domain = pci_domain;
28026         self
28027     }
pci_bus(mut self, pci_bus: u32) -> Self28028     pub fn pci_bus(mut self, pci_bus: u32) -> Self {
28029         self.inner.pci_bus = pci_bus;
28030         self
28031     }
pci_device(mut self, pci_device: u32) -> Self28032     pub fn pci_device(mut self, pci_device: u32) -> Self {
28033         self.inner.pci_device = pci_device;
28034         self
28035     }
pci_function(mut self, pci_function: u32) -> Self28036     pub fn pci_function(mut self, pci_function: u32) -> Self {
28037         self.inner.pci_function = pci_function;
28038         self
28039     }
28040     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28041     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28042     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePCIBusInfoPropertiesEXT28043     pub fn build(self) -> PhysicalDevicePCIBusInfoPropertiesEXT {
28044         self.inner
28045     }
28046 }
28047 #[repr(C)]
28048 #[derive(Copy, Clone, Debug)]
28049 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>"]
28050 pub struct ImportAndroidHardwareBufferInfoANDROID {
28051     pub s_type: StructureType,
28052     pub p_next: *const c_void,
28053     pub buffer: *mut AHardwareBuffer,
28054 }
28055 impl ::std::default::Default for ImportAndroidHardwareBufferInfoANDROID {
default() -> ImportAndroidHardwareBufferInfoANDROID28056     fn default() -> ImportAndroidHardwareBufferInfoANDROID {
28057         ImportAndroidHardwareBufferInfoANDROID {
28058             s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
28059             p_next: ::std::ptr::null(),
28060             buffer: ::std::ptr::null_mut(),
28061         }
28062     }
28063 }
28064 impl ImportAndroidHardwareBufferInfoANDROID {
builder<'a>() -> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a>28065     pub fn builder<'a>() -> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28066         ImportAndroidHardwareBufferInfoANDROIDBuilder {
28067             inner: ImportAndroidHardwareBufferInfoANDROID::default(),
28068             marker: ::std::marker::PhantomData,
28069         }
28070     }
28071 }
28072 #[repr(transparent)]
28073 pub struct ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28074     inner: ImportAndroidHardwareBufferInfoANDROID,
28075     marker: ::std::marker::PhantomData<&'a ()>,
28076 }
28077 unsafe impl ExtendsMemoryAllocateInfo for ImportAndroidHardwareBufferInfoANDROIDBuilder<'_> {}
28078 unsafe impl ExtendsMemoryAllocateInfo for ImportAndroidHardwareBufferInfoANDROID {}
28079 impl<'a> ::std::ops::Deref for ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28080     type Target = ImportAndroidHardwareBufferInfoANDROID;
deref(&self) -> &Self::Target28081     fn deref(&self) -> &Self::Target {
28082         &self.inner
28083     }
28084 }
28085 impl<'a> ::std::ops::DerefMut for ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28086     fn deref_mut(&mut self) -> &mut Self::Target {
28087         &mut self.inner
28088     }
28089 }
28090 impl<'a> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
buffer(mut self, buffer: *mut AHardwareBuffer) -> Self28091     pub fn buffer(mut self, buffer: *mut AHardwareBuffer) -> Self {
28092         self.inner.buffer = buffer;
28093         self
28094     }
28095     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28096     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28097     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportAndroidHardwareBufferInfoANDROID28098     pub fn build(self) -> ImportAndroidHardwareBufferInfoANDROID {
28099         self.inner
28100     }
28101 }
28102 #[repr(C)]
28103 #[derive(Copy, Clone, Debug)]
28104 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidHardwareBufferUsageANDROID.html>"]
28105 pub struct AndroidHardwareBufferUsageANDROID {
28106     pub s_type: StructureType,
28107     pub p_next: *mut c_void,
28108     pub android_hardware_buffer_usage: u64,
28109 }
28110 impl ::std::default::Default for AndroidHardwareBufferUsageANDROID {
default() -> AndroidHardwareBufferUsageANDROID28111     fn default() -> AndroidHardwareBufferUsageANDROID {
28112         AndroidHardwareBufferUsageANDROID {
28113             s_type: StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
28114             p_next: ::std::ptr::null_mut(),
28115             android_hardware_buffer_usage: u64::default(),
28116         }
28117     }
28118 }
28119 impl AndroidHardwareBufferUsageANDROID {
builder<'a>() -> AndroidHardwareBufferUsageANDROIDBuilder<'a>28120     pub fn builder<'a>() -> AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28121         AndroidHardwareBufferUsageANDROIDBuilder {
28122             inner: AndroidHardwareBufferUsageANDROID::default(),
28123             marker: ::std::marker::PhantomData,
28124         }
28125     }
28126 }
28127 #[repr(transparent)]
28128 pub struct AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28129     inner: AndroidHardwareBufferUsageANDROID,
28130     marker: ::std::marker::PhantomData<&'a ()>,
28131 }
28132 unsafe impl ExtendsImageFormatProperties2 for AndroidHardwareBufferUsageANDROIDBuilder<'_> {}
28133 unsafe impl ExtendsImageFormatProperties2 for AndroidHardwareBufferUsageANDROID {}
28134 impl<'a> ::std::ops::Deref for AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28135     type Target = AndroidHardwareBufferUsageANDROID;
deref(&self) -> &Self::Target28136     fn deref(&self) -> &Self::Target {
28137         &self.inner
28138     }
28139 }
28140 impl<'a> ::std::ops::DerefMut for AndroidHardwareBufferUsageANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28141     fn deref_mut(&mut self) -> &mut Self::Target {
28142         &mut self.inner
28143     }
28144 }
28145 impl<'a> AndroidHardwareBufferUsageANDROIDBuilder<'a> {
android_hardware_buffer_usage(mut self, android_hardware_buffer_usage: u64) -> Self28146     pub fn android_hardware_buffer_usage(mut self, android_hardware_buffer_usage: u64) -> Self {
28147         self.inner.android_hardware_buffer_usage = android_hardware_buffer_usage;
28148         self
28149     }
28150     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28151     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28152     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidHardwareBufferUsageANDROID28153     pub fn build(self) -> AndroidHardwareBufferUsageANDROID {
28154         self.inner
28155     }
28156 }
28157 #[repr(C)]
28158 #[derive(Copy, Clone, Debug)]
28159 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidHardwareBufferPropertiesANDROID.html>"]
28160 pub struct AndroidHardwareBufferPropertiesANDROID {
28161     pub s_type: StructureType,
28162     pub p_next: *mut c_void,
28163     pub allocation_size: DeviceSize,
28164     pub memory_type_bits: u32,
28165 }
28166 impl ::std::default::Default for AndroidHardwareBufferPropertiesANDROID {
default() -> AndroidHardwareBufferPropertiesANDROID28167     fn default() -> AndroidHardwareBufferPropertiesANDROID {
28168         AndroidHardwareBufferPropertiesANDROID {
28169             s_type: StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
28170             p_next: ::std::ptr::null_mut(),
28171             allocation_size: DeviceSize::default(),
28172             memory_type_bits: u32::default(),
28173         }
28174     }
28175 }
28176 impl AndroidHardwareBufferPropertiesANDROID {
builder<'a>() -> AndroidHardwareBufferPropertiesANDROIDBuilder<'a>28177     pub fn builder<'a>() -> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28178         AndroidHardwareBufferPropertiesANDROIDBuilder {
28179             inner: AndroidHardwareBufferPropertiesANDROID::default(),
28180             marker: ::std::marker::PhantomData,
28181         }
28182     }
28183 }
28184 #[repr(transparent)]
28185 pub struct AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28186     inner: AndroidHardwareBufferPropertiesANDROID,
28187     marker: ::std::marker::PhantomData<&'a ()>,
28188 }
28189 pub unsafe trait ExtendsAndroidHardwareBufferPropertiesANDROID {}
28190 impl<'a> ::std::ops::Deref for AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28191     type Target = AndroidHardwareBufferPropertiesANDROID;
deref(&self) -> &Self::Target28192     fn deref(&self) -> &Self::Target {
28193         &self.inner
28194     }
28195 }
28196 impl<'a> ::std::ops::DerefMut for AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28197     fn deref_mut(&mut self) -> &mut Self::Target {
28198         &mut self.inner
28199     }
28200 }
28201 impl<'a> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
allocation_size(mut self, allocation_size: DeviceSize) -> Self28202     pub fn allocation_size(mut self, allocation_size: DeviceSize) -> Self {
28203         self.inner.allocation_size = allocation_size;
28204         self
28205     }
memory_type_bits(mut self, memory_type_bits: u32) -> Self28206     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
28207         self.inner.memory_type_bits = memory_type_bits;
28208         self
28209     }
28210     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
28211     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
28212     #[doc = r" valid extension structs can be pushed into the chain."]
28213     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
28214     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAndroidHardwareBufferPropertiesANDROID>( mut self, next: &'a mut T, ) -> Self28215     pub fn push_next<T: ExtendsAndroidHardwareBufferPropertiesANDROID>(
28216         mut self,
28217         next: &'a mut T,
28218     ) -> Self {
28219         unsafe {
28220             let next_ptr = next as *mut T as *mut BaseOutStructure;
28221             let last_next = ptr_chain_iter(next).last().unwrap();
28222             (*last_next).p_next = self.inner.p_next as _;
28223             self.inner.p_next = next_ptr as _;
28224         }
28225         self
28226     }
28227     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28228     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28229     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidHardwareBufferPropertiesANDROID28230     pub fn build(self) -> AndroidHardwareBufferPropertiesANDROID {
28231         self.inner
28232     }
28233 }
28234 #[repr(C)]
28235 #[derive(Copy, Clone, Debug)]
28236 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>"]
28237 pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
28238     pub s_type: StructureType,
28239     pub p_next: *const c_void,
28240     pub memory: DeviceMemory,
28241 }
28242 impl ::std::default::Default for MemoryGetAndroidHardwareBufferInfoANDROID {
default() -> MemoryGetAndroidHardwareBufferInfoANDROID28243     fn default() -> MemoryGetAndroidHardwareBufferInfoANDROID {
28244         MemoryGetAndroidHardwareBufferInfoANDROID {
28245             s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
28246             p_next: ::std::ptr::null(),
28247             memory: DeviceMemory::default(),
28248         }
28249     }
28250 }
28251 impl MemoryGetAndroidHardwareBufferInfoANDROID {
builder<'a>() -> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a>28252     pub fn builder<'a>() -> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28253         MemoryGetAndroidHardwareBufferInfoANDROIDBuilder {
28254             inner: MemoryGetAndroidHardwareBufferInfoANDROID::default(),
28255             marker: ::std::marker::PhantomData,
28256         }
28257     }
28258 }
28259 #[repr(transparent)]
28260 pub struct MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28261     inner: MemoryGetAndroidHardwareBufferInfoANDROID,
28262     marker: ::std::marker::PhantomData<&'a ()>,
28263 }
28264 impl<'a> ::std::ops::Deref for MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28265     type Target = MemoryGetAndroidHardwareBufferInfoANDROID;
deref(&self) -> &Self::Target28266     fn deref(&self) -> &Self::Target {
28267         &self.inner
28268     }
28269 }
28270 impl<'a> ::std::ops::DerefMut for MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28271     fn deref_mut(&mut self) -> &mut Self::Target {
28272         &mut self.inner
28273     }
28274 }
28275 impl<'a> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self28276     pub fn memory(mut self, memory: DeviceMemory) -> Self {
28277         self.inner.memory = memory;
28278         self
28279     }
28280     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28281     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28282     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetAndroidHardwareBufferInfoANDROID28283     pub fn build(self) -> MemoryGetAndroidHardwareBufferInfoANDROID {
28284         self.inner
28285     }
28286 }
28287 #[repr(C)]
28288 #[derive(Copy, Clone, Debug)]
28289 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html>"]
28290 pub struct AndroidHardwareBufferFormatPropertiesANDROID {
28291     pub s_type: StructureType,
28292     pub p_next: *mut c_void,
28293     pub format: Format,
28294     pub external_format: u64,
28295     pub format_features: FormatFeatureFlags,
28296     pub sampler_ycbcr_conversion_components: ComponentMapping,
28297     pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
28298     pub suggested_ycbcr_range: SamplerYcbcrRange,
28299     pub suggested_x_chroma_offset: ChromaLocation,
28300     pub suggested_y_chroma_offset: ChromaLocation,
28301 }
28302 impl ::std::default::Default for AndroidHardwareBufferFormatPropertiesANDROID {
default() -> AndroidHardwareBufferFormatPropertiesANDROID28303     fn default() -> AndroidHardwareBufferFormatPropertiesANDROID {
28304         AndroidHardwareBufferFormatPropertiesANDROID {
28305             s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
28306             p_next: ::std::ptr::null_mut(),
28307             format: Format::default(),
28308             external_format: u64::default(),
28309             format_features: FormatFeatureFlags::default(),
28310             sampler_ycbcr_conversion_components: ComponentMapping::default(),
28311             suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
28312             suggested_ycbcr_range: SamplerYcbcrRange::default(),
28313             suggested_x_chroma_offset: ChromaLocation::default(),
28314             suggested_y_chroma_offset: ChromaLocation::default(),
28315         }
28316     }
28317 }
28318 impl AndroidHardwareBufferFormatPropertiesANDROID {
builder<'a>() -> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a>28319     pub fn builder<'a>() -> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28320         AndroidHardwareBufferFormatPropertiesANDROIDBuilder {
28321             inner: AndroidHardwareBufferFormatPropertiesANDROID::default(),
28322             marker: ::std::marker::PhantomData,
28323         }
28324     }
28325 }
28326 #[repr(transparent)]
28327 pub struct AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28328     inner: AndroidHardwareBufferFormatPropertiesANDROID,
28329     marker: ::std::marker::PhantomData<&'a ()>,
28330 }
28331 unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID
28332     for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'_>
28333 {
28334 }
28335 unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID
28336     for AndroidHardwareBufferFormatPropertiesANDROID
28337 {
28338 }
28339 impl<'a> ::std::ops::Deref for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28340     type Target = AndroidHardwareBufferFormatPropertiesANDROID;
deref(&self) -> &Self::Target28341     fn deref(&self) -> &Self::Target {
28342         &self.inner
28343     }
28344 }
28345 impl<'a> ::std::ops::DerefMut for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28346     fn deref_mut(&mut self) -> &mut Self::Target {
28347         &mut self.inner
28348     }
28349 }
28350 impl<'a> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
format(mut self, format: Format) -> Self28351     pub fn format(mut self, format: Format) -> Self {
28352         self.inner.format = format;
28353         self
28354     }
external_format(mut self, external_format: u64) -> Self28355     pub fn external_format(mut self, external_format: u64) -> Self {
28356         self.inner.external_format = external_format;
28357         self
28358     }
format_features(mut self, format_features: FormatFeatureFlags) -> Self28359     pub fn format_features(mut self, format_features: FormatFeatureFlags) -> Self {
28360         self.inner.format_features = format_features;
28361         self
28362     }
sampler_ycbcr_conversion_components( mut self, sampler_ycbcr_conversion_components: ComponentMapping, ) -> Self28363     pub fn sampler_ycbcr_conversion_components(
28364         mut self,
28365         sampler_ycbcr_conversion_components: ComponentMapping,
28366     ) -> Self {
28367         self.inner.sampler_ycbcr_conversion_components = sampler_ycbcr_conversion_components;
28368         self
28369     }
suggested_ycbcr_model( mut self, suggested_ycbcr_model: SamplerYcbcrModelConversion, ) -> Self28370     pub fn suggested_ycbcr_model(
28371         mut self,
28372         suggested_ycbcr_model: SamplerYcbcrModelConversion,
28373     ) -> Self {
28374         self.inner.suggested_ycbcr_model = suggested_ycbcr_model;
28375         self
28376     }
suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self28377     pub fn suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self {
28378         self.inner.suggested_ycbcr_range = suggested_ycbcr_range;
28379         self
28380     }
suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self28381     pub fn suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self {
28382         self.inner.suggested_x_chroma_offset = suggested_x_chroma_offset;
28383         self
28384     }
suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self28385     pub fn suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self {
28386         self.inner.suggested_y_chroma_offset = suggested_y_chroma_offset;
28387         self
28388     }
28389     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28390     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28391     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidHardwareBufferFormatPropertiesANDROID28392     pub fn build(self) -> AndroidHardwareBufferFormatPropertiesANDROID {
28393         self.inner
28394     }
28395 }
28396 #[repr(C)]
28397 #[derive(Copy, Clone, Debug)]
28398 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>"]
28399 pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
28400     pub s_type: StructureType,
28401     pub p_next: *const c_void,
28402     pub conditional_rendering_enable: Bool32,
28403 }
28404 impl ::std::default::Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
default() -> CommandBufferInheritanceConditionalRenderingInfoEXT28405     fn default() -> CommandBufferInheritanceConditionalRenderingInfoEXT {
28406         CommandBufferInheritanceConditionalRenderingInfoEXT {
28407             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
28408             p_next: ::std::ptr::null(),
28409             conditional_rendering_enable: Bool32::default(),
28410         }
28411     }
28412 }
28413 impl CommandBufferInheritanceConditionalRenderingInfoEXT {
builder<'a>() -> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a>28414     pub fn builder<'a>() -> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
28415         CommandBufferInheritanceConditionalRenderingInfoEXTBuilder {
28416             inner: CommandBufferInheritanceConditionalRenderingInfoEXT::default(),
28417             marker: ::std::marker::PhantomData,
28418         }
28419     }
28420 }
28421 #[repr(transparent)]
28422 pub struct CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
28423     inner: CommandBufferInheritanceConditionalRenderingInfoEXT,
28424     marker: ::std::marker::PhantomData<&'a ()>,
28425 }
28426 unsafe impl ExtendsCommandBufferInheritanceInfo
28427     for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'_>
28428 {
28429 }
28430 unsafe impl ExtendsCommandBufferInheritanceInfo
28431     for CommandBufferInheritanceConditionalRenderingInfoEXT
28432 {
28433 }
28434 impl<'a> ::std::ops::Deref for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
28435     type Target = CommandBufferInheritanceConditionalRenderingInfoEXT;
deref(&self) -> &Self::Target28436     fn deref(&self) -> &Self::Target {
28437         &self.inner
28438     }
28439 }
28440 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28441     fn deref_mut(&mut self) -> &mut Self::Target {
28442         &mut self.inner
28443     }
28444 }
28445 impl<'a> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
conditional_rendering_enable(mut self, conditional_rendering_enable: bool) -> Self28446     pub fn conditional_rendering_enable(mut self, conditional_rendering_enable: bool) -> Self {
28447         self.inner.conditional_rendering_enable = conditional_rendering_enable.into();
28448         self
28449     }
28450     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28451     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28452     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceConditionalRenderingInfoEXT28453     pub fn build(self) -> CommandBufferInheritanceConditionalRenderingInfoEXT {
28454         self.inner
28455     }
28456 }
28457 #[repr(C)]
28458 #[derive(Copy, Clone, Debug)]
28459 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalFormatANDROID.html>"]
28460 pub struct ExternalFormatANDROID {
28461     pub s_type: StructureType,
28462     pub p_next: *mut c_void,
28463     pub external_format: u64,
28464 }
28465 impl ::std::default::Default for ExternalFormatANDROID {
default() -> ExternalFormatANDROID28466     fn default() -> ExternalFormatANDROID {
28467         ExternalFormatANDROID {
28468             s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
28469             p_next: ::std::ptr::null_mut(),
28470             external_format: u64::default(),
28471         }
28472     }
28473 }
28474 impl ExternalFormatANDROID {
builder<'a>() -> ExternalFormatANDROIDBuilder<'a>28475     pub fn builder<'a>() -> ExternalFormatANDROIDBuilder<'a> {
28476         ExternalFormatANDROIDBuilder {
28477             inner: ExternalFormatANDROID::default(),
28478             marker: ::std::marker::PhantomData,
28479         }
28480     }
28481 }
28482 #[repr(transparent)]
28483 pub struct ExternalFormatANDROIDBuilder<'a> {
28484     inner: ExternalFormatANDROID,
28485     marker: ::std::marker::PhantomData<&'a ()>,
28486 }
28487 unsafe impl ExtendsImageCreateInfo for ExternalFormatANDROIDBuilder<'_> {}
28488 unsafe impl ExtendsImageCreateInfo for ExternalFormatANDROID {}
28489 unsafe impl ExtendsSamplerYcbcrConversionCreateInfo for ExternalFormatANDROIDBuilder<'_> {}
28490 unsafe impl ExtendsSamplerYcbcrConversionCreateInfo for ExternalFormatANDROID {}
28491 impl<'a> ::std::ops::Deref for ExternalFormatANDROIDBuilder<'a> {
28492     type Target = ExternalFormatANDROID;
deref(&self) -> &Self::Target28493     fn deref(&self) -> &Self::Target {
28494         &self.inner
28495     }
28496 }
28497 impl<'a> ::std::ops::DerefMut for ExternalFormatANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28498     fn deref_mut(&mut self) -> &mut Self::Target {
28499         &mut self.inner
28500     }
28501 }
28502 impl<'a> ExternalFormatANDROIDBuilder<'a> {
external_format(mut self, external_format: u64) -> Self28503     pub fn external_format(mut self, external_format: u64) -> Self {
28504         self.inner.external_format = external_format;
28505         self
28506     }
28507     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28508     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28509     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalFormatANDROID28510     pub fn build(self) -> ExternalFormatANDROID {
28511         self.inner
28512     }
28513 }
28514 #[repr(C)]
28515 #[derive(Copy, Clone, Debug)]
28516 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice8BitStorageFeatures.html>"]
28517 pub struct PhysicalDevice8BitStorageFeatures {
28518     pub s_type: StructureType,
28519     pub p_next: *mut c_void,
28520     pub storage_buffer8_bit_access: Bool32,
28521     pub uniform_and_storage_buffer8_bit_access: Bool32,
28522     pub storage_push_constant8: Bool32,
28523 }
28524 impl ::std::default::Default for PhysicalDevice8BitStorageFeatures {
default() -> PhysicalDevice8BitStorageFeatures28525     fn default() -> PhysicalDevice8BitStorageFeatures {
28526         PhysicalDevice8BitStorageFeatures {
28527             s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
28528             p_next: ::std::ptr::null_mut(),
28529             storage_buffer8_bit_access: Bool32::default(),
28530             uniform_and_storage_buffer8_bit_access: Bool32::default(),
28531             storage_push_constant8: Bool32::default(),
28532         }
28533     }
28534 }
28535 impl PhysicalDevice8BitStorageFeatures {
builder<'a>() -> PhysicalDevice8BitStorageFeaturesBuilder<'a>28536     pub fn builder<'a>() -> PhysicalDevice8BitStorageFeaturesBuilder<'a> {
28537         PhysicalDevice8BitStorageFeaturesBuilder {
28538             inner: PhysicalDevice8BitStorageFeatures::default(),
28539             marker: ::std::marker::PhantomData,
28540         }
28541     }
28542 }
28543 #[repr(transparent)]
28544 pub struct PhysicalDevice8BitStorageFeaturesBuilder<'a> {
28545     inner: PhysicalDevice8BitStorageFeatures,
28546     marker: ::std::marker::PhantomData<&'a ()>,
28547 }
28548 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice8BitStorageFeaturesBuilder<'_> {}
28549 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice8BitStorageFeatures {}
28550 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice8BitStorageFeaturesBuilder<'_> {}
28551 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice8BitStorageFeatures {}
28552 impl<'a> ::std::ops::Deref for PhysicalDevice8BitStorageFeaturesBuilder<'a> {
28553     type Target = PhysicalDevice8BitStorageFeatures;
deref(&self) -> &Self::Target28554     fn deref(&self) -> &Self::Target {
28555         &self.inner
28556     }
28557 }
28558 impl<'a> ::std::ops::DerefMut for PhysicalDevice8BitStorageFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28559     fn deref_mut(&mut self) -> &mut Self::Target {
28560         &mut self.inner
28561     }
28562 }
28563 impl<'a> PhysicalDevice8BitStorageFeaturesBuilder<'a> {
storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self28564     pub fn storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self {
28565         self.inner.storage_buffer8_bit_access = storage_buffer8_bit_access.into();
28566         self
28567     }
uniform_and_storage_buffer8_bit_access( mut self, uniform_and_storage_buffer8_bit_access: bool, ) -> Self28568     pub fn uniform_and_storage_buffer8_bit_access(
28569         mut self,
28570         uniform_and_storage_buffer8_bit_access: bool,
28571     ) -> Self {
28572         self.inner.uniform_and_storage_buffer8_bit_access =
28573             uniform_and_storage_buffer8_bit_access.into();
28574         self
28575     }
storage_push_constant8(mut self, storage_push_constant8: bool) -> Self28576     pub fn storage_push_constant8(mut self, storage_push_constant8: bool) -> Self {
28577         self.inner.storage_push_constant8 = storage_push_constant8.into();
28578         self
28579     }
28580     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28581     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28582     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevice8BitStorageFeatures28583     pub fn build(self) -> PhysicalDevice8BitStorageFeatures {
28584         self.inner
28585     }
28586 }
28587 #[repr(C)]
28588 #[derive(Copy, Clone, Debug)]
28589 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>"]
28590 pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
28591     pub s_type: StructureType,
28592     pub p_next: *mut c_void,
28593     pub conditional_rendering: Bool32,
28594     pub inherited_conditional_rendering: Bool32,
28595 }
28596 impl ::std::default::Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
default() -> PhysicalDeviceConditionalRenderingFeaturesEXT28597     fn default() -> PhysicalDeviceConditionalRenderingFeaturesEXT {
28598         PhysicalDeviceConditionalRenderingFeaturesEXT {
28599             s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
28600             p_next: ::std::ptr::null_mut(),
28601             conditional_rendering: Bool32::default(),
28602             inherited_conditional_rendering: Bool32::default(),
28603         }
28604     }
28605 }
28606 impl PhysicalDeviceConditionalRenderingFeaturesEXT {
builder<'a>() -> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a>28607     pub fn builder<'a>() -> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
28608         PhysicalDeviceConditionalRenderingFeaturesEXTBuilder {
28609             inner: PhysicalDeviceConditionalRenderingFeaturesEXT::default(),
28610             marker: ::std::marker::PhantomData,
28611         }
28612     }
28613 }
28614 #[repr(transparent)]
28615 pub struct PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
28616     inner: PhysicalDeviceConditionalRenderingFeaturesEXT,
28617     marker: ::std::marker::PhantomData<&'a ()>,
28618 }
28619 unsafe impl ExtendsPhysicalDeviceFeatures2
28620     for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'_>
28621 {
28622 }
28623 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceConditionalRenderingFeaturesEXT {}
28624 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'_> {}
28625 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceConditionalRenderingFeaturesEXT {}
28626 impl<'a> ::std::ops::Deref for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
28627     type Target = PhysicalDeviceConditionalRenderingFeaturesEXT;
deref(&self) -> &Self::Target28628     fn deref(&self) -> &Self::Target {
28629         &self.inner
28630     }
28631 }
28632 impl<'a> ::std::ops::DerefMut for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28633     fn deref_mut(&mut self) -> &mut Self::Target {
28634         &mut self.inner
28635     }
28636 }
28637 impl<'a> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
conditional_rendering(mut self, conditional_rendering: bool) -> Self28638     pub fn conditional_rendering(mut self, conditional_rendering: bool) -> Self {
28639         self.inner.conditional_rendering = conditional_rendering.into();
28640         self
28641     }
inherited_conditional_rendering( mut self, inherited_conditional_rendering: bool, ) -> Self28642     pub fn inherited_conditional_rendering(
28643         mut self,
28644         inherited_conditional_rendering: bool,
28645     ) -> Self {
28646         self.inner.inherited_conditional_rendering = inherited_conditional_rendering.into();
28647         self
28648     }
28649     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28650     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28651     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceConditionalRenderingFeaturesEXT28652     pub fn build(self) -> PhysicalDeviceConditionalRenderingFeaturesEXT {
28653         self.inner
28654     }
28655 }
28656 #[repr(C)]
28657 #[derive(Copy, Clone, Debug)]
28658 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>"]
28659 pub struct PhysicalDeviceVulkanMemoryModelFeatures {
28660     pub s_type: StructureType,
28661     pub p_next: *mut c_void,
28662     pub vulkan_memory_model: Bool32,
28663     pub vulkan_memory_model_device_scope: Bool32,
28664     pub vulkan_memory_model_availability_visibility_chains: Bool32,
28665 }
28666 impl ::std::default::Default for PhysicalDeviceVulkanMemoryModelFeatures {
default() -> PhysicalDeviceVulkanMemoryModelFeatures28667     fn default() -> PhysicalDeviceVulkanMemoryModelFeatures {
28668         PhysicalDeviceVulkanMemoryModelFeatures {
28669             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
28670             p_next: ::std::ptr::null_mut(),
28671             vulkan_memory_model: Bool32::default(),
28672             vulkan_memory_model_device_scope: Bool32::default(),
28673             vulkan_memory_model_availability_visibility_chains: Bool32::default(),
28674         }
28675     }
28676 }
28677 impl PhysicalDeviceVulkanMemoryModelFeatures {
builder<'a>() -> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a>28678     pub fn builder<'a>() -> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
28679         PhysicalDeviceVulkanMemoryModelFeaturesBuilder {
28680             inner: PhysicalDeviceVulkanMemoryModelFeatures::default(),
28681             marker: ::std::marker::PhantomData,
28682         }
28683     }
28684 }
28685 #[repr(transparent)]
28686 pub struct PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
28687     inner: PhysicalDeviceVulkanMemoryModelFeatures,
28688     marker: ::std::marker::PhantomData<&'a ()>,
28689 }
28690 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'_> {}
28691 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkanMemoryModelFeatures {}
28692 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'_> {}
28693 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkanMemoryModelFeatures {}
28694 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
28695     type Target = PhysicalDeviceVulkanMemoryModelFeatures;
deref(&self) -> &Self::Target28696     fn deref(&self) -> &Self::Target {
28697         &self.inner
28698     }
28699 }
28700 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28701     fn deref_mut(&mut self) -> &mut Self::Target {
28702         &mut self.inner
28703     }
28704 }
28705 impl<'a> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self28706     pub fn vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self {
28707         self.inner.vulkan_memory_model = vulkan_memory_model.into();
28708         self
28709     }
vulkan_memory_model_device_scope( mut self, vulkan_memory_model_device_scope: bool, ) -> Self28710     pub fn vulkan_memory_model_device_scope(
28711         mut self,
28712         vulkan_memory_model_device_scope: bool,
28713     ) -> Self {
28714         self.inner.vulkan_memory_model_device_scope = vulkan_memory_model_device_scope.into();
28715         self
28716     }
vulkan_memory_model_availability_visibility_chains( mut self, vulkan_memory_model_availability_visibility_chains: bool, ) -> Self28717     pub fn vulkan_memory_model_availability_visibility_chains(
28718         mut self,
28719         vulkan_memory_model_availability_visibility_chains: bool,
28720     ) -> Self {
28721         self.inner
28722             .vulkan_memory_model_availability_visibility_chains =
28723             vulkan_memory_model_availability_visibility_chains.into();
28724         self
28725     }
28726     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28727     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28728     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkanMemoryModelFeatures28729     pub fn build(self) -> PhysicalDeviceVulkanMemoryModelFeatures {
28730         self.inner
28731     }
28732 }
28733 #[repr(C)]
28734 #[derive(Copy, Clone, Debug)]
28735 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>"]
28736 pub struct PhysicalDeviceShaderAtomicInt64Features {
28737     pub s_type: StructureType,
28738     pub p_next: *mut c_void,
28739     pub shader_buffer_int64_atomics: Bool32,
28740     pub shader_shared_int64_atomics: Bool32,
28741 }
28742 impl ::std::default::Default for PhysicalDeviceShaderAtomicInt64Features {
default() -> PhysicalDeviceShaderAtomicInt64Features28743     fn default() -> PhysicalDeviceShaderAtomicInt64Features {
28744         PhysicalDeviceShaderAtomicInt64Features {
28745             s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
28746             p_next: ::std::ptr::null_mut(),
28747             shader_buffer_int64_atomics: Bool32::default(),
28748             shader_shared_int64_atomics: Bool32::default(),
28749         }
28750     }
28751 }
28752 impl PhysicalDeviceShaderAtomicInt64Features {
builder<'a>() -> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a>28753     pub fn builder<'a>() -> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
28754         PhysicalDeviceShaderAtomicInt64FeaturesBuilder {
28755             inner: PhysicalDeviceShaderAtomicInt64Features::default(),
28756             marker: ::std::marker::PhantomData,
28757         }
28758     }
28759 }
28760 #[repr(transparent)]
28761 pub struct PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
28762     inner: PhysicalDeviceShaderAtomicInt64Features,
28763     marker: ::std::marker::PhantomData<&'a ()>,
28764 }
28765 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'_> {}
28766 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicInt64Features {}
28767 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'_> {}
28768 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicInt64Features {}
28769 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
28770     type Target = PhysicalDeviceShaderAtomicInt64Features;
deref(&self) -> &Self::Target28771     fn deref(&self) -> &Self::Target {
28772         &self.inner
28773     }
28774 }
28775 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28776     fn deref_mut(&mut self) -> &mut Self::Target {
28777         &mut self.inner
28778     }
28779 }
28780 impl<'a> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self28781     pub fn shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self {
28782         self.inner.shader_buffer_int64_atomics = shader_buffer_int64_atomics.into();
28783         self
28784     }
shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self28785     pub fn shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self {
28786         self.inner.shader_shared_int64_atomics = shader_shared_int64_atomics.into();
28787         self
28788     }
28789     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28790     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28791     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderAtomicInt64Features28792     pub fn build(self) -> PhysicalDeviceShaderAtomicInt64Features {
28793         self.inner
28794     }
28795 }
28796 #[repr(C)]
28797 #[derive(Copy, Clone, Debug)]
28798 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>"]
28799 pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
28800     pub s_type: StructureType,
28801     pub p_next: *mut c_void,
28802     pub shader_buffer_float32_atomics: Bool32,
28803     pub shader_buffer_float32_atomic_add: Bool32,
28804     pub shader_buffer_float64_atomics: Bool32,
28805     pub shader_buffer_float64_atomic_add: Bool32,
28806     pub shader_shared_float32_atomics: Bool32,
28807     pub shader_shared_float32_atomic_add: Bool32,
28808     pub shader_shared_float64_atomics: Bool32,
28809     pub shader_shared_float64_atomic_add: Bool32,
28810     pub shader_image_float32_atomics: Bool32,
28811     pub shader_image_float32_atomic_add: Bool32,
28812     pub sparse_image_float32_atomics: Bool32,
28813     pub sparse_image_float32_atomic_add: Bool32,
28814 }
28815 impl ::std::default::Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
default() -> PhysicalDeviceShaderAtomicFloatFeaturesEXT28816     fn default() -> PhysicalDeviceShaderAtomicFloatFeaturesEXT {
28817         PhysicalDeviceShaderAtomicFloatFeaturesEXT {
28818             s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
28819             p_next: ::std::ptr::null_mut(),
28820             shader_buffer_float32_atomics: Bool32::default(),
28821             shader_buffer_float32_atomic_add: Bool32::default(),
28822             shader_buffer_float64_atomics: Bool32::default(),
28823             shader_buffer_float64_atomic_add: Bool32::default(),
28824             shader_shared_float32_atomics: Bool32::default(),
28825             shader_shared_float32_atomic_add: Bool32::default(),
28826             shader_shared_float64_atomics: Bool32::default(),
28827             shader_shared_float64_atomic_add: Bool32::default(),
28828             shader_image_float32_atomics: Bool32::default(),
28829             shader_image_float32_atomic_add: Bool32::default(),
28830             sparse_image_float32_atomics: Bool32::default(),
28831             sparse_image_float32_atomic_add: Bool32::default(),
28832         }
28833     }
28834 }
28835 impl PhysicalDeviceShaderAtomicFloatFeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a>28836     pub fn builder<'a>() -> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
28837         PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder {
28838             inner: PhysicalDeviceShaderAtomicFloatFeaturesEXT::default(),
28839             marker: ::std::marker::PhantomData,
28840         }
28841     }
28842 }
28843 #[repr(transparent)]
28844 pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
28845     inner: PhysicalDeviceShaderAtomicFloatFeaturesEXT,
28846     marker: ::std::marker::PhantomData<&'a ()>,
28847 }
28848 unsafe impl ExtendsPhysicalDeviceFeatures2
28849     for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'_>
28850 {
28851 }
28852 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
28853 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'_> {}
28854 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
28855 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
28856     type Target = PhysicalDeviceShaderAtomicFloatFeaturesEXT;
deref(&self) -> &Self::Target28857     fn deref(&self) -> &Self::Target {
28858         &self.inner
28859     }
28860 }
28861 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28862     fn deref_mut(&mut self) -> &mut Self::Target {
28863         &mut self.inner
28864     }
28865 }
28866 impl<'a> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
shader_buffer_float32_atomics(mut self, shader_buffer_float32_atomics: bool) -> Self28867     pub fn shader_buffer_float32_atomics(mut self, shader_buffer_float32_atomics: bool) -> Self {
28868         self.inner.shader_buffer_float32_atomics = shader_buffer_float32_atomics.into();
28869         self
28870     }
shader_buffer_float32_atomic_add( mut self, shader_buffer_float32_atomic_add: bool, ) -> Self28871     pub fn shader_buffer_float32_atomic_add(
28872         mut self,
28873         shader_buffer_float32_atomic_add: bool,
28874     ) -> Self {
28875         self.inner.shader_buffer_float32_atomic_add = shader_buffer_float32_atomic_add.into();
28876         self
28877     }
shader_buffer_float64_atomics(mut self, shader_buffer_float64_atomics: bool) -> Self28878     pub fn shader_buffer_float64_atomics(mut self, shader_buffer_float64_atomics: bool) -> Self {
28879         self.inner.shader_buffer_float64_atomics = shader_buffer_float64_atomics.into();
28880         self
28881     }
shader_buffer_float64_atomic_add( mut self, shader_buffer_float64_atomic_add: bool, ) -> Self28882     pub fn shader_buffer_float64_atomic_add(
28883         mut self,
28884         shader_buffer_float64_atomic_add: bool,
28885     ) -> Self {
28886         self.inner.shader_buffer_float64_atomic_add = shader_buffer_float64_atomic_add.into();
28887         self
28888     }
shader_shared_float32_atomics(mut self, shader_shared_float32_atomics: bool) -> Self28889     pub fn shader_shared_float32_atomics(mut self, shader_shared_float32_atomics: bool) -> Self {
28890         self.inner.shader_shared_float32_atomics = shader_shared_float32_atomics.into();
28891         self
28892     }
shader_shared_float32_atomic_add( mut self, shader_shared_float32_atomic_add: bool, ) -> Self28893     pub fn shader_shared_float32_atomic_add(
28894         mut self,
28895         shader_shared_float32_atomic_add: bool,
28896     ) -> Self {
28897         self.inner.shader_shared_float32_atomic_add = shader_shared_float32_atomic_add.into();
28898         self
28899     }
shader_shared_float64_atomics(mut self, shader_shared_float64_atomics: bool) -> Self28900     pub fn shader_shared_float64_atomics(mut self, shader_shared_float64_atomics: bool) -> Self {
28901         self.inner.shader_shared_float64_atomics = shader_shared_float64_atomics.into();
28902         self
28903     }
shader_shared_float64_atomic_add( mut self, shader_shared_float64_atomic_add: bool, ) -> Self28904     pub fn shader_shared_float64_atomic_add(
28905         mut self,
28906         shader_shared_float64_atomic_add: bool,
28907     ) -> Self {
28908         self.inner.shader_shared_float64_atomic_add = shader_shared_float64_atomic_add.into();
28909         self
28910     }
shader_image_float32_atomics(mut self, shader_image_float32_atomics: bool) -> Self28911     pub fn shader_image_float32_atomics(mut self, shader_image_float32_atomics: bool) -> Self {
28912         self.inner.shader_image_float32_atomics = shader_image_float32_atomics.into();
28913         self
28914     }
shader_image_float32_atomic_add( mut self, shader_image_float32_atomic_add: bool, ) -> Self28915     pub fn shader_image_float32_atomic_add(
28916         mut self,
28917         shader_image_float32_atomic_add: bool,
28918     ) -> Self {
28919         self.inner.shader_image_float32_atomic_add = shader_image_float32_atomic_add.into();
28920         self
28921     }
sparse_image_float32_atomics(mut self, sparse_image_float32_atomics: bool) -> Self28922     pub fn sparse_image_float32_atomics(mut self, sparse_image_float32_atomics: bool) -> Self {
28923         self.inner.sparse_image_float32_atomics = sparse_image_float32_atomics.into();
28924         self
28925     }
sparse_image_float32_atomic_add( mut self, sparse_image_float32_atomic_add: bool, ) -> Self28926     pub fn sparse_image_float32_atomic_add(
28927         mut self,
28928         sparse_image_float32_atomic_add: bool,
28929     ) -> Self {
28930         self.inner.sparse_image_float32_atomic_add = sparse_image_float32_atomic_add.into();
28931         self
28932     }
28933     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28934     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28935     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderAtomicFloatFeaturesEXT28936     pub fn build(self) -> PhysicalDeviceShaderAtomicFloatFeaturesEXT {
28937         self.inner
28938     }
28939 }
28940 #[repr(C)]
28941 #[derive(Copy, Clone, Debug)]
28942 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>"]
28943 pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
28944     pub s_type: StructureType,
28945     pub p_next: *mut c_void,
28946     pub shader_buffer_float16_atomics: Bool32,
28947     pub shader_buffer_float16_atomic_add: Bool32,
28948     pub shader_buffer_float16_atomic_min_max: Bool32,
28949     pub shader_buffer_float32_atomic_min_max: Bool32,
28950     pub shader_buffer_float64_atomic_min_max: Bool32,
28951     pub shader_shared_float16_atomics: Bool32,
28952     pub shader_shared_float16_atomic_add: Bool32,
28953     pub shader_shared_float16_atomic_min_max: Bool32,
28954     pub shader_shared_float32_atomic_min_max: Bool32,
28955     pub shader_shared_float64_atomic_min_max: Bool32,
28956     pub shader_image_float32_atomic_min_max: Bool32,
28957     pub sparse_image_float32_atomic_min_max: Bool32,
28958 }
28959 impl ::std::default::Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
default() -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT28960     fn default() -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
28961         PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
28962             s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
28963             p_next: ::std::ptr::null_mut(),
28964             shader_buffer_float16_atomics: Bool32::default(),
28965             shader_buffer_float16_atomic_add: Bool32::default(),
28966             shader_buffer_float16_atomic_min_max: Bool32::default(),
28967             shader_buffer_float32_atomic_min_max: Bool32::default(),
28968             shader_buffer_float64_atomic_min_max: Bool32::default(),
28969             shader_shared_float16_atomics: Bool32::default(),
28970             shader_shared_float16_atomic_add: Bool32::default(),
28971             shader_shared_float16_atomic_min_max: Bool32::default(),
28972             shader_shared_float32_atomic_min_max: Bool32::default(),
28973             shader_shared_float64_atomic_min_max: Bool32::default(),
28974             shader_image_float32_atomic_min_max: Bool32::default(),
28975             sparse_image_float32_atomic_min_max: Bool32::default(),
28976         }
28977     }
28978 }
28979 impl PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a>28980     pub fn builder<'a>() -> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
28981         PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder {
28982             inner: PhysicalDeviceShaderAtomicFloat2FeaturesEXT::default(),
28983             marker: ::std::marker::PhantomData,
28984         }
28985     }
28986 }
28987 #[repr(transparent)]
28988 pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
28989     inner: PhysicalDeviceShaderAtomicFloat2FeaturesEXT,
28990     marker: ::std::marker::PhantomData<&'a ()>,
28991 }
28992 unsafe impl ExtendsPhysicalDeviceFeatures2
28993     for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'_>
28994 {
28995 }
28996 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
28997 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'_> {}
28998 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
28999 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29000     type Target = PhysicalDeviceShaderAtomicFloat2FeaturesEXT;
deref(&self) -> &Self::Target29001     fn deref(&self) -> &Self::Target {
29002         &self.inner
29003     }
29004 }
29005 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29006     fn deref_mut(&mut self) -> &mut Self::Target {
29007         &mut self.inner
29008     }
29009 }
29010 impl<'a> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
shader_buffer_float16_atomics(mut self, shader_buffer_float16_atomics: bool) -> Self29011     pub fn shader_buffer_float16_atomics(mut self, shader_buffer_float16_atomics: bool) -> Self {
29012         self.inner.shader_buffer_float16_atomics = shader_buffer_float16_atomics.into();
29013         self
29014     }
shader_buffer_float16_atomic_add( mut self, shader_buffer_float16_atomic_add: bool, ) -> Self29015     pub fn shader_buffer_float16_atomic_add(
29016         mut self,
29017         shader_buffer_float16_atomic_add: bool,
29018     ) -> Self {
29019         self.inner.shader_buffer_float16_atomic_add = shader_buffer_float16_atomic_add.into();
29020         self
29021     }
shader_buffer_float16_atomic_min_max( mut self, shader_buffer_float16_atomic_min_max: bool, ) -> Self29022     pub fn shader_buffer_float16_atomic_min_max(
29023         mut self,
29024         shader_buffer_float16_atomic_min_max: bool,
29025     ) -> Self {
29026         self.inner.shader_buffer_float16_atomic_min_max =
29027             shader_buffer_float16_atomic_min_max.into();
29028         self
29029     }
shader_buffer_float32_atomic_min_max( mut self, shader_buffer_float32_atomic_min_max: bool, ) -> Self29030     pub fn shader_buffer_float32_atomic_min_max(
29031         mut self,
29032         shader_buffer_float32_atomic_min_max: bool,
29033     ) -> Self {
29034         self.inner.shader_buffer_float32_atomic_min_max =
29035             shader_buffer_float32_atomic_min_max.into();
29036         self
29037     }
shader_buffer_float64_atomic_min_max( mut self, shader_buffer_float64_atomic_min_max: bool, ) -> Self29038     pub fn shader_buffer_float64_atomic_min_max(
29039         mut self,
29040         shader_buffer_float64_atomic_min_max: bool,
29041     ) -> Self {
29042         self.inner.shader_buffer_float64_atomic_min_max =
29043             shader_buffer_float64_atomic_min_max.into();
29044         self
29045     }
shader_shared_float16_atomics(mut self, shader_shared_float16_atomics: bool) -> Self29046     pub fn shader_shared_float16_atomics(mut self, shader_shared_float16_atomics: bool) -> Self {
29047         self.inner.shader_shared_float16_atomics = shader_shared_float16_atomics.into();
29048         self
29049     }
shader_shared_float16_atomic_add( mut self, shader_shared_float16_atomic_add: bool, ) -> Self29050     pub fn shader_shared_float16_atomic_add(
29051         mut self,
29052         shader_shared_float16_atomic_add: bool,
29053     ) -> Self {
29054         self.inner.shader_shared_float16_atomic_add = shader_shared_float16_atomic_add.into();
29055         self
29056     }
shader_shared_float16_atomic_min_max( mut self, shader_shared_float16_atomic_min_max: bool, ) -> Self29057     pub fn shader_shared_float16_atomic_min_max(
29058         mut self,
29059         shader_shared_float16_atomic_min_max: bool,
29060     ) -> Self {
29061         self.inner.shader_shared_float16_atomic_min_max =
29062             shader_shared_float16_atomic_min_max.into();
29063         self
29064     }
shader_shared_float32_atomic_min_max( mut self, shader_shared_float32_atomic_min_max: bool, ) -> Self29065     pub fn shader_shared_float32_atomic_min_max(
29066         mut self,
29067         shader_shared_float32_atomic_min_max: bool,
29068     ) -> Self {
29069         self.inner.shader_shared_float32_atomic_min_max =
29070             shader_shared_float32_atomic_min_max.into();
29071         self
29072     }
shader_shared_float64_atomic_min_max( mut self, shader_shared_float64_atomic_min_max: bool, ) -> Self29073     pub fn shader_shared_float64_atomic_min_max(
29074         mut self,
29075         shader_shared_float64_atomic_min_max: bool,
29076     ) -> Self {
29077         self.inner.shader_shared_float64_atomic_min_max =
29078             shader_shared_float64_atomic_min_max.into();
29079         self
29080     }
shader_image_float32_atomic_min_max( mut self, shader_image_float32_atomic_min_max: bool, ) -> Self29081     pub fn shader_image_float32_atomic_min_max(
29082         mut self,
29083         shader_image_float32_atomic_min_max: bool,
29084     ) -> Self {
29085         self.inner.shader_image_float32_atomic_min_max = shader_image_float32_atomic_min_max.into();
29086         self
29087     }
sparse_image_float32_atomic_min_max( mut self, sparse_image_float32_atomic_min_max: bool, ) -> Self29088     pub fn sparse_image_float32_atomic_min_max(
29089         mut self,
29090         sparse_image_float32_atomic_min_max: bool,
29091     ) -> Self {
29092         self.inner.sparse_image_float32_atomic_min_max = sparse_image_float32_atomic_min_max.into();
29093         self
29094     }
29095     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29096     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29097     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT29098     pub fn build(self) -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
29099         self.inner
29100     }
29101 }
29102 #[repr(C)]
29103 #[derive(Copy, Clone, Debug)]
29104 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>"]
29105 pub struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
29106     pub s_type: StructureType,
29107     pub p_next: *mut c_void,
29108     pub vertex_attribute_instance_rate_divisor: Bool32,
29109     pub vertex_attribute_instance_rate_zero_divisor: Bool32,
29110 }
29111 impl ::std::default::Default for PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
default() -> PhysicalDeviceVertexAttributeDivisorFeaturesEXT29112     fn default() -> PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
29113         PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
29114             s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,
29115             p_next: ::std::ptr::null_mut(),
29116             vertex_attribute_instance_rate_divisor: Bool32::default(),
29117             vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
29118         }
29119     }
29120 }
29121 impl PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
builder<'a>() -> PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a>29122     pub fn builder<'a>() -> PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
29123         PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder {
29124             inner: PhysicalDeviceVertexAttributeDivisorFeaturesEXT::default(),
29125             marker: ::std::marker::PhantomData,
29126         }
29127     }
29128 }
29129 #[repr(transparent)]
29130 pub struct PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
29131     inner: PhysicalDeviceVertexAttributeDivisorFeaturesEXT,
29132     marker: ::std::marker::PhantomData<&'a ()>,
29133 }
29134 unsafe impl ExtendsPhysicalDeviceFeatures2
29135     for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'_>
29136 {
29137 }
29138 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVertexAttributeDivisorFeaturesEXT {}
29139 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'_> {}
29140 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexAttributeDivisorFeaturesEXT {}
29141 impl<'a> ::std::ops::Deref for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
29142     type Target = PhysicalDeviceVertexAttributeDivisorFeaturesEXT;
deref(&self) -> &Self::Target29143     fn deref(&self) -> &Self::Target {
29144         &self.inner
29145     }
29146 }
29147 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29148     fn deref_mut(&mut self) -> &mut Self::Target {
29149         &mut self.inner
29150     }
29151 }
29152 impl<'a> PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
vertex_attribute_instance_rate_divisor( mut self, vertex_attribute_instance_rate_divisor: bool, ) -> Self29153     pub fn vertex_attribute_instance_rate_divisor(
29154         mut self,
29155         vertex_attribute_instance_rate_divisor: bool,
29156     ) -> Self {
29157         self.inner.vertex_attribute_instance_rate_divisor =
29158             vertex_attribute_instance_rate_divisor.into();
29159         self
29160     }
vertex_attribute_instance_rate_zero_divisor( mut self, vertex_attribute_instance_rate_zero_divisor: bool, ) -> Self29161     pub fn vertex_attribute_instance_rate_zero_divisor(
29162         mut self,
29163         vertex_attribute_instance_rate_zero_divisor: bool,
29164     ) -> Self {
29165         self.inner.vertex_attribute_instance_rate_zero_divisor =
29166             vertex_attribute_instance_rate_zero_divisor.into();
29167         self
29168     }
29169     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29170     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29171     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVertexAttributeDivisorFeaturesEXT29172     pub fn build(self) -> PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
29173         self.inner
29174     }
29175 }
29176 #[repr(C)]
29177 #[derive(Copy, Clone, Debug)]
29178 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyCheckpointPropertiesNV.html>"]
29179 pub struct QueueFamilyCheckpointPropertiesNV {
29180     pub s_type: StructureType,
29181     pub p_next: *mut c_void,
29182     pub checkpoint_execution_stage_mask: PipelineStageFlags,
29183 }
29184 impl ::std::default::Default for QueueFamilyCheckpointPropertiesNV {
default() -> QueueFamilyCheckpointPropertiesNV29185     fn default() -> QueueFamilyCheckpointPropertiesNV {
29186         QueueFamilyCheckpointPropertiesNV {
29187             s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
29188             p_next: ::std::ptr::null_mut(),
29189             checkpoint_execution_stage_mask: PipelineStageFlags::default(),
29190         }
29191     }
29192 }
29193 impl QueueFamilyCheckpointPropertiesNV {
builder<'a>() -> QueueFamilyCheckpointPropertiesNVBuilder<'a>29194     pub fn builder<'a>() -> QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29195         QueueFamilyCheckpointPropertiesNVBuilder {
29196             inner: QueueFamilyCheckpointPropertiesNV::default(),
29197             marker: ::std::marker::PhantomData,
29198         }
29199     }
29200 }
29201 #[repr(transparent)]
29202 pub struct QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29203     inner: QueueFamilyCheckpointPropertiesNV,
29204     marker: ::std::marker::PhantomData<&'a ()>,
29205 }
29206 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointPropertiesNVBuilder<'_> {}
29207 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointPropertiesNV {}
29208 impl<'a> ::std::ops::Deref for QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29209     type Target = QueueFamilyCheckpointPropertiesNV;
deref(&self) -> &Self::Target29210     fn deref(&self) -> &Self::Target {
29211         &self.inner
29212     }
29213 }
29214 impl<'a> ::std::ops::DerefMut for QueueFamilyCheckpointPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29215     fn deref_mut(&mut self) -> &mut Self::Target {
29216         &mut self.inner
29217     }
29218 }
29219 impl<'a> QueueFamilyCheckpointPropertiesNVBuilder<'a> {
checkpoint_execution_stage_mask( mut self, checkpoint_execution_stage_mask: PipelineStageFlags, ) -> Self29220     pub fn checkpoint_execution_stage_mask(
29221         mut self,
29222         checkpoint_execution_stage_mask: PipelineStageFlags,
29223     ) -> Self {
29224         self.inner.checkpoint_execution_stage_mask = checkpoint_execution_stage_mask;
29225         self
29226     }
29227     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29228     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29229     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyCheckpointPropertiesNV29230     pub fn build(self) -> QueueFamilyCheckpointPropertiesNV {
29231         self.inner
29232     }
29233 }
29234 #[repr(C)]
29235 #[derive(Copy, Clone, Debug)]
29236 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCheckpointDataNV.html>"]
29237 pub struct CheckpointDataNV {
29238     pub s_type: StructureType,
29239     pub p_next: *mut c_void,
29240     pub stage: PipelineStageFlags,
29241     pub p_checkpoint_marker: *mut c_void,
29242 }
29243 impl ::std::default::Default for CheckpointDataNV {
default() -> CheckpointDataNV29244     fn default() -> CheckpointDataNV {
29245         CheckpointDataNV {
29246             s_type: StructureType::CHECKPOINT_DATA_NV,
29247             p_next: ::std::ptr::null_mut(),
29248             stage: PipelineStageFlags::default(),
29249             p_checkpoint_marker: ::std::ptr::null_mut(),
29250         }
29251     }
29252 }
29253 impl CheckpointDataNV {
builder<'a>() -> CheckpointDataNVBuilder<'a>29254     pub fn builder<'a>() -> CheckpointDataNVBuilder<'a> {
29255         CheckpointDataNVBuilder {
29256             inner: CheckpointDataNV::default(),
29257             marker: ::std::marker::PhantomData,
29258         }
29259     }
29260 }
29261 #[repr(transparent)]
29262 pub struct CheckpointDataNVBuilder<'a> {
29263     inner: CheckpointDataNV,
29264     marker: ::std::marker::PhantomData<&'a ()>,
29265 }
29266 impl<'a> ::std::ops::Deref for CheckpointDataNVBuilder<'a> {
29267     type Target = CheckpointDataNV;
deref(&self) -> &Self::Target29268     fn deref(&self) -> &Self::Target {
29269         &self.inner
29270     }
29271 }
29272 impl<'a> ::std::ops::DerefMut for CheckpointDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29273     fn deref_mut(&mut self) -> &mut Self::Target {
29274         &mut self.inner
29275     }
29276 }
29277 impl<'a> CheckpointDataNVBuilder<'a> {
stage(mut self, stage: PipelineStageFlags) -> Self29278     pub fn stage(mut self, stage: PipelineStageFlags) -> Self {
29279         self.inner.stage = stage;
29280         self
29281     }
checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self29282     pub fn checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self {
29283         self.inner.p_checkpoint_marker = checkpoint_marker;
29284         self
29285     }
29286     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29287     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29288     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CheckpointDataNV29289     pub fn build(self) -> CheckpointDataNV {
29290         self.inner
29291     }
29292 }
29293 #[repr(C)]
29294 #[derive(Copy, Clone, Debug)]
29295 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>"]
29296 pub struct PhysicalDeviceDepthStencilResolveProperties {
29297     pub s_type: StructureType,
29298     pub p_next: *mut c_void,
29299     pub supported_depth_resolve_modes: ResolveModeFlags,
29300     pub supported_stencil_resolve_modes: ResolveModeFlags,
29301     pub independent_resolve_none: Bool32,
29302     pub independent_resolve: Bool32,
29303 }
29304 impl ::std::default::Default for PhysicalDeviceDepthStencilResolveProperties {
default() -> PhysicalDeviceDepthStencilResolveProperties29305     fn default() -> PhysicalDeviceDepthStencilResolveProperties {
29306         PhysicalDeviceDepthStencilResolveProperties {
29307             s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
29308             p_next: ::std::ptr::null_mut(),
29309             supported_depth_resolve_modes: ResolveModeFlags::default(),
29310             supported_stencil_resolve_modes: ResolveModeFlags::default(),
29311             independent_resolve_none: Bool32::default(),
29312             independent_resolve: Bool32::default(),
29313         }
29314     }
29315 }
29316 impl PhysicalDeviceDepthStencilResolveProperties {
builder<'a>() -> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a>29317     pub fn builder<'a>() -> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29318         PhysicalDeviceDepthStencilResolvePropertiesBuilder {
29319             inner: PhysicalDeviceDepthStencilResolveProperties::default(),
29320             marker: ::std::marker::PhantomData,
29321         }
29322     }
29323 }
29324 #[repr(transparent)]
29325 pub struct PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29326     inner: PhysicalDeviceDepthStencilResolveProperties,
29327     marker: ::std::marker::PhantomData<&'a ()>,
29328 }
29329 unsafe impl ExtendsPhysicalDeviceProperties2
29330     for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'_>
29331 {
29332 }
29333 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDepthStencilResolveProperties {}
29334 impl<'a> ::std::ops::Deref for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29335     type Target = PhysicalDeviceDepthStencilResolveProperties;
deref(&self) -> &Self::Target29336     fn deref(&self) -> &Self::Target {
29337         &self.inner
29338     }
29339 }
29340 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29341     fn deref_mut(&mut self) -> &mut Self::Target {
29342         &mut self.inner
29343     }
29344 }
29345 impl<'a> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
supported_depth_resolve_modes( mut self, supported_depth_resolve_modes: ResolveModeFlags, ) -> Self29346     pub fn supported_depth_resolve_modes(
29347         mut self,
29348         supported_depth_resolve_modes: ResolveModeFlags,
29349     ) -> Self {
29350         self.inner.supported_depth_resolve_modes = supported_depth_resolve_modes;
29351         self
29352     }
supported_stencil_resolve_modes( mut self, supported_stencil_resolve_modes: ResolveModeFlags, ) -> Self29353     pub fn supported_stencil_resolve_modes(
29354         mut self,
29355         supported_stencil_resolve_modes: ResolveModeFlags,
29356     ) -> Self {
29357         self.inner.supported_stencil_resolve_modes = supported_stencil_resolve_modes;
29358         self
29359     }
independent_resolve_none(mut self, independent_resolve_none: bool) -> Self29360     pub fn independent_resolve_none(mut self, independent_resolve_none: bool) -> Self {
29361         self.inner.independent_resolve_none = independent_resolve_none.into();
29362         self
29363     }
independent_resolve(mut self, independent_resolve: bool) -> Self29364     pub fn independent_resolve(mut self, independent_resolve: bool) -> Self {
29365         self.inner.independent_resolve = independent_resolve.into();
29366         self
29367     }
29368     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29369     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29370     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDepthStencilResolveProperties29371     pub fn build(self) -> PhysicalDeviceDepthStencilResolveProperties {
29372         self.inner
29373     }
29374 }
29375 #[repr(C)]
29376 #[derive(Copy, Clone, Debug)]
29377 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescriptionDepthStencilResolve.html>"]
29378 pub struct SubpassDescriptionDepthStencilResolve {
29379     pub s_type: StructureType,
29380     pub p_next: *const c_void,
29381     pub depth_resolve_mode: ResolveModeFlags,
29382     pub stencil_resolve_mode: ResolveModeFlags,
29383     pub p_depth_stencil_resolve_attachment: *const AttachmentReference2,
29384 }
29385 impl ::std::default::Default for SubpassDescriptionDepthStencilResolve {
default() -> SubpassDescriptionDepthStencilResolve29386     fn default() -> SubpassDescriptionDepthStencilResolve {
29387         SubpassDescriptionDepthStencilResolve {
29388             s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
29389             p_next: ::std::ptr::null(),
29390             depth_resolve_mode: ResolveModeFlags::default(),
29391             stencil_resolve_mode: ResolveModeFlags::default(),
29392             p_depth_stencil_resolve_attachment: ::std::ptr::null(),
29393         }
29394     }
29395 }
29396 impl SubpassDescriptionDepthStencilResolve {
builder<'a>() -> SubpassDescriptionDepthStencilResolveBuilder<'a>29397     pub fn builder<'a>() -> SubpassDescriptionDepthStencilResolveBuilder<'a> {
29398         SubpassDescriptionDepthStencilResolveBuilder {
29399             inner: SubpassDescriptionDepthStencilResolve::default(),
29400             marker: ::std::marker::PhantomData,
29401         }
29402     }
29403 }
29404 #[repr(transparent)]
29405 pub struct SubpassDescriptionDepthStencilResolveBuilder<'a> {
29406     inner: SubpassDescriptionDepthStencilResolve,
29407     marker: ::std::marker::PhantomData<&'a ()>,
29408 }
29409 unsafe impl ExtendsSubpassDescription2 for SubpassDescriptionDepthStencilResolveBuilder<'_> {}
29410 unsafe impl ExtendsSubpassDescription2 for SubpassDescriptionDepthStencilResolve {}
29411 impl<'a> ::std::ops::Deref for SubpassDescriptionDepthStencilResolveBuilder<'a> {
29412     type Target = SubpassDescriptionDepthStencilResolve;
deref(&self) -> &Self::Target29413     fn deref(&self) -> &Self::Target {
29414         &self.inner
29415     }
29416 }
29417 impl<'a> ::std::ops::DerefMut for SubpassDescriptionDepthStencilResolveBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29418     fn deref_mut(&mut self) -> &mut Self::Target {
29419         &mut self.inner
29420     }
29421 }
29422 impl<'a> SubpassDescriptionDepthStencilResolveBuilder<'a> {
depth_resolve_mode(mut self, depth_resolve_mode: ResolveModeFlags) -> Self29423     pub fn depth_resolve_mode(mut self, depth_resolve_mode: ResolveModeFlags) -> Self {
29424         self.inner.depth_resolve_mode = depth_resolve_mode;
29425         self
29426     }
stencil_resolve_mode(mut self, stencil_resolve_mode: ResolveModeFlags) -> Self29427     pub fn stencil_resolve_mode(mut self, stencil_resolve_mode: ResolveModeFlags) -> Self {
29428         self.inner.stencil_resolve_mode = stencil_resolve_mode;
29429         self
29430     }
depth_stencil_resolve_attachment( mut self, depth_stencil_resolve_attachment: &'a AttachmentReference2, ) -> Self29431     pub fn depth_stencil_resolve_attachment(
29432         mut self,
29433         depth_stencil_resolve_attachment: &'a AttachmentReference2,
29434     ) -> Self {
29435         self.inner.p_depth_stencil_resolve_attachment = depth_stencil_resolve_attachment;
29436         self
29437     }
29438     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29439     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29440     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDescriptionDepthStencilResolve29441     pub fn build(self) -> SubpassDescriptionDepthStencilResolve {
29442         self.inner
29443     }
29444 }
29445 #[repr(C)]
29446 #[derive(Copy, Clone, Debug)]
29447 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewASTCDecodeModeEXT.html>"]
29448 pub struct ImageViewASTCDecodeModeEXT {
29449     pub s_type: StructureType,
29450     pub p_next: *const c_void,
29451     pub decode_mode: Format,
29452 }
29453 impl ::std::default::Default for ImageViewASTCDecodeModeEXT {
default() -> ImageViewASTCDecodeModeEXT29454     fn default() -> ImageViewASTCDecodeModeEXT {
29455         ImageViewASTCDecodeModeEXT {
29456             s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
29457             p_next: ::std::ptr::null(),
29458             decode_mode: Format::default(),
29459         }
29460     }
29461 }
29462 impl ImageViewASTCDecodeModeEXT {
builder<'a>() -> ImageViewASTCDecodeModeEXTBuilder<'a>29463     pub fn builder<'a>() -> ImageViewASTCDecodeModeEXTBuilder<'a> {
29464         ImageViewASTCDecodeModeEXTBuilder {
29465             inner: ImageViewASTCDecodeModeEXT::default(),
29466             marker: ::std::marker::PhantomData,
29467         }
29468     }
29469 }
29470 #[repr(transparent)]
29471 pub struct ImageViewASTCDecodeModeEXTBuilder<'a> {
29472     inner: ImageViewASTCDecodeModeEXT,
29473     marker: ::std::marker::PhantomData<&'a ()>,
29474 }
29475 unsafe impl ExtendsImageViewCreateInfo for ImageViewASTCDecodeModeEXTBuilder<'_> {}
29476 unsafe impl ExtendsImageViewCreateInfo for ImageViewASTCDecodeModeEXT {}
29477 impl<'a> ::std::ops::Deref for ImageViewASTCDecodeModeEXTBuilder<'a> {
29478     type Target = ImageViewASTCDecodeModeEXT;
deref(&self) -> &Self::Target29479     fn deref(&self) -> &Self::Target {
29480         &self.inner
29481     }
29482 }
29483 impl<'a> ::std::ops::DerefMut for ImageViewASTCDecodeModeEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29484     fn deref_mut(&mut self) -> &mut Self::Target {
29485         &mut self.inner
29486     }
29487 }
29488 impl<'a> ImageViewASTCDecodeModeEXTBuilder<'a> {
decode_mode(mut self, decode_mode: Format) -> Self29489     pub fn decode_mode(mut self, decode_mode: Format) -> Self {
29490         self.inner.decode_mode = decode_mode;
29491         self
29492     }
29493     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29494     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29495     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewASTCDecodeModeEXT29496     pub fn build(self) -> ImageViewASTCDecodeModeEXT {
29497         self.inner
29498     }
29499 }
29500 #[repr(C)]
29501 #[derive(Copy, Clone, Debug)]
29502 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>"]
29503 pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
29504     pub s_type: StructureType,
29505     pub p_next: *mut c_void,
29506     pub decode_mode_shared_exponent: Bool32,
29507 }
29508 impl ::std::default::Default for PhysicalDeviceASTCDecodeFeaturesEXT {
default() -> PhysicalDeviceASTCDecodeFeaturesEXT29509     fn default() -> PhysicalDeviceASTCDecodeFeaturesEXT {
29510         PhysicalDeviceASTCDecodeFeaturesEXT {
29511             s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
29512             p_next: ::std::ptr::null_mut(),
29513             decode_mode_shared_exponent: Bool32::default(),
29514         }
29515     }
29516 }
29517 impl PhysicalDeviceASTCDecodeFeaturesEXT {
builder<'a>() -> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a>29518     pub fn builder<'a>() -> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29519         PhysicalDeviceASTCDecodeFeaturesEXTBuilder {
29520             inner: PhysicalDeviceASTCDecodeFeaturesEXT::default(),
29521             marker: ::std::marker::PhantomData,
29522         }
29523     }
29524 }
29525 #[repr(transparent)]
29526 pub struct PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29527     inner: PhysicalDeviceASTCDecodeFeaturesEXT,
29528     marker: ::std::marker::PhantomData<&'a ()>,
29529 }
29530 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'_> {}
29531 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceASTCDecodeFeaturesEXT {}
29532 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'_> {}
29533 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceASTCDecodeFeaturesEXT {}
29534 impl<'a> ::std::ops::Deref for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
29535     type Target = PhysicalDeviceASTCDecodeFeaturesEXT;
deref(&self) -> &Self::Target29536     fn deref(&self) -> &Self::Target {
29537         &self.inner
29538     }
29539 }
29540 impl<'a> ::std::ops::DerefMut for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29541     fn deref_mut(&mut self) -> &mut Self::Target {
29542         &mut self.inner
29543     }
29544 }
29545 impl<'a> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
decode_mode_shared_exponent(mut self, decode_mode_shared_exponent: bool) -> Self29546     pub fn decode_mode_shared_exponent(mut self, decode_mode_shared_exponent: bool) -> Self {
29547         self.inner.decode_mode_shared_exponent = decode_mode_shared_exponent.into();
29548         self
29549     }
29550     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29551     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29552     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceASTCDecodeFeaturesEXT29553     pub fn build(self) -> PhysicalDeviceASTCDecodeFeaturesEXT {
29554         self.inner
29555     }
29556 }
29557 #[repr(C)]
29558 #[derive(Copy, Clone, Debug)]
29559 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>"]
29560 pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
29561     pub s_type: StructureType,
29562     pub p_next: *mut c_void,
29563     pub transform_feedback: Bool32,
29564     pub geometry_streams: Bool32,
29565 }
29566 impl ::std::default::Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
default() -> PhysicalDeviceTransformFeedbackFeaturesEXT29567     fn default() -> PhysicalDeviceTransformFeedbackFeaturesEXT {
29568         PhysicalDeviceTransformFeedbackFeaturesEXT {
29569             s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
29570             p_next: ::std::ptr::null_mut(),
29571             transform_feedback: Bool32::default(),
29572             geometry_streams: Bool32::default(),
29573         }
29574     }
29575 }
29576 impl PhysicalDeviceTransformFeedbackFeaturesEXT {
builder<'a>() -> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a>29577     pub fn builder<'a>() -> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29578         PhysicalDeviceTransformFeedbackFeaturesEXTBuilder {
29579             inner: PhysicalDeviceTransformFeedbackFeaturesEXT::default(),
29580             marker: ::std::marker::PhantomData,
29581         }
29582     }
29583 }
29584 #[repr(transparent)]
29585 pub struct PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29586     inner: PhysicalDeviceTransformFeedbackFeaturesEXT,
29587     marker: ::std::marker::PhantomData<&'a ()>,
29588 }
29589 unsafe impl ExtendsPhysicalDeviceFeatures2
29590     for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'_>
29591 {
29592 }
29593 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTransformFeedbackFeaturesEXT {}
29594 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'_> {}
29595 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTransformFeedbackFeaturesEXT {}
29596 impl<'a> ::std::ops::Deref for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
29597     type Target = PhysicalDeviceTransformFeedbackFeaturesEXT;
deref(&self) -> &Self::Target29598     fn deref(&self) -> &Self::Target {
29599         &self.inner
29600     }
29601 }
29602 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29603     fn deref_mut(&mut self) -> &mut Self::Target {
29604         &mut self.inner
29605     }
29606 }
29607 impl<'a> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
transform_feedback(mut self, transform_feedback: bool) -> Self29608     pub fn transform_feedback(mut self, transform_feedback: bool) -> Self {
29609         self.inner.transform_feedback = transform_feedback.into();
29610         self
29611     }
geometry_streams(mut self, geometry_streams: bool) -> Self29612     pub fn geometry_streams(mut self, geometry_streams: bool) -> Self {
29613         self.inner.geometry_streams = geometry_streams.into();
29614         self
29615     }
29616     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29617     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29618     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTransformFeedbackFeaturesEXT29619     pub fn build(self) -> PhysicalDeviceTransformFeedbackFeaturesEXT {
29620         self.inner
29621     }
29622 }
29623 #[repr(C)]
29624 #[derive(Copy, Clone, Debug)]
29625 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>"]
29626 pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
29627     pub s_type: StructureType,
29628     pub p_next: *mut c_void,
29629     pub max_transform_feedback_streams: u32,
29630     pub max_transform_feedback_buffers: u32,
29631     pub max_transform_feedback_buffer_size: DeviceSize,
29632     pub max_transform_feedback_stream_data_size: u32,
29633     pub max_transform_feedback_buffer_data_size: u32,
29634     pub max_transform_feedback_buffer_data_stride: u32,
29635     pub transform_feedback_queries: Bool32,
29636     pub transform_feedback_streams_lines_triangles: Bool32,
29637     pub transform_feedback_rasterization_stream_select: Bool32,
29638     pub transform_feedback_draw: Bool32,
29639 }
29640 impl ::std::default::Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
default() -> PhysicalDeviceTransformFeedbackPropertiesEXT29641     fn default() -> PhysicalDeviceTransformFeedbackPropertiesEXT {
29642         PhysicalDeviceTransformFeedbackPropertiesEXT {
29643             s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
29644             p_next: ::std::ptr::null_mut(),
29645             max_transform_feedback_streams: u32::default(),
29646             max_transform_feedback_buffers: u32::default(),
29647             max_transform_feedback_buffer_size: DeviceSize::default(),
29648             max_transform_feedback_stream_data_size: u32::default(),
29649             max_transform_feedback_buffer_data_size: u32::default(),
29650             max_transform_feedback_buffer_data_stride: u32::default(),
29651             transform_feedback_queries: Bool32::default(),
29652             transform_feedback_streams_lines_triangles: Bool32::default(),
29653             transform_feedback_rasterization_stream_select: Bool32::default(),
29654             transform_feedback_draw: Bool32::default(),
29655         }
29656     }
29657 }
29658 impl PhysicalDeviceTransformFeedbackPropertiesEXT {
builder<'a>() -> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a>29659     pub fn builder<'a>() -> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29660         PhysicalDeviceTransformFeedbackPropertiesEXTBuilder {
29661             inner: PhysicalDeviceTransformFeedbackPropertiesEXT::default(),
29662             marker: ::std::marker::PhantomData,
29663         }
29664     }
29665 }
29666 #[repr(transparent)]
29667 pub struct PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29668     inner: PhysicalDeviceTransformFeedbackPropertiesEXT,
29669     marker: ::std::marker::PhantomData<&'a ()>,
29670 }
29671 unsafe impl ExtendsPhysicalDeviceProperties2
29672     for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'_>
29673 {
29674 }
29675 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTransformFeedbackPropertiesEXT {}
29676 impl<'a> ::std::ops::Deref for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
29677     type Target = PhysicalDeviceTransformFeedbackPropertiesEXT;
deref(&self) -> &Self::Target29678     fn deref(&self) -> &Self::Target {
29679         &self.inner
29680     }
29681 }
29682 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29683     fn deref_mut(&mut self) -> &mut Self::Target {
29684         &mut self.inner
29685     }
29686 }
29687 impl<'a> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
max_transform_feedback_streams(mut self, max_transform_feedback_streams: u32) -> Self29688     pub fn max_transform_feedback_streams(mut self, max_transform_feedback_streams: u32) -> Self {
29689         self.inner.max_transform_feedback_streams = max_transform_feedback_streams;
29690         self
29691     }
max_transform_feedback_buffers(mut self, max_transform_feedback_buffers: u32) -> Self29692     pub fn max_transform_feedback_buffers(mut self, max_transform_feedback_buffers: u32) -> Self {
29693         self.inner.max_transform_feedback_buffers = max_transform_feedback_buffers;
29694         self
29695     }
max_transform_feedback_buffer_size( mut self, max_transform_feedback_buffer_size: DeviceSize, ) -> Self29696     pub fn max_transform_feedback_buffer_size(
29697         mut self,
29698         max_transform_feedback_buffer_size: DeviceSize,
29699     ) -> Self {
29700         self.inner.max_transform_feedback_buffer_size = max_transform_feedback_buffer_size;
29701         self
29702     }
max_transform_feedback_stream_data_size( mut self, max_transform_feedback_stream_data_size: u32, ) -> Self29703     pub fn max_transform_feedback_stream_data_size(
29704         mut self,
29705         max_transform_feedback_stream_data_size: u32,
29706     ) -> Self {
29707         self.inner.max_transform_feedback_stream_data_size =
29708             max_transform_feedback_stream_data_size;
29709         self
29710     }
max_transform_feedback_buffer_data_size( mut self, max_transform_feedback_buffer_data_size: u32, ) -> Self29711     pub fn max_transform_feedback_buffer_data_size(
29712         mut self,
29713         max_transform_feedback_buffer_data_size: u32,
29714     ) -> Self {
29715         self.inner.max_transform_feedback_buffer_data_size =
29716             max_transform_feedback_buffer_data_size;
29717         self
29718     }
max_transform_feedback_buffer_data_stride( mut self, max_transform_feedback_buffer_data_stride: u32, ) -> Self29719     pub fn max_transform_feedback_buffer_data_stride(
29720         mut self,
29721         max_transform_feedback_buffer_data_stride: u32,
29722     ) -> Self {
29723         self.inner.max_transform_feedback_buffer_data_stride =
29724             max_transform_feedback_buffer_data_stride;
29725         self
29726     }
transform_feedback_queries(mut self, transform_feedback_queries: bool) -> Self29727     pub fn transform_feedback_queries(mut self, transform_feedback_queries: bool) -> Self {
29728         self.inner.transform_feedback_queries = transform_feedback_queries.into();
29729         self
29730     }
transform_feedback_streams_lines_triangles( mut self, transform_feedback_streams_lines_triangles: bool, ) -> Self29731     pub fn transform_feedback_streams_lines_triangles(
29732         mut self,
29733         transform_feedback_streams_lines_triangles: bool,
29734     ) -> Self {
29735         self.inner.transform_feedback_streams_lines_triangles =
29736             transform_feedback_streams_lines_triangles.into();
29737         self
29738     }
transform_feedback_rasterization_stream_select( mut self, transform_feedback_rasterization_stream_select: bool, ) -> Self29739     pub fn transform_feedback_rasterization_stream_select(
29740         mut self,
29741         transform_feedback_rasterization_stream_select: bool,
29742     ) -> Self {
29743         self.inner.transform_feedback_rasterization_stream_select =
29744             transform_feedback_rasterization_stream_select.into();
29745         self
29746     }
transform_feedback_draw(mut self, transform_feedback_draw: bool) -> Self29747     pub fn transform_feedback_draw(mut self, transform_feedback_draw: bool) -> Self {
29748         self.inner.transform_feedback_draw = transform_feedback_draw.into();
29749         self
29750     }
29751     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29752     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29753     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTransformFeedbackPropertiesEXT29754     pub fn build(self) -> PhysicalDeviceTransformFeedbackPropertiesEXT {
29755         self.inner
29756     }
29757 }
29758 #[repr(C)]
29759 #[derive(Copy, Clone, Debug)]
29760 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>"]
29761 pub struct PipelineRasterizationStateStreamCreateInfoEXT {
29762     pub s_type: StructureType,
29763     pub p_next: *const c_void,
29764     pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
29765     pub rasterization_stream: u32,
29766 }
29767 impl ::std::default::Default for PipelineRasterizationStateStreamCreateInfoEXT {
default() -> PipelineRasterizationStateStreamCreateInfoEXT29768     fn default() -> PipelineRasterizationStateStreamCreateInfoEXT {
29769         PipelineRasterizationStateStreamCreateInfoEXT {
29770             s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
29771             p_next: ::std::ptr::null(),
29772             flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
29773             rasterization_stream: u32::default(),
29774         }
29775     }
29776 }
29777 impl PipelineRasterizationStateStreamCreateInfoEXT {
builder<'a>() -> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a>29778     pub fn builder<'a>() -> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29779         PipelineRasterizationStateStreamCreateInfoEXTBuilder {
29780             inner: PipelineRasterizationStateStreamCreateInfoEXT::default(),
29781             marker: ::std::marker::PhantomData,
29782         }
29783     }
29784 }
29785 #[repr(transparent)]
29786 pub struct PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29787     inner: PipelineRasterizationStateStreamCreateInfoEXT,
29788     marker: ::std::marker::PhantomData<&'a ()>,
29789 }
29790 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
29791     for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'_>
29792 {
29793 }
29794 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
29795     for PipelineRasterizationStateStreamCreateInfoEXT
29796 {
29797 }
29798 impl<'a> ::std::ops::Deref for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
29799     type Target = PipelineRasterizationStateStreamCreateInfoEXT;
deref(&self) -> &Self::Target29800     fn deref(&self) -> &Self::Target {
29801         &self.inner
29802     }
29803 }
29804 impl<'a> ::std::ops::DerefMut for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29805     fn deref_mut(&mut self) -> &mut Self::Target {
29806         &mut self.inner
29807     }
29808 }
29809 impl<'a> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineRasterizationStateStreamCreateFlagsEXT) -> Self29810     pub fn flags(mut self, flags: PipelineRasterizationStateStreamCreateFlagsEXT) -> Self {
29811         self.inner.flags = flags;
29812         self
29813     }
rasterization_stream(mut self, rasterization_stream: u32) -> Self29814     pub fn rasterization_stream(mut self, rasterization_stream: u32) -> Self {
29815         self.inner.rasterization_stream = rasterization_stream;
29816         self
29817     }
29818     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29819     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29820     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationStateStreamCreateInfoEXT29821     pub fn build(self) -> PipelineRasterizationStateStreamCreateInfoEXT {
29822         self.inner
29823     }
29824 }
29825 #[repr(C)]
29826 #[derive(Copy, Clone, Debug)]
29827 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>"]
29828 pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
29829     pub s_type: StructureType,
29830     pub p_next: *mut c_void,
29831     pub representative_fragment_test: Bool32,
29832 }
29833 impl ::std::default::Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
default() -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV29834     fn default() -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
29835         PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
29836             s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
29837             p_next: ::std::ptr::null_mut(),
29838             representative_fragment_test: Bool32::default(),
29839         }
29840     }
29841 }
29842 impl PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
builder<'a>() -> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a>29843     pub fn builder<'a>() -> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
29844         PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder {
29845             inner: PhysicalDeviceRepresentativeFragmentTestFeaturesNV::default(),
29846             marker: ::std::marker::PhantomData,
29847         }
29848     }
29849 }
29850 #[repr(transparent)]
29851 pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
29852     inner: PhysicalDeviceRepresentativeFragmentTestFeaturesNV,
29853     marker: ::std::marker::PhantomData<&'a ()>,
29854 }
29855 unsafe impl ExtendsPhysicalDeviceFeatures2
29856     for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'_>
29857 {
29858 }
29859 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
29860 unsafe impl ExtendsDeviceCreateInfo
29861     for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'_>
29862 {
29863 }
29864 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
29865 impl<'a> ::std::ops::Deref for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
29866     type Target = PhysicalDeviceRepresentativeFragmentTestFeaturesNV;
deref(&self) -> &Self::Target29867     fn deref(&self) -> &Self::Target {
29868         &self.inner
29869     }
29870 }
29871 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29872     fn deref_mut(&mut self) -> &mut Self::Target {
29873         &mut self.inner
29874     }
29875 }
29876 impl<'a> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
representative_fragment_test(mut self, representative_fragment_test: bool) -> Self29877     pub fn representative_fragment_test(mut self, representative_fragment_test: bool) -> Self {
29878         self.inner.representative_fragment_test = representative_fragment_test.into();
29879         self
29880     }
29881     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29882     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29883     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV29884     pub fn build(self) -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
29885         self.inner
29886     }
29887 }
29888 #[repr(C)]
29889 #[derive(Copy, Clone, Debug)]
29890 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>"]
29891 pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
29892     pub s_type: StructureType,
29893     pub p_next: *const c_void,
29894     pub representative_fragment_test_enable: Bool32,
29895 }
29896 impl ::std::default::Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
default() -> PipelineRepresentativeFragmentTestStateCreateInfoNV29897     fn default() -> PipelineRepresentativeFragmentTestStateCreateInfoNV {
29898         PipelineRepresentativeFragmentTestStateCreateInfoNV {
29899             s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
29900             p_next: ::std::ptr::null(),
29901             representative_fragment_test_enable: Bool32::default(),
29902         }
29903     }
29904 }
29905 impl PipelineRepresentativeFragmentTestStateCreateInfoNV {
builder<'a>() -> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a>29906     pub fn builder<'a>() -> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
29907         PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder {
29908             inner: PipelineRepresentativeFragmentTestStateCreateInfoNV::default(),
29909             marker: ::std::marker::PhantomData,
29910         }
29911     }
29912 }
29913 #[repr(transparent)]
29914 pub struct PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
29915     inner: PipelineRepresentativeFragmentTestStateCreateInfoNV,
29916     marker: ::std::marker::PhantomData<&'a ()>,
29917 }
29918 unsafe impl ExtendsGraphicsPipelineCreateInfo
29919     for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'_>
29920 {
29921 }
29922 unsafe impl ExtendsGraphicsPipelineCreateInfo
29923     for PipelineRepresentativeFragmentTestStateCreateInfoNV
29924 {
29925 }
29926 impl<'a> ::std::ops::Deref for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
29927     type Target = PipelineRepresentativeFragmentTestStateCreateInfoNV;
deref(&self) -> &Self::Target29928     fn deref(&self) -> &Self::Target {
29929         &self.inner
29930     }
29931 }
29932 impl<'a> ::std::ops::DerefMut for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29933     fn deref_mut(&mut self) -> &mut Self::Target {
29934         &mut self.inner
29935     }
29936 }
29937 impl<'a> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
representative_fragment_test_enable( mut self, representative_fragment_test_enable: bool, ) -> Self29938     pub fn representative_fragment_test_enable(
29939         mut self,
29940         representative_fragment_test_enable: bool,
29941     ) -> Self {
29942         self.inner.representative_fragment_test_enable = representative_fragment_test_enable.into();
29943         self
29944     }
29945     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29946     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29947     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRepresentativeFragmentTestStateCreateInfoNV29948     pub fn build(self) -> PipelineRepresentativeFragmentTestStateCreateInfoNV {
29949         self.inner
29950     }
29951 }
29952 #[repr(C)]
29953 #[derive(Copy, Clone, Debug)]
29954 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>"]
29955 pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
29956     pub s_type: StructureType,
29957     pub p_next: *mut c_void,
29958     pub exclusive_scissor: Bool32,
29959 }
29960 impl ::std::default::Default for PhysicalDeviceExclusiveScissorFeaturesNV {
default() -> PhysicalDeviceExclusiveScissorFeaturesNV29961     fn default() -> PhysicalDeviceExclusiveScissorFeaturesNV {
29962         PhysicalDeviceExclusiveScissorFeaturesNV {
29963             s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
29964             p_next: ::std::ptr::null_mut(),
29965             exclusive_scissor: Bool32::default(),
29966         }
29967     }
29968 }
29969 impl PhysicalDeviceExclusiveScissorFeaturesNV {
builder<'a>() -> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a>29970     pub fn builder<'a>() -> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
29971         PhysicalDeviceExclusiveScissorFeaturesNVBuilder {
29972             inner: PhysicalDeviceExclusiveScissorFeaturesNV::default(),
29973             marker: ::std::marker::PhantomData,
29974         }
29975     }
29976 }
29977 #[repr(transparent)]
29978 pub struct PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
29979     inner: PhysicalDeviceExclusiveScissorFeaturesNV,
29980     marker: ::std::marker::PhantomData<&'a ()>,
29981 }
29982 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'_> {}
29983 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExclusiveScissorFeaturesNV {}
29984 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'_> {}
29985 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExclusiveScissorFeaturesNV {}
29986 impl<'a> ::std::ops::Deref for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
29987     type Target = PhysicalDeviceExclusiveScissorFeaturesNV;
deref(&self) -> &Self::Target29988     fn deref(&self) -> &Self::Target {
29989         &self.inner
29990     }
29991 }
29992 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29993     fn deref_mut(&mut self) -> &mut Self::Target {
29994         &mut self.inner
29995     }
29996 }
29997 impl<'a> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
exclusive_scissor(mut self, exclusive_scissor: bool) -> Self29998     pub fn exclusive_scissor(mut self, exclusive_scissor: bool) -> Self {
29999         self.inner.exclusive_scissor = exclusive_scissor.into();
30000         self
30001     }
30002     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30003     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30004     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExclusiveScissorFeaturesNV30005     pub fn build(self) -> PhysicalDeviceExclusiveScissorFeaturesNV {
30006         self.inner
30007     }
30008 }
30009 #[repr(C)]
30010 #[derive(Copy, Clone, Debug)]
30011 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>"]
30012 pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
30013     pub s_type: StructureType,
30014     pub p_next: *const c_void,
30015     pub exclusive_scissor_count: u32,
30016     pub p_exclusive_scissors: *const Rect2D,
30017 }
30018 impl ::std::default::Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
default() -> PipelineViewportExclusiveScissorStateCreateInfoNV30019     fn default() -> PipelineViewportExclusiveScissorStateCreateInfoNV {
30020         PipelineViewportExclusiveScissorStateCreateInfoNV {
30021             s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
30022             p_next: ::std::ptr::null(),
30023             exclusive_scissor_count: u32::default(),
30024             p_exclusive_scissors: ::std::ptr::null(),
30025         }
30026     }
30027 }
30028 impl PipelineViewportExclusiveScissorStateCreateInfoNV {
builder<'a>() -> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a>30029     pub fn builder<'a>() -> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30030         PipelineViewportExclusiveScissorStateCreateInfoNVBuilder {
30031             inner: PipelineViewportExclusiveScissorStateCreateInfoNV::default(),
30032             marker: ::std::marker::PhantomData,
30033         }
30034     }
30035 }
30036 #[repr(transparent)]
30037 pub struct PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30038     inner: PipelineViewportExclusiveScissorStateCreateInfoNV,
30039     marker: ::std::marker::PhantomData<&'a ()>,
30040 }
30041 unsafe impl ExtendsPipelineViewportStateCreateInfo
30042     for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'_>
30043 {
30044 }
30045 unsafe impl ExtendsPipelineViewportStateCreateInfo
30046     for PipelineViewportExclusiveScissorStateCreateInfoNV
30047 {
30048 }
30049 impl<'a> ::std::ops::Deref for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30050     type Target = PipelineViewportExclusiveScissorStateCreateInfoNV;
deref(&self) -> &Self::Target30051     fn deref(&self) -> &Self::Target {
30052         &self.inner
30053     }
30054 }
30055 impl<'a> ::std::ops::DerefMut for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30056     fn deref_mut(&mut self) -> &mut Self::Target {
30057         &mut self.inner
30058     }
30059 }
30060 impl<'a> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
exclusive_scissors(mut self, exclusive_scissors: &'a [Rect2D]) -> Self30061     pub fn exclusive_scissors(mut self, exclusive_scissors: &'a [Rect2D]) -> Self {
30062         self.inner.exclusive_scissor_count = exclusive_scissors.len() as _;
30063         self.inner.p_exclusive_scissors = exclusive_scissors.as_ptr();
30064         self
30065     }
30066     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30067     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30068     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportExclusiveScissorStateCreateInfoNV30069     pub fn build(self) -> PipelineViewportExclusiveScissorStateCreateInfoNV {
30070         self.inner
30071     }
30072 }
30073 #[repr(C)]
30074 #[derive(Copy, Clone, Debug)]
30075 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>"]
30076 pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
30077     pub s_type: StructureType,
30078     pub p_next: *mut c_void,
30079     pub corner_sampled_image: Bool32,
30080 }
30081 impl ::std::default::Default for PhysicalDeviceCornerSampledImageFeaturesNV {
default() -> PhysicalDeviceCornerSampledImageFeaturesNV30082     fn default() -> PhysicalDeviceCornerSampledImageFeaturesNV {
30083         PhysicalDeviceCornerSampledImageFeaturesNV {
30084             s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
30085             p_next: ::std::ptr::null_mut(),
30086             corner_sampled_image: Bool32::default(),
30087         }
30088     }
30089 }
30090 impl PhysicalDeviceCornerSampledImageFeaturesNV {
builder<'a>() -> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a>30091     pub fn builder<'a>() -> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30092         PhysicalDeviceCornerSampledImageFeaturesNVBuilder {
30093             inner: PhysicalDeviceCornerSampledImageFeaturesNV::default(),
30094             marker: ::std::marker::PhantomData,
30095         }
30096     }
30097 }
30098 #[repr(transparent)]
30099 pub struct PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30100     inner: PhysicalDeviceCornerSampledImageFeaturesNV,
30101     marker: ::std::marker::PhantomData<&'a ()>,
30102 }
30103 unsafe impl ExtendsPhysicalDeviceFeatures2
30104     for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'_>
30105 {
30106 }
30107 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCornerSampledImageFeaturesNV {}
30108 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'_> {}
30109 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCornerSampledImageFeaturesNV {}
30110 impl<'a> ::std::ops::Deref for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30111     type Target = PhysicalDeviceCornerSampledImageFeaturesNV;
deref(&self) -> &Self::Target30112     fn deref(&self) -> &Self::Target {
30113         &self.inner
30114     }
30115 }
30116 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30117     fn deref_mut(&mut self) -> &mut Self::Target {
30118         &mut self.inner
30119     }
30120 }
30121 impl<'a> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
corner_sampled_image(mut self, corner_sampled_image: bool) -> Self30122     pub fn corner_sampled_image(mut self, corner_sampled_image: bool) -> Self {
30123         self.inner.corner_sampled_image = corner_sampled_image.into();
30124         self
30125     }
30126     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30127     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30128     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCornerSampledImageFeaturesNV30129     pub fn build(self) -> PhysicalDeviceCornerSampledImageFeaturesNV {
30130         self.inner
30131     }
30132 }
30133 #[repr(C)]
30134 #[derive(Copy, Clone, Debug)]
30135 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>"]
30136 pub struct PhysicalDeviceComputeShaderDerivativesFeaturesNV {
30137     pub s_type: StructureType,
30138     pub p_next: *mut c_void,
30139     pub compute_derivative_group_quads: Bool32,
30140     pub compute_derivative_group_linear: Bool32,
30141 }
30142 impl ::std::default::Default for PhysicalDeviceComputeShaderDerivativesFeaturesNV {
default() -> PhysicalDeviceComputeShaderDerivativesFeaturesNV30143     fn default() -> PhysicalDeviceComputeShaderDerivativesFeaturesNV {
30144         PhysicalDeviceComputeShaderDerivativesFeaturesNV {
30145             s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,
30146             p_next: ::std::ptr::null_mut(),
30147             compute_derivative_group_quads: Bool32::default(),
30148             compute_derivative_group_linear: Bool32::default(),
30149         }
30150     }
30151 }
30152 impl PhysicalDeviceComputeShaderDerivativesFeaturesNV {
builder<'a>() -> PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a>30153     pub fn builder<'a>() -> PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
30154         PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder {
30155             inner: PhysicalDeviceComputeShaderDerivativesFeaturesNV::default(),
30156             marker: ::std::marker::PhantomData,
30157         }
30158     }
30159 }
30160 #[repr(transparent)]
30161 pub struct PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
30162     inner: PhysicalDeviceComputeShaderDerivativesFeaturesNV,
30163     marker: ::std::marker::PhantomData<&'a ()>,
30164 }
30165 unsafe impl ExtendsPhysicalDeviceFeatures2
30166     for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'_>
30167 {
30168 }
30169 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceComputeShaderDerivativesFeaturesNV {}
30170 unsafe impl ExtendsDeviceCreateInfo
30171     for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'_>
30172 {
30173 }
30174 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceComputeShaderDerivativesFeaturesNV {}
30175 impl<'a> ::std::ops::Deref for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
30176     type Target = PhysicalDeviceComputeShaderDerivativesFeaturesNV;
deref(&self) -> &Self::Target30177     fn deref(&self) -> &Self::Target {
30178         &self.inner
30179     }
30180 }
30181 impl<'a> ::std::ops::DerefMut for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30182     fn deref_mut(&mut self) -> &mut Self::Target {
30183         &mut self.inner
30184     }
30185 }
30186 impl<'a> PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
compute_derivative_group_quads(mut self, compute_derivative_group_quads: bool) -> Self30187     pub fn compute_derivative_group_quads(mut self, compute_derivative_group_quads: bool) -> Self {
30188         self.inner.compute_derivative_group_quads = compute_derivative_group_quads.into();
30189         self
30190     }
compute_derivative_group_linear( mut self, compute_derivative_group_linear: bool, ) -> Self30191     pub fn compute_derivative_group_linear(
30192         mut self,
30193         compute_derivative_group_linear: bool,
30194     ) -> Self {
30195         self.inner.compute_derivative_group_linear = compute_derivative_group_linear.into();
30196         self
30197     }
30198     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30199     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30200     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceComputeShaderDerivativesFeaturesNV30201     pub fn build(self) -> PhysicalDeviceComputeShaderDerivativesFeaturesNV {
30202         self.inner
30203     }
30204 }
30205 #[repr(C)]
30206 #[derive(Copy, Clone, Debug)]
30207 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>"]
30208 pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
30209     pub s_type: StructureType,
30210     pub p_next: *mut c_void,
30211     pub fragment_shader_barycentric: Bool32,
30212 }
30213 impl ::std::default::Default for PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
default() -> PhysicalDeviceFragmentShaderBarycentricFeaturesNV30214     fn default() -> PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
30215         PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
30216             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV,
30217             p_next: ::std::ptr::null_mut(),
30218             fragment_shader_barycentric: Bool32::default(),
30219         }
30220     }
30221 }
30222 impl PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
builder<'a>() -> PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a>30223     pub fn builder<'a>() -> PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
30224         PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder {
30225             inner: PhysicalDeviceFragmentShaderBarycentricFeaturesNV::default(),
30226             marker: ::std::marker::PhantomData,
30227         }
30228     }
30229 }
30230 #[repr(transparent)]
30231 pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
30232     inner: PhysicalDeviceFragmentShaderBarycentricFeaturesNV,
30233     marker: ::std::marker::PhantomData<&'a ()>,
30234 }
30235 unsafe impl ExtendsPhysicalDeviceFeatures2
30236     for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'_>
30237 {
30238 }
30239 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShaderBarycentricFeaturesNV {}
30240 unsafe impl ExtendsDeviceCreateInfo
30241     for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'_>
30242 {
30243 }
30244 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShaderBarycentricFeaturesNV {}
30245 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
30246     type Target = PhysicalDeviceFragmentShaderBarycentricFeaturesNV;
deref(&self) -> &Self::Target30247     fn deref(&self) -> &Self::Target {
30248         &self.inner
30249     }
30250 }
30251 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30252     fn deref_mut(&mut self) -> &mut Self::Target {
30253         &mut self.inner
30254     }
30255 }
30256 impl<'a> PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
fragment_shader_barycentric(mut self, fragment_shader_barycentric: bool) -> Self30257     pub fn fragment_shader_barycentric(mut self, fragment_shader_barycentric: bool) -> Self {
30258         self.inner.fragment_shader_barycentric = fragment_shader_barycentric.into();
30259         self
30260     }
30261     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30262     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30263     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShaderBarycentricFeaturesNV30264     pub fn build(self) -> PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
30265         self.inner
30266     }
30267 }
30268 #[repr(C)]
30269 #[derive(Copy, Clone, Debug)]
30270 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>"]
30271 pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
30272     pub s_type: StructureType,
30273     pub p_next: *mut c_void,
30274     pub image_footprint: Bool32,
30275 }
30276 impl ::std::default::Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
default() -> PhysicalDeviceShaderImageFootprintFeaturesNV30277     fn default() -> PhysicalDeviceShaderImageFootprintFeaturesNV {
30278         PhysicalDeviceShaderImageFootprintFeaturesNV {
30279             s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
30280             p_next: ::std::ptr::null_mut(),
30281             image_footprint: Bool32::default(),
30282         }
30283     }
30284 }
30285 impl PhysicalDeviceShaderImageFootprintFeaturesNV {
builder<'a>() -> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a>30286     pub fn builder<'a>() -> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30287         PhysicalDeviceShaderImageFootprintFeaturesNVBuilder {
30288             inner: PhysicalDeviceShaderImageFootprintFeaturesNV::default(),
30289             marker: ::std::marker::PhantomData,
30290         }
30291     }
30292 }
30293 #[repr(transparent)]
30294 pub struct PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30295     inner: PhysicalDeviceShaderImageFootprintFeaturesNV,
30296     marker: ::std::marker::PhantomData<&'a ()>,
30297 }
30298 unsafe impl ExtendsPhysicalDeviceFeatures2
30299     for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'_>
30300 {
30301 }
30302 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderImageFootprintFeaturesNV {}
30303 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'_> {}
30304 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageFootprintFeaturesNV {}
30305 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30306     type Target = PhysicalDeviceShaderImageFootprintFeaturesNV;
deref(&self) -> &Self::Target30307     fn deref(&self) -> &Self::Target {
30308         &self.inner
30309     }
30310 }
30311 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30312     fn deref_mut(&mut self) -> &mut Self::Target {
30313         &mut self.inner
30314     }
30315 }
30316 impl<'a> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
image_footprint(mut self, image_footprint: bool) -> Self30317     pub fn image_footprint(mut self, image_footprint: bool) -> Self {
30318         self.inner.image_footprint = image_footprint.into();
30319         self
30320     }
30321     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30322     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30323     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderImageFootprintFeaturesNV30324     pub fn build(self) -> PhysicalDeviceShaderImageFootprintFeaturesNV {
30325         self.inner
30326     }
30327 }
30328 #[repr(C)]
30329 #[derive(Copy, Clone, Debug)]
30330 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>"]
30331 pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
30332     pub s_type: StructureType,
30333     pub p_next: *mut c_void,
30334     pub dedicated_allocation_image_aliasing: Bool32,
30335 }
30336 impl ::std::default::Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
default() -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV30337     fn default() -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
30338         PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
30339             s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
30340             p_next: ::std::ptr::null_mut(),
30341             dedicated_allocation_image_aliasing: Bool32::default(),
30342         }
30343     }
30344 }
30345 impl PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
builder<'a>() -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a>30346     pub fn builder<'a>() -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
30347         PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder {
30348             inner: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::default(),
30349             marker: ::std::marker::PhantomData,
30350         }
30351     }
30352 }
30353 #[repr(transparent)]
30354 pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
30355     inner: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV,
30356     marker: ::std::marker::PhantomData<&'a ()>,
30357 }
30358 unsafe impl ExtendsPhysicalDeviceFeatures2
30359     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'_>
30360 {
30361 }
30362 unsafe impl ExtendsPhysicalDeviceFeatures2
30363     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
30364 {
30365 }
30366 unsafe impl ExtendsDeviceCreateInfo
30367     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'_>
30368 {
30369 }
30370 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
30371 impl<'a> ::std::ops::Deref for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
30372     type Target = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
deref(&self) -> &Self::Target30373     fn deref(&self) -> &Self::Target {
30374         &self.inner
30375     }
30376 }
30377 impl<'a> ::std::ops::DerefMut
30378     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a>
30379 {
deref_mut(&mut self) -> &mut Self::Target30380     fn deref_mut(&mut self) -> &mut Self::Target {
30381         &mut self.inner
30382     }
30383 }
30384 impl<'a> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
dedicated_allocation_image_aliasing( mut self, dedicated_allocation_image_aliasing: bool, ) -> Self30385     pub fn dedicated_allocation_image_aliasing(
30386         mut self,
30387         dedicated_allocation_image_aliasing: bool,
30388     ) -> Self {
30389         self.inner.dedicated_allocation_image_aliasing = dedicated_allocation_image_aliasing.into();
30390         self
30391     }
30392     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30393     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30394     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV30395     pub fn build(self) -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
30396         self.inner
30397     }
30398 }
30399 #[repr(C)]
30400 #[derive(Copy, Clone, Debug)]
30401 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShadingRatePaletteNV.html>"]
30402 pub struct ShadingRatePaletteNV {
30403     pub shading_rate_palette_entry_count: u32,
30404     pub p_shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
30405 }
30406 impl ::std::default::Default for ShadingRatePaletteNV {
default() -> ShadingRatePaletteNV30407     fn default() -> ShadingRatePaletteNV {
30408         ShadingRatePaletteNV {
30409             shading_rate_palette_entry_count: u32::default(),
30410             p_shading_rate_palette_entries: ::std::ptr::null(),
30411         }
30412     }
30413 }
30414 impl ShadingRatePaletteNV {
builder<'a>() -> ShadingRatePaletteNVBuilder<'a>30415     pub fn builder<'a>() -> ShadingRatePaletteNVBuilder<'a> {
30416         ShadingRatePaletteNVBuilder {
30417             inner: ShadingRatePaletteNV::default(),
30418             marker: ::std::marker::PhantomData,
30419         }
30420     }
30421 }
30422 #[repr(transparent)]
30423 pub struct ShadingRatePaletteNVBuilder<'a> {
30424     inner: ShadingRatePaletteNV,
30425     marker: ::std::marker::PhantomData<&'a ()>,
30426 }
30427 impl<'a> ::std::ops::Deref for ShadingRatePaletteNVBuilder<'a> {
30428     type Target = ShadingRatePaletteNV;
deref(&self) -> &Self::Target30429     fn deref(&self) -> &Self::Target {
30430         &self.inner
30431     }
30432 }
30433 impl<'a> ::std::ops::DerefMut for ShadingRatePaletteNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30434     fn deref_mut(&mut self) -> &mut Self::Target {
30435         &mut self.inner
30436     }
30437 }
30438 impl<'a> ShadingRatePaletteNVBuilder<'a> {
shading_rate_palette_entries( mut self, shading_rate_palette_entries: &'a [ShadingRatePaletteEntryNV], ) -> Self30439     pub fn shading_rate_palette_entries(
30440         mut self,
30441         shading_rate_palette_entries: &'a [ShadingRatePaletteEntryNV],
30442     ) -> Self {
30443         self.inner.shading_rate_palette_entry_count = shading_rate_palette_entries.len() as _;
30444         self.inner.p_shading_rate_palette_entries = shading_rate_palette_entries.as_ptr();
30445         self
30446     }
30447     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30448     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30449     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShadingRatePaletteNV30450     pub fn build(self) -> ShadingRatePaletteNV {
30451         self.inner
30452     }
30453 }
30454 #[repr(C)]
30455 #[derive(Copy, Clone, Debug)]
30456 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>"]
30457 pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
30458     pub s_type: StructureType,
30459     pub p_next: *const c_void,
30460     pub shading_rate_image_enable: Bool32,
30461     pub viewport_count: u32,
30462     pub p_shading_rate_palettes: *const ShadingRatePaletteNV,
30463 }
30464 impl ::std::default::Default for PipelineViewportShadingRateImageStateCreateInfoNV {
default() -> PipelineViewportShadingRateImageStateCreateInfoNV30465     fn default() -> PipelineViewportShadingRateImageStateCreateInfoNV {
30466         PipelineViewportShadingRateImageStateCreateInfoNV {
30467             s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
30468             p_next: ::std::ptr::null(),
30469             shading_rate_image_enable: Bool32::default(),
30470             viewport_count: u32::default(),
30471             p_shading_rate_palettes: ::std::ptr::null(),
30472         }
30473     }
30474 }
30475 impl PipelineViewportShadingRateImageStateCreateInfoNV {
builder<'a>() -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a>30476     pub fn builder<'a>() -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
30477         PipelineViewportShadingRateImageStateCreateInfoNVBuilder {
30478             inner: PipelineViewportShadingRateImageStateCreateInfoNV::default(),
30479             marker: ::std::marker::PhantomData,
30480         }
30481     }
30482 }
30483 #[repr(transparent)]
30484 pub struct PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
30485     inner: PipelineViewportShadingRateImageStateCreateInfoNV,
30486     marker: ::std::marker::PhantomData<&'a ()>,
30487 }
30488 unsafe impl ExtendsPipelineViewportStateCreateInfo
30489     for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'_>
30490 {
30491 }
30492 unsafe impl ExtendsPipelineViewportStateCreateInfo
30493     for PipelineViewportShadingRateImageStateCreateInfoNV
30494 {
30495 }
30496 impl<'a> ::std::ops::Deref for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
30497     type Target = PipelineViewportShadingRateImageStateCreateInfoNV;
deref(&self) -> &Self::Target30498     fn deref(&self) -> &Self::Target {
30499         &self.inner
30500     }
30501 }
30502 impl<'a> ::std::ops::DerefMut for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30503     fn deref_mut(&mut self) -> &mut Self::Target {
30504         &mut self.inner
30505     }
30506 }
30507 impl<'a> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
shading_rate_image_enable(mut self, shading_rate_image_enable: bool) -> Self30508     pub fn shading_rate_image_enable(mut self, shading_rate_image_enable: bool) -> Self {
30509         self.inner.shading_rate_image_enable = shading_rate_image_enable.into();
30510         self
30511     }
shading_rate_palettes( mut self, shading_rate_palettes: &'a [ShadingRatePaletteNV], ) -> Self30512     pub fn shading_rate_palettes(
30513         mut self,
30514         shading_rate_palettes: &'a [ShadingRatePaletteNV],
30515     ) -> Self {
30516         self.inner.viewport_count = shading_rate_palettes.len() as _;
30517         self.inner.p_shading_rate_palettes = shading_rate_palettes.as_ptr();
30518         self
30519     }
30520     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30521     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30522     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportShadingRateImageStateCreateInfoNV30523     pub fn build(self) -> PipelineViewportShadingRateImageStateCreateInfoNV {
30524         self.inner
30525     }
30526 }
30527 #[repr(C)]
30528 #[derive(Copy, Clone, Debug)]
30529 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>"]
30530 pub struct PhysicalDeviceShadingRateImageFeaturesNV {
30531     pub s_type: StructureType,
30532     pub p_next: *mut c_void,
30533     pub shading_rate_image: Bool32,
30534     pub shading_rate_coarse_sample_order: Bool32,
30535 }
30536 impl ::std::default::Default for PhysicalDeviceShadingRateImageFeaturesNV {
default() -> PhysicalDeviceShadingRateImageFeaturesNV30537     fn default() -> PhysicalDeviceShadingRateImageFeaturesNV {
30538         PhysicalDeviceShadingRateImageFeaturesNV {
30539             s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
30540             p_next: ::std::ptr::null_mut(),
30541             shading_rate_image: Bool32::default(),
30542             shading_rate_coarse_sample_order: Bool32::default(),
30543         }
30544     }
30545 }
30546 impl PhysicalDeviceShadingRateImageFeaturesNV {
builder<'a>() -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a>30547     pub fn builder<'a>() -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30548         PhysicalDeviceShadingRateImageFeaturesNVBuilder {
30549             inner: PhysicalDeviceShadingRateImageFeaturesNV::default(),
30550             marker: ::std::marker::PhantomData,
30551         }
30552     }
30553 }
30554 #[repr(transparent)]
30555 pub struct PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30556     inner: PhysicalDeviceShadingRateImageFeaturesNV,
30557     marker: ::std::marker::PhantomData<&'a ()>,
30558 }
30559 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'_> {}
30560 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShadingRateImageFeaturesNV {}
30561 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'_> {}
30562 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShadingRateImageFeaturesNV {}
30563 impl<'a> ::std::ops::Deref for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
30564     type Target = PhysicalDeviceShadingRateImageFeaturesNV;
deref(&self) -> &Self::Target30565     fn deref(&self) -> &Self::Target {
30566         &self.inner
30567     }
30568 }
30569 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30570     fn deref_mut(&mut self) -> &mut Self::Target {
30571         &mut self.inner
30572     }
30573 }
30574 impl<'a> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
shading_rate_image(mut self, shading_rate_image: bool) -> Self30575     pub fn shading_rate_image(mut self, shading_rate_image: bool) -> Self {
30576         self.inner.shading_rate_image = shading_rate_image.into();
30577         self
30578     }
shading_rate_coarse_sample_order( mut self, shading_rate_coarse_sample_order: bool, ) -> Self30579     pub fn shading_rate_coarse_sample_order(
30580         mut self,
30581         shading_rate_coarse_sample_order: bool,
30582     ) -> Self {
30583         self.inner.shading_rate_coarse_sample_order = shading_rate_coarse_sample_order.into();
30584         self
30585     }
30586     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30587     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30588     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShadingRateImageFeaturesNV30589     pub fn build(self) -> PhysicalDeviceShadingRateImageFeaturesNV {
30590         self.inner
30591     }
30592 }
30593 #[repr(C)]
30594 #[derive(Copy, Clone, Debug)]
30595 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>"]
30596 pub struct PhysicalDeviceShadingRateImagePropertiesNV {
30597     pub s_type: StructureType,
30598     pub p_next: *mut c_void,
30599     pub shading_rate_texel_size: Extent2D,
30600     pub shading_rate_palette_size: u32,
30601     pub shading_rate_max_coarse_samples: u32,
30602 }
30603 impl ::std::default::Default for PhysicalDeviceShadingRateImagePropertiesNV {
default() -> PhysicalDeviceShadingRateImagePropertiesNV30604     fn default() -> PhysicalDeviceShadingRateImagePropertiesNV {
30605         PhysicalDeviceShadingRateImagePropertiesNV {
30606             s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
30607             p_next: ::std::ptr::null_mut(),
30608             shading_rate_texel_size: Extent2D::default(),
30609             shading_rate_palette_size: u32::default(),
30610             shading_rate_max_coarse_samples: u32::default(),
30611         }
30612     }
30613 }
30614 impl PhysicalDeviceShadingRateImagePropertiesNV {
builder<'a>() -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a>30615     pub fn builder<'a>() -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30616         PhysicalDeviceShadingRateImagePropertiesNVBuilder {
30617             inner: PhysicalDeviceShadingRateImagePropertiesNV::default(),
30618             marker: ::std::marker::PhantomData,
30619         }
30620     }
30621 }
30622 #[repr(transparent)]
30623 pub struct PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30624     inner: PhysicalDeviceShadingRateImagePropertiesNV,
30625     marker: ::std::marker::PhantomData<&'a ()>,
30626 }
30627 unsafe impl ExtendsPhysicalDeviceProperties2
30628     for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'_>
30629 {
30630 }
30631 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShadingRateImagePropertiesNV {}
30632 impl<'a> ::std::ops::Deref for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
30633     type Target = PhysicalDeviceShadingRateImagePropertiesNV;
deref(&self) -> &Self::Target30634     fn deref(&self) -> &Self::Target {
30635         &self.inner
30636     }
30637 }
30638 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30639     fn deref_mut(&mut self) -> &mut Self::Target {
30640         &mut self.inner
30641     }
30642 }
30643 impl<'a> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
shading_rate_texel_size(mut self, shading_rate_texel_size: Extent2D) -> Self30644     pub fn shading_rate_texel_size(mut self, shading_rate_texel_size: Extent2D) -> Self {
30645         self.inner.shading_rate_texel_size = shading_rate_texel_size;
30646         self
30647     }
shading_rate_palette_size(mut self, shading_rate_palette_size: u32) -> Self30648     pub fn shading_rate_palette_size(mut self, shading_rate_palette_size: u32) -> Self {
30649         self.inner.shading_rate_palette_size = shading_rate_palette_size;
30650         self
30651     }
shading_rate_max_coarse_samples(mut self, shading_rate_max_coarse_samples: u32) -> Self30652     pub fn shading_rate_max_coarse_samples(mut self, shading_rate_max_coarse_samples: u32) -> Self {
30653         self.inner.shading_rate_max_coarse_samples = shading_rate_max_coarse_samples;
30654         self
30655     }
30656     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30657     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30658     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShadingRateImagePropertiesNV30659     pub fn build(self) -> PhysicalDeviceShadingRateImagePropertiesNV {
30660         self.inner
30661     }
30662 }
30663 #[repr(C)]
30664 #[derive(Copy, Clone, Debug)]
30665 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>"]
30666 pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
30667     pub s_type: StructureType,
30668     pub p_next: *mut c_void,
30669     pub invocation_mask: Bool32,
30670 }
30671 impl ::std::default::Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
default() -> PhysicalDeviceInvocationMaskFeaturesHUAWEI30672     fn default() -> PhysicalDeviceInvocationMaskFeaturesHUAWEI {
30673         PhysicalDeviceInvocationMaskFeaturesHUAWEI {
30674             s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
30675             p_next: ::std::ptr::null_mut(),
30676             invocation_mask: Bool32::default(),
30677         }
30678     }
30679 }
30680 impl PhysicalDeviceInvocationMaskFeaturesHUAWEI {
builder<'a>() -> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a>30681     pub fn builder<'a>() -> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
30682         PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder {
30683             inner: PhysicalDeviceInvocationMaskFeaturesHUAWEI::default(),
30684             marker: ::std::marker::PhantomData,
30685         }
30686     }
30687 }
30688 #[repr(transparent)]
30689 pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
30690     inner: PhysicalDeviceInvocationMaskFeaturesHUAWEI,
30691     marker: ::std::marker::PhantomData<&'a ()>,
30692 }
30693 unsafe impl ExtendsPhysicalDeviceFeatures2
30694     for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'_>
30695 {
30696 }
30697 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
30698 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'_> {}
30699 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
30700 impl<'a> ::std::ops::Deref for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
30701     type Target = PhysicalDeviceInvocationMaskFeaturesHUAWEI;
deref(&self) -> &Self::Target30702     fn deref(&self) -> &Self::Target {
30703         &self.inner
30704     }
30705 }
30706 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30707     fn deref_mut(&mut self) -> &mut Self::Target {
30708         &mut self.inner
30709     }
30710 }
30711 impl<'a> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
invocation_mask(mut self, invocation_mask: bool) -> Self30712     pub fn invocation_mask(mut self, invocation_mask: bool) -> Self {
30713         self.inner.invocation_mask = invocation_mask.into();
30714         self
30715     }
30716     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30717     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30718     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInvocationMaskFeaturesHUAWEI30719     pub fn build(self) -> PhysicalDeviceInvocationMaskFeaturesHUAWEI {
30720         self.inner
30721     }
30722 }
30723 #[repr(C)]
30724 #[derive(Copy, Clone, Default, Debug)]
30725 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleLocationNV.html>"]
30726 pub struct CoarseSampleLocationNV {
30727     pub pixel_x: u32,
30728     pub pixel_y: u32,
30729     pub sample: u32,
30730 }
30731 impl CoarseSampleLocationNV {
builder<'a>() -> CoarseSampleLocationNVBuilder<'a>30732     pub fn builder<'a>() -> CoarseSampleLocationNVBuilder<'a> {
30733         CoarseSampleLocationNVBuilder {
30734             inner: CoarseSampleLocationNV::default(),
30735             marker: ::std::marker::PhantomData,
30736         }
30737     }
30738 }
30739 #[repr(transparent)]
30740 pub struct CoarseSampleLocationNVBuilder<'a> {
30741     inner: CoarseSampleLocationNV,
30742     marker: ::std::marker::PhantomData<&'a ()>,
30743 }
30744 impl<'a> ::std::ops::Deref for CoarseSampleLocationNVBuilder<'a> {
30745     type Target = CoarseSampleLocationNV;
deref(&self) -> &Self::Target30746     fn deref(&self) -> &Self::Target {
30747         &self.inner
30748     }
30749 }
30750 impl<'a> ::std::ops::DerefMut for CoarseSampleLocationNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30751     fn deref_mut(&mut self) -> &mut Self::Target {
30752         &mut self.inner
30753     }
30754 }
30755 impl<'a> CoarseSampleLocationNVBuilder<'a> {
pixel_x(mut self, pixel_x: u32) -> Self30756     pub fn pixel_x(mut self, pixel_x: u32) -> Self {
30757         self.inner.pixel_x = pixel_x;
30758         self
30759     }
pixel_y(mut self, pixel_y: u32) -> Self30760     pub fn pixel_y(mut self, pixel_y: u32) -> Self {
30761         self.inner.pixel_y = pixel_y;
30762         self
30763     }
sample(mut self, sample: u32) -> Self30764     pub fn sample(mut self, sample: u32) -> Self {
30765         self.inner.sample = sample;
30766         self
30767     }
30768     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30769     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30770     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CoarseSampleLocationNV30771     pub fn build(self) -> CoarseSampleLocationNV {
30772         self.inner
30773     }
30774 }
30775 #[repr(C)]
30776 #[derive(Copy, Clone, Debug)]
30777 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleOrderCustomNV.html>"]
30778 pub struct CoarseSampleOrderCustomNV {
30779     pub shading_rate: ShadingRatePaletteEntryNV,
30780     pub sample_count: u32,
30781     pub sample_location_count: u32,
30782     pub p_sample_locations: *const CoarseSampleLocationNV,
30783 }
30784 impl ::std::default::Default for CoarseSampleOrderCustomNV {
default() -> CoarseSampleOrderCustomNV30785     fn default() -> CoarseSampleOrderCustomNV {
30786         CoarseSampleOrderCustomNV {
30787             shading_rate: ShadingRatePaletteEntryNV::default(),
30788             sample_count: u32::default(),
30789             sample_location_count: u32::default(),
30790             p_sample_locations: ::std::ptr::null(),
30791         }
30792     }
30793 }
30794 impl CoarseSampleOrderCustomNV {
builder<'a>() -> CoarseSampleOrderCustomNVBuilder<'a>30795     pub fn builder<'a>() -> CoarseSampleOrderCustomNVBuilder<'a> {
30796         CoarseSampleOrderCustomNVBuilder {
30797             inner: CoarseSampleOrderCustomNV::default(),
30798             marker: ::std::marker::PhantomData,
30799         }
30800     }
30801 }
30802 #[repr(transparent)]
30803 pub struct CoarseSampleOrderCustomNVBuilder<'a> {
30804     inner: CoarseSampleOrderCustomNV,
30805     marker: ::std::marker::PhantomData<&'a ()>,
30806 }
30807 impl<'a> ::std::ops::Deref for CoarseSampleOrderCustomNVBuilder<'a> {
30808     type Target = CoarseSampleOrderCustomNV;
deref(&self) -> &Self::Target30809     fn deref(&self) -> &Self::Target {
30810         &self.inner
30811     }
30812 }
30813 impl<'a> ::std::ops::DerefMut for CoarseSampleOrderCustomNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30814     fn deref_mut(&mut self) -> &mut Self::Target {
30815         &mut self.inner
30816     }
30817 }
30818 impl<'a> CoarseSampleOrderCustomNVBuilder<'a> {
shading_rate(mut self, shading_rate: ShadingRatePaletteEntryNV) -> Self30819     pub fn shading_rate(mut self, shading_rate: ShadingRatePaletteEntryNV) -> Self {
30820         self.inner.shading_rate = shading_rate;
30821         self
30822     }
sample_count(mut self, sample_count: u32) -> Self30823     pub fn sample_count(mut self, sample_count: u32) -> Self {
30824         self.inner.sample_count = sample_count;
30825         self
30826     }
sample_locations(mut self, sample_locations: &'a [CoarseSampleLocationNV]) -> Self30827     pub fn sample_locations(mut self, sample_locations: &'a [CoarseSampleLocationNV]) -> Self {
30828         self.inner.sample_location_count = sample_locations.len() as _;
30829         self.inner.p_sample_locations = sample_locations.as_ptr();
30830         self
30831     }
30832     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30833     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30834     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CoarseSampleOrderCustomNV30835     pub fn build(self) -> CoarseSampleOrderCustomNV {
30836         self.inner
30837     }
30838 }
30839 #[repr(C)]
30840 #[derive(Copy, Clone, Debug)]
30841 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>"]
30842 pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
30843     pub s_type: StructureType,
30844     pub p_next: *const c_void,
30845     pub sample_order_type: CoarseSampleOrderTypeNV,
30846     pub custom_sample_order_count: u32,
30847     pub p_custom_sample_orders: *const CoarseSampleOrderCustomNV,
30848 }
30849 impl ::std::default::Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
default() -> PipelineViewportCoarseSampleOrderStateCreateInfoNV30850     fn default() -> PipelineViewportCoarseSampleOrderStateCreateInfoNV {
30851         PipelineViewportCoarseSampleOrderStateCreateInfoNV {
30852             s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
30853             p_next: ::std::ptr::null(),
30854             sample_order_type: CoarseSampleOrderTypeNV::default(),
30855             custom_sample_order_count: u32::default(),
30856             p_custom_sample_orders: ::std::ptr::null(),
30857         }
30858     }
30859 }
30860 impl PipelineViewportCoarseSampleOrderStateCreateInfoNV {
builder<'a>() -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a>30861     pub fn builder<'a>() -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
30862         PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder {
30863             inner: PipelineViewportCoarseSampleOrderStateCreateInfoNV::default(),
30864             marker: ::std::marker::PhantomData,
30865         }
30866     }
30867 }
30868 #[repr(transparent)]
30869 pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
30870     inner: PipelineViewportCoarseSampleOrderStateCreateInfoNV,
30871     marker: ::std::marker::PhantomData<&'a ()>,
30872 }
30873 unsafe impl ExtendsPipelineViewportStateCreateInfo
30874     for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'_>
30875 {
30876 }
30877 unsafe impl ExtendsPipelineViewportStateCreateInfo
30878     for PipelineViewportCoarseSampleOrderStateCreateInfoNV
30879 {
30880 }
30881 impl<'a> ::std::ops::Deref for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
30882     type Target = PipelineViewportCoarseSampleOrderStateCreateInfoNV;
deref(&self) -> &Self::Target30883     fn deref(&self) -> &Self::Target {
30884         &self.inner
30885     }
30886 }
30887 impl<'a> ::std::ops::DerefMut for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30888     fn deref_mut(&mut self) -> &mut Self::Target {
30889         &mut self.inner
30890     }
30891 }
30892 impl<'a> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
sample_order_type(mut self, sample_order_type: CoarseSampleOrderTypeNV) -> Self30893     pub fn sample_order_type(mut self, sample_order_type: CoarseSampleOrderTypeNV) -> Self {
30894         self.inner.sample_order_type = sample_order_type;
30895         self
30896     }
custom_sample_orders( mut self, custom_sample_orders: &'a [CoarseSampleOrderCustomNV], ) -> Self30897     pub fn custom_sample_orders(
30898         mut self,
30899         custom_sample_orders: &'a [CoarseSampleOrderCustomNV],
30900     ) -> Self {
30901         self.inner.custom_sample_order_count = custom_sample_orders.len() as _;
30902         self.inner.p_custom_sample_orders = custom_sample_orders.as_ptr();
30903         self
30904     }
30905     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30906     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30907     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportCoarseSampleOrderStateCreateInfoNV30908     pub fn build(self) -> PipelineViewportCoarseSampleOrderStateCreateInfoNV {
30909         self.inner
30910     }
30911 }
30912 #[repr(C)]
30913 #[derive(Copy, Clone, Debug)]
30914 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>"]
30915 pub struct PhysicalDeviceMeshShaderFeaturesNV {
30916     pub s_type: StructureType,
30917     pub p_next: *mut c_void,
30918     pub task_shader: Bool32,
30919     pub mesh_shader: Bool32,
30920 }
30921 impl ::std::default::Default for PhysicalDeviceMeshShaderFeaturesNV {
default() -> PhysicalDeviceMeshShaderFeaturesNV30922     fn default() -> PhysicalDeviceMeshShaderFeaturesNV {
30923         PhysicalDeviceMeshShaderFeaturesNV {
30924             s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
30925             p_next: ::std::ptr::null_mut(),
30926             task_shader: Bool32::default(),
30927             mesh_shader: Bool32::default(),
30928         }
30929     }
30930 }
30931 impl PhysicalDeviceMeshShaderFeaturesNV {
builder<'a>() -> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a>30932     pub fn builder<'a>() -> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
30933         PhysicalDeviceMeshShaderFeaturesNVBuilder {
30934             inner: PhysicalDeviceMeshShaderFeaturesNV::default(),
30935             marker: ::std::marker::PhantomData,
30936         }
30937     }
30938 }
30939 #[repr(transparent)]
30940 pub struct PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
30941     inner: PhysicalDeviceMeshShaderFeaturesNV,
30942     marker: ::std::marker::PhantomData<&'a ()>,
30943 }
30944 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMeshShaderFeaturesNVBuilder<'_> {}
30945 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMeshShaderFeaturesNV {}
30946 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMeshShaderFeaturesNVBuilder<'_> {}
30947 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMeshShaderFeaturesNV {}
30948 impl<'a> ::std::ops::Deref for PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
30949     type Target = PhysicalDeviceMeshShaderFeaturesNV;
deref(&self) -> &Self::Target30950     fn deref(&self) -> &Self::Target {
30951         &self.inner
30952     }
30953 }
30954 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30955     fn deref_mut(&mut self) -> &mut Self::Target {
30956         &mut self.inner
30957     }
30958 }
30959 impl<'a> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
task_shader(mut self, task_shader: bool) -> Self30960     pub fn task_shader(mut self, task_shader: bool) -> Self {
30961         self.inner.task_shader = task_shader.into();
30962         self
30963     }
mesh_shader(mut self, mesh_shader: bool) -> Self30964     pub fn mesh_shader(mut self, mesh_shader: bool) -> Self {
30965         self.inner.mesh_shader = mesh_shader.into();
30966         self
30967     }
30968     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30969     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30970     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMeshShaderFeaturesNV30971     pub fn build(self) -> PhysicalDeviceMeshShaderFeaturesNV {
30972         self.inner
30973     }
30974 }
30975 #[repr(C)]
30976 #[derive(Copy, Clone, Debug)]
30977 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>"]
30978 pub struct PhysicalDeviceMeshShaderPropertiesNV {
30979     pub s_type: StructureType,
30980     pub p_next: *mut c_void,
30981     pub max_draw_mesh_tasks_count: u32,
30982     pub max_task_work_group_invocations: u32,
30983     pub max_task_work_group_size: [u32; 3],
30984     pub max_task_total_memory_size: u32,
30985     pub max_task_output_count: u32,
30986     pub max_mesh_work_group_invocations: u32,
30987     pub max_mesh_work_group_size: [u32; 3],
30988     pub max_mesh_total_memory_size: u32,
30989     pub max_mesh_output_vertices: u32,
30990     pub max_mesh_output_primitives: u32,
30991     pub max_mesh_multiview_view_count: u32,
30992     pub mesh_output_per_vertex_granularity: u32,
30993     pub mesh_output_per_primitive_granularity: u32,
30994 }
30995 impl ::std::default::Default for PhysicalDeviceMeshShaderPropertiesNV {
default() -> PhysicalDeviceMeshShaderPropertiesNV30996     fn default() -> PhysicalDeviceMeshShaderPropertiesNV {
30997         PhysicalDeviceMeshShaderPropertiesNV {
30998             s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
30999             p_next: ::std::ptr::null_mut(),
31000             max_draw_mesh_tasks_count: u32::default(),
31001             max_task_work_group_invocations: u32::default(),
31002             max_task_work_group_size: unsafe { ::std::mem::zeroed() },
31003             max_task_total_memory_size: u32::default(),
31004             max_task_output_count: u32::default(),
31005             max_mesh_work_group_invocations: u32::default(),
31006             max_mesh_work_group_size: unsafe { ::std::mem::zeroed() },
31007             max_mesh_total_memory_size: u32::default(),
31008             max_mesh_output_vertices: u32::default(),
31009             max_mesh_output_primitives: u32::default(),
31010             max_mesh_multiview_view_count: u32::default(),
31011             mesh_output_per_vertex_granularity: u32::default(),
31012             mesh_output_per_primitive_granularity: u32::default(),
31013         }
31014     }
31015 }
31016 impl PhysicalDeviceMeshShaderPropertiesNV {
builder<'a>() -> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a>31017     pub fn builder<'a>() -> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31018         PhysicalDeviceMeshShaderPropertiesNVBuilder {
31019             inner: PhysicalDeviceMeshShaderPropertiesNV::default(),
31020             marker: ::std::marker::PhantomData,
31021         }
31022     }
31023 }
31024 #[repr(transparent)]
31025 pub struct PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31026     inner: PhysicalDeviceMeshShaderPropertiesNV,
31027     marker: ::std::marker::PhantomData<&'a ()>,
31028 }
31029 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMeshShaderPropertiesNVBuilder<'_> {}
31030 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMeshShaderPropertiesNV {}
31031 impl<'a> ::std::ops::Deref for PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31032     type Target = PhysicalDeviceMeshShaderPropertiesNV;
deref(&self) -> &Self::Target31033     fn deref(&self) -> &Self::Target {
31034         &self.inner
31035     }
31036 }
31037 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31038     fn deref_mut(&mut self) -> &mut Self::Target {
31039         &mut self.inner
31040     }
31041 }
31042 impl<'a> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
max_draw_mesh_tasks_count(mut self, max_draw_mesh_tasks_count: u32) -> Self31043     pub fn max_draw_mesh_tasks_count(mut self, max_draw_mesh_tasks_count: u32) -> Self {
31044         self.inner.max_draw_mesh_tasks_count = max_draw_mesh_tasks_count;
31045         self
31046     }
max_task_work_group_invocations(mut self, max_task_work_group_invocations: u32) -> Self31047     pub fn max_task_work_group_invocations(mut self, max_task_work_group_invocations: u32) -> Self {
31048         self.inner.max_task_work_group_invocations = max_task_work_group_invocations;
31049         self
31050     }
max_task_work_group_size(mut self, max_task_work_group_size: [u32; 3]) -> Self31051     pub fn max_task_work_group_size(mut self, max_task_work_group_size: [u32; 3]) -> Self {
31052         self.inner.max_task_work_group_size = max_task_work_group_size;
31053         self
31054     }
max_task_total_memory_size(mut self, max_task_total_memory_size: u32) -> Self31055     pub fn max_task_total_memory_size(mut self, max_task_total_memory_size: u32) -> Self {
31056         self.inner.max_task_total_memory_size = max_task_total_memory_size;
31057         self
31058     }
max_task_output_count(mut self, max_task_output_count: u32) -> Self31059     pub fn max_task_output_count(mut self, max_task_output_count: u32) -> Self {
31060         self.inner.max_task_output_count = max_task_output_count;
31061         self
31062     }
max_mesh_work_group_invocations(mut self, max_mesh_work_group_invocations: u32) -> Self31063     pub fn max_mesh_work_group_invocations(mut self, max_mesh_work_group_invocations: u32) -> Self {
31064         self.inner.max_mesh_work_group_invocations = max_mesh_work_group_invocations;
31065         self
31066     }
max_mesh_work_group_size(mut self, max_mesh_work_group_size: [u32; 3]) -> Self31067     pub fn max_mesh_work_group_size(mut self, max_mesh_work_group_size: [u32; 3]) -> Self {
31068         self.inner.max_mesh_work_group_size = max_mesh_work_group_size;
31069         self
31070     }
max_mesh_total_memory_size(mut self, max_mesh_total_memory_size: u32) -> Self31071     pub fn max_mesh_total_memory_size(mut self, max_mesh_total_memory_size: u32) -> Self {
31072         self.inner.max_mesh_total_memory_size = max_mesh_total_memory_size;
31073         self
31074     }
max_mesh_output_vertices(mut self, max_mesh_output_vertices: u32) -> Self31075     pub fn max_mesh_output_vertices(mut self, max_mesh_output_vertices: u32) -> Self {
31076         self.inner.max_mesh_output_vertices = max_mesh_output_vertices;
31077         self
31078     }
max_mesh_output_primitives(mut self, max_mesh_output_primitives: u32) -> Self31079     pub fn max_mesh_output_primitives(mut self, max_mesh_output_primitives: u32) -> Self {
31080         self.inner.max_mesh_output_primitives = max_mesh_output_primitives;
31081         self
31082     }
max_mesh_multiview_view_count(mut self, max_mesh_multiview_view_count: u32) -> Self31083     pub fn max_mesh_multiview_view_count(mut self, max_mesh_multiview_view_count: u32) -> Self {
31084         self.inner.max_mesh_multiview_view_count = max_mesh_multiview_view_count;
31085         self
31086     }
mesh_output_per_vertex_granularity( mut self, mesh_output_per_vertex_granularity: u32, ) -> Self31087     pub fn mesh_output_per_vertex_granularity(
31088         mut self,
31089         mesh_output_per_vertex_granularity: u32,
31090     ) -> Self {
31091         self.inner.mesh_output_per_vertex_granularity = mesh_output_per_vertex_granularity;
31092         self
31093     }
mesh_output_per_primitive_granularity( mut self, mesh_output_per_primitive_granularity: u32, ) -> Self31094     pub fn mesh_output_per_primitive_granularity(
31095         mut self,
31096         mesh_output_per_primitive_granularity: u32,
31097     ) -> Self {
31098         self.inner.mesh_output_per_primitive_granularity = mesh_output_per_primitive_granularity;
31099         self
31100     }
31101     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31102     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31103     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMeshShaderPropertiesNV31104     pub fn build(self) -> PhysicalDeviceMeshShaderPropertiesNV {
31105         self.inner
31106     }
31107 }
31108 #[repr(C)]
31109 #[derive(Copy, Clone, Default, Debug)]
31110 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawMeshTasksIndirectCommandNV.html>"]
31111 pub struct DrawMeshTasksIndirectCommandNV {
31112     pub task_count: u32,
31113     pub first_task: u32,
31114 }
31115 impl DrawMeshTasksIndirectCommandNV {
builder<'a>() -> DrawMeshTasksIndirectCommandNVBuilder<'a>31116     pub fn builder<'a>() -> DrawMeshTasksIndirectCommandNVBuilder<'a> {
31117         DrawMeshTasksIndirectCommandNVBuilder {
31118             inner: DrawMeshTasksIndirectCommandNV::default(),
31119             marker: ::std::marker::PhantomData,
31120         }
31121     }
31122 }
31123 #[repr(transparent)]
31124 pub struct DrawMeshTasksIndirectCommandNVBuilder<'a> {
31125     inner: DrawMeshTasksIndirectCommandNV,
31126     marker: ::std::marker::PhantomData<&'a ()>,
31127 }
31128 impl<'a> ::std::ops::Deref for DrawMeshTasksIndirectCommandNVBuilder<'a> {
31129     type Target = DrawMeshTasksIndirectCommandNV;
deref(&self) -> &Self::Target31130     fn deref(&self) -> &Self::Target {
31131         &self.inner
31132     }
31133 }
31134 impl<'a> ::std::ops::DerefMut for DrawMeshTasksIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31135     fn deref_mut(&mut self) -> &mut Self::Target {
31136         &mut self.inner
31137     }
31138 }
31139 impl<'a> DrawMeshTasksIndirectCommandNVBuilder<'a> {
task_count(mut self, task_count: u32) -> Self31140     pub fn task_count(mut self, task_count: u32) -> Self {
31141         self.inner.task_count = task_count;
31142         self
31143     }
first_task(mut self, first_task: u32) -> Self31144     pub fn first_task(mut self, first_task: u32) -> Self {
31145         self.inner.first_task = first_task;
31146         self
31147     }
31148     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31149     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31150     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrawMeshTasksIndirectCommandNV31151     pub fn build(self) -> DrawMeshTasksIndirectCommandNV {
31152         self.inner
31153     }
31154 }
31155 #[repr(C)]
31156 #[derive(Copy, Clone, Debug)]
31157 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingShaderGroupCreateInfoNV.html>"]
31158 pub struct RayTracingShaderGroupCreateInfoNV {
31159     pub s_type: StructureType,
31160     pub p_next: *const c_void,
31161     pub ty: RayTracingShaderGroupTypeKHR,
31162     pub general_shader: u32,
31163     pub closest_hit_shader: u32,
31164     pub any_hit_shader: u32,
31165     pub intersection_shader: u32,
31166 }
31167 impl ::std::default::Default for RayTracingShaderGroupCreateInfoNV {
default() -> RayTracingShaderGroupCreateInfoNV31168     fn default() -> RayTracingShaderGroupCreateInfoNV {
31169         RayTracingShaderGroupCreateInfoNV {
31170             s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
31171             p_next: ::std::ptr::null(),
31172             ty: RayTracingShaderGroupTypeKHR::default(),
31173             general_shader: u32::default(),
31174             closest_hit_shader: u32::default(),
31175             any_hit_shader: u32::default(),
31176             intersection_shader: u32::default(),
31177         }
31178     }
31179 }
31180 impl RayTracingShaderGroupCreateInfoNV {
builder<'a>() -> RayTracingShaderGroupCreateInfoNVBuilder<'a>31181     pub fn builder<'a>() -> RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31182         RayTracingShaderGroupCreateInfoNVBuilder {
31183             inner: RayTracingShaderGroupCreateInfoNV::default(),
31184             marker: ::std::marker::PhantomData,
31185         }
31186     }
31187 }
31188 #[repr(transparent)]
31189 pub struct RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31190     inner: RayTracingShaderGroupCreateInfoNV,
31191     marker: ::std::marker::PhantomData<&'a ()>,
31192 }
31193 impl<'a> ::std::ops::Deref for RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31194     type Target = RayTracingShaderGroupCreateInfoNV;
deref(&self) -> &Self::Target31195     fn deref(&self) -> &Self::Target {
31196         &self.inner
31197     }
31198 }
31199 impl<'a> ::std::ops::DerefMut for RayTracingShaderGroupCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31200     fn deref_mut(&mut self) -> &mut Self::Target {
31201         &mut self.inner
31202     }
31203 }
31204 impl<'a> RayTracingShaderGroupCreateInfoNVBuilder<'a> {
ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self31205     pub fn ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self {
31206         self.inner.ty = ty;
31207         self
31208     }
general_shader(mut self, general_shader: u32) -> Self31209     pub fn general_shader(mut self, general_shader: u32) -> Self {
31210         self.inner.general_shader = general_shader;
31211         self
31212     }
closest_hit_shader(mut self, closest_hit_shader: u32) -> Self31213     pub fn closest_hit_shader(mut self, closest_hit_shader: u32) -> Self {
31214         self.inner.closest_hit_shader = closest_hit_shader;
31215         self
31216     }
any_hit_shader(mut self, any_hit_shader: u32) -> Self31217     pub fn any_hit_shader(mut self, any_hit_shader: u32) -> Self {
31218         self.inner.any_hit_shader = any_hit_shader;
31219         self
31220     }
intersection_shader(mut self, intersection_shader: u32) -> Self31221     pub fn intersection_shader(mut self, intersection_shader: u32) -> Self {
31222         self.inner.intersection_shader = intersection_shader;
31223         self
31224     }
31225     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31226     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31227     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingShaderGroupCreateInfoNV31228     pub fn build(self) -> RayTracingShaderGroupCreateInfoNV {
31229         self.inner
31230     }
31231 }
31232 #[repr(C)]
31233 #[derive(Copy, Clone, Debug)]
31234 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>"]
31235 pub struct RayTracingShaderGroupCreateInfoKHR {
31236     pub s_type: StructureType,
31237     pub p_next: *const c_void,
31238     pub ty: RayTracingShaderGroupTypeKHR,
31239     pub general_shader: u32,
31240     pub closest_hit_shader: u32,
31241     pub any_hit_shader: u32,
31242     pub intersection_shader: u32,
31243     pub p_shader_group_capture_replay_handle: *const c_void,
31244 }
31245 impl ::std::default::Default for RayTracingShaderGroupCreateInfoKHR {
default() -> RayTracingShaderGroupCreateInfoKHR31246     fn default() -> RayTracingShaderGroupCreateInfoKHR {
31247         RayTracingShaderGroupCreateInfoKHR {
31248             s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
31249             p_next: ::std::ptr::null(),
31250             ty: RayTracingShaderGroupTypeKHR::default(),
31251             general_shader: u32::default(),
31252             closest_hit_shader: u32::default(),
31253             any_hit_shader: u32::default(),
31254             intersection_shader: u32::default(),
31255             p_shader_group_capture_replay_handle: ::std::ptr::null(),
31256         }
31257     }
31258 }
31259 impl RayTracingShaderGroupCreateInfoKHR {
builder<'a>() -> RayTracingShaderGroupCreateInfoKHRBuilder<'a>31260     pub fn builder<'a>() -> RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31261         RayTracingShaderGroupCreateInfoKHRBuilder {
31262             inner: RayTracingShaderGroupCreateInfoKHR::default(),
31263             marker: ::std::marker::PhantomData,
31264         }
31265     }
31266 }
31267 #[repr(transparent)]
31268 pub struct RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31269     inner: RayTracingShaderGroupCreateInfoKHR,
31270     marker: ::std::marker::PhantomData<&'a ()>,
31271 }
31272 impl<'a> ::std::ops::Deref for RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31273     type Target = RayTracingShaderGroupCreateInfoKHR;
deref(&self) -> &Self::Target31274     fn deref(&self) -> &Self::Target {
31275         &self.inner
31276     }
31277 }
31278 impl<'a> ::std::ops::DerefMut for RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31279     fn deref_mut(&mut self) -> &mut Self::Target {
31280         &mut self.inner
31281     }
31282 }
31283 impl<'a> RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self31284     pub fn ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self {
31285         self.inner.ty = ty;
31286         self
31287     }
general_shader(mut self, general_shader: u32) -> Self31288     pub fn general_shader(mut self, general_shader: u32) -> Self {
31289         self.inner.general_shader = general_shader;
31290         self
31291     }
closest_hit_shader(mut self, closest_hit_shader: u32) -> Self31292     pub fn closest_hit_shader(mut self, closest_hit_shader: u32) -> Self {
31293         self.inner.closest_hit_shader = closest_hit_shader;
31294         self
31295     }
any_hit_shader(mut self, any_hit_shader: u32) -> Self31296     pub fn any_hit_shader(mut self, any_hit_shader: u32) -> Self {
31297         self.inner.any_hit_shader = any_hit_shader;
31298         self
31299     }
intersection_shader(mut self, intersection_shader: u32) -> Self31300     pub fn intersection_shader(mut self, intersection_shader: u32) -> Self {
31301         self.inner.intersection_shader = intersection_shader;
31302         self
31303     }
shader_group_capture_replay_handle( mut self, shader_group_capture_replay_handle: *const c_void, ) -> Self31304     pub fn shader_group_capture_replay_handle(
31305         mut self,
31306         shader_group_capture_replay_handle: *const c_void,
31307     ) -> Self {
31308         self.inner.p_shader_group_capture_replay_handle = shader_group_capture_replay_handle;
31309         self
31310     }
31311     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31312     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31313     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingShaderGroupCreateInfoKHR31314     pub fn build(self) -> RayTracingShaderGroupCreateInfoKHR {
31315         self.inner
31316     }
31317 }
31318 #[repr(C)]
31319 #[derive(Copy, Clone, Debug)]
31320 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingPipelineCreateInfoNV.html>"]
31321 pub struct RayTracingPipelineCreateInfoNV {
31322     pub s_type: StructureType,
31323     pub p_next: *const c_void,
31324     pub flags: PipelineCreateFlags,
31325     pub stage_count: u32,
31326     pub p_stages: *const PipelineShaderStageCreateInfo,
31327     pub group_count: u32,
31328     pub p_groups: *const RayTracingShaderGroupCreateInfoNV,
31329     pub max_recursion_depth: u32,
31330     pub layout: PipelineLayout,
31331     pub base_pipeline_handle: Pipeline,
31332     pub base_pipeline_index: i32,
31333 }
31334 impl ::std::default::Default for RayTracingPipelineCreateInfoNV {
default() -> RayTracingPipelineCreateInfoNV31335     fn default() -> RayTracingPipelineCreateInfoNV {
31336         RayTracingPipelineCreateInfoNV {
31337             s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
31338             p_next: ::std::ptr::null(),
31339             flags: PipelineCreateFlags::default(),
31340             stage_count: u32::default(),
31341             p_stages: ::std::ptr::null(),
31342             group_count: u32::default(),
31343             p_groups: ::std::ptr::null(),
31344             max_recursion_depth: u32::default(),
31345             layout: PipelineLayout::default(),
31346             base_pipeline_handle: Pipeline::default(),
31347             base_pipeline_index: i32::default(),
31348         }
31349     }
31350 }
31351 impl RayTracingPipelineCreateInfoNV {
builder<'a>() -> RayTracingPipelineCreateInfoNVBuilder<'a>31352     pub fn builder<'a>() -> RayTracingPipelineCreateInfoNVBuilder<'a> {
31353         RayTracingPipelineCreateInfoNVBuilder {
31354             inner: RayTracingPipelineCreateInfoNV::default(),
31355             marker: ::std::marker::PhantomData,
31356         }
31357     }
31358 }
31359 #[repr(transparent)]
31360 pub struct RayTracingPipelineCreateInfoNVBuilder<'a> {
31361     inner: RayTracingPipelineCreateInfoNV,
31362     marker: ::std::marker::PhantomData<&'a ()>,
31363 }
31364 pub unsafe trait ExtendsRayTracingPipelineCreateInfoNV {}
31365 impl<'a> ::std::ops::Deref for RayTracingPipelineCreateInfoNVBuilder<'a> {
31366     type Target = RayTracingPipelineCreateInfoNV;
deref(&self) -> &Self::Target31367     fn deref(&self) -> &Self::Target {
31368         &self.inner
31369     }
31370 }
31371 impl<'a> ::std::ops::DerefMut for RayTracingPipelineCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31372     fn deref_mut(&mut self) -> &mut Self::Target {
31373         &mut self.inner
31374     }
31375 }
31376 impl<'a> RayTracingPipelineCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self31377     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
31378         self.inner.flags = flags;
31379         self
31380     }
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self31381     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
31382         self.inner.stage_count = stages.len() as _;
31383         self.inner.p_stages = stages.as_ptr();
31384         self
31385     }
groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoNV]) -> Self31386     pub fn groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoNV]) -> Self {
31387         self.inner.group_count = groups.len() as _;
31388         self.inner.p_groups = groups.as_ptr();
31389         self
31390     }
max_recursion_depth(mut self, max_recursion_depth: u32) -> Self31391     pub fn max_recursion_depth(mut self, max_recursion_depth: u32) -> Self {
31392         self.inner.max_recursion_depth = max_recursion_depth;
31393         self
31394     }
layout(mut self, layout: PipelineLayout) -> Self31395     pub fn layout(mut self, layout: PipelineLayout) -> Self {
31396         self.inner.layout = layout;
31397         self
31398     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self31399     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
31400         self.inner.base_pipeline_handle = base_pipeline_handle;
31401         self
31402     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self31403     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
31404         self.inner.base_pipeline_index = base_pipeline_index;
31405         self
31406     }
31407     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
31408     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
31409     #[doc = r" valid extension structs can be pushed into the chain."]
31410     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
31411     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRayTracingPipelineCreateInfoNV>(mut self, next: &'a mut T) -> Self31412     pub fn push_next<T: ExtendsRayTracingPipelineCreateInfoNV>(mut self, next: &'a mut T) -> Self {
31413         unsafe {
31414             let next_ptr = next as *mut T as *mut BaseOutStructure;
31415             let last_next = ptr_chain_iter(next).last().unwrap();
31416             (*last_next).p_next = self.inner.p_next as _;
31417             self.inner.p_next = next_ptr as _;
31418         }
31419         self
31420     }
31421     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31422     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31423     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingPipelineCreateInfoNV31424     pub fn build(self) -> RayTracingPipelineCreateInfoNV {
31425         self.inner
31426     }
31427 }
31428 #[repr(C)]
31429 #[derive(Copy, Clone, Debug)]
31430 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingPipelineCreateInfoKHR.html>"]
31431 pub struct RayTracingPipelineCreateInfoKHR {
31432     pub s_type: StructureType,
31433     pub p_next: *const c_void,
31434     pub flags: PipelineCreateFlags,
31435     pub stage_count: u32,
31436     pub p_stages: *const PipelineShaderStageCreateInfo,
31437     pub group_count: u32,
31438     pub p_groups: *const RayTracingShaderGroupCreateInfoKHR,
31439     pub max_pipeline_ray_recursion_depth: u32,
31440     pub p_library_info: *const PipelineLibraryCreateInfoKHR,
31441     pub p_library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
31442     pub p_dynamic_state: *const PipelineDynamicStateCreateInfo,
31443     pub layout: PipelineLayout,
31444     pub base_pipeline_handle: Pipeline,
31445     pub base_pipeline_index: i32,
31446 }
31447 impl ::std::default::Default for RayTracingPipelineCreateInfoKHR {
default() -> RayTracingPipelineCreateInfoKHR31448     fn default() -> RayTracingPipelineCreateInfoKHR {
31449         RayTracingPipelineCreateInfoKHR {
31450             s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
31451             p_next: ::std::ptr::null(),
31452             flags: PipelineCreateFlags::default(),
31453             stage_count: u32::default(),
31454             p_stages: ::std::ptr::null(),
31455             group_count: u32::default(),
31456             p_groups: ::std::ptr::null(),
31457             max_pipeline_ray_recursion_depth: u32::default(),
31458             p_library_info: ::std::ptr::null(),
31459             p_library_interface: ::std::ptr::null(),
31460             p_dynamic_state: ::std::ptr::null(),
31461             layout: PipelineLayout::default(),
31462             base_pipeline_handle: Pipeline::default(),
31463             base_pipeline_index: i32::default(),
31464         }
31465     }
31466 }
31467 impl RayTracingPipelineCreateInfoKHR {
builder<'a>() -> RayTracingPipelineCreateInfoKHRBuilder<'a>31468     pub fn builder<'a>() -> RayTracingPipelineCreateInfoKHRBuilder<'a> {
31469         RayTracingPipelineCreateInfoKHRBuilder {
31470             inner: RayTracingPipelineCreateInfoKHR::default(),
31471             marker: ::std::marker::PhantomData,
31472         }
31473     }
31474 }
31475 #[repr(transparent)]
31476 pub struct RayTracingPipelineCreateInfoKHRBuilder<'a> {
31477     inner: RayTracingPipelineCreateInfoKHR,
31478     marker: ::std::marker::PhantomData<&'a ()>,
31479 }
31480 pub unsafe trait ExtendsRayTracingPipelineCreateInfoKHR {}
31481 impl<'a> ::std::ops::Deref for RayTracingPipelineCreateInfoKHRBuilder<'a> {
31482     type Target = RayTracingPipelineCreateInfoKHR;
deref(&self) -> &Self::Target31483     fn deref(&self) -> &Self::Target {
31484         &self.inner
31485     }
31486 }
31487 impl<'a> ::std::ops::DerefMut for RayTracingPipelineCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31488     fn deref_mut(&mut self) -> &mut Self::Target {
31489         &mut self.inner
31490     }
31491 }
31492 impl<'a> RayTracingPipelineCreateInfoKHRBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self31493     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
31494         self.inner.flags = flags;
31495         self
31496     }
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self31497     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
31498         self.inner.stage_count = stages.len() as _;
31499         self.inner.p_stages = stages.as_ptr();
31500         self
31501     }
groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoKHR]) -> Self31502     pub fn groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoKHR]) -> Self {
31503         self.inner.group_count = groups.len() as _;
31504         self.inner.p_groups = groups.as_ptr();
31505         self
31506     }
max_pipeline_ray_recursion_depth( mut self, max_pipeline_ray_recursion_depth: u32, ) -> Self31507     pub fn max_pipeline_ray_recursion_depth(
31508         mut self,
31509         max_pipeline_ray_recursion_depth: u32,
31510     ) -> Self {
31511         self.inner.max_pipeline_ray_recursion_depth = max_pipeline_ray_recursion_depth;
31512         self
31513     }
library_info(mut self, library_info: &'a PipelineLibraryCreateInfoKHR) -> Self31514     pub fn library_info(mut self, library_info: &'a PipelineLibraryCreateInfoKHR) -> Self {
31515         self.inner.p_library_info = library_info;
31516         self
31517     }
library_interface( mut self, library_interface: &'a RayTracingPipelineInterfaceCreateInfoKHR, ) -> Self31518     pub fn library_interface(
31519         mut self,
31520         library_interface: &'a RayTracingPipelineInterfaceCreateInfoKHR,
31521     ) -> Self {
31522         self.inner.p_library_interface = library_interface;
31523         self
31524     }
dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self31525     pub fn dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self {
31526         self.inner.p_dynamic_state = dynamic_state;
31527         self
31528     }
layout(mut self, layout: PipelineLayout) -> Self31529     pub fn layout(mut self, layout: PipelineLayout) -> Self {
31530         self.inner.layout = layout;
31531         self
31532     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self31533     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
31534         self.inner.base_pipeline_handle = base_pipeline_handle;
31535         self
31536     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self31537     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
31538         self.inner.base_pipeline_index = base_pipeline_index;
31539         self
31540     }
31541     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
31542     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
31543     #[doc = r" valid extension structs can be pushed into the chain."]
31544     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
31545     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRayTracingPipelineCreateInfoKHR>(mut self, next: &'a mut T) -> Self31546     pub fn push_next<T: ExtendsRayTracingPipelineCreateInfoKHR>(mut self, next: &'a mut T) -> Self {
31547         unsafe {
31548             let next_ptr = next as *mut T as *mut BaseOutStructure;
31549             let last_next = ptr_chain_iter(next).last().unwrap();
31550             (*last_next).p_next = self.inner.p_next as _;
31551             self.inner.p_next = next_ptr as _;
31552         }
31553         self
31554     }
31555     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31556     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31557     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingPipelineCreateInfoKHR31558     pub fn build(self) -> RayTracingPipelineCreateInfoKHR {
31559         self.inner
31560     }
31561 }
31562 #[repr(C)]
31563 #[derive(Copy, Clone, Debug)]
31564 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryTrianglesNV.html>"]
31565 pub struct GeometryTrianglesNV {
31566     pub s_type: StructureType,
31567     pub p_next: *const c_void,
31568     pub vertex_data: Buffer,
31569     pub vertex_offset: DeviceSize,
31570     pub vertex_count: u32,
31571     pub vertex_stride: DeviceSize,
31572     pub vertex_format: Format,
31573     pub index_data: Buffer,
31574     pub index_offset: DeviceSize,
31575     pub index_count: u32,
31576     pub index_type: IndexType,
31577     pub transform_data: Buffer,
31578     pub transform_offset: DeviceSize,
31579 }
31580 impl ::std::default::Default for GeometryTrianglesNV {
default() -> GeometryTrianglesNV31581     fn default() -> GeometryTrianglesNV {
31582         GeometryTrianglesNV {
31583             s_type: StructureType::GEOMETRY_TRIANGLES_NV,
31584             p_next: ::std::ptr::null(),
31585             vertex_data: Buffer::default(),
31586             vertex_offset: DeviceSize::default(),
31587             vertex_count: u32::default(),
31588             vertex_stride: DeviceSize::default(),
31589             vertex_format: Format::default(),
31590             index_data: Buffer::default(),
31591             index_offset: DeviceSize::default(),
31592             index_count: u32::default(),
31593             index_type: IndexType::default(),
31594             transform_data: Buffer::default(),
31595             transform_offset: DeviceSize::default(),
31596         }
31597     }
31598 }
31599 impl GeometryTrianglesNV {
builder<'a>() -> GeometryTrianglesNVBuilder<'a>31600     pub fn builder<'a>() -> GeometryTrianglesNVBuilder<'a> {
31601         GeometryTrianglesNVBuilder {
31602             inner: GeometryTrianglesNV::default(),
31603             marker: ::std::marker::PhantomData,
31604         }
31605     }
31606 }
31607 #[repr(transparent)]
31608 pub struct GeometryTrianglesNVBuilder<'a> {
31609     inner: GeometryTrianglesNV,
31610     marker: ::std::marker::PhantomData<&'a ()>,
31611 }
31612 impl<'a> ::std::ops::Deref for GeometryTrianglesNVBuilder<'a> {
31613     type Target = GeometryTrianglesNV;
deref(&self) -> &Self::Target31614     fn deref(&self) -> &Self::Target {
31615         &self.inner
31616     }
31617 }
31618 impl<'a> ::std::ops::DerefMut for GeometryTrianglesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31619     fn deref_mut(&mut self) -> &mut Self::Target {
31620         &mut self.inner
31621     }
31622 }
31623 impl<'a> GeometryTrianglesNVBuilder<'a> {
vertex_data(mut self, vertex_data: Buffer) -> Self31624     pub fn vertex_data(mut self, vertex_data: Buffer) -> Self {
31625         self.inner.vertex_data = vertex_data;
31626         self
31627     }
vertex_offset(mut self, vertex_offset: DeviceSize) -> Self31628     pub fn vertex_offset(mut self, vertex_offset: DeviceSize) -> Self {
31629         self.inner.vertex_offset = vertex_offset;
31630         self
31631     }
vertex_count(mut self, vertex_count: u32) -> Self31632     pub fn vertex_count(mut self, vertex_count: u32) -> Self {
31633         self.inner.vertex_count = vertex_count;
31634         self
31635     }
vertex_stride(mut self, vertex_stride: DeviceSize) -> Self31636     pub fn vertex_stride(mut self, vertex_stride: DeviceSize) -> Self {
31637         self.inner.vertex_stride = vertex_stride;
31638         self
31639     }
vertex_format(mut self, vertex_format: Format) -> Self31640     pub fn vertex_format(mut self, vertex_format: Format) -> Self {
31641         self.inner.vertex_format = vertex_format;
31642         self
31643     }
index_data(mut self, index_data: Buffer) -> Self31644     pub fn index_data(mut self, index_data: Buffer) -> Self {
31645         self.inner.index_data = index_data;
31646         self
31647     }
index_offset(mut self, index_offset: DeviceSize) -> Self31648     pub fn index_offset(mut self, index_offset: DeviceSize) -> Self {
31649         self.inner.index_offset = index_offset;
31650         self
31651     }
index_count(mut self, index_count: u32) -> Self31652     pub fn index_count(mut self, index_count: u32) -> Self {
31653         self.inner.index_count = index_count;
31654         self
31655     }
index_type(mut self, index_type: IndexType) -> Self31656     pub fn index_type(mut self, index_type: IndexType) -> Self {
31657         self.inner.index_type = index_type;
31658         self
31659     }
transform_data(mut self, transform_data: Buffer) -> Self31660     pub fn transform_data(mut self, transform_data: Buffer) -> Self {
31661         self.inner.transform_data = transform_data;
31662         self
31663     }
transform_offset(mut self, transform_offset: DeviceSize) -> Self31664     pub fn transform_offset(mut self, transform_offset: DeviceSize) -> Self {
31665         self.inner.transform_offset = transform_offset;
31666         self
31667     }
31668     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31669     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31670     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryTrianglesNV31671     pub fn build(self) -> GeometryTrianglesNV {
31672         self.inner
31673     }
31674 }
31675 #[repr(C)]
31676 #[derive(Copy, Clone, Debug)]
31677 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryAABBNV.html>"]
31678 pub struct GeometryAABBNV {
31679     pub s_type: StructureType,
31680     pub p_next: *const c_void,
31681     pub aabb_data: Buffer,
31682     pub num_aab_bs: u32,
31683     pub stride: u32,
31684     pub offset: DeviceSize,
31685 }
31686 impl ::std::default::Default for GeometryAABBNV {
default() -> GeometryAABBNV31687     fn default() -> GeometryAABBNV {
31688         GeometryAABBNV {
31689             s_type: StructureType::GEOMETRY_AABB_NV,
31690             p_next: ::std::ptr::null(),
31691             aabb_data: Buffer::default(),
31692             num_aab_bs: u32::default(),
31693             stride: u32::default(),
31694             offset: DeviceSize::default(),
31695         }
31696     }
31697 }
31698 impl GeometryAABBNV {
builder<'a>() -> GeometryAABBNVBuilder<'a>31699     pub fn builder<'a>() -> GeometryAABBNVBuilder<'a> {
31700         GeometryAABBNVBuilder {
31701             inner: GeometryAABBNV::default(),
31702             marker: ::std::marker::PhantomData,
31703         }
31704     }
31705 }
31706 #[repr(transparent)]
31707 pub struct GeometryAABBNVBuilder<'a> {
31708     inner: GeometryAABBNV,
31709     marker: ::std::marker::PhantomData<&'a ()>,
31710 }
31711 impl<'a> ::std::ops::Deref for GeometryAABBNVBuilder<'a> {
31712     type Target = GeometryAABBNV;
deref(&self) -> &Self::Target31713     fn deref(&self) -> &Self::Target {
31714         &self.inner
31715     }
31716 }
31717 impl<'a> ::std::ops::DerefMut for GeometryAABBNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31718     fn deref_mut(&mut self) -> &mut Self::Target {
31719         &mut self.inner
31720     }
31721 }
31722 impl<'a> GeometryAABBNVBuilder<'a> {
aabb_data(mut self, aabb_data: Buffer) -> Self31723     pub fn aabb_data(mut self, aabb_data: Buffer) -> Self {
31724         self.inner.aabb_data = aabb_data;
31725         self
31726     }
num_aab_bs(mut self, num_aab_bs: u32) -> Self31727     pub fn num_aab_bs(mut self, num_aab_bs: u32) -> Self {
31728         self.inner.num_aab_bs = num_aab_bs;
31729         self
31730     }
stride(mut self, stride: u32) -> Self31731     pub fn stride(mut self, stride: u32) -> Self {
31732         self.inner.stride = stride;
31733         self
31734     }
offset(mut self, offset: DeviceSize) -> Self31735     pub fn offset(mut self, offset: DeviceSize) -> Self {
31736         self.inner.offset = offset;
31737         self
31738     }
31739     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31740     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31741     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryAABBNV31742     pub fn build(self) -> GeometryAABBNV {
31743         self.inner
31744     }
31745 }
31746 #[repr(C)]
31747 #[derive(Copy, Clone, Default, Debug)]
31748 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryDataNV.html>"]
31749 pub struct GeometryDataNV {
31750     pub triangles: GeometryTrianglesNV,
31751     pub aabbs: GeometryAABBNV,
31752 }
31753 impl GeometryDataNV {
builder<'a>() -> GeometryDataNVBuilder<'a>31754     pub fn builder<'a>() -> GeometryDataNVBuilder<'a> {
31755         GeometryDataNVBuilder {
31756             inner: GeometryDataNV::default(),
31757             marker: ::std::marker::PhantomData,
31758         }
31759     }
31760 }
31761 #[repr(transparent)]
31762 pub struct GeometryDataNVBuilder<'a> {
31763     inner: GeometryDataNV,
31764     marker: ::std::marker::PhantomData<&'a ()>,
31765 }
31766 impl<'a> ::std::ops::Deref for GeometryDataNVBuilder<'a> {
31767     type Target = GeometryDataNV;
deref(&self) -> &Self::Target31768     fn deref(&self) -> &Self::Target {
31769         &self.inner
31770     }
31771 }
31772 impl<'a> ::std::ops::DerefMut for GeometryDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31773     fn deref_mut(&mut self) -> &mut Self::Target {
31774         &mut self.inner
31775     }
31776 }
31777 impl<'a> GeometryDataNVBuilder<'a> {
triangles(mut self, triangles: GeometryTrianglesNV) -> Self31778     pub fn triangles(mut self, triangles: GeometryTrianglesNV) -> Self {
31779         self.inner.triangles = triangles;
31780         self
31781     }
aabbs(mut self, aabbs: GeometryAABBNV) -> Self31782     pub fn aabbs(mut self, aabbs: GeometryAABBNV) -> Self {
31783         self.inner.aabbs = aabbs;
31784         self
31785     }
31786     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31787     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31788     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryDataNV31789     pub fn build(self) -> GeometryDataNV {
31790         self.inner
31791     }
31792 }
31793 #[repr(C)]
31794 #[derive(Copy, Clone, Debug)]
31795 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryNV.html>"]
31796 pub struct GeometryNV {
31797     pub s_type: StructureType,
31798     pub p_next: *const c_void,
31799     pub geometry_type: GeometryTypeKHR,
31800     pub geometry: GeometryDataNV,
31801     pub flags: GeometryFlagsKHR,
31802 }
31803 impl ::std::default::Default for GeometryNV {
default() -> GeometryNV31804     fn default() -> GeometryNV {
31805         GeometryNV {
31806             s_type: StructureType::GEOMETRY_NV,
31807             p_next: ::std::ptr::null(),
31808             geometry_type: GeometryTypeKHR::default(),
31809             geometry: GeometryDataNV::default(),
31810             flags: GeometryFlagsKHR::default(),
31811         }
31812     }
31813 }
31814 impl GeometryNV {
builder<'a>() -> GeometryNVBuilder<'a>31815     pub fn builder<'a>() -> GeometryNVBuilder<'a> {
31816         GeometryNVBuilder {
31817             inner: GeometryNV::default(),
31818             marker: ::std::marker::PhantomData,
31819         }
31820     }
31821 }
31822 #[repr(transparent)]
31823 pub struct GeometryNVBuilder<'a> {
31824     inner: GeometryNV,
31825     marker: ::std::marker::PhantomData<&'a ()>,
31826 }
31827 impl<'a> ::std::ops::Deref for GeometryNVBuilder<'a> {
31828     type Target = GeometryNV;
deref(&self) -> &Self::Target31829     fn deref(&self) -> &Self::Target {
31830         &self.inner
31831     }
31832 }
31833 impl<'a> ::std::ops::DerefMut for GeometryNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31834     fn deref_mut(&mut self) -> &mut Self::Target {
31835         &mut self.inner
31836     }
31837 }
31838 impl<'a> GeometryNVBuilder<'a> {
geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self31839     pub fn geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self {
31840         self.inner.geometry_type = geometry_type;
31841         self
31842     }
geometry(mut self, geometry: GeometryDataNV) -> Self31843     pub fn geometry(mut self, geometry: GeometryDataNV) -> Self {
31844         self.inner.geometry = geometry;
31845         self
31846     }
flags(mut self, flags: GeometryFlagsKHR) -> Self31847     pub fn flags(mut self, flags: GeometryFlagsKHR) -> Self {
31848         self.inner.flags = flags;
31849         self
31850     }
31851     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31852     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31853     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryNV31854     pub fn build(self) -> GeometryNV {
31855         self.inner
31856     }
31857 }
31858 #[repr(C)]
31859 #[derive(Copy, Clone, Debug)]
31860 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureInfoNV.html>"]
31861 pub struct AccelerationStructureInfoNV {
31862     pub s_type: StructureType,
31863     pub p_next: *const c_void,
31864     pub ty: AccelerationStructureTypeNV,
31865     pub flags: BuildAccelerationStructureFlagsNV,
31866     pub instance_count: u32,
31867     pub geometry_count: u32,
31868     pub p_geometries: *const GeometryNV,
31869 }
31870 impl ::std::default::Default for AccelerationStructureInfoNV {
default() -> AccelerationStructureInfoNV31871     fn default() -> AccelerationStructureInfoNV {
31872         AccelerationStructureInfoNV {
31873             s_type: StructureType::ACCELERATION_STRUCTURE_INFO_NV,
31874             p_next: ::std::ptr::null(),
31875             ty: AccelerationStructureTypeNV::default(),
31876             flags: BuildAccelerationStructureFlagsNV::default(),
31877             instance_count: u32::default(),
31878             geometry_count: u32::default(),
31879             p_geometries: ::std::ptr::null(),
31880         }
31881     }
31882 }
31883 impl AccelerationStructureInfoNV {
builder<'a>() -> AccelerationStructureInfoNVBuilder<'a>31884     pub fn builder<'a>() -> AccelerationStructureInfoNVBuilder<'a> {
31885         AccelerationStructureInfoNVBuilder {
31886             inner: AccelerationStructureInfoNV::default(),
31887             marker: ::std::marker::PhantomData,
31888         }
31889     }
31890 }
31891 #[repr(transparent)]
31892 pub struct AccelerationStructureInfoNVBuilder<'a> {
31893     inner: AccelerationStructureInfoNV,
31894     marker: ::std::marker::PhantomData<&'a ()>,
31895 }
31896 impl<'a> ::std::ops::Deref for AccelerationStructureInfoNVBuilder<'a> {
31897     type Target = AccelerationStructureInfoNV;
deref(&self) -> &Self::Target31898     fn deref(&self) -> &Self::Target {
31899         &self.inner
31900     }
31901 }
31902 impl<'a> ::std::ops::DerefMut for AccelerationStructureInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31903     fn deref_mut(&mut self) -> &mut Self::Target {
31904         &mut self.inner
31905     }
31906 }
31907 impl<'a> AccelerationStructureInfoNVBuilder<'a> {
ty(mut self, ty: AccelerationStructureTypeNV) -> Self31908     pub fn ty(mut self, ty: AccelerationStructureTypeNV) -> Self {
31909         self.inner.ty = ty;
31910         self
31911     }
flags(mut self, flags: BuildAccelerationStructureFlagsNV) -> Self31912     pub fn flags(mut self, flags: BuildAccelerationStructureFlagsNV) -> Self {
31913         self.inner.flags = flags;
31914         self
31915     }
instance_count(mut self, instance_count: u32) -> Self31916     pub fn instance_count(mut self, instance_count: u32) -> Self {
31917         self.inner.instance_count = instance_count;
31918         self
31919     }
geometries(mut self, geometries: &'a [GeometryNV]) -> Self31920     pub fn geometries(mut self, geometries: &'a [GeometryNV]) -> Self {
31921         self.inner.geometry_count = geometries.len() as _;
31922         self.inner.p_geometries = geometries.as_ptr();
31923         self
31924     }
31925     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31926     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31927     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureInfoNV31928     pub fn build(self) -> AccelerationStructureInfoNV {
31929         self.inner
31930     }
31931 }
31932 #[repr(C)]
31933 #[derive(Copy, Clone, Debug)]
31934 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureCreateInfoNV.html>"]
31935 pub struct AccelerationStructureCreateInfoNV {
31936     pub s_type: StructureType,
31937     pub p_next: *const c_void,
31938     pub compacted_size: DeviceSize,
31939     pub info: AccelerationStructureInfoNV,
31940 }
31941 impl ::std::default::Default for AccelerationStructureCreateInfoNV {
default() -> AccelerationStructureCreateInfoNV31942     fn default() -> AccelerationStructureCreateInfoNV {
31943         AccelerationStructureCreateInfoNV {
31944             s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV,
31945             p_next: ::std::ptr::null(),
31946             compacted_size: DeviceSize::default(),
31947             info: AccelerationStructureInfoNV::default(),
31948         }
31949     }
31950 }
31951 impl AccelerationStructureCreateInfoNV {
builder<'a>() -> AccelerationStructureCreateInfoNVBuilder<'a>31952     pub fn builder<'a>() -> AccelerationStructureCreateInfoNVBuilder<'a> {
31953         AccelerationStructureCreateInfoNVBuilder {
31954             inner: AccelerationStructureCreateInfoNV::default(),
31955             marker: ::std::marker::PhantomData,
31956         }
31957     }
31958 }
31959 #[repr(transparent)]
31960 pub struct AccelerationStructureCreateInfoNVBuilder<'a> {
31961     inner: AccelerationStructureCreateInfoNV,
31962     marker: ::std::marker::PhantomData<&'a ()>,
31963 }
31964 impl<'a> ::std::ops::Deref for AccelerationStructureCreateInfoNVBuilder<'a> {
31965     type Target = AccelerationStructureCreateInfoNV;
deref(&self) -> &Self::Target31966     fn deref(&self) -> &Self::Target {
31967         &self.inner
31968     }
31969 }
31970 impl<'a> ::std::ops::DerefMut for AccelerationStructureCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31971     fn deref_mut(&mut self) -> &mut Self::Target {
31972         &mut self.inner
31973     }
31974 }
31975 impl<'a> AccelerationStructureCreateInfoNVBuilder<'a> {
compacted_size(mut self, compacted_size: DeviceSize) -> Self31976     pub fn compacted_size(mut self, compacted_size: DeviceSize) -> Self {
31977         self.inner.compacted_size = compacted_size;
31978         self
31979     }
info(mut self, info: AccelerationStructureInfoNV) -> Self31980     pub fn info(mut self, info: AccelerationStructureInfoNV) -> Self {
31981         self.inner.info = info;
31982         self
31983     }
31984     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31985     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31986     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureCreateInfoNV31987     pub fn build(self) -> AccelerationStructureCreateInfoNV {
31988         self.inner
31989     }
31990 }
31991 #[repr(C)]
31992 #[derive(Copy, Clone, Debug)]
31993 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindAccelerationStructureMemoryInfoNV.html>"]
31994 pub struct BindAccelerationStructureMemoryInfoNV {
31995     pub s_type: StructureType,
31996     pub p_next: *const c_void,
31997     pub acceleration_structure: AccelerationStructureNV,
31998     pub memory: DeviceMemory,
31999     pub memory_offset: DeviceSize,
32000     pub device_index_count: u32,
32001     pub p_device_indices: *const u32,
32002 }
32003 impl ::std::default::Default for BindAccelerationStructureMemoryInfoNV {
default() -> BindAccelerationStructureMemoryInfoNV32004     fn default() -> BindAccelerationStructureMemoryInfoNV {
32005         BindAccelerationStructureMemoryInfoNV {
32006             s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
32007             p_next: ::std::ptr::null(),
32008             acceleration_structure: AccelerationStructureNV::default(),
32009             memory: DeviceMemory::default(),
32010             memory_offset: DeviceSize::default(),
32011             device_index_count: u32::default(),
32012             p_device_indices: ::std::ptr::null(),
32013         }
32014     }
32015 }
32016 impl BindAccelerationStructureMemoryInfoNV {
builder<'a>() -> BindAccelerationStructureMemoryInfoNVBuilder<'a>32017     pub fn builder<'a>() -> BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32018         BindAccelerationStructureMemoryInfoNVBuilder {
32019             inner: BindAccelerationStructureMemoryInfoNV::default(),
32020             marker: ::std::marker::PhantomData,
32021         }
32022     }
32023 }
32024 #[repr(transparent)]
32025 pub struct BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32026     inner: BindAccelerationStructureMemoryInfoNV,
32027     marker: ::std::marker::PhantomData<&'a ()>,
32028 }
32029 impl<'a> ::std::ops::Deref for BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32030     type Target = BindAccelerationStructureMemoryInfoNV;
deref(&self) -> &Self::Target32031     fn deref(&self) -> &Self::Target {
32032         &self.inner
32033     }
32034 }
32035 impl<'a> ::std::ops::DerefMut for BindAccelerationStructureMemoryInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32036     fn deref_mut(&mut self) -> &mut Self::Target {
32037         &mut self.inner
32038     }
32039 }
32040 impl<'a> BindAccelerationStructureMemoryInfoNVBuilder<'a> {
acceleration_structure( mut self, acceleration_structure: AccelerationStructureNV, ) -> Self32041     pub fn acceleration_structure(
32042         mut self,
32043         acceleration_structure: AccelerationStructureNV,
32044     ) -> Self {
32045         self.inner.acceleration_structure = acceleration_structure;
32046         self
32047     }
memory(mut self, memory: DeviceMemory) -> Self32048     pub fn memory(mut self, memory: DeviceMemory) -> Self {
32049         self.inner.memory = memory;
32050         self
32051     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self32052     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
32053         self.inner.memory_offset = memory_offset;
32054         self
32055     }
device_indices(mut self, device_indices: &'a [u32]) -> Self32056     pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self {
32057         self.inner.device_index_count = device_indices.len() as _;
32058         self.inner.p_device_indices = device_indices.as_ptr();
32059         self
32060     }
32061     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32062     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32063     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindAccelerationStructureMemoryInfoNV32064     pub fn build(self) -> BindAccelerationStructureMemoryInfoNV {
32065         self.inner
32066     }
32067 }
32068 #[repr(C)]
32069 #[derive(Copy, Clone, Debug)]
32070 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>"]
32071 pub struct WriteDescriptorSetAccelerationStructureKHR {
32072     pub s_type: StructureType,
32073     pub p_next: *const c_void,
32074     pub acceleration_structure_count: u32,
32075     pub p_acceleration_structures: *const AccelerationStructureKHR,
32076 }
32077 impl ::std::default::Default for WriteDescriptorSetAccelerationStructureKHR {
default() -> WriteDescriptorSetAccelerationStructureKHR32078     fn default() -> WriteDescriptorSetAccelerationStructureKHR {
32079         WriteDescriptorSetAccelerationStructureKHR {
32080             s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
32081             p_next: ::std::ptr::null(),
32082             acceleration_structure_count: u32::default(),
32083             p_acceleration_structures: ::std::ptr::null(),
32084         }
32085     }
32086 }
32087 impl WriteDescriptorSetAccelerationStructureKHR {
builder<'a>() -> WriteDescriptorSetAccelerationStructureKHRBuilder<'a>32088     pub fn builder<'a>() -> WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32089         WriteDescriptorSetAccelerationStructureKHRBuilder {
32090             inner: WriteDescriptorSetAccelerationStructureKHR::default(),
32091             marker: ::std::marker::PhantomData,
32092         }
32093     }
32094 }
32095 #[repr(transparent)]
32096 pub struct WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32097     inner: WriteDescriptorSetAccelerationStructureKHR,
32098     marker: ::std::marker::PhantomData<&'a ()>,
32099 }
32100 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureKHRBuilder<'_> {}
32101 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureKHR {}
32102 impl<'a> ::std::ops::Deref for WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32103     type Target = WriteDescriptorSetAccelerationStructureKHR;
deref(&self) -> &Self::Target32104     fn deref(&self) -> &Self::Target {
32105         &self.inner
32106     }
32107 }
32108 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32109     fn deref_mut(&mut self) -> &mut Self::Target {
32110         &mut self.inner
32111     }
32112 }
32113 impl<'a> WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
acceleration_structures( mut self, acceleration_structures: &'a [AccelerationStructureKHR], ) -> Self32114     pub fn acceleration_structures(
32115         mut self,
32116         acceleration_structures: &'a [AccelerationStructureKHR],
32117     ) -> Self {
32118         self.inner.acceleration_structure_count = acceleration_structures.len() as _;
32119         self.inner.p_acceleration_structures = acceleration_structures.as_ptr();
32120         self
32121     }
32122     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32123     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32124     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSetAccelerationStructureKHR32125     pub fn build(self) -> WriteDescriptorSetAccelerationStructureKHR {
32126         self.inner
32127     }
32128 }
32129 #[repr(C)]
32130 #[derive(Copy, Clone, Debug)]
32131 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>"]
32132 pub struct WriteDescriptorSetAccelerationStructureNV {
32133     pub s_type: StructureType,
32134     pub p_next: *const c_void,
32135     pub acceleration_structure_count: u32,
32136     pub p_acceleration_structures: *const AccelerationStructureNV,
32137 }
32138 impl ::std::default::Default for WriteDescriptorSetAccelerationStructureNV {
default() -> WriteDescriptorSetAccelerationStructureNV32139     fn default() -> WriteDescriptorSetAccelerationStructureNV {
32140         WriteDescriptorSetAccelerationStructureNV {
32141             s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
32142             p_next: ::std::ptr::null(),
32143             acceleration_structure_count: u32::default(),
32144             p_acceleration_structures: ::std::ptr::null(),
32145         }
32146     }
32147 }
32148 impl WriteDescriptorSetAccelerationStructureNV {
builder<'a>() -> WriteDescriptorSetAccelerationStructureNVBuilder<'a>32149     pub fn builder<'a>() -> WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32150         WriteDescriptorSetAccelerationStructureNVBuilder {
32151             inner: WriteDescriptorSetAccelerationStructureNV::default(),
32152             marker: ::std::marker::PhantomData,
32153         }
32154     }
32155 }
32156 #[repr(transparent)]
32157 pub struct WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32158     inner: WriteDescriptorSetAccelerationStructureNV,
32159     marker: ::std::marker::PhantomData<&'a ()>,
32160 }
32161 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureNVBuilder<'_> {}
32162 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureNV {}
32163 impl<'a> ::std::ops::Deref for WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32164     type Target = WriteDescriptorSetAccelerationStructureNV;
deref(&self) -> &Self::Target32165     fn deref(&self) -> &Self::Target {
32166         &self.inner
32167     }
32168 }
32169 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32170     fn deref_mut(&mut self) -> &mut Self::Target {
32171         &mut self.inner
32172     }
32173 }
32174 impl<'a> WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
acceleration_structures( mut self, acceleration_structures: &'a [AccelerationStructureNV], ) -> Self32175     pub fn acceleration_structures(
32176         mut self,
32177         acceleration_structures: &'a [AccelerationStructureNV],
32178     ) -> Self {
32179         self.inner.acceleration_structure_count = acceleration_structures.len() as _;
32180         self.inner.p_acceleration_structures = acceleration_structures.as_ptr();
32181         self
32182     }
32183     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32184     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32185     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSetAccelerationStructureNV32186     pub fn build(self) -> WriteDescriptorSetAccelerationStructureNV {
32187         self.inner
32188     }
32189 }
32190 #[repr(C)]
32191 #[derive(Copy, Clone, Debug)]
32192 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMemoryRequirementsInfoNV.html>"]
32193 pub struct AccelerationStructureMemoryRequirementsInfoNV {
32194     pub s_type: StructureType,
32195     pub p_next: *const c_void,
32196     pub ty: AccelerationStructureMemoryRequirementsTypeNV,
32197     pub acceleration_structure: AccelerationStructureNV,
32198 }
32199 impl ::std::default::Default for AccelerationStructureMemoryRequirementsInfoNV {
default() -> AccelerationStructureMemoryRequirementsInfoNV32200     fn default() -> AccelerationStructureMemoryRequirementsInfoNV {
32201         AccelerationStructureMemoryRequirementsInfoNV {
32202             s_type: StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
32203             p_next: ::std::ptr::null(),
32204             ty: AccelerationStructureMemoryRequirementsTypeNV::default(),
32205             acceleration_structure: AccelerationStructureNV::default(),
32206         }
32207     }
32208 }
32209 impl AccelerationStructureMemoryRequirementsInfoNV {
builder<'a>() -> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a>32210     pub fn builder<'a>() -> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32211         AccelerationStructureMemoryRequirementsInfoNVBuilder {
32212             inner: AccelerationStructureMemoryRequirementsInfoNV::default(),
32213             marker: ::std::marker::PhantomData,
32214         }
32215     }
32216 }
32217 #[repr(transparent)]
32218 pub struct AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32219     inner: AccelerationStructureMemoryRequirementsInfoNV,
32220     marker: ::std::marker::PhantomData<&'a ()>,
32221 }
32222 impl<'a> ::std::ops::Deref for AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32223     type Target = AccelerationStructureMemoryRequirementsInfoNV;
deref(&self) -> &Self::Target32224     fn deref(&self) -> &Self::Target {
32225         &self.inner
32226     }
32227 }
32228 impl<'a> ::std::ops::DerefMut for AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32229     fn deref_mut(&mut self) -> &mut Self::Target {
32230         &mut self.inner
32231     }
32232 }
32233 impl<'a> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
ty(mut self, ty: AccelerationStructureMemoryRequirementsTypeNV) -> Self32234     pub fn ty(mut self, ty: AccelerationStructureMemoryRequirementsTypeNV) -> Self {
32235         self.inner.ty = ty;
32236         self
32237     }
acceleration_structure( mut self, acceleration_structure: AccelerationStructureNV, ) -> Self32238     pub fn acceleration_structure(
32239         mut self,
32240         acceleration_structure: AccelerationStructureNV,
32241     ) -> Self {
32242         self.inner.acceleration_structure = acceleration_structure;
32243         self
32244     }
32245     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32246     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32247     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureMemoryRequirementsInfoNV32248     pub fn build(self) -> AccelerationStructureMemoryRequirementsInfoNV {
32249         self.inner
32250     }
32251 }
32252 #[repr(C)]
32253 #[derive(Copy, Clone, Debug)]
32254 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>"]
32255 pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
32256     pub s_type: StructureType,
32257     pub p_next: *mut c_void,
32258     pub acceleration_structure: Bool32,
32259     pub acceleration_structure_capture_replay: Bool32,
32260     pub acceleration_structure_indirect_build: Bool32,
32261     pub acceleration_structure_host_commands: Bool32,
32262     pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
32263 }
32264 impl ::std::default::Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
default() -> PhysicalDeviceAccelerationStructureFeaturesKHR32265     fn default() -> PhysicalDeviceAccelerationStructureFeaturesKHR {
32266         PhysicalDeviceAccelerationStructureFeaturesKHR {
32267             s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
32268             p_next: ::std::ptr::null_mut(),
32269             acceleration_structure: Bool32::default(),
32270             acceleration_structure_capture_replay: Bool32::default(),
32271             acceleration_structure_indirect_build: Bool32::default(),
32272             acceleration_structure_host_commands: Bool32::default(),
32273             descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
32274         }
32275     }
32276 }
32277 impl PhysicalDeviceAccelerationStructureFeaturesKHR {
builder<'a>() -> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a>32278     pub fn builder<'a>() -> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32279         PhysicalDeviceAccelerationStructureFeaturesKHRBuilder {
32280             inner: PhysicalDeviceAccelerationStructureFeaturesKHR::default(),
32281             marker: ::std::marker::PhantomData,
32282         }
32283     }
32284 }
32285 #[repr(transparent)]
32286 pub struct PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32287     inner: PhysicalDeviceAccelerationStructureFeaturesKHR,
32288     marker: ::std::marker::PhantomData<&'a ()>,
32289 }
32290 unsafe impl ExtendsPhysicalDeviceFeatures2
32291     for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'_>
32292 {
32293 }
32294 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceAccelerationStructureFeaturesKHR {}
32295 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'_> {}
32296 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAccelerationStructureFeaturesKHR {}
32297 impl<'a> ::std::ops::Deref for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32298     type Target = PhysicalDeviceAccelerationStructureFeaturesKHR;
deref(&self) -> &Self::Target32299     fn deref(&self) -> &Self::Target {
32300         &self.inner
32301     }
32302 }
32303 impl<'a> ::std::ops::DerefMut for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32304     fn deref_mut(&mut self) -> &mut Self::Target {
32305         &mut self.inner
32306     }
32307 }
32308 impl<'a> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
acceleration_structure(mut self, acceleration_structure: bool) -> Self32309     pub fn acceleration_structure(mut self, acceleration_structure: bool) -> Self {
32310         self.inner.acceleration_structure = acceleration_structure.into();
32311         self
32312     }
acceleration_structure_capture_replay( mut self, acceleration_structure_capture_replay: bool, ) -> Self32313     pub fn acceleration_structure_capture_replay(
32314         mut self,
32315         acceleration_structure_capture_replay: bool,
32316     ) -> Self {
32317         self.inner.acceleration_structure_capture_replay =
32318             acceleration_structure_capture_replay.into();
32319         self
32320     }
acceleration_structure_indirect_build( mut self, acceleration_structure_indirect_build: bool, ) -> Self32321     pub fn acceleration_structure_indirect_build(
32322         mut self,
32323         acceleration_structure_indirect_build: bool,
32324     ) -> Self {
32325         self.inner.acceleration_structure_indirect_build =
32326             acceleration_structure_indirect_build.into();
32327         self
32328     }
acceleration_structure_host_commands( mut self, acceleration_structure_host_commands: bool, ) -> Self32329     pub fn acceleration_structure_host_commands(
32330         mut self,
32331         acceleration_structure_host_commands: bool,
32332     ) -> Self {
32333         self.inner.acceleration_structure_host_commands =
32334             acceleration_structure_host_commands.into();
32335         self
32336     }
descriptor_binding_acceleration_structure_update_after_bind( mut self, descriptor_binding_acceleration_structure_update_after_bind: bool, ) -> Self32337     pub fn descriptor_binding_acceleration_structure_update_after_bind(
32338         mut self,
32339         descriptor_binding_acceleration_structure_update_after_bind: bool,
32340     ) -> Self {
32341         self.inner
32342             .descriptor_binding_acceleration_structure_update_after_bind =
32343             descriptor_binding_acceleration_structure_update_after_bind.into();
32344         self
32345     }
32346     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32347     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32348     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceAccelerationStructureFeaturesKHR32349     pub fn build(self) -> PhysicalDeviceAccelerationStructureFeaturesKHR {
32350         self.inner
32351     }
32352 }
32353 #[repr(C)]
32354 #[derive(Copy, Clone, Debug)]
32355 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>"]
32356 pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
32357     pub s_type: StructureType,
32358     pub p_next: *mut c_void,
32359     pub ray_tracing_pipeline: Bool32,
32360     pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
32361     pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
32362     pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
32363     pub ray_traversal_primitive_culling: Bool32,
32364 }
32365 impl ::std::default::Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
default() -> PhysicalDeviceRayTracingPipelineFeaturesKHR32366     fn default() -> PhysicalDeviceRayTracingPipelineFeaturesKHR {
32367         PhysicalDeviceRayTracingPipelineFeaturesKHR {
32368             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
32369             p_next: ::std::ptr::null_mut(),
32370             ray_tracing_pipeline: Bool32::default(),
32371             ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
32372             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
32373             ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
32374             ray_traversal_primitive_culling: Bool32::default(),
32375         }
32376     }
32377 }
32378 impl PhysicalDeviceRayTracingPipelineFeaturesKHR {
builder<'a>() -> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a>32379     pub fn builder<'a>() -> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32380         PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder {
32381             inner: PhysicalDeviceRayTracingPipelineFeaturesKHR::default(),
32382             marker: ::std::marker::PhantomData,
32383         }
32384     }
32385 }
32386 #[repr(transparent)]
32387 pub struct PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32388     inner: PhysicalDeviceRayTracingPipelineFeaturesKHR,
32389     marker: ::std::marker::PhantomData<&'a ()>,
32390 }
32391 unsafe impl ExtendsPhysicalDeviceFeatures2
32392     for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'_>
32393 {
32394 }
32395 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
32396 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'_> {}
32397 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
32398 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
32399     type Target = PhysicalDeviceRayTracingPipelineFeaturesKHR;
deref(&self) -> &Self::Target32400     fn deref(&self) -> &Self::Target {
32401         &self.inner
32402     }
32403 }
32404 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32405     fn deref_mut(&mut self) -> &mut Self::Target {
32406         &mut self.inner
32407     }
32408 }
32409 impl<'a> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
ray_tracing_pipeline(mut self, ray_tracing_pipeline: bool) -> Self32410     pub fn ray_tracing_pipeline(mut self, ray_tracing_pipeline: bool) -> Self {
32411         self.inner.ray_tracing_pipeline = ray_tracing_pipeline.into();
32412         self
32413     }
ray_tracing_pipeline_shader_group_handle_capture_replay( mut self, ray_tracing_pipeline_shader_group_handle_capture_replay: bool, ) -> Self32414     pub fn ray_tracing_pipeline_shader_group_handle_capture_replay(
32415         mut self,
32416         ray_tracing_pipeline_shader_group_handle_capture_replay: bool,
32417     ) -> Self {
32418         self.inner
32419             .ray_tracing_pipeline_shader_group_handle_capture_replay =
32420             ray_tracing_pipeline_shader_group_handle_capture_replay.into();
32421         self
32422     }
ray_tracing_pipeline_shader_group_handle_capture_replay_mixed( mut self, ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool, ) -> Self32423     pub fn ray_tracing_pipeline_shader_group_handle_capture_replay_mixed(
32424         mut self,
32425         ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool,
32426     ) -> Self {
32427         self.inner
32428             .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed =
32429             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed.into();
32430         self
32431     }
ray_tracing_pipeline_trace_rays_indirect( mut self, ray_tracing_pipeline_trace_rays_indirect: bool, ) -> Self32432     pub fn ray_tracing_pipeline_trace_rays_indirect(
32433         mut self,
32434         ray_tracing_pipeline_trace_rays_indirect: bool,
32435     ) -> Self {
32436         self.inner.ray_tracing_pipeline_trace_rays_indirect =
32437             ray_tracing_pipeline_trace_rays_indirect.into();
32438         self
32439     }
ray_traversal_primitive_culling( mut self, ray_traversal_primitive_culling: bool, ) -> Self32440     pub fn ray_traversal_primitive_culling(
32441         mut self,
32442         ray_traversal_primitive_culling: bool,
32443     ) -> Self {
32444         self.inner.ray_traversal_primitive_culling = ray_traversal_primitive_culling.into();
32445         self
32446     }
32447     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32448     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32449     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRayTracingPipelineFeaturesKHR32450     pub fn build(self) -> PhysicalDeviceRayTracingPipelineFeaturesKHR {
32451         self.inner
32452     }
32453 }
32454 #[repr(C)]
32455 #[derive(Copy, Clone, Debug)]
32456 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>"]
32457 pub struct PhysicalDeviceRayQueryFeaturesKHR {
32458     pub s_type: StructureType,
32459     pub p_next: *mut c_void,
32460     pub ray_query: Bool32,
32461 }
32462 impl ::std::default::Default for PhysicalDeviceRayQueryFeaturesKHR {
default() -> PhysicalDeviceRayQueryFeaturesKHR32463     fn default() -> PhysicalDeviceRayQueryFeaturesKHR {
32464         PhysicalDeviceRayQueryFeaturesKHR {
32465             s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
32466             p_next: ::std::ptr::null_mut(),
32467             ray_query: Bool32::default(),
32468         }
32469     }
32470 }
32471 impl PhysicalDeviceRayQueryFeaturesKHR {
builder<'a>() -> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a>32472     pub fn builder<'a>() -> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32473         PhysicalDeviceRayQueryFeaturesKHRBuilder {
32474             inner: PhysicalDeviceRayQueryFeaturesKHR::default(),
32475             marker: ::std::marker::PhantomData,
32476         }
32477     }
32478 }
32479 #[repr(transparent)]
32480 pub struct PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32481     inner: PhysicalDeviceRayQueryFeaturesKHR,
32482     marker: ::std::marker::PhantomData<&'a ()>,
32483 }
32484 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayQueryFeaturesKHRBuilder<'_> {}
32485 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayQueryFeaturesKHR {}
32486 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayQueryFeaturesKHRBuilder<'_> {}
32487 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayQueryFeaturesKHR {}
32488 impl<'a> ::std::ops::Deref for PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
32489     type Target = PhysicalDeviceRayQueryFeaturesKHR;
deref(&self) -> &Self::Target32490     fn deref(&self) -> &Self::Target {
32491         &self.inner
32492     }
32493 }
32494 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32495     fn deref_mut(&mut self) -> &mut Self::Target {
32496         &mut self.inner
32497     }
32498 }
32499 impl<'a> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
ray_query(mut self, ray_query: bool) -> Self32500     pub fn ray_query(mut self, ray_query: bool) -> Self {
32501         self.inner.ray_query = ray_query.into();
32502         self
32503     }
32504     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32505     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32506     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRayQueryFeaturesKHR32507     pub fn build(self) -> PhysicalDeviceRayQueryFeaturesKHR {
32508         self.inner
32509     }
32510 }
32511 #[repr(C)]
32512 #[derive(Copy, Clone, Debug)]
32513 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>"]
32514 pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
32515     pub s_type: StructureType,
32516     pub p_next: *mut c_void,
32517     pub max_geometry_count: u64,
32518     pub max_instance_count: u64,
32519     pub max_primitive_count: u64,
32520     pub max_per_stage_descriptor_acceleration_structures: u32,
32521     pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
32522     pub max_descriptor_set_acceleration_structures: u32,
32523     pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
32524     pub min_acceleration_structure_scratch_offset_alignment: u32,
32525 }
32526 impl ::std::default::Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
default() -> PhysicalDeviceAccelerationStructurePropertiesKHR32527     fn default() -> PhysicalDeviceAccelerationStructurePropertiesKHR {
32528         PhysicalDeviceAccelerationStructurePropertiesKHR {
32529             s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
32530             p_next: ::std::ptr::null_mut(),
32531             max_geometry_count: u64::default(),
32532             max_instance_count: u64::default(),
32533             max_primitive_count: u64::default(),
32534             max_per_stage_descriptor_acceleration_structures: u32::default(),
32535             max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
32536             max_descriptor_set_acceleration_structures: u32::default(),
32537             max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
32538             min_acceleration_structure_scratch_offset_alignment: u32::default(),
32539         }
32540     }
32541 }
32542 impl PhysicalDeviceAccelerationStructurePropertiesKHR {
builder<'a>() -> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a>32543     pub fn builder<'a>() -> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32544         PhysicalDeviceAccelerationStructurePropertiesKHRBuilder {
32545             inner: PhysicalDeviceAccelerationStructurePropertiesKHR::default(),
32546             marker: ::std::marker::PhantomData,
32547         }
32548     }
32549 }
32550 #[repr(transparent)]
32551 pub struct PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32552     inner: PhysicalDeviceAccelerationStructurePropertiesKHR,
32553     marker: ::std::marker::PhantomData<&'a ()>,
32554 }
32555 unsafe impl ExtendsPhysicalDeviceProperties2
32556     for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'_>
32557 {
32558 }
32559 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceAccelerationStructurePropertiesKHR {}
32560 impl<'a> ::std::ops::Deref for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
32561     type Target = PhysicalDeviceAccelerationStructurePropertiesKHR;
deref(&self) -> &Self::Target32562     fn deref(&self) -> &Self::Target {
32563         &self.inner
32564     }
32565 }
32566 impl<'a> ::std::ops::DerefMut for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32567     fn deref_mut(&mut self) -> &mut Self::Target {
32568         &mut self.inner
32569     }
32570 }
32571 impl<'a> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
max_geometry_count(mut self, max_geometry_count: u64) -> Self32572     pub fn max_geometry_count(mut self, max_geometry_count: u64) -> Self {
32573         self.inner.max_geometry_count = max_geometry_count;
32574         self
32575     }
max_instance_count(mut self, max_instance_count: u64) -> Self32576     pub fn max_instance_count(mut self, max_instance_count: u64) -> Self {
32577         self.inner.max_instance_count = max_instance_count;
32578         self
32579     }
max_primitive_count(mut self, max_primitive_count: u64) -> Self32580     pub fn max_primitive_count(mut self, max_primitive_count: u64) -> Self {
32581         self.inner.max_primitive_count = max_primitive_count;
32582         self
32583     }
max_per_stage_descriptor_acceleration_structures( mut self, max_per_stage_descriptor_acceleration_structures: u32, ) -> Self32584     pub fn max_per_stage_descriptor_acceleration_structures(
32585         mut self,
32586         max_per_stage_descriptor_acceleration_structures: u32,
32587     ) -> Self {
32588         self.inner.max_per_stage_descriptor_acceleration_structures =
32589             max_per_stage_descriptor_acceleration_structures;
32590         self
32591     }
max_per_stage_descriptor_update_after_bind_acceleration_structures( mut self, max_per_stage_descriptor_update_after_bind_acceleration_structures: u32, ) -> Self32592     pub fn max_per_stage_descriptor_update_after_bind_acceleration_structures(
32593         mut self,
32594         max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
32595     ) -> Self {
32596         self.inner
32597             .max_per_stage_descriptor_update_after_bind_acceleration_structures =
32598             max_per_stage_descriptor_update_after_bind_acceleration_structures;
32599         self
32600     }
max_descriptor_set_acceleration_structures( mut self, max_descriptor_set_acceleration_structures: u32, ) -> Self32601     pub fn max_descriptor_set_acceleration_structures(
32602         mut self,
32603         max_descriptor_set_acceleration_structures: u32,
32604     ) -> Self {
32605         self.inner.max_descriptor_set_acceleration_structures =
32606             max_descriptor_set_acceleration_structures;
32607         self
32608     }
max_descriptor_set_update_after_bind_acceleration_structures( mut self, max_descriptor_set_update_after_bind_acceleration_structures: u32, ) -> Self32609     pub fn max_descriptor_set_update_after_bind_acceleration_structures(
32610         mut self,
32611         max_descriptor_set_update_after_bind_acceleration_structures: u32,
32612     ) -> Self {
32613         self.inner
32614             .max_descriptor_set_update_after_bind_acceleration_structures =
32615             max_descriptor_set_update_after_bind_acceleration_structures;
32616         self
32617     }
min_acceleration_structure_scratch_offset_alignment( mut self, min_acceleration_structure_scratch_offset_alignment: u32, ) -> Self32618     pub fn min_acceleration_structure_scratch_offset_alignment(
32619         mut self,
32620         min_acceleration_structure_scratch_offset_alignment: u32,
32621     ) -> Self {
32622         self.inner
32623             .min_acceleration_structure_scratch_offset_alignment =
32624             min_acceleration_structure_scratch_offset_alignment;
32625         self
32626     }
32627     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32628     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32629     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceAccelerationStructurePropertiesKHR32630     pub fn build(self) -> PhysicalDeviceAccelerationStructurePropertiesKHR {
32631         self.inner
32632     }
32633 }
32634 #[repr(C)]
32635 #[derive(Copy, Clone, Debug)]
32636 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>"]
32637 pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
32638     pub s_type: StructureType,
32639     pub p_next: *mut c_void,
32640     pub shader_group_handle_size: u32,
32641     pub max_ray_recursion_depth: u32,
32642     pub max_shader_group_stride: u32,
32643     pub shader_group_base_alignment: u32,
32644     pub shader_group_handle_capture_replay_size: u32,
32645     pub max_ray_dispatch_invocation_count: u32,
32646     pub shader_group_handle_alignment: u32,
32647     pub max_ray_hit_attribute_size: u32,
32648 }
32649 impl ::std::default::Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
default() -> PhysicalDeviceRayTracingPipelinePropertiesKHR32650     fn default() -> PhysicalDeviceRayTracingPipelinePropertiesKHR {
32651         PhysicalDeviceRayTracingPipelinePropertiesKHR {
32652             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
32653             p_next: ::std::ptr::null_mut(),
32654             shader_group_handle_size: u32::default(),
32655             max_ray_recursion_depth: u32::default(),
32656             max_shader_group_stride: u32::default(),
32657             shader_group_base_alignment: u32::default(),
32658             shader_group_handle_capture_replay_size: u32::default(),
32659             max_ray_dispatch_invocation_count: u32::default(),
32660             shader_group_handle_alignment: u32::default(),
32661             max_ray_hit_attribute_size: u32::default(),
32662         }
32663     }
32664 }
32665 impl PhysicalDeviceRayTracingPipelinePropertiesKHR {
builder<'a>() -> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a>32666     pub fn builder<'a>() -> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
32667         PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder {
32668             inner: PhysicalDeviceRayTracingPipelinePropertiesKHR::default(),
32669             marker: ::std::marker::PhantomData,
32670         }
32671     }
32672 }
32673 #[repr(transparent)]
32674 pub struct PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
32675     inner: PhysicalDeviceRayTracingPipelinePropertiesKHR,
32676     marker: ::std::marker::PhantomData<&'a ()>,
32677 }
32678 unsafe impl ExtendsPhysicalDeviceProperties2
32679     for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'_>
32680 {
32681 }
32682 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
32683 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
32684     type Target = PhysicalDeviceRayTracingPipelinePropertiesKHR;
deref(&self) -> &Self::Target32685     fn deref(&self) -> &Self::Target {
32686         &self.inner
32687     }
32688 }
32689 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32690     fn deref_mut(&mut self) -> &mut Self::Target {
32691         &mut self.inner
32692     }
32693 }
32694 impl<'a> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self32695     pub fn shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self {
32696         self.inner.shader_group_handle_size = shader_group_handle_size;
32697         self
32698     }
max_ray_recursion_depth(mut self, max_ray_recursion_depth: u32) -> Self32699     pub fn max_ray_recursion_depth(mut self, max_ray_recursion_depth: u32) -> Self {
32700         self.inner.max_ray_recursion_depth = max_ray_recursion_depth;
32701         self
32702     }
max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self32703     pub fn max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self {
32704         self.inner.max_shader_group_stride = max_shader_group_stride;
32705         self
32706     }
shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self32707     pub fn shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self {
32708         self.inner.shader_group_base_alignment = shader_group_base_alignment;
32709         self
32710     }
shader_group_handle_capture_replay_size( mut self, shader_group_handle_capture_replay_size: u32, ) -> Self32711     pub fn shader_group_handle_capture_replay_size(
32712         mut self,
32713         shader_group_handle_capture_replay_size: u32,
32714     ) -> Self {
32715         self.inner.shader_group_handle_capture_replay_size =
32716             shader_group_handle_capture_replay_size;
32717         self
32718     }
max_ray_dispatch_invocation_count( mut self, max_ray_dispatch_invocation_count: u32, ) -> Self32719     pub fn max_ray_dispatch_invocation_count(
32720         mut self,
32721         max_ray_dispatch_invocation_count: u32,
32722     ) -> Self {
32723         self.inner.max_ray_dispatch_invocation_count = max_ray_dispatch_invocation_count;
32724         self
32725     }
shader_group_handle_alignment(mut self, shader_group_handle_alignment: u32) -> Self32726     pub fn shader_group_handle_alignment(mut self, shader_group_handle_alignment: u32) -> Self {
32727         self.inner.shader_group_handle_alignment = shader_group_handle_alignment;
32728         self
32729     }
max_ray_hit_attribute_size(mut self, max_ray_hit_attribute_size: u32) -> Self32730     pub fn max_ray_hit_attribute_size(mut self, max_ray_hit_attribute_size: u32) -> Self {
32731         self.inner.max_ray_hit_attribute_size = max_ray_hit_attribute_size;
32732         self
32733     }
32734     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32735     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32736     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRayTracingPipelinePropertiesKHR32737     pub fn build(self) -> PhysicalDeviceRayTracingPipelinePropertiesKHR {
32738         self.inner
32739     }
32740 }
32741 #[repr(C)]
32742 #[derive(Copy, Clone, Debug)]
32743 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>"]
32744 pub struct PhysicalDeviceRayTracingPropertiesNV {
32745     pub s_type: StructureType,
32746     pub p_next: *mut c_void,
32747     pub shader_group_handle_size: u32,
32748     pub max_recursion_depth: u32,
32749     pub max_shader_group_stride: u32,
32750     pub shader_group_base_alignment: u32,
32751     pub max_geometry_count: u64,
32752     pub max_instance_count: u64,
32753     pub max_triangle_count: u64,
32754     pub max_descriptor_set_acceleration_structures: u32,
32755 }
32756 impl ::std::default::Default for PhysicalDeviceRayTracingPropertiesNV {
default() -> PhysicalDeviceRayTracingPropertiesNV32757     fn default() -> PhysicalDeviceRayTracingPropertiesNV {
32758         PhysicalDeviceRayTracingPropertiesNV {
32759             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
32760             p_next: ::std::ptr::null_mut(),
32761             shader_group_handle_size: u32::default(),
32762             max_recursion_depth: u32::default(),
32763             max_shader_group_stride: u32::default(),
32764             shader_group_base_alignment: u32::default(),
32765             max_geometry_count: u64::default(),
32766             max_instance_count: u64::default(),
32767             max_triangle_count: u64::default(),
32768             max_descriptor_set_acceleration_structures: u32::default(),
32769         }
32770     }
32771 }
32772 impl PhysicalDeviceRayTracingPropertiesNV {
builder<'a>() -> PhysicalDeviceRayTracingPropertiesNVBuilder<'a>32773     pub fn builder<'a>() -> PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
32774         PhysicalDeviceRayTracingPropertiesNVBuilder {
32775             inner: PhysicalDeviceRayTracingPropertiesNV::default(),
32776             marker: ::std::marker::PhantomData,
32777         }
32778     }
32779 }
32780 #[repr(transparent)]
32781 pub struct PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
32782     inner: PhysicalDeviceRayTracingPropertiesNV,
32783     marker: ::std::marker::PhantomData<&'a ()>,
32784 }
32785 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPropertiesNVBuilder<'_> {}
32786 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPropertiesNV {}
32787 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
32788     type Target = PhysicalDeviceRayTracingPropertiesNV;
deref(&self) -> &Self::Target32789     fn deref(&self) -> &Self::Target {
32790         &self.inner
32791     }
32792 }
32793 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32794     fn deref_mut(&mut self) -> &mut Self::Target {
32795         &mut self.inner
32796     }
32797 }
32798 impl<'a> PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self32799     pub fn shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self {
32800         self.inner.shader_group_handle_size = shader_group_handle_size;
32801         self
32802     }
max_recursion_depth(mut self, max_recursion_depth: u32) -> Self32803     pub fn max_recursion_depth(mut self, max_recursion_depth: u32) -> Self {
32804         self.inner.max_recursion_depth = max_recursion_depth;
32805         self
32806     }
max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self32807     pub fn max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self {
32808         self.inner.max_shader_group_stride = max_shader_group_stride;
32809         self
32810     }
shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self32811     pub fn shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self {
32812         self.inner.shader_group_base_alignment = shader_group_base_alignment;
32813         self
32814     }
max_geometry_count(mut self, max_geometry_count: u64) -> Self32815     pub fn max_geometry_count(mut self, max_geometry_count: u64) -> Self {
32816         self.inner.max_geometry_count = max_geometry_count;
32817         self
32818     }
max_instance_count(mut self, max_instance_count: u64) -> Self32819     pub fn max_instance_count(mut self, max_instance_count: u64) -> Self {
32820         self.inner.max_instance_count = max_instance_count;
32821         self
32822     }
max_triangle_count(mut self, max_triangle_count: u64) -> Self32823     pub fn max_triangle_count(mut self, max_triangle_count: u64) -> Self {
32824         self.inner.max_triangle_count = max_triangle_count;
32825         self
32826     }
max_descriptor_set_acceleration_structures( mut self, max_descriptor_set_acceleration_structures: u32, ) -> Self32827     pub fn max_descriptor_set_acceleration_structures(
32828         mut self,
32829         max_descriptor_set_acceleration_structures: u32,
32830     ) -> Self {
32831         self.inner.max_descriptor_set_acceleration_structures =
32832             max_descriptor_set_acceleration_structures;
32833         self
32834     }
32835     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32836     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32837     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRayTracingPropertiesNV32838     pub fn build(self) -> PhysicalDeviceRayTracingPropertiesNV {
32839         self.inner
32840     }
32841 }
32842 #[repr(C)]
32843 #[derive(Copy, Clone, Default, Debug)]
32844 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStridedDeviceAddressRegionKHR.html>"]
32845 pub struct StridedDeviceAddressRegionKHR {
32846     pub device_address: DeviceAddress,
32847     pub stride: DeviceSize,
32848     pub size: DeviceSize,
32849 }
32850 impl StridedDeviceAddressRegionKHR {
builder<'a>() -> StridedDeviceAddressRegionKHRBuilder<'a>32851     pub fn builder<'a>() -> StridedDeviceAddressRegionKHRBuilder<'a> {
32852         StridedDeviceAddressRegionKHRBuilder {
32853             inner: StridedDeviceAddressRegionKHR::default(),
32854             marker: ::std::marker::PhantomData,
32855         }
32856     }
32857 }
32858 #[repr(transparent)]
32859 pub struct StridedDeviceAddressRegionKHRBuilder<'a> {
32860     inner: StridedDeviceAddressRegionKHR,
32861     marker: ::std::marker::PhantomData<&'a ()>,
32862 }
32863 impl<'a> ::std::ops::Deref for StridedDeviceAddressRegionKHRBuilder<'a> {
32864     type Target = StridedDeviceAddressRegionKHR;
deref(&self) -> &Self::Target32865     fn deref(&self) -> &Self::Target {
32866         &self.inner
32867     }
32868 }
32869 impl<'a> ::std::ops::DerefMut for StridedDeviceAddressRegionKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32870     fn deref_mut(&mut self) -> &mut Self::Target {
32871         &mut self.inner
32872     }
32873 }
32874 impl<'a> StridedDeviceAddressRegionKHRBuilder<'a> {
device_address(mut self, device_address: DeviceAddress) -> Self32875     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
32876         self.inner.device_address = device_address;
32877         self
32878     }
stride(mut self, stride: DeviceSize) -> Self32879     pub fn stride(mut self, stride: DeviceSize) -> Self {
32880         self.inner.stride = stride;
32881         self
32882     }
size(mut self, size: DeviceSize) -> Self32883     pub fn size(mut self, size: DeviceSize) -> Self {
32884         self.inner.size = size;
32885         self
32886     }
32887     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32888     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32889     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> StridedDeviceAddressRegionKHR32890     pub fn build(self) -> StridedDeviceAddressRegionKHR {
32891         self.inner
32892     }
32893 }
32894 #[repr(C)]
32895 #[derive(Copy, Clone, Default, Debug)]
32896 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTraceRaysIndirectCommandKHR.html>"]
32897 pub struct TraceRaysIndirectCommandKHR {
32898     pub width: u32,
32899     pub height: u32,
32900     pub depth: u32,
32901 }
32902 impl TraceRaysIndirectCommandKHR {
builder<'a>() -> TraceRaysIndirectCommandKHRBuilder<'a>32903     pub fn builder<'a>() -> TraceRaysIndirectCommandKHRBuilder<'a> {
32904         TraceRaysIndirectCommandKHRBuilder {
32905             inner: TraceRaysIndirectCommandKHR::default(),
32906             marker: ::std::marker::PhantomData,
32907         }
32908     }
32909 }
32910 #[repr(transparent)]
32911 pub struct TraceRaysIndirectCommandKHRBuilder<'a> {
32912     inner: TraceRaysIndirectCommandKHR,
32913     marker: ::std::marker::PhantomData<&'a ()>,
32914 }
32915 impl<'a> ::std::ops::Deref for TraceRaysIndirectCommandKHRBuilder<'a> {
32916     type Target = TraceRaysIndirectCommandKHR;
deref(&self) -> &Self::Target32917     fn deref(&self) -> &Self::Target {
32918         &self.inner
32919     }
32920 }
32921 impl<'a> ::std::ops::DerefMut for TraceRaysIndirectCommandKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32922     fn deref_mut(&mut self) -> &mut Self::Target {
32923         &mut self.inner
32924     }
32925 }
32926 impl<'a> TraceRaysIndirectCommandKHRBuilder<'a> {
width(mut self, width: u32) -> Self32927     pub fn width(mut self, width: u32) -> Self {
32928         self.inner.width = width;
32929         self
32930     }
height(mut self, height: u32) -> Self32931     pub fn height(mut self, height: u32) -> Self {
32932         self.inner.height = height;
32933         self
32934     }
depth(mut self, depth: u32) -> Self32935     pub fn depth(mut self, depth: u32) -> Self {
32936         self.inner.depth = depth;
32937         self
32938     }
32939     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32940     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32941     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> TraceRaysIndirectCommandKHR32942     pub fn build(self) -> TraceRaysIndirectCommandKHR {
32943         self.inner
32944     }
32945 }
32946 #[repr(C)]
32947 #[derive(Copy, Clone, Debug)]
32948 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrmFormatModifierPropertiesListEXT.html>"]
32949 pub struct DrmFormatModifierPropertiesListEXT {
32950     pub s_type: StructureType,
32951     pub p_next: *mut c_void,
32952     pub drm_format_modifier_count: u32,
32953     pub p_drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
32954 }
32955 impl ::std::default::Default for DrmFormatModifierPropertiesListEXT {
default() -> DrmFormatModifierPropertiesListEXT32956     fn default() -> DrmFormatModifierPropertiesListEXT {
32957         DrmFormatModifierPropertiesListEXT {
32958             s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
32959             p_next: ::std::ptr::null_mut(),
32960             drm_format_modifier_count: u32::default(),
32961             p_drm_format_modifier_properties: ::std::ptr::null_mut(),
32962         }
32963     }
32964 }
32965 impl DrmFormatModifierPropertiesListEXT {
builder<'a>() -> DrmFormatModifierPropertiesListEXTBuilder<'a>32966     pub fn builder<'a>() -> DrmFormatModifierPropertiesListEXTBuilder<'a> {
32967         DrmFormatModifierPropertiesListEXTBuilder {
32968             inner: DrmFormatModifierPropertiesListEXT::default(),
32969             marker: ::std::marker::PhantomData,
32970         }
32971     }
32972 }
32973 #[repr(transparent)]
32974 pub struct DrmFormatModifierPropertiesListEXTBuilder<'a> {
32975     inner: DrmFormatModifierPropertiesListEXT,
32976     marker: ::std::marker::PhantomData<&'a ()>,
32977 }
32978 unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesListEXTBuilder<'_> {}
32979 unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesListEXT {}
32980 impl<'a> ::std::ops::Deref for DrmFormatModifierPropertiesListEXTBuilder<'a> {
32981     type Target = DrmFormatModifierPropertiesListEXT;
deref(&self) -> &Self::Target32982     fn deref(&self) -> &Self::Target {
32983         &self.inner
32984     }
32985 }
32986 impl<'a> ::std::ops::DerefMut for DrmFormatModifierPropertiesListEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32987     fn deref_mut(&mut self) -> &mut Self::Target {
32988         &mut self.inner
32989     }
32990 }
32991 impl<'a> DrmFormatModifierPropertiesListEXTBuilder<'a> {
drm_format_modifier_properties( mut self, drm_format_modifier_properties: &'a mut [DrmFormatModifierPropertiesEXT], ) -> Self32992     pub fn drm_format_modifier_properties(
32993         mut self,
32994         drm_format_modifier_properties: &'a mut [DrmFormatModifierPropertiesEXT],
32995     ) -> Self {
32996         self.inner.drm_format_modifier_count = drm_format_modifier_properties.len() as _;
32997         self.inner.p_drm_format_modifier_properties = drm_format_modifier_properties.as_mut_ptr();
32998         self
32999     }
33000     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33001     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33002     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrmFormatModifierPropertiesListEXT33003     pub fn build(self) -> DrmFormatModifierPropertiesListEXT {
33004         self.inner
33005     }
33006 }
33007 #[repr(C)]
33008 #[derive(Copy, Clone, Default, Debug)]
33009 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrmFormatModifierPropertiesEXT.html>"]
33010 pub struct DrmFormatModifierPropertiesEXT {
33011     pub drm_format_modifier: u64,
33012     pub drm_format_modifier_plane_count: u32,
33013     pub drm_format_modifier_tiling_features: FormatFeatureFlags,
33014 }
33015 impl DrmFormatModifierPropertiesEXT {
builder<'a>() -> DrmFormatModifierPropertiesEXTBuilder<'a>33016     pub fn builder<'a>() -> DrmFormatModifierPropertiesEXTBuilder<'a> {
33017         DrmFormatModifierPropertiesEXTBuilder {
33018             inner: DrmFormatModifierPropertiesEXT::default(),
33019             marker: ::std::marker::PhantomData,
33020         }
33021     }
33022 }
33023 #[repr(transparent)]
33024 pub struct DrmFormatModifierPropertiesEXTBuilder<'a> {
33025     inner: DrmFormatModifierPropertiesEXT,
33026     marker: ::std::marker::PhantomData<&'a ()>,
33027 }
33028 impl<'a> ::std::ops::Deref for DrmFormatModifierPropertiesEXTBuilder<'a> {
33029     type Target = DrmFormatModifierPropertiesEXT;
deref(&self) -> &Self::Target33030     fn deref(&self) -> &Self::Target {
33031         &self.inner
33032     }
33033 }
33034 impl<'a> ::std::ops::DerefMut for DrmFormatModifierPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33035     fn deref_mut(&mut self) -> &mut Self::Target {
33036         &mut self.inner
33037     }
33038 }
33039 impl<'a> DrmFormatModifierPropertiesEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33040     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33041         self.inner.drm_format_modifier = drm_format_modifier;
33042         self
33043     }
drm_format_modifier_plane_count(mut self, drm_format_modifier_plane_count: u32) -> Self33044     pub fn drm_format_modifier_plane_count(mut self, drm_format_modifier_plane_count: u32) -> Self {
33045         self.inner.drm_format_modifier_plane_count = drm_format_modifier_plane_count;
33046         self
33047     }
drm_format_modifier_tiling_features( mut self, drm_format_modifier_tiling_features: FormatFeatureFlags, ) -> Self33048     pub fn drm_format_modifier_tiling_features(
33049         mut self,
33050         drm_format_modifier_tiling_features: FormatFeatureFlags,
33051     ) -> Self {
33052         self.inner.drm_format_modifier_tiling_features = drm_format_modifier_tiling_features;
33053         self
33054     }
33055     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33056     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33057     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrmFormatModifierPropertiesEXT33058     pub fn build(self) -> DrmFormatModifierPropertiesEXT {
33059         self.inner
33060     }
33061 }
33062 #[repr(C)]
33063 #[derive(Copy, Clone, Debug)]
33064 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>"]
33065 pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
33066     pub s_type: StructureType,
33067     pub p_next: *const c_void,
33068     pub drm_format_modifier: u64,
33069     pub sharing_mode: SharingMode,
33070     pub queue_family_index_count: u32,
33071     pub p_queue_family_indices: *const u32,
33072 }
33073 impl ::std::default::Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
default() -> PhysicalDeviceImageDrmFormatModifierInfoEXT33074     fn default() -> PhysicalDeviceImageDrmFormatModifierInfoEXT {
33075         PhysicalDeviceImageDrmFormatModifierInfoEXT {
33076             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
33077             p_next: ::std::ptr::null(),
33078             drm_format_modifier: u64::default(),
33079             sharing_mode: SharingMode::default(),
33080             queue_family_index_count: u32::default(),
33081             p_queue_family_indices: ::std::ptr::null(),
33082         }
33083     }
33084 }
33085 impl PhysicalDeviceImageDrmFormatModifierInfoEXT {
builder<'a>() -> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a>33086     pub fn builder<'a>() -> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33087         PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder {
33088             inner: PhysicalDeviceImageDrmFormatModifierInfoEXT::default(),
33089             marker: ::std::marker::PhantomData,
33090         }
33091     }
33092 }
33093 #[repr(transparent)]
33094 pub struct PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33095     inner: PhysicalDeviceImageDrmFormatModifierInfoEXT,
33096     marker: ::std::marker::PhantomData<&'a ()>,
33097 }
33098 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2
33099     for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'_>
33100 {
33101 }
33102 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
33103 impl<'a> ::std::ops::Deref for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33104     type Target = PhysicalDeviceImageDrmFormatModifierInfoEXT;
deref(&self) -> &Self::Target33105     fn deref(&self) -> &Self::Target {
33106         &self.inner
33107     }
33108 }
33109 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33110     fn deref_mut(&mut self) -> &mut Self::Target {
33111         &mut self.inner
33112     }
33113 }
33114 impl<'a> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33115     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33116         self.inner.drm_format_modifier = drm_format_modifier;
33117         self
33118     }
sharing_mode(mut self, sharing_mode: SharingMode) -> Self33119     pub fn sharing_mode(mut self, sharing_mode: SharingMode) -> Self {
33120         self.inner.sharing_mode = sharing_mode;
33121         self
33122     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self33123     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
33124         self.inner.queue_family_index_count = queue_family_indices.len() as _;
33125         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
33126         self
33127     }
33128     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33129     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33130     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageDrmFormatModifierInfoEXT33131     pub fn build(self) -> PhysicalDeviceImageDrmFormatModifierInfoEXT {
33132         self.inner
33133     }
33134 }
33135 #[repr(C)]
33136 #[derive(Copy, Clone, Debug)]
33137 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>"]
33138 pub struct ImageDrmFormatModifierListCreateInfoEXT {
33139     pub s_type: StructureType,
33140     pub p_next: *const c_void,
33141     pub drm_format_modifier_count: u32,
33142     pub p_drm_format_modifiers: *const u64,
33143 }
33144 impl ::std::default::Default for ImageDrmFormatModifierListCreateInfoEXT {
default() -> ImageDrmFormatModifierListCreateInfoEXT33145     fn default() -> ImageDrmFormatModifierListCreateInfoEXT {
33146         ImageDrmFormatModifierListCreateInfoEXT {
33147             s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
33148             p_next: ::std::ptr::null(),
33149             drm_format_modifier_count: u32::default(),
33150             p_drm_format_modifiers: ::std::ptr::null(),
33151         }
33152     }
33153 }
33154 impl ImageDrmFormatModifierListCreateInfoEXT {
builder<'a>() -> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a>33155     pub fn builder<'a>() -> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33156         ImageDrmFormatModifierListCreateInfoEXTBuilder {
33157             inner: ImageDrmFormatModifierListCreateInfoEXT::default(),
33158             marker: ::std::marker::PhantomData,
33159         }
33160     }
33161 }
33162 #[repr(transparent)]
33163 pub struct ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33164     inner: ImageDrmFormatModifierListCreateInfoEXT,
33165     marker: ::std::marker::PhantomData<&'a ()>,
33166 }
33167 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierListCreateInfoEXTBuilder<'_> {}
33168 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierListCreateInfoEXT {}
33169 impl<'a> ::std::ops::Deref for ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33170     type Target = ImageDrmFormatModifierListCreateInfoEXT;
deref(&self) -> &Self::Target33171     fn deref(&self) -> &Self::Target {
33172         &self.inner
33173     }
33174 }
33175 impl<'a> ::std::ops::DerefMut for ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33176     fn deref_mut(&mut self) -> &mut Self::Target {
33177         &mut self.inner
33178     }
33179 }
33180 impl<'a> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
drm_format_modifiers(mut self, drm_format_modifiers: &'a [u64]) -> Self33181     pub fn drm_format_modifiers(mut self, drm_format_modifiers: &'a [u64]) -> Self {
33182         self.inner.drm_format_modifier_count = drm_format_modifiers.len() as _;
33183         self.inner.p_drm_format_modifiers = drm_format_modifiers.as_ptr();
33184         self
33185     }
33186     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33187     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33188     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageDrmFormatModifierListCreateInfoEXT33189     pub fn build(self) -> ImageDrmFormatModifierListCreateInfoEXT {
33190         self.inner
33191     }
33192 }
33193 #[repr(C)]
33194 #[derive(Copy, Clone, Debug)]
33195 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>"]
33196 pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
33197     pub s_type: StructureType,
33198     pub p_next: *const c_void,
33199     pub drm_format_modifier: u64,
33200     pub drm_format_modifier_plane_count: u32,
33201     pub p_plane_layouts: *const SubresourceLayout,
33202 }
33203 impl ::std::default::Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
default() -> ImageDrmFormatModifierExplicitCreateInfoEXT33204     fn default() -> ImageDrmFormatModifierExplicitCreateInfoEXT {
33205         ImageDrmFormatModifierExplicitCreateInfoEXT {
33206             s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
33207             p_next: ::std::ptr::null(),
33208             drm_format_modifier: u64::default(),
33209             drm_format_modifier_plane_count: u32::default(),
33210             p_plane_layouts: ::std::ptr::null(),
33211         }
33212     }
33213 }
33214 impl ImageDrmFormatModifierExplicitCreateInfoEXT {
builder<'a>() -> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a>33215     pub fn builder<'a>() -> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33216         ImageDrmFormatModifierExplicitCreateInfoEXTBuilder {
33217             inner: ImageDrmFormatModifierExplicitCreateInfoEXT::default(),
33218             marker: ::std::marker::PhantomData,
33219         }
33220     }
33221 }
33222 #[repr(transparent)]
33223 pub struct ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33224     inner: ImageDrmFormatModifierExplicitCreateInfoEXT,
33225     marker: ::std::marker::PhantomData<&'a ()>,
33226 }
33227 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'_> {}
33228 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierExplicitCreateInfoEXT {}
33229 impl<'a> ::std::ops::Deref for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33230     type Target = ImageDrmFormatModifierExplicitCreateInfoEXT;
deref(&self) -> &Self::Target33231     fn deref(&self) -> &Self::Target {
33232         &self.inner
33233     }
33234 }
33235 impl<'a> ::std::ops::DerefMut for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33236     fn deref_mut(&mut self) -> &mut Self::Target {
33237         &mut self.inner
33238     }
33239 }
33240 impl<'a> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33241     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33242         self.inner.drm_format_modifier = drm_format_modifier;
33243         self
33244     }
plane_layouts(mut self, plane_layouts: &'a [SubresourceLayout]) -> Self33245     pub fn plane_layouts(mut self, plane_layouts: &'a [SubresourceLayout]) -> Self {
33246         self.inner.drm_format_modifier_plane_count = plane_layouts.len() as _;
33247         self.inner.p_plane_layouts = plane_layouts.as_ptr();
33248         self
33249     }
33250     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33251     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33252     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageDrmFormatModifierExplicitCreateInfoEXT33253     pub fn build(self) -> ImageDrmFormatModifierExplicitCreateInfoEXT {
33254         self.inner
33255     }
33256 }
33257 #[repr(C)]
33258 #[derive(Copy, Clone, Debug)]
33259 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageDrmFormatModifierPropertiesEXT.html>"]
33260 pub struct ImageDrmFormatModifierPropertiesEXT {
33261     pub s_type: StructureType,
33262     pub p_next: *mut c_void,
33263     pub drm_format_modifier: u64,
33264 }
33265 impl ::std::default::Default for ImageDrmFormatModifierPropertiesEXT {
default() -> ImageDrmFormatModifierPropertiesEXT33266     fn default() -> ImageDrmFormatModifierPropertiesEXT {
33267         ImageDrmFormatModifierPropertiesEXT {
33268             s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
33269             p_next: ::std::ptr::null_mut(),
33270             drm_format_modifier: u64::default(),
33271         }
33272     }
33273 }
33274 impl ImageDrmFormatModifierPropertiesEXT {
builder<'a>() -> ImageDrmFormatModifierPropertiesEXTBuilder<'a>33275     pub fn builder<'a>() -> ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33276         ImageDrmFormatModifierPropertiesEXTBuilder {
33277             inner: ImageDrmFormatModifierPropertiesEXT::default(),
33278             marker: ::std::marker::PhantomData,
33279         }
33280     }
33281 }
33282 #[repr(transparent)]
33283 pub struct ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33284     inner: ImageDrmFormatModifierPropertiesEXT,
33285     marker: ::std::marker::PhantomData<&'a ()>,
33286 }
33287 impl<'a> ::std::ops::Deref for ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33288     type Target = ImageDrmFormatModifierPropertiesEXT;
deref(&self) -> &Self::Target33289     fn deref(&self) -> &Self::Target {
33290         &self.inner
33291     }
33292 }
33293 impl<'a> ::std::ops::DerefMut for ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33294     fn deref_mut(&mut self) -> &mut Self::Target {
33295         &mut self.inner
33296     }
33297 }
33298 impl<'a> ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33299     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33300         self.inner.drm_format_modifier = drm_format_modifier;
33301         self
33302     }
33303     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33304     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33305     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageDrmFormatModifierPropertiesEXT33306     pub fn build(self) -> ImageDrmFormatModifierPropertiesEXT {
33307         self.inner
33308     }
33309 }
33310 #[repr(C)]
33311 #[derive(Copy, Clone, Debug)]
33312 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageStencilUsageCreateInfo.html>"]
33313 pub struct ImageStencilUsageCreateInfo {
33314     pub s_type: StructureType,
33315     pub p_next: *const c_void,
33316     pub stencil_usage: ImageUsageFlags,
33317 }
33318 impl ::std::default::Default for ImageStencilUsageCreateInfo {
default() -> ImageStencilUsageCreateInfo33319     fn default() -> ImageStencilUsageCreateInfo {
33320         ImageStencilUsageCreateInfo {
33321             s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
33322             p_next: ::std::ptr::null(),
33323             stencil_usage: ImageUsageFlags::default(),
33324         }
33325     }
33326 }
33327 impl ImageStencilUsageCreateInfo {
builder<'a>() -> ImageStencilUsageCreateInfoBuilder<'a>33328     pub fn builder<'a>() -> ImageStencilUsageCreateInfoBuilder<'a> {
33329         ImageStencilUsageCreateInfoBuilder {
33330             inner: ImageStencilUsageCreateInfo::default(),
33331             marker: ::std::marker::PhantomData,
33332         }
33333     }
33334 }
33335 #[repr(transparent)]
33336 pub struct ImageStencilUsageCreateInfoBuilder<'a> {
33337     inner: ImageStencilUsageCreateInfo,
33338     marker: ::std::marker::PhantomData<&'a ()>,
33339 }
33340 unsafe impl ExtendsImageCreateInfo for ImageStencilUsageCreateInfoBuilder<'_> {}
33341 unsafe impl ExtendsImageCreateInfo for ImageStencilUsageCreateInfo {}
33342 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageStencilUsageCreateInfoBuilder<'_> {}
33343 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageStencilUsageCreateInfo {}
33344 impl<'a> ::std::ops::Deref for ImageStencilUsageCreateInfoBuilder<'a> {
33345     type Target = ImageStencilUsageCreateInfo;
deref(&self) -> &Self::Target33346     fn deref(&self) -> &Self::Target {
33347         &self.inner
33348     }
33349 }
33350 impl<'a> ::std::ops::DerefMut for ImageStencilUsageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33351     fn deref_mut(&mut self) -> &mut Self::Target {
33352         &mut self.inner
33353     }
33354 }
33355 impl<'a> ImageStencilUsageCreateInfoBuilder<'a> {
stencil_usage(mut self, stencil_usage: ImageUsageFlags) -> Self33356     pub fn stencil_usage(mut self, stencil_usage: ImageUsageFlags) -> Self {
33357         self.inner.stencil_usage = stencil_usage;
33358         self
33359     }
33360     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33361     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33362     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageStencilUsageCreateInfo33363     pub fn build(self) -> ImageStencilUsageCreateInfo {
33364         self.inner
33365     }
33366 }
33367 #[repr(C)]
33368 #[derive(Copy, Clone, Debug)]
33369 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>"]
33370 pub struct DeviceMemoryOverallocationCreateInfoAMD {
33371     pub s_type: StructureType,
33372     pub p_next: *const c_void,
33373     pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
33374 }
33375 impl ::std::default::Default for DeviceMemoryOverallocationCreateInfoAMD {
default() -> DeviceMemoryOverallocationCreateInfoAMD33376     fn default() -> DeviceMemoryOverallocationCreateInfoAMD {
33377         DeviceMemoryOverallocationCreateInfoAMD {
33378             s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
33379             p_next: ::std::ptr::null(),
33380             overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
33381         }
33382     }
33383 }
33384 impl DeviceMemoryOverallocationCreateInfoAMD {
builder<'a>() -> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a>33385     pub fn builder<'a>() -> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33386         DeviceMemoryOverallocationCreateInfoAMDBuilder {
33387             inner: DeviceMemoryOverallocationCreateInfoAMD::default(),
33388             marker: ::std::marker::PhantomData,
33389         }
33390     }
33391 }
33392 #[repr(transparent)]
33393 pub struct DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33394     inner: DeviceMemoryOverallocationCreateInfoAMD,
33395     marker: ::std::marker::PhantomData<&'a ()>,
33396 }
33397 unsafe impl ExtendsDeviceCreateInfo for DeviceMemoryOverallocationCreateInfoAMDBuilder<'_> {}
33398 unsafe impl ExtendsDeviceCreateInfo for DeviceMemoryOverallocationCreateInfoAMD {}
33399 impl<'a> ::std::ops::Deref for DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
33400     type Target = DeviceMemoryOverallocationCreateInfoAMD;
deref(&self) -> &Self::Target33401     fn deref(&self) -> &Self::Target {
33402         &self.inner
33403     }
33404 }
33405 impl<'a> ::std::ops::DerefMut for DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33406     fn deref_mut(&mut self) -> &mut Self::Target {
33407         &mut self.inner
33408     }
33409 }
33410 impl<'a> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
overallocation_behavior( mut self, overallocation_behavior: MemoryOverallocationBehaviorAMD, ) -> Self33411     pub fn overallocation_behavior(
33412         mut self,
33413         overallocation_behavior: MemoryOverallocationBehaviorAMD,
33414     ) -> Self {
33415         self.inner.overallocation_behavior = overallocation_behavior;
33416         self
33417     }
33418     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33419     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33420     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceMemoryOverallocationCreateInfoAMD33421     pub fn build(self) -> DeviceMemoryOverallocationCreateInfoAMD {
33422         self.inner
33423     }
33424 }
33425 #[repr(C)]
33426 #[derive(Copy, Clone, Debug)]
33427 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>"]
33428 pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
33429     pub s_type: StructureType,
33430     pub p_next: *mut c_void,
33431     pub fragment_density_map: Bool32,
33432     pub fragment_density_map_dynamic: Bool32,
33433     pub fragment_density_map_non_subsampled_images: Bool32,
33434 }
33435 impl ::std::default::Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
default() -> PhysicalDeviceFragmentDensityMapFeaturesEXT33436     fn default() -> PhysicalDeviceFragmentDensityMapFeaturesEXT {
33437         PhysicalDeviceFragmentDensityMapFeaturesEXT {
33438             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
33439             p_next: ::std::ptr::null_mut(),
33440             fragment_density_map: Bool32::default(),
33441             fragment_density_map_dynamic: Bool32::default(),
33442             fragment_density_map_non_subsampled_images: Bool32::default(),
33443         }
33444     }
33445 }
33446 impl PhysicalDeviceFragmentDensityMapFeaturesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a>33447     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33448         PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder {
33449             inner: PhysicalDeviceFragmentDensityMapFeaturesEXT::default(),
33450             marker: ::std::marker::PhantomData,
33451         }
33452     }
33453 }
33454 #[repr(transparent)]
33455 pub struct PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33456     inner: PhysicalDeviceFragmentDensityMapFeaturesEXT,
33457     marker: ::std::marker::PhantomData<&'a ()>,
33458 }
33459 unsafe impl ExtendsPhysicalDeviceFeatures2
33460     for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'_>
33461 {
33462 }
33463 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
33464 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'_> {}
33465 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
33466 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
33467     type Target = PhysicalDeviceFragmentDensityMapFeaturesEXT;
deref(&self) -> &Self::Target33468     fn deref(&self) -> &Self::Target {
33469         &self.inner
33470     }
33471 }
33472 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33473     fn deref_mut(&mut self) -> &mut Self::Target {
33474         &mut self.inner
33475     }
33476 }
33477 impl<'a> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
fragment_density_map(mut self, fragment_density_map: bool) -> Self33478     pub fn fragment_density_map(mut self, fragment_density_map: bool) -> Self {
33479         self.inner.fragment_density_map = fragment_density_map.into();
33480         self
33481     }
fragment_density_map_dynamic(mut self, fragment_density_map_dynamic: bool) -> Self33482     pub fn fragment_density_map_dynamic(mut self, fragment_density_map_dynamic: bool) -> Self {
33483         self.inner.fragment_density_map_dynamic = fragment_density_map_dynamic.into();
33484         self
33485     }
fragment_density_map_non_subsampled_images( mut self, fragment_density_map_non_subsampled_images: bool, ) -> Self33486     pub fn fragment_density_map_non_subsampled_images(
33487         mut self,
33488         fragment_density_map_non_subsampled_images: bool,
33489     ) -> Self {
33490         self.inner.fragment_density_map_non_subsampled_images =
33491             fragment_density_map_non_subsampled_images.into();
33492         self
33493     }
33494     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33495     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33496     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMapFeaturesEXT33497     pub fn build(self) -> PhysicalDeviceFragmentDensityMapFeaturesEXT {
33498         self.inner
33499     }
33500 }
33501 #[repr(C)]
33502 #[derive(Copy, Clone, Debug)]
33503 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>"]
33504 pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
33505     pub s_type: StructureType,
33506     pub p_next: *mut c_void,
33507     pub fragment_density_map_deferred: Bool32,
33508 }
33509 impl ::std::default::Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
default() -> PhysicalDeviceFragmentDensityMap2FeaturesEXT33510     fn default() -> PhysicalDeviceFragmentDensityMap2FeaturesEXT {
33511         PhysicalDeviceFragmentDensityMap2FeaturesEXT {
33512             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
33513             p_next: ::std::ptr::null_mut(),
33514             fragment_density_map_deferred: Bool32::default(),
33515         }
33516     }
33517 }
33518 impl PhysicalDeviceFragmentDensityMap2FeaturesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a>33519     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33520         PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder {
33521             inner: PhysicalDeviceFragmentDensityMap2FeaturesEXT::default(),
33522             marker: ::std::marker::PhantomData,
33523         }
33524     }
33525 }
33526 #[repr(transparent)]
33527 pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33528     inner: PhysicalDeviceFragmentDensityMap2FeaturesEXT,
33529     marker: ::std::marker::PhantomData<&'a ()>,
33530 }
33531 unsafe impl ExtendsPhysicalDeviceFeatures2
33532     for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'_>
33533 {
33534 }
33535 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
33536 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'_> {}
33537 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
33538 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
33539     type Target = PhysicalDeviceFragmentDensityMap2FeaturesEXT;
deref(&self) -> &Self::Target33540     fn deref(&self) -> &Self::Target {
33541         &self.inner
33542     }
33543 }
33544 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33545     fn deref_mut(&mut self) -> &mut Self::Target {
33546         &mut self.inner
33547     }
33548 }
33549 impl<'a> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
fragment_density_map_deferred(mut self, fragment_density_map_deferred: bool) -> Self33550     pub fn fragment_density_map_deferred(mut self, fragment_density_map_deferred: bool) -> Self {
33551         self.inner.fragment_density_map_deferred = fragment_density_map_deferred.into();
33552         self
33553     }
33554     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33555     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33556     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMap2FeaturesEXT33557     pub fn build(self) -> PhysicalDeviceFragmentDensityMap2FeaturesEXT {
33558         self.inner
33559     }
33560 }
33561 #[repr(C)]
33562 #[derive(Copy, Clone, Debug)]
33563 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>"]
33564 pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
33565     pub s_type: StructureType,
33566     pub p_next: *mut c_void,
33567     pub min_fragment_density_texel_size: Extent2D,
33568     pub max_fragment_density_texel_size: Extent2D,
33569     pub fragment_density_invocations: Bool32,
33570 }
33571 impl ::std::default::Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
default() -> PhysicalDeviceFragmentDensityMapPropertiesEXT33572     fn default() -> PhysicalDeviceFragmentDensityMapPropertiesEXT {
33573         PhysicalDeviceFragmentDensityMapPropertiesEXT {
33574             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
33575             p_next: ::std::ptr::null_mut(),
33576             min_fragment_density_texel_size: Extent2D::default(),
33577             max_fragment_density_texel_size: Extent2D::default(),
33578             fragment_density_invocations: Bool32::default(),
33579         }
33580     }
33581 }
33582 impl PhysicalDeviceFragmentDensityMapPropertiesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a>33583     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33584         PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder {
33585             inner: PhysicalDeviceFragmentDensityMapPropertiesEXT::default(),
33586             marker: ::std::marker::PhantomData,
33587         }
33588     }
33589 }
33590 #[repr(transparent)]
33591 pub struct PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33592     inner: PhysicalDeviceFragmentDensityMapPropertiesEXT,
33593     marker: ::std::marker::PhantomData<&'a ()>,
33594 }
33595 unsafe impl ExtendsPhysicalDeviceProperties2
33596     for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'_>
33597 {
33598 }
33599 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
33600 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
33601     type Target = PhysicalDeviceFragmentDensityMapPropertiesEXT;
deref(&self) -> &Self::Target33602     fn deref(&self) -> &Self::Target {
33603         &self.inner
33604     }
33605 }
33606 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33607     fn deref_mut(&mut self) -> &mut Self::Target {
33608         &mut self.inner
33609     }
33610 }
33611 impl<'a> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
min_fragment_density_texel_size( mut self, min_fragment_density_texel_size: Extent2D, ) -> Self33612     pub fn min_fragment_density_texel_size(
33613         mut self,
33614         min_fragment_density_texel_size: Extent2D,
33615     ) -> Self {
33616         self.inner.min_fragment_density_texel_size = min_fragment_density_texel_size;
33617         self
33618     }
max_fragment_density_texel_size( mut self, max_fragment_density_texel_size: Extent2D, ) -> Self33619     pub fn max_fragment_density_texel_size(
33620         mut self,
33621         max_fragment_density_texel_size: Extent2D,
33622     ) -> Self {
33623         self.inner.max_fragment_density_texel_size = max_fragment_density_texel_size;
33624         self
33625     }
fragment_density_invocations(mut self, fragment_density_invocations: bool) -> Self33626     pub fn fragment_density_invocations(mut self, fragment_density_invocations: bool) -> Self {
33627         self.inner.fragment_density_invocations = fragment_density_invocations.into();
33628         self
33629     }
33630     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33631     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33632     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMapPropertiesEXT33633     pub fn build(self) -> PhysicalDeviceFragmentDensityMapPropertiesEXT {
33634         self.inner
33635     }
33636 }
33637 #[repr(C)]
33638 #[derive(Copy, Clone, Debug)]
33639 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>"]
33640 pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
33641     pub s_type: StructureType,
33642     pub p_next: *mut c_void,
33643     pub subsampled_loads: Bool32,
33644     pub subsampled_coarse_reconstruction_early_access: Bool32,
33645     pub max_subsampled_array_layers: u32,
33646     pub max_descriptor_set_subsampled_samplers: u32,
33647 }
33648 impl ::std::default::Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
default() -> PhysicalDeviceFragmentDensityMap2PropertiesEXT33649     fn default() -> PhysicalDeviceFragmentDensityMap2PropertiesEXT {
33650         PhysicalDeviceFragmentDensityMap2PropertiesEXT {
33651             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
33652             p_next: ::std::ptr::null_mut(),
33653             subsampled_loads: Bool32::default(),
33654             subsampled_coarse_reconstruction_early_access: Bool32::default(),
33655             max_subsampled_array_layers: u32::default(),
33656             max_descriptor_set_subsampled_samplers: u32::default(),
33657         }
33658     }
33659 }
33660 impl PhysicalDeviceFragmentDensityMap2PropertiesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a>33661     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
33662         PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder {
33663             inner: PhysicalDeviceFragmentDensityMap2PropertiesEXT::default(),
33664             marker: ::std::marker::PhantomData,
33665         }
33666     }
33667 }
33668 #[repr(transparent)]
33669 pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
33670     inner: PhysicalDeviceFragmentDensityMap2PropertiesEXT,
33671     marker: ::std::marker::PhantomData<&'a ()>,
33672 }
33673 unsafe impl ExtendsPhysicalDeviceProperties2
33674     for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'_>
33675 {
33676 }
33677 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
33678 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
33679     type Target = PhysicalDeviceFragmentDensityMap2PropertiesEXT;
deref(&self) -> &Self::Target33680     fn deref(&self) -> &Self::Target {
33681         &self.inner
33682     }
33683 }
33684 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33685     fn deref_mut(&mut self) -> &mut Self::Target {
33686         &mut self.inner
33687     }
33688 }
33689 impl<'a> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
subsampled_loads(mut self, subsampled_loads: bool) -> Self33690     pub fn subsampled_loads(mut self, subsampled_loads: bool) -> Self {
33691         self.inner.subsampled_loads = subsampled_loads.into();
33692         self
33693     }
subsampled_coarse_reconstruction_early_access( mut self, subsampled_coarse_reconstruction_early_access: bool, ) -> Self33694     pub fn subsampled_coarse_reconstruction_early_access(
33695         mut self,
33696         subsampled_coarse_reconstruction_early_access: bool,
33697     ) -> Self {
33698         self.inner.subsampled_coarse_reconstruction_early_access =
33699             subsampled_coarse_reconstruction_early_access.into();
33700         self
33701     }
max_subsampled_array_layers(mut self, max_subsampled_array_layers: u32) -> Self33702     pub fn max_subsampled_array_layers(mut self, max_subsampled_array_layers: u32) -> Self {
33703         self.inner.max_subsampled_array_layers = max_subsampled_array_layers;
33704         self
33705     }
max_descriptor_set_subsampled_samplers( mut self, max_descriptor_set_subsampled_samplers: u32, ) -> Self33706     pub fn max_descriptor_set_subsampled_samplers(
33707         mut self,
33708         max_descriptor_set_subsampled_samplers: u32,
33709     ) -> Self {
33710         self.inner.max_descriptor_set_subsampled_samplers = max_descriptor_set_subsampled_samplers;
33711         self
33712     }
33713     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33714     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33715     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMap2PropertiesEXT33716     pub fn build(self) -> PhysicalDeviceFragmentDensityMap2PropertiesEXT {
33717         self.inner
33718     }
33719 }
33720 #[repr(C)]
33721 #[derive(Copy, Clone, Debug)]
33722 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>"]
33723 pub struct RenderPassFragmentDensityMapCreateInfoEXT {
33724     pub s_type: StructureType,
33725     pub p_next: *const c_void,
33726     pub fragment_density_map_attachment: AttachmentReference,
33727 }
33728 impl ::std::default::Default for RenderPassFragmentDensityMapCreateInfoEXT {
default() -> RenderPassFragmentDensityMapCreateInfoEXT33729     fn default() -> RenderPassFragmentDensityMapCreateInfoEXT {
33730         RenderPassFragmentDensityMapCreateInfoEXT {
33731             s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
33732             p_next: ::std::ptr::null(),
33733             fragment_density_map_attachment: AttachmentReference::default(),
33734         }
33735     }
33736 }
33737 impl RenderPassFragmentDensityMapCreateInfoEXT {
builder<'a>() -> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a>33738     pub fn builder<'a>() -> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
33739         RenderPassFragmentDensityMapCreateInfoEXTBuilder {
33740             inner: RenderPassFragmentDensityMapCreateInfoEXT::default(),
33741             marker: ::std::marker::PhantomData,
33742         }
33743     }
33744 }
33745 #[repr(transparent)]
33746 pub struct RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
33747     inner: RenderPassFragmentDensityMapCreateInfoEXT,
33748     marker: ::std::marker::PhantomData<&'a ()>,
33749 }
33750 unsafe impl ExtendsRenderPassCreateInfo for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'_> {}
33751 unsafe impl ExtendsRenderPassCreateInfo for RenderPassFragmentDensityMapCreateInfoEXT {}
33752 unsafe impl ExtendsRenderPassCreateInfo2 for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'_> {}
33753 unsafe impl ExtendsRenderPassCreateInfo2 for RenderPassFragmentDensityMapCreateInfoEXT {}
33754 impl<'a> ::std::ops::Deref for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
33755     type Target = RenderPassFragmentDensityMapCreateInfoEXT;
deref(&self) -> &Self::Target33756     fn deref(&self) -> &Self::Target {
33757         &self.inner
33758     }
33759 }
33760 impl<'a> ::std::ops::DerefMut for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33761     fn deref_mut(&mut self) -> &mut Self::Target {
33762         &mut self.inner
33763     }
33764 }
33765 impl<'a> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
fragment_density_map_attachment( mut self, fragment_density_map_attachment: AttachmentReference, ) -> Self33766     pub fn fragment_density_map_attachment(
33767         mut self,
33768         fragment_density_map_attachment: AttachmentReference,
33769     ) -> Self {
33770         self.inner.fragment_density_map_attachment = fragment_density_map_attachment;
33771         self
33772     }
33773     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33774     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33775     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassFragmentDensityMapCreateInfoEXT33776     pub fn build(self) -> RenderPassFragmentDensityMapCreateInfoEXT {
33777         self.inner
33778     }
33779 }
33780 #[repr(C)]
33781 #[derive(Copy, Clone, Debug)]
33782 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>"]
33783 pub struct PhysicalDeviceScalarBlockLayoutFeatures {
33784     pub s_type: StructureType,
33785     pub p_next: *mut c_void,
33786     pub scalar_block_layout: Bool32,
33787 }
33788 impl ::std::default::Default for PhysicalDeviceScalarBlockLayoutFeatures {
default() -> PhysicalDeviceScalarBlockLayoutFeatures33789     fn default() -> PhysicalDeviceScalarBlockLayoutFeatures {
33790         PhysicalDeviceScalarBlockLayoutFeatures {
33791             s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
33792             p_next: ::std::ptr::null_mut(),
33793             scalar_block_layout: Bool32::default(),
33794         }
33795     }
33796 }
33797 impl PhysicalDeviceScalarBlockLayoutFeatures {
builder<'a>() -> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a>33798     pub fn builder<'a>() -> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
33799         PhysicalDeviceScalarBlockLayoutFeaturesBuilder {
33800             inner: PhysicalDeviceScalarBlockLayoutFeatures::default(),
33801             marker: ::std::marker::PhantomData,
33802         }
33803     }
33804 }
33805 #[repr(transparent)]
33806 pub struct PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
33807     inner: PhysicalDeviceScalarBlockLayoutFeatures,
33808     marker: ::std::marker::PhantomData<&'a ()>,
33809 }
33810 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'_> {}
33811 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceScalarBlockLayoutFeatures {}
33812 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'_> {}
33813 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceScalarBlockLayoutFeatures {}
33814 impl<'a> ::std::ops::Deref for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
33815     type Target = PhysicalDeviceScalarBlockLayoutFeatures;
deref(&self) -> &Self::Target33816     fn deref(&self) -> &Self::Target {
33817         &self.inner
33818     }
33819 }
33820 impl<'a> ::std::ops::DerefMut for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33821     fn deref_mut(&mut self) -> &mut Self::Target {
33822         &mut self.inner
33823     }
33824 }
33825 impl<'a> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
scalar_block_layout(mut self, scalar_block_layout: bool) -> Self33826     pub fn scalar_block_layout(mut self, scalar_block_layout: bool) -> Self {
33827         self.inner.scalar_block_layout = scalar_block_layout.into();
33828         self
33829     }
33830     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33831     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33832     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceScalarBlockLayoutFeatures33833     pub fn build(self) -> PhysicalDeviceScalarBlockLayoutFeatures {
33834         self.inner
33835     }
33836 }
33837 #[repr(C)]
33838 #[derive(Copy, Clone, Debug)]
33839 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceProtectedCapabilitiesKHR.html>"]
33840 pub struct SurfaceProtectedCapabilitiesKHR {
33841     pub s_type: StructureType,
33842     pub p_next: *const c_void,
33843     pub supports_protected: Bool32,
33844 }
33845 impl ::std::default::Default for SurfaceProtectedCapabilitiesKHR {
default() -> SurfaceProtectedCapabilitiesKHR33846     fn default() -> SurfaceProtectedCapabilitiesKHR {
33847         SurfaceProtectedCapabilitiesKHR {
33848             s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
33849             p_next: ::std::ptr::null(),
33850             supports_protected: Bool32::default(),
33851         }
33852     }
33853 }
33854 impl SurfaceProtectedCapabilitiesKHR {
builder<'a>() -> SurfaceProtectedCapabilitiesKHRBuilder<'a>33855     pub fn builder<'a>() -> SurfaceProtectedCapabilitiesKHRBuilder<'a> {
33856         SurfaceProtectedCapabilitiesKHRBuilder {
33857             inner: SurfaceProtectedCapabilitiesKHR::default(),
33858             marker: ::std::marker::PhantomData,
33859         }
33860     }
33861 }
33862 #[repr(transparent)]
33863 pub struct SurfaceProtectedCapabilitiesKHRBuilder<'a> {
33864     inner: SurfaceProtectedCapabilitiesKHR,
33865     marker: ::std::marker::PhantomData<&'a ()>,
33866 }
33867 unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceProtectedCapabilitiesKHRBuilder<'_> {}
33868 unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceProtectedCapabilitiesKHR {}
33869 impl<'a> ::std::ops::Deref for SurfaceProtectedCapabilitiesKHRBuilder<'a> {
33870     type Target = SurfaceProtectedCapabilitiesKHR;
deref(&self) -> &Self::Target33871     fn deref(&self) -> &Self::Target {
33872         &self.inner
33873     }
33874 }
33875 impl<'a> ::std::ops::DerefMut for SurfaceProtectedCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33876     fn deref_mut(&mut self) -> &mut Self::Target {
33877         &mut self.inner
33878     }
33879 }
33880 impl<'a> SurfaceProtectedCapabilitiesKHRBuilder<'a> {
supports_protected(mut self, supports_protected: bool) -> Self33881     pub fn supports_protected(mut self, supports_protected: bool) -> Self {
33882         self.inner.supports_protected = supports_protected.into();
33883         self
33884     }
33885     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33886     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33887     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceProtectedCapabilitiesKHR33888     pub fn build(self) -> SurfaceProtectedCapabilitiesKHR {
33889         self.inner
33890     }
33891 }
33892 #[repr(C)]
33893 #[derive(Copy, Clone, Debug)]
33894 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>"]
33895 pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
33896     pub s_type: StructureType,
33897     pub p_next: *mut c_void,
33898     pub uniform_buffer_standard_layout: Bool32,
33899 }
33900 impl ::std::default::Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
default() -> PhysicalDeviceUniformBufferStandardLayoutFeatures33901     fn default() -> PhysicalDeviceUniformBufferStandardLayoutFeatures {
33902         PhysicalDeviceUniformBufferStandardLayoutFeatures {
33903             s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
33904             p_next: ::std::ptr::null_mut(),
33905             uniform_buffer_standard_layout: Bool32::default(),
33906         }
33907     }
33908 }
33909 impl PhysicalDeviceUniformBufferStandardLayoutFeatures {
builder<'a>() -> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a>33910     pub fn builder<'a>() -> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
33911         PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder {
33912             inner: PhysicalDeviceUniformBufferStandardLayoutFeatures::default(),
33913             marker: ::std::marker::PhantomData,
33914         }
33915     }
33916 }
33917 #[repr(transparent)]
33918 pub struct PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
33919     inner: PhysicalDeviceUniformBufferStandardLayoutFeatures,
33920     marker: ::std::marker::PhantomData<&'a ()>,
33921 }
33922 unsafe impl ExtendsPhysicalDeviceFeatures2
33923     for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'_>
33924 {
33925 }
33926 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
33927 unsafe impl ExtendsDeviceCreateInfo
33928     for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'_>
33929 {
33930 }
33931 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
33932 impl<'a> ::std::ops::Deref for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
33933     type Target = PhysicalDeviceUniformBufferStandardLayoutFeatures;
deref(&self) -> &Self::Target33934     fn deref(&self) -> &Self::Target {
33935         &self.inner
33936     }
33937 }
33938 impl<'a> ::std::ops::DerefMut for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33939     fn deref_mut(&mut self) -> &mut Self::Target {
33940         &mut self.inner
33941     }
33942 }
33943 impl<'a> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self33944     pub fn uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self {
33945         self.inner.uniform_buffer_standard_layout = uniform_buffer_standard_layout.into();
33946         self
33947     }
33948     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33949     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33950     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceUniformBufferStandardLayoutFeatures33951     pub fn build(self) -> PhysicalDeviceUniformBufferStandardLayoutFeatures {
33952         self.inner
33953     }
33954 }
33955 #[repr(C)]
33956 #[derive(Copy, Clone, Debug)]
33957 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>"]
33958 pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
33959     pub s_type: StructureType,
33960     pub p_next: *mut c_void,
33961     pub depth_clip_enable: Bool32,
33962 }
33963 impl ::std::default::Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
default() -> PhysicalDeviceDepthClipEnableFeaturesEXT33964     fn default() -> PhysicalDeviceDepthClipEnableFeaturesEXT {
33965         PhysicalDeviceDepthClipEnableFeaturesEXT {
33966             s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
33967             p_next: ::std::ptr::null_mut(),
33968             depth_clip_enable: Bool32::default(),
33969         }
33970     }
33971 }
33972 impl PhysicalDeviceDepthClipEnableFeaturesEXT {
builder<'a>() -> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a>33973     pub fn builder<'a>() -> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
33974         PhysicalDeviceDepthClipEnableFeaturesEXTBuilder {
33975             inner: PhysicalDeviceDepthClipEnableFeaturesEXT::default(),
33976             marker: ::std::marker::PhantomData,
33977         }
33978     }
33979 }
33980 #[repr(transparent)]
33981 pub struct PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
33982     inner: PhysicalDeviceDepthClipEnableFeaturesEXT,
33983     marker: ::std::marker::PhantomData<&'a ()>,
33984 }
33985 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'_> {}
33986 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClipEnableFeaturesEXT {}
33987 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'_> {}
33988 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipEnableFeaturesEXT {}
33989 impl<'a> ::std::ops::Deref for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
33990     type Target = PhysicalDeviceDepthClipEnableFeaturesEXT;
deref(&self) -> &Self::Target33991     fn deref(&self) -> &Self::Target {
33992         &self.inner
33993     }
33994 }
33995 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33996     fn deref_mut(&mut self) -> &mut Self::Target {
33997         &mut self.inner
33998     }
33999 }
34000 impl<'a> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
depth_clip_enable(mut self, depth_clip_enable: bool) -> Self34001     pub fn depth_clip_enable(mut self, depth_clip_enable: bool) -> Self {
34002         self.inner.depth_clip_enable = depth_clip_enable.into();
34003         self
34004     }
34005     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34006     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34007     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDepthClipEnableFeaturesEXT34008     pub fn build(self) -> PhysicalDeviceDepthClipEnableFeaturesEXT {
34009         self.inner
34010     }
34011 }
34012 #[repr(C)]
34013 #[derive(Copy, Clone, Debug)]
34014 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>"]
34015 pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
34016     pub s_type: StructureType,
34017     pub p_next: *const c_void,
34018     pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
34019     pub depth_clip_enable: Bool32,
34020 }
34021 impl ::std::default::Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
default() -> PipelineRasterizationDepthClipStateCreateInfoEXT34022     fn default() -> PipelineRasterizationDepthClipStateCreateInfoEXT {
34023         PipelineRasterizationDepthClipStateCreateInfoEXT {
34024             s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
34025             p_next: ::std::ptr::null(),
34026             flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
34027             depth_clip_enable: Bool32::default(),
34028         }
34029     }
34030 }
34031 impl PipelineRasterizationDepthClipStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a>34032     pub fn builder<'a>() -> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34033         PipelineRasterizationDepthClipStateCreateInfoEXTBuilder {
34034             inner: PipelineRasterizationDepthClipStateCreateInfoEXT::default(),
34035             marker: ::std::marker::PhantomData,
34036         }
34037     }
34038 }
34039 #[repr(transparent)]
34040 pub struct PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34041     inner: PipelineRasterizationDepthClipStateCreateInfoEXT,
34042     marker: ::std::marker::PhantomData<&'a ()>,
34043 }
34044 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
34045     for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'_>
34046 {
34047 }
34048 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
34049     for PipelineRasterizationDepthClipStateCreateInfoEXT
34050 {
34051 }
34052 impl<'a> ::std::ops::Deref for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34053     type Target = PipelineRasterizationDepthClipStateCreateInfoEXT;
deref(&self) -> &Self::Target34054     fn deref(&self) -> &Self::Target {
34055         &self.inner
34056     }
34057 }
34058 impl<'a> ::std::ops::DerefMut for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34059     fn deref_mut(&mut self) -> &mut Self::Target {
34060         &mut self.inner
34061     }
34062 }
34063 impl<'a> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineRasterizationDepthClipStateCreateFlagsEXT) -> Self34064     pub fn flags(mut self, flags: PipelineRasterizationDepthClipStateCreateFlagsEXT) -> Self {
34065         self.inner.flags = flags;
34066         self
34067     }
depth_clip_enable(mut self, depth_clip_enable: bool) -> Self34068     pub fn depth_clip_enable(mut self, depth_clip_enable: bool) -> Self {
34069         self.inner.depth_clip_enable = depth_clip_enable.into();
34070         self
34071     }
34072     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34073     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34074     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationDepthClipStateCreateInfoEXT34075     pub fn build(self) -> PipelineRasterizationDepthClipStateCreateInfoEXT {
34076         self.inner
34077     }
34078 }
34079 #[repr(C)]
34080 #[derive(Copy, Clone, Debug)]
34081 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>"]
34082 pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
34083     pub s_type: StructureType,
34084     pub p_next: *mut c_void,
34085     pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS],
34086     pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS],
34087 }
34088 impl ::std::default::Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
default() -> PhysicalDeviceMemoryBudgetPropertiesEXT34089     fn default() -> PhysicalDeviceMemoryBudgetPropertiesEXT {
34090         PhysicalDeviceMemoryBudgetPropertiesEXT {
34091             s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
34092             p_next: ::std::ptr::null_mut(),
34093             heap_budget: unsafe { ::std::mem::zeroed() },
34094             heap_usage: unsafe { ::std::mem::zeroed() },
34095         }
34096     }
34097 }
34098 impl PhysicalDeviceMemoryBudgetPropertiesEXT {
builder<'a>() -> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a>34099     pub fn builder<'a>() -> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34100         PhysicalDeviceMemoryBudgetPropertiesEXTBuilder {
34101             inner: PhysicalDeviceMemoryBudgetPropertiesEXT::default(),
34102             marker: ::std::marker::PhantomData,
34103         }
34104     }
34105 }
34106 #[repr(transparent)]
34107 pub struct PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34108     inner: PhysicalDeviceMemoryBudgetPropertiesEXT,
34109     marker: ::std::marker::PhantomData<&'a ()>,
34110 }
34111 unsafe impl ExtendsPhysicalDeviceMemoryProperties2
34112     for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'_>
34113 {
34114 }
34115 unsafe impl ExtendsPhysicalDeviceMemoryProperties2 for PhysicalDeviceMemoryBudgetPropertiesEXT {}
34116 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34117     type Target = PhysicalDeviceMemoryBudgetPropertiesEXT;
deref(&self) -> &Self::Target34118     fn deref(&self) -> &Self::Target {
34119         &self.inner
34120     }
34121 }
34122 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34123     fn deref_mut(&mut self) -> &mut Self::Target {
34124         &mut self.inner
34125     }
34126 }
34127 impl<'a> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
heap_budget(mut self, heap_budget: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self34128     pub fn heap_budget(mut self, heap_budget: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self {
34129         self.inner.heap_budget = heap_budget;
34130         self
34131     }
heap_usage(mut self, heap_usage: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self34132     pub fn heap_usage(mut self, heap_usage: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self {
34133         self.inner.heap_usage = heap_usage;
34134         self
34135     }
34136     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34137     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34138     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryBudgetPropertiesEXT34139     pub fn build(self) -> PhysicalDeviceMemoryBudgetPropertiesEXT {
34140         self.inner
34141     }
34142 }
34143 #[repr(C)]
34144 #[derive(Copy, Clone, Debug)]
34145 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>"]
34146 pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
34147     pub s_type: StructureType,
34148     pub p_next: *mut c_void,
34149     pub memory_priority: Bool32,
34150 }
34151 impl ::std::default::Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
default() -> PhysicalDeviceMemoryPriorityFeaturesEXT34152     fn default() -> PhysicalDeviceMemoryPriorityFeaturesEXT {
34153         PhysicalDeviceMemoryPriorityFeaturesEXT {
34154             s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
34155             p_next: ::std::ptr::null_mut(),
34156             memory_priority: Bool32::default(),
34157         }
34158     }
34159 }
34160 impl PhysicalDeviceMemoryPriorityFeaturesEXT {
builder<'a>() -> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a>34161     pub fn builder<'a>() -> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34162         PhysicalDeviceMemoryPriorityFeaturesEXTBuilder {
34163             inner: PhysicalDeviceMemoryPriorityFeaturesEXT::default(),
34164             marker: ::std::marker::PhantomData,
34165         }
34166     }
34167 }
34168 #[repr(transparent)]
34169 pub struct PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34170     inner: PhysicalDeviceMemoryPriorityFeaturesEXT,
34171     marker: ::std::marker::PhantomData<&'a ()>,
34172 }
34173 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'_> {}
34174 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMemoryPriorityFeaturesEXT {}
34175 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'_> {}
34176 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMemoryPriorityFeaturesEXT {}
34177 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
34178     type Target = PhysicalDeviceMemoryPriorityFeaturesEXT;
deref(&self) -> &Self::Target34179     fn deref(&self) -> &Self::Target {
34180         &self.inner
34181     }
34182 }
34183 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34184     fn deref_mut(&mut self) -> &mut Self::Target {
34185         &mut self.inner
34186     }
34187 }
34188 impl<'a> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
memory_priority(mut self, memory_priority: bool) -> Self34189     pub fn memory_priority(mut self, memory_priority: bool) -> Self {
34190         self.inner.memory_priority = memory_priority.into();
34191         self
34192     }
34193     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34194     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34195     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryPriorityFeaturesEXT34196     pub fn build(self) -> PhysicalDeviceMemoryPriorityFeaturesEXT {
34197         self.inner
34198     }
34199 }
34200 #[repr(C)]
34201 #[derive(Copy, Clone, Debug)]
34202 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryPriorityAllocateInfoEXT.html>"]
34203 pub struct MemoryPriorityAllocateInfoEXT {
34204     pub s_type: StructureType,
34205     pub p_next: *const c_void,
34206     pub priority: f32,
34207 }
34208 impl ::std::default::Default for MemoryPriorityAllocateInfoEXT {
default() -> MemoryPriorityAllocateInfoEXT34209     fn default() -> MemoryPriorityAllocateInfoEXT {
34210         MemoryPriorityAllocateInfoEXT {
34211             s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
34212             p_next: ::std::ptr::null(),
34213             priority: f32::default(),
34214         }
34215     }
34216 }
34217 impl MemoryPriorityAllocateInfoEXT {
builder<'a>() -> MemoryPriorityAllocateInfoEXTBuilder<'a>34218     pub fn builder<'a>() -> MemoryPriorityAllocateInfoEXTBuilder<'a> {
34219         MemoryPriorityAllocateInfoEXTBuilder {
34220             inner: MemoryPriorityAllocateInfoEXT::default(),
34221             marker: ::std::marker::PhantomData,
34222         }
34223     }
34224 }
34225 #[repr(transparent)]
34226 pub struct MemoryPriorityAllocateInfoEXTBuilder<'a> {
34227     inner: MemoryPriorityAllocateInfoEXT,
34228     marker: ::std::marker::PhantomData<&'a ()>,
34229 }
34230 unsafe impl ExtendsMemoryAllocateInfo for MemoryPriorityAllocateInfoEXTBuilder<'_> {}
34231 unsafe impl ExtendsMemoryAllocateInfo for MemoryPriorityAllocateInfoEXT {}
34232 impl<'a> ::std::ops::Deref for MemoryPriorityAllocateInfoEXTBuilder<'a> {
34233     type Target = MemoryPriorityAllocateInfoEXT;
deref(&self) -> &Self::Target34234     fn deref(&self) -> &Self::Target {
34235         &self.inner
34236     }
34237 }
34238 impl<'a> ::std::ops::DerefMut for MemoryPriorityAllocateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34239     fn deref_mut(&mut self) -> &mut Self::Target {
34240         &mut self.inner
34241     }
34242 }
34243 impl<'a> MemoryPriorityAllocateInfoEXTBuilder<'a> {
priority(mut self, priority: f32) -> Self34244     pub fn priority(mut self, priority: f32) -> Self {
34245         self.inner.priority = priority;
34246         self
34247     }
34248     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34249     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34250     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryPriorityAllocateInfoEXT34251     pub fn build(self) -> MemoryPriorityAllocateInfoEXT {
34252         self.inner
34253     }
34254 }
34255 #[repr(C)]
34256 #[derive(Copy, Clone, Debug)]
34257 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>"]
34258 pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
34259     pub s_type: StructureType,
34260     pub p_next: *mut c_void,
34261     pub pageable_device_local_memory: Bool32,
34262 }
34263 impl ::std::default::Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
default() -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT34264     fn default() -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
34265         PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
34266             s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
34267             p_next: ::std::ptr::null_mut(),
34268             pageable_device_local_memory: Bool32::default(),
34269         }
34270     }
34271 }
34272 impl PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
builder<'a>() -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a>34273     pub fn builder<'a>() -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
34274         PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder {
34275             inner: PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT::default(),
34276             marker: ::std::marker::PhantomData,
34277         }
34278     }
34279 }
34280 #[repr(transparent)]
34281 pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
34282     inner: PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT,
34283     marker: ::std::marker::PhantomData<&'a ()>,
34284 }
34285 unsafe impl ExtendsPhysicalDeviceFeatures2
34286     for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'_>
34287 {
34288 }
34289 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
34290 unsafe impl ExtendsDeviceCreateInfo
34291     for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'_>
34292 {
34293 }
34294 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
34295 impl<'a> ::std::ops::Deref for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
34296     type Target = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
deref(&self) -> &Self::Target34297     fn deref(&self) -> &Self::Target {
34298         &self.inner
34299     }
34300 }
34301 impl<'a> ::std::ops::DerefMut for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34302     fn deref_mut(&mut self) -> &mut Self::Target {
34303         &mut self.inner
34304     }
34305 }
34306 impl<'a> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
pageable_device_local_memory(mut self, pageable_device_local_memory: bool) -> Self34307     pub fn pageable_device_local_memory(mut self, pageable_device_local_memory: bool) -> Self {
34308         self.inner.pageable_device_local_memory = pageable_device_local_memory.into();
34309         self
34310     }
34311     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34312     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34313     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT34314     pub fn build(self) -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
34315         self.inner
34316     }
34317 }
34318 #[repr(C)]
34319 #[derive(Copy, Clone, Debug)]
34320 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>"]
34321 pub struct PhysicalDeviceBufferDeviceAddressFeatures {
34322     pub s_type: StructureType,
34323     pub p_next: *mut c_void,
34324     pub buffer_device_address: Bool32,
34325     pub buffer_device_address_capture_replay: Bool32,
34326     pub buffer_device_address_multi_device: Bool32,
34327 }
34328 impl ::std::default::Default for PhysicalDeviceBufferDeviceAddressFeatures {
default() -> PhysicalDeviceBufferDeviceAddressFeatures34329     fn default() -> PhysicalDeviceBufferDeviceAddressFeatures {
34330         PhysicalDeviceBufferDeviceAddressFeatures {
34331             s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
34332             p_next: ::std::ptr::null_mut(),
34333             buffer_device_address: Bool32::default(),
34334             buffer_device_address_capture_replay: Bool32::default(),
34335             buffer_device_address_multi_device: Bool32::default(),
34336         }
34337     }
34338 }
34339 impl PhysicalDeviceBufferDeviceAddressFeatures {
builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a>34340     pub fn builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34341         PhysicalDeviceBufferDeviceAddressFeaturesBuilder {
34342             inner: PhysicalDeviceBufferDeviceAddressFeatures::default(),
34343             marker: ::std::marker::PhantomData,
34344         }
34345     }
34346 }
34347 #[repr(transparent)]
34348 pub struct PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34349     inner: PhysicalDeviceBufferDeviceAddressFeatures,
34350     marker: ::std::marker::PhantomData<&'a ()>,
34351 }
34352 unsafe impl ExtendsPhysicalDeviceFeatures2
34353     for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'_>
34354 {
34355 }
34356 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBufferDeviceAddressFeatures {}
34357 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'_> {}
34358 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeatures {}
34359 impl<'a> ::std::ops::Deref for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
34360     type Target = PhysicalDeviceBufferDeviceAddressFeatures;
deref(&self) -> &Self::Target34361     fn deref(&self) -> &Self::Target {
34362         &self.inner
34363     }
34364 }
34365 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34366     fn deref_mut(&mut self) -> &mut Self::Target {
34367         &mut self.inner
34368     }
34369 }
34370 impl<'a> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
buffer_device_address(mut self, buffer_device_address: bool) -> Self34371     pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self {
34372         self.inner.buffer_device_address = buffer_device_address.into();
34373         self
34374     }
buffer_device_address_capture_replay( mut self, buffer_device_address_capture_replay: bool, ) -> Self34375     pub fn buffer_device_address_capture_replay(
34376         mut self,
34377         buffer_device_address_capture_replay: bool,
34378     ) -> Self {
34379         self.inner.buffer_device_address_capture_replay =
34380             buffer_device_address_capture_replay.into();
34381         self
34382     }
buffer_device_address_multi_device( mut self, buffer_device_address_multi_device: bool, ) -> Self34383     pub fn buffer_device_address_multi_device(
34384         mut self,
34385         buffer_device_address_multi_device: bool,
34386     ) -> Self {
34387         self.inner.buffer_device_address_multi_device = buffer_device_address_multi_device.into();
34388         self
34389     }
34390     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34391     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34392     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBufferDeviceAddressFeatures34393     pub fn build(self) -> PhysicalDeviceBufferDeviceAddressFeatures {
34394         self.inner
34395     }
34396 }
34397 #[repr(C)]
34398 #[derive(Copy, Clone, Debug)]
34399 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>"]
34400 pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
34401     pub s_type: StructureType,
34402     pub p_next: *mut c_void,
34403     pub buffer_device_address: Bool32,
34404     pub buffer_device_address_capture_replay: Bool32,
34405     pub buffer_device_address_multi_device: Bool32,
34406 }
34407 impl ::std::default::Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
default() -> PhysicalDeviceBufferDeviceAddressFeaturesEXT34408     fn default() -> PhysicalDeviceBufferDeviceAddressFeaturesEXT {
34409         PhysicalDeviceBufferDeviceAddressFeaturesEXT {
34410             s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
34411             p_next: ::std::ptr::null_mut(),
34412             buffer_device_address: Bool32::default(),
34413             buffer_device_address_capture_replay: Bool32::default(),
34414             buffer_device_address_multi_device: Bool32::default(),
34415         }
34416     }
34417 }
34418 impl PhysicalDeviceBufferDeviceAddressFeaturesEXT {
builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a>34419     pub fn builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34420         PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder {
34421             inner: PhysicalDeviceBufferDeviceAddressFeaturesEXT::default(),
34422             marker: ::std::marker::PhantomData,
34423         }
34424     }
34425 }
34426 #[repr(transparent)]
34427 pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34428     inner: PhysicalDeviceBufferDeviceAddressFeaturesEXT,
34429     marker: ::std::marker::PhantomData<&'a ()>,
34430 }
34431 unsafe impl ExtendsPhysicalDeviceFeatures2
34432     for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'_>
34433 {
34434 }
34435 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
34436 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'_> {}
34437 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
34438 impl<'a> ::std::ops::Deref for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
34439     type Target = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
deref(&self) -> &Self::Target34440     fn deref(&self) -> &Self::Target {
34441         &self.inner
34442     }
34443 }
34444 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34445     fn deref_mut(&mut self) -> &mut Self::Target {
34446         &mut self.inner
34447     }
34448 }
34449 impl<'a> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
buffer_device_address(mut self, buffer_device_address: bool) -> Self34450     pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self {
34451         self.inner.buffer_device_address = buffer_device_address.into();
34452         self
34453     }
buffer_device_address_capture_replay( mut self, buffer_device_address_capture_replay: bool, ) -> Self34454     pub fn buffer_device_address_capture_replay(
34455         mut self,
34456         buffer_device_address_capture_replay: bool,
34457     ) -> Self {
34458         self.inner.buffer_device_address_capture_replay =
34459             buffer_device_address_capture_replay.into();
34460         self
34461     }
buffer_device_address_multi_device( mut self, buffer_device_address_multi_device: bool, ) -> Self34462     pub fn buffer_device_address_multi_device(
34463         mut self,
34464         buffer_device_address_multi_device: bool,
34465     ) -> Self {
34466         self.inner.buffer_device_address_multi_device = buffer_device_address_multi_device.into();
34467         self
34468     }
34469     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34470     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34471     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBufferDeviceAddressFeaturesEXT34472     pub fn build(self) -> PhysicalDeviceBufferDeviceAddressFeaturesEXT {
34473         self.inner
34474     }
34475 }
34476 #[repr(C)]
34477 #[derive(Copy, Clone, Debug)]
34478 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferDeviceAddressInfo.html>"]
34479 pub struct BufferDeviceAddressInfo {
34480     pub s_type: StructureType,
34481     pub p_next: *const c_void,
34482     pub buffer: Buffer,
34483 }
34484 impl ::std::default::Default for BufferDeviceAddressInfo {
default() -> BufferDeviceAddressInfo34485     fn default() -> BufferDeviceAddressInfo {
34486         BufferDeviceAddressInfo {
34487             s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
34488             p_next: ::std::ptr::null(),
34489             buffer: Buffer::default(),
34490         }
34491     }
34492 }
34493 impl BufferDeviceAddressInfo {
builder<'a>() -> BufferDeviceAddressInfoBuilder<'a>34494     pub fn builder<'a>() -> BufferDeviceAddressInfoBuilder<'a> {
34495         BufferDeviceAddressInfoBuilder {
34496             inner: BufferDeviceAddressInfo::default(),
34497             marker: ::std::marker::PhantomData,
34498         }
34499     }
34500 }
34501 #[repr(transparent)]
34502 pub struct BufferDeviceAddressInfoBuilder<'a> {
34503     inner: BufferDeviceAddressInfo,
34504     marker: ::std::marker::PhantomData<&'a ()>,
34505 }
34506 impl<'a> ::std::ops::Deref for BufferDeviceAddressInfoBuilder<'a> {
34507     type Target = BufferDeviceAddressInfo;
deref(&self) -> &Self::Target34508     fn deref(&self) -> &Self::Target {
34509         &self.inner
34510     }
34511 }
34512 impl<'a> ::std::ops::DerefMut for BufferDeviceAddressInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34513     fn deref_mut(&mut self) -> &mut Self::Target {
34514         &mut self.inner
34515     }
34516 }
34517 impl<'a> BufferDeviceAddressInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self34518     pub fn buffer(mut self, buffer: Buffer) -> Self {
34519         self.inner.buffer = buffer;
34520         self
34521     }
34522     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34523     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34524     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferDeviceAddressInfo34525     pub fn build(self) -> BufferDeviceAddressInfo {
34526         self.inner
34527     }
34528 }
34529 #[repr(C)]
34530 #[derive(Copy, Clone, Debug)]
34531 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>"]
34532 pub struct BufferOpaqueCaptureAddressCreateInfo {
34533     pub s_type: StructureType,
34534     pub p_next: *const c_void,
34535     pub opaque_capture_address: u64,
34536 }
34537 impl ::std::default::Default for BufferOpaqueCaptureAddressCreateInfo {
default() -> BufferOpaqueCaptureAddressCreateInfo34538     fn default() -> BufferOpaqueCaptureAddressCreateInfo {
34539         BufferOpaqueCaptureAddressCreateInfo {
34540             s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
34541             p_next: ::std::ptr::null(),
34542             opaque_capture_address: u64::default(),
34543         }
34544     }
34545 }
34546 impl BufferOpaqueCaptureAddressCreateInfo {
builder<'a>() -> BufferOpaqueCaptureAddressCreateInfoBuilder<'a>34547     pub fn builder<'a>() -> BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34548         BufferOpaqueCaptureAddressCreateInfoBuilder {
34549             inner: BufferOpaqueCaptureAddressCreateInfo::default(),
34550             marker: ::std::marker::PhantomData,
34551         }
34552     }
34553 }
34554 #[repr(transparent)]
34555 pub struct BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34556     inner: BufferOpaqueCaptureAddressCreateInfo,
34557     marker: ::std::marker::PhantomData<&'a ()>,
34558 }
34559 unsafe impl ExtendsBufferCreateInfo for BufferOpaqueCaptureAddressCreateInfoBuilder<'_> {}
34560 unsafe impl ExtendsBufferCreateInfo for BufferOpaqueCaptureAddressCreateInfo {}
34561 impl<'a> ::std::ops::Deref for BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
34562     type Target = BufferOpaqueCaptureAddressCreateInfo;
deref(&self) -> &Self::Target34563     fn deref(&self) -> &Self::Target {
34564         &self.inner
34565     }
34566 }
34567 impl<'a> ::std::ops::DerefMut for BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34568     fn deref_mut(&mut self) -> &mut Self::Target {
34569         &mut self.inner
34570     }
34571 }
34572 impl<'a> BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
opaque_capture_address(mut self, opaque_capture_address: u64) -> Self34573     pub fn opaque_capture_address(mut self, opaque_capture_address: u64) -> Self {
34574         self.inner.opaque_capture_address = opaque_capture_address;
34575         self
34576     }
34577     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34578     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34579     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferOpaqueCaptureAddressCreateInfo34580     pub fn build(self) -> BufferOpaqueCaptureAddressCreateInfo {
34581         self.inner
34582     }
34583 }
34584 #[repr(C)]
34585 #[derive(Copy, Clone, Debug)]
34586 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferDeviceAddressCreateInfoEXT.html>"]
34587 pub struct BufferDeviceAddressCreateInfoEXT {
34588     pub s_type: StructureType,
34589     pub p_next: *const c_void,
34590     pub device_address: DeviceAddress,
34591 }
34592 impl ::std::default::Default for BufferDeviceAddressCreateInfoEXT {
default() -> BufferDeviceAddressCreateInfoEXT34593     fn default() -> BufferDeviceAddressCreateInfoEXT {
34594         BufferDeviceAddressCreateInfoEXT {
34595             s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
34596             p_next: ::std::ptr::null(),
34597             device_address: DeviceAddress::default(),
34598         }
34599     }
34600 }
34601 impl BufferDeviceAddressCreateInfoEXT {
builder<'a>() -> BufferDeviceAddressCreateInfoEXTBuilder<'a>34602     pub fn builder<'a>() -> BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34603         BufferDeviceAddressCreateInfoEXTBuilder {
34604             inner: BufferDeviceAddressCreateInfoEXT::default(),
34605             marker: ::std::marker::PhantomData,
34606         }
34607     }
34608 }
34609 #[repr(transparent)]
34610 pub struct BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34611     inner: BufferDeviceAddressCreateInfoEXT,
34612     marker: ::std::marker::PhantomData<&'a ()>,
34613 }
34614 unsafe impl ExtendsBufferCreateInfo for BufferDeviceAddressCreateInfoEXTBuilder<'_> {}
34615 unsafe impl ExtendsBufferCreateInfo for BufferDeviceAddressCreateInfoEXT {}
34616 impl<'a> ::std::ops::Deref for BufferDeviceAddressCreateInfoEXTBuilder<'a> {
34617     type Target = BufferDeviceAddressCreateInfoEXT;
deref(&self) -> &Self::Target34618     fn deref(&self) -> &Self::Target {
34619         &self.inner
34620     }
34621 }
34622 impl<'a> ::std::ops::DerefMut for BufferDeviceAddressCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34623     fn deref_mut(&mut self) -> &mut Self::Target {
34624         &mut self.inner
34625     }
34626 }
34627 impl<'a> BufferDeviceAddressCreateInfoEXTBuilder<'a> {
device_address(mut self, device_address: DeviceAddress) -> Self34628     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
34629         self.inner.device_address = device_address;
34630         self
34631     }
34632     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34633     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34634     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferDeviceAddressCreateInfoEXT34635     pub fn build(self) -> BufferDeviceAddressCreateInfoEXT {
34636         self.inner
34637     }
34638 }
34639 #[repr(C)]
34640 #[derive(Copy, Clone, Debug)]
34641 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>"]
34642 pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
34643     pub s_type: StructureType,
34644     pub p_next: *mut c_void,
34645     pub image_view_type: ImageViewType,
34646 }
34647 impl ::std::default::Default for PhysicalDeviceImageViewImageFormatInfoEXT {
default() -> PhysicalDeviceImageViewImageFormatInfoEXT34648     fn default() -> PhysicalDeviceImageViewImageFormatInfoEXT {
34649         PhysicalDeviceImageViewImageFormatInfoEXT {
34650             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
34651             p_next: ::std::ptr::null_mut(),
34652             image_view_type: ImageViewType::default(),
34653         }
34654     }
34655 }
34656 impl PhysicalDeviceImageViewImageFormatInfoEXT {
builder<'a>() -> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a>34657     pub fn builder<'a>() -> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34658         PhysicalDeviceImageViewImageFormatInfoEXTBuilder {
34659             inner: PhysicalDeviceImageViewImageFormatInfoEXT::default(),
34660             marker: ::std::marker::PhantomData,
34661         }
34662     }
34663 }
34664 #[repr(transparent)]
34665 pub struct PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34666     inner: PhysicalDeviceImageViewImageFormatInfoEXT,
34667     marker: ::std::marker::PhantomData<&'a ()>,
34668 }
34669 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2
34670     for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'_>
34671 {
34672 }
34673 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for PhysicalDeviceImageViewImageFormatInfoEXT {}
34674 impl<'a> ::std::ops::Deref for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
34675     type Target = PhysicalDeviceImageViewImageFormatInfoEXT;
deref(&self) -> &Self::Target34676     fn deref(&self) -> &Self::Target {
34677         &self.inner
34678     }
34679 }
34680 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34681     fn deref_mut(&mut self) -> &mut Self::Target {
34682         &mut self.inner
34683     }
34684 }
34685 impl<'a> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
image_view_type(mut self, image_view_type: ImageViewType) -> Self34686     pub fn image_view_type(mut self, image_view_type: ImageViewType) -> Self {
34687         self.inner.image_view_type = image_view_type;
34688         self
34689     }
34690     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34691     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34692     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageViewImageFormatInfoEXT34693     pub fn build(self) -> PhysicalDeviceImageViewImageFormatInfoEXT {
34694         self.inner
34695     }
34696 }
34697 #[repr(C)]
34698 #[derive(Copy, Clone, Debug)]
34699 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>"]
34700 pub struct FilterCubicImageViewImageFormatPropertiesEXT {
34701     pub s_type: StructureType,
34702     pub p_next: *mut c_void,
34703     pub filter_cubic: Bool32,
34704     pub filter_cubic_minmax: Bool32,
34705 }
34706 impl ::std::default::Default for FilterCubicImageViewImageFormatPropertiesEXT {
default() -> FilterCubicImageViewImageFormatPropertiesEXT34707     fn default() -> FilterCubicImageViewImageFormatPropertiesEXT {
34708         FilterCubicImageViewImageFormatPropertiesEXT {
34709             s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
34710             p_next: ::std::ptr::null_mut(),
34711             filter_cubic: Bool32::default(),
34712             filter_cubic_minmax: Bool32::default(),
34713         }
34714     }
34715 }
34716 impl FilterCubicImageViewImageFormatPropertiesEXT {
builder<'a>() -> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a>34717     pub fn builder<'a>() -> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
34718         FilterCubicImageViewImageFormatPropertiesEXTBuilder {
34719             inner: FilterCubicImageViewImageFormatPropertiesEXT::default(),
34720             marker: ::std::marker::PhantomData,
34721         }
34722     }
34723 }
34724 #[repr(transparent)]
34725 pub struct FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
34726     inner: FilterCubicImageViewImageFormatPropertiesEXT,
34727     marker: ::std::marker::PhantomData<&'a ()>,
34728 }
34729 unsafe impl ExtendsImageFormatProperties2
34730     for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'_>
34731 {
34732 }
34733 unsafe impl ExtendsImageFormatProperties2 for FilterCubicImageViewImageFormatPropertiesEXT {}
34734 impl<'a> ::std::ops::Deref for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
34735     type Target = FilterCubicImageViewImageFormatPropertiesEXT;
deref(&self) -> &Self::Target34736     fn deref(&self) -> &Self::Target {
34737         &self.inner
34738     }
34739 }
34740 impl<'a> ::std::ops::DerefMut for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34741     fn deref_mut(&mut self) -> &mut Self::Target {
34742         &mut self.inner
34743     }
34744 }
34745 impl<'a> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
filter_cubic(mut self, filter_cubic: bool) -> Self34746     pub fn filter_cubic(mut self, filter_cubic: bool) -> Self {
34747         self.inner.filter_cubic = filter_cubic.into();
34748         self
34749     }
filter_cubic_minmax(mut self, filter_cubic_minmax: bool) -> Self34750     pub fn filter_cubic_minmax(mut self, filter_cubic_minmax: bool) -> Self {
34751         self.inner.filter_cubic_minmax = filter_cubic_minmax.into();
34752         self
34753     }
34754     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34755     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34756     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FilterCubicImageViewImageFormatPropertiesEXT34757     pub fn build(self) -> FilterCubicImageViewImageFormatPropertiesEXT {
34758         self.inner
34759     }
34760 }
34761 #[repr(C)]
34762 #[derive(Copy, Clone, Debug)]
34763 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>"]
34764 pub struct PhysicalDeviceImagelessFramebufferFeatures {
34765     pub s_type: StructureType,
34766     pub p_next: *mut c_void,
34767     pub imageless_framebuffer: Bool32,
34768 }
34769 impl ::std::default::Default for PhysicalDeviceImagelessFramebufferFeatures {
default() -> PhysicalDeviceImagelessFramebufferFeatures34770     fn default() -> PhysicalDeviceImagelessFramebufferFeatures {
34771         PhysicalDeviceImagelessFramebufferFeatures {
34772             s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
34773             p_next: ::std::ptr::null_mut(),
34774             imageless_framebuffer: Bool32::default(),
34775         }
34776     }
34777 }
34778 impl PhysicalDeviceImagelessFramebufferFeatures {
builder<'a>() -> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a>34779     pub fn builder<'a>() -> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
34780         PhysicalDeviceImagelessFramebufferFeaturesBuilder {
34781             inner: PhysicalDeviceImagelessFramebufferFeatures::default(),
34782             marker: ::std::marker::PhantomData,
34783         }
34784     }
34785 }
34786 #[repr(transparent)]
34787 pub struct PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
34788     inner: PhysicalDeviceImagelessFramebufferFeatures,
34789     marker: ::std::marker::PhantomData<&'a ()>,
34790 }
34791 unsafe impl ExtendsPhysicalDeviceFeatures2
34792     for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'_>
34793 {
34794 }
34795 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImagelessFramebufferFeatures {}
34796 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'_> {}
34797 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImagelessFramebufferFeatures {}
34798 impl<'a> ::std::ops::Deref for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
34799     type Target = PhysicalDeviceImagelessFramebufferFeatures;
deref(&self) -> &Self::Target34800     fn deref(&self) -> &Self::Target {
34801         &self.inner
34802     }
34803 }
34804 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34805     fn deref_mut(&mut self) -> &mut Self::Target {
34806         &mut self.inner
34807     }
34808 }
34809 impl<'a> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self34810     pub fn imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self {
34811         self.inner.imageless_framebuffer = imageless_framebuffer.into();
34812         self
34813     }
34814     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34815     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34816     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImagelessFramebufferFeatures34817     pub fn build(self) -> PhysicalDeviceImagelessFramebufferFeatures {
34818         self.inner
34819     }
34820 }
34821 #[repr(C)]
34822 #[derive(Copy, Clone, Debug)]
34823 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferAttachmentsCreateInfo.html>"]
34824 pub struct FramebufferAttachmentsCreateInfo {
34825     pub s_type: StructureType,
34826     pub p_next: *const c_void,
34827     pub attachment_image_info_count: u32,
34828     pub p_attachment_image_infos: *const FramebufferAttachmentImageInfo,
34829 }
34830 impl ::std::default::Default for FramebufferAttachmentsCreateInfo {
default() -> FramebufferAttachmentsCreateInfo34831     fn default() -> FramebufferAttachmentsCreateInfo {
34832         FramebufferAttachmentsCreateInfo {
34833             s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
34834             p_next: ::std::ptr::null(),
34835             attachment_image_info_count: u32::default(),
34836             p_attachment_image_infos: ::std::ptr::null(),
34837         }
34838     }
34839 }
34840 impl FramebufferAttachmentsCreateInfo {
builder<'a>() -> FramebufferAttachmentsCreateInfoBuilder<'a>34841     pub fn builder<'a>() -> FramebufferAttachmentsCreateInfoBuilder<'a> {
34842         FramebufferAttachmentsCreateInfoBuilder {
34843             inner: FramebufferAttachmentsCreateInfo::default(),
34844             marker: ::std::marker::PhantomData,
34845         }
34846     }
34847 }
34848 #[repr(transparent)]
34849 pub struct FramebufferAttachmentsCreateInfoBuilder<'a> {
34850     inner: FramebufferAttachmentsCreateInfo,
34851     marker: ::std::marker::PhantomData<&'a ()>,
34852 }
34853 unsafe impl ExtendsFramebufferCreateInfo for FramebufferAttachmentsCreateInfoBuilder<'_> {}
34854 unsafe impl ExtendsFramebufferCreateInfo for FramebufferAttachmentsCreateInfo {}
34855 impl<'a> ::std::ops::Deref for FramebufferAttachmentsCreateInfoBuilder<'a> {
34856     type Target = FramebufferAttachmentsCreateInfo;
deref(&self) -> &Self::Target34857     fn deref(&self) -> &Self::Target {
34858         &self.inner
34859     }
34860 }
34861 impl<'a> ::std::ops::DerefMut for FramebufferAttachmentsCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34862     fn deref_mut(&mut self) -> &mut Self::Target {
34863         &mut self.inner
34864     }
34865 }
34866 impl<'a> FramebufferAttachmentsCreateInfoBuilder<'a> {
attachment_image_infos( mut self, attachment_image_infos: &'a [FramebufferAttachmentImageInfo], ) -> Self34867     pub fn attachment_image_infos(
34868         mut self,
34869         attachment_image_infos: &'a [FramebufferAttachmentImageInfo],
34870     ) -> Self {
34871         self.inner.attachment_image_info_count = attachment_image_infos.len() as _;
34872         self.inner.p_attachment_image_infos = attachment_image_infos.as_ptr();
34873         self
34874     }
34875     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34876     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34877     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferAttachmentsCreateInfo34878     pub fn build(self) -> FramebufferAttachmentsCreateInfo {
34879         self.inner
34880     }
34881 }
34882 #[repr(C)]
34883 #[derive(Copy, Clone, Debug)]
34884 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferAttachmentImageInfo.html>"]
34885 pub struct FramebufferAttachmentImageInfo {
34886     pub s_type: StructureType,
34887     pub p_next: *const c_void,
34888     pub flags: ImageCreateFlags,
34889     pub usage: ImageUsageFlags,
34890     pub width: u32,
34891     pub height: u32,
34892     pub layer_count: u32,
34893     pub view_format_count: u32,
34894     pub p_view_formats: *const Format,
34895 }
34896 impl ::std::default::Default for FramebufferAttachmentImageInfo {
default() -> FramebufferAttachmentImageInfo34897     fn default() -> FramebufferAttachmentImageInfo {
34898         FramebufferAttachmentImageInfo {
34899             s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
34900             p_next: ::std::ptr::null(),
34901             flags: ImageCreateFlags::default(),
34902             usage: ImageUsageFlags::default(),
34903             width: u32::default(),
34904             height: u32::default(),
34905             layer_count: u32::default(),
34906             view_format_count: u32::default(),
34907             p_view_formats: ::std::ptr::null(),
34908         }
34909     }
34910 }
34911 impl FramebufferAttachmentImageInfo {
builder<'a>() -> FramebufferAttachmentImageInfoBuilder<'a>34912     pub fn builder<'a>() -> FramebufferAttachmentImageInfoBuilder<'a> {
34913         FramebufferAttachmentImageInfoBuilder {
34914             inner: FramebufferAttachmentImageInfo::default(),
34915             marker: ::std::marker::PhantomData,
34916         }
34917     }
34918 }
34919 #[repr(transparent)]
34920 pub struct FramebufferAttachmentImageInfoBuilder<'a> {
34921     inner: FramebufferAttachmentImageInfo,
34922     marker: ::std::marker::PhantomData<&'a ()>,
34923 }
34924 impl<'a> ::std::ops::Deref for FramebufferAttachmentImageInfoBuilder<'a> {
34925     type Target = FramebufferAttachmentImageInfo;
deref(&self) -> &Self::Target34926     fn deref(&self) -> &Self::Target {
34927         &self.inner
34928     }
34929 }
34930 impl<'a> ::std::ops::DerefMut for FramebufferAttachmentImageInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34931     fn deref_mut(&mut self) -> &mut Self::Target {
34932         &mut self.inner
34933     }
34934 }
34935 impl<'a> FramebufferAttachmentImageInfoBuilder<'a> {
flags(mut self, flags: ImageCreateFlags) -> Self34936     pub fn flags(mut self, flags: ImageCreateFlags) -> Self {
34937         self.inner.flags = flags;
34938         self
34939     }
usage(mut self, usage: ImageUsageFlags) -> Self34940     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
34941         self.inner.usage = usage;
34942         self
34943     }
width(mut self, width: u32) -> Self34944     pub fn width(mut self, width: u32) -> Self {
34945         self.inner.width = width;
34946         self
34947     }
height(mut self, height: u32) -> Self34948     pub fn height(mut self, height: u32) -> Self {
34949         self.inner.height = height;
34950         self
34951     }
layer_count(mut self, layer_count: u32) -> Self34952     pub fn layer_count(mut self, layer_count: u32) -> Self {
34953         self.inner.layer_count = layer_count;
34954         self
34955     }
view_formats(mut self, view_formats: &'a [Format]) -> Self34956     pub fn view_formats(mut self, view_formats: &'a [Format]) -> Self {
34957         self.inner.view_format_count = view_formats.len() as _;
34958         self.inner.p_view_formats = view_formats.as_ptr();
34959         self
34960     }
34961     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34962     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34963     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferAttachmentImageInfo34964     pub fn build(self) -> FramebufferAttachmentImageInfo {
34965         self.inner
34966     }
34967 }
34968 #[repr(C)]
34969 #[derive(Copy, Clone, Debug)]
34970 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassAttachmentBeginInfo.html>"]
34971 pub struct RenderPassAttachmentBeginInfo {
34972     pub s_type: StructureType,
34973     pub p_next: *const c_void,
34974     pub attachment_count: u32,
34975     pub p_attachments: *const ImageView,
34976 }
34977 impl ::std::default::Default for RenderPassAttachmentBeginInfo {
default() -> RenderPassAttachmentBeginInfo34978     fn default() -> RenderPassAttachmentBeginInfo {
34979         RenderPassAttachmentBeginInfo {
34980             s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
34981             p_next: ::std::ptr::null(),
34982             attachment_count: u32::default(),
34983             p_attachments: ::std::ptr::null(),
34984         }
34985     }
34986 }
34987 impl RenderPassAttachmentBeginInfo {
builder<'a>() -> RenderPassAttachmentBeginInfoBuilder<'a>34988     pub fn builder<'a>() -> RenderPassAttachmentBeginInfoBuilder<'a> {
34989         RenderPassAttachmentBeginInfoBuilder {
34990             inner: RenderPassAttachmentBeginInfo::default(),
34991             marker: ::std::marker::PhantomData,
34992         }
34993     }
34994 }
34995 #[repr(transparent)]
34996 pub struct RenderPassAttachmentBeginInfoBuilder<'a> {
34997     inner: RenderPassAttachmentBeginInfo,
34998     marker: ::std::marker::PhantomData<&'a ()>,
34999 }
35000 unsafe impl ExtendsRenderPassBeginInfo for RenderPassAttachmentBeginInfoBuilder<'_> {}
35001 unsafe impl ExtendsRenderPassBeginInfo for RenderPassAttachmentBeginInfo {}
35002 impl<'a> ::std::ops::Deref for RenderPassAttachmentBeginInfoBuilder<'a> {
35003     type Target = RenderPassAttachmentBeginInfo;
deref(&self) -> &Self::Target35004     fn deref(&self) -> &Self::Target {
35005         &self.inner
35006     }
35007 }
35008 impl<'a> ::std::ops::DerefMut for RenderPassAttachmentBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35009     fn deref_mut(&mut self) -> &mut Self::Target {
35010         &mut self.inner
35011     }
35012 }
35013 impl<'a> RenderPassAttachmentBeginInfoBuilder<'a> {
attachments(mut self, attachments: &'a [ImageView]) -> Self35014     pub fn attachments(mut self, attachments: &'a [ImageView]) -> Self {
35015         self.inner.attachment_count = attachments.len() as _;
35016         self.inner.p_attachments = attachments.as_ptr();
35017         self
35018     }
35019     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35020     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35021     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassAttachmentBeginInfo35022     pub fn build(self) -> RenderPassAttachmentBeginInfo {
35023         self.inner
35024     }
35025 }
35026 #[repr(C)]
35027 #[derive(Copy, Clone, Debug)]
35028 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>"]
35029 pub struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
35030     pub s_type: StructureType,
35031     pub p_next: *mut c_void,
35032     pub texture_compression_astc_hdr: Bool32,
35033 }
35034 impl ::std::default::Default for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
default() -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT35035     fn default() -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
35036         PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
35037             s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,
35038             p_next: ::std::ptr::null_mut(),
35039             texture_compression_astc_hdr: Bool32::default(),
35040         }
35041     }
35042 }
35043 impl PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
builder<'a>() -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a>35044     pub fn builder<'a>() -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
35045         PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder {
35046             inner: PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT::default(),
35047             marker: ::std::marker::PhantomData,
35048         }
35049     }
35050 }
35051 #[repr(transparent)]
35052 pub struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
35053     inner: PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT,
35054     marker: ::std::marker::PhantomData<&'a ()>,
35055 }
35056 unsafe impl ExtendsPhysicalDeviceFeatures2
35057     for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'_>
35058 {
35059 }
35060 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {}
35061 unsafe impl ExtendsDeviceCreateInfo
35062     for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'_>
35063 {
35064 }
35065 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {}
35066 impl<'a> ::std::ops::Deref for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
35067     type Target = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
deref(&self) -> &Self::Target35068     fn deref(&self) -> &Self::Target {
35069         &self.inner
35070     }
35071 }
35072 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35073     fn deref_mut(&mut self) -> &mut Self::Target {
35074         &mut self.inner
35075     }
35076 }
35077 impl<'a> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
texture_compression_astc_hdr(mut self, texture_compression_astc_hdr: bool) -> Self35078     pub fn texture_compression_astc_hdr(mut self, texture_compression_astc_hdr: bool) -> Self {
35079         self.inner.texture_compression_astc_hdr = texture_compression_astc_hdr.into();
35080         self
35081     }
35082     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35083     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35084     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT35085     pub fn build(self) -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
35086         self.inner
35087     }
35088 }
35089 #[repr(C)]
35090 #[derive(Copy, Clone, Debug)]
35091 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>"]
35092 pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
35093     pub s_type: StructureType,
35094     pub p_next: *mut c_void,
35095     pub cooperative_matrix: Bool32,
35096     pub cooperative_matrix_robust_buffer_access: Bool32,
35097 }
35098 impl ::std::default::Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
default() -> PhysicalDeviceCooperativeMatrixFeaturesNV35099     fn default() -> PhysicalDeviceCooperativeMatrixFeaturesNV {
35100         PhysicalDeviceCooperativeMatrixFeaturesNV {
35101             s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
35102             p_next: ::std::ptr::null_mut(),
35103             cooperative_matrix: Bool32::default(),
35104             cooperative_matrix_robust_buffer_access: Bool32::default(),
35105         }
35106     }
35107 }
35108 impl PhysicalDeviceCooperativeMatrixFeaturesNV {
builder<'a>() -> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a>35109     pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35110         PhysicalDeviceCooperativeMatrixFeaturesNVBuilder {
35111             inner: PhysicalDeviceCooperativeMatrixFeaturesNV::default(),
35112             marker: ::std::marker::PhantomData,
35113         }
35114     }
35115 }
35116 #[repr(transparent)]
35117 pub struct PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35118     inner: PhysicalDeviceCooperativeMatrixFeaturesNV,
35119     marker: ::std::marker::PhantomData<&'a ()>,
35120 }
35121 unsafe impl ExtendsPhysicalDeviceFeatures2
35122     for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'_>
35123 {
35124 }
35125 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCooperativeMatrixFeaturesNV {}
35126 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'_> {}
35127 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCooperativeMatrixFeaturesNV {}
35128 impl<'a> ::std::ops::Deref for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
35129     type Target = PhysicalDeviceCooperativeMatrixFeaturesNV;
deref(&self) -> &Self::Target35130     fn deref(&self) -> &Self::Target {
35131         &self.inner
35132     }
35133 }
35134 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35135     fn deref_mut(&mut self) -> &mut Self::Target {
35136         &mut self.inner
35137     }
35138 }
35139 impl<'a> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
cooperative_matrix(mut self, cooperative_matrix: bool) -> Self35140     pub fn cooperative_matrix(mut self, cooperative_matrix: bool) -> Self {
35141         self.inner.cooperative_matrix = cooperative_matrix.into();
35142         self
35143     }
cooperative_matrix_robust_buffer_access( mut self, cooperative_matrix_robust_buffer_access: bool, ) -> Self35144     pub fn cooperative_matrix_robust_buffer_access(
35145         mut self,
35146         cooperative_matrix_robust_buffer_access: bool,
35147     ) -> Self {
35148         self.inner.cooperative_matrix_robust_buffer_access =
35149             cooperative_matrix_robust_buffer_access.into();
35150         self
35151     }
35152     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35153     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35154     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCooperativeMatrixFeaturesNV35155     pub fn build(self) -> PhysicalDeviceCooperativeMatrixFeaturesNV {
35156         self.inner
35157     }
35158 }
35159 #[repr(C)]
35160 #[derive(Copy, Clone, Debug)]
35161 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>"]
35162 pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
35163     pub s_type: StructureType,
35164     pub p_next: *mut c_void,
35165     pub cooperative_matrix_supported_stages: ShaderStageFlags,
35166 }
35167 impl ::std::default::Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
default() -> PhysicalDeviceCooperativeMatrixPropertiesNV35168     fn default() -> PhysicalDeviceCooperativeMatrixPropertiesNV {
35169         PhysicalDeviceCooperativeMatrixPropertiesNV {
35170             s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
35171             p_next: ::std::ptr::null_mut(),
35172             cooperative_matrix_supported_stages: ShaderStageFlags::default(),
35173         }
35174     }
35175 }
35176 impl PhysicalDeviceCooperativeMatrixPropertiesNV {
builder<'a>() -> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a>35177     pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35178         PhysicalDeviceCooperativeMatrixPropertiesNVBuilder {
35179             inner: PhysicalDeviceCooperativeMatrixPropertiesNV::default(),
35180             marker: ::std::marker::PhantomData,
35181         }
35182     }
35183 }
35184 #[repr(transparent)]
35185 pub struct PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35186     inner: PhysicalDeviceCooperativeMatrixPropertiesNV,
35187     marker: ::std::marker::PhantomData<&'a ()>,
35188 }
35189 unsafe impl ExtendsPhysicalDeviceProperties2
35190     for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'_>
35191 {
35192 }
35193 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCooperativeMatrixPropertiesNV {}
35194 impl<'a> ::std::ops::Deref for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
35195     type Target = PhysicalDeviceCooperativeMatrixPropertiesNV;
deref(&self) -> &Self::Target35196     fn deref(&self) -> &Self::Target {
35197         &self.inner
35198     }
35199 }
35200 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35201     fn deref_mut(&mut self) -> &mut Self::Target {
35202         &mut self.inner
35203     }
35204 }
35205 impl<'a> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
cooperative_matrix_supported_stages( mut self, cooperative_matrix_supported_stages: ShaderStageFlags, ) -> Self35206     pub fn cooperative_matrix_supported_stages(
35207         mut self,
35208         cooperative_matrix_supported_stages: ShaderStageFlags,
35209     ) -> Self {
35210         self.inner.cooperative_matrix_supported_stages = cooperative_matrix_supported_stages;
35211         self
35212     }
35213     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35214     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35215     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCooperativeMatrixPropertiesNV35216     pub fn build(self) -> PhysicalDeviceCooperativeMatrixPropertiesNV {
35217         self.inner
35218     }
35219 }
35220 #[repr(C)]
35221 #[derive(Copy, Clone, Debug)]
35222 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCooperativeMatrixPropertiesNV.html>"]
35223 pub struct CooperativeMatrixPropertiesNV {
35224     pub s_type: StructureType,
35225     pub p_next: *mut c_void,
35226     pub m_size: u32,
35227     pub n_size: u32,
35228     pub k_size: u32,
35229     pub a_type: ComponentTypeNV,
35230     pub b_type: ComponentTypeNV,
35231     pub c_type: ComponentTypeNV,
35232     pub d_type: ComponentTypeNV,
35233     pub scope: ScopeNV,
35234 }
35235 impl ::std::default::Default for CooperativeMatrixPropertiesNV {
default() -> CooperativeMatrixPropertiesNV35236     fn default() -> CooperativeMatrixPropertiesNV {
35237         CooperativeMatrixPropertiesNV {
35238             s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
35239             p_next: ::std::ptr::null_mut(),
35240             m_size: u32::default(),
35241             n_size: u32::default(),
35242             k_size: u32::default(),
35243             a_type: ComponentTypeNV::default(),
35244             b_type: ComponentTypeNV::default(),
35245             c_type: ComponentTypeNV::default(),
35246             d_type: ComponentTypeNV::default(),
35247             scope: ScopeNV::default(),
35248         }
35249     }
35250 }
35251 impl CooperativeMatrixPropertiesNV {
builder<'a>() -> CooperativeMatrixPropertiesNVBuilder<'a>35252     pub fn builder<'a>() -> CooperativeMatrixPropertiesNVBuilder<'a> {
35253         CooperativeMatrixPropertiesNVBuilder {
35254             inner: CooperativeMatrixPropertiesNV::default(),
35255             marker: ::std::marker::PhantomData,
35256         }
35257     }
35258 }
35259 #[repr(transparent)]
35260 pub struct CooperativeMatrixPropertiesNVBuilder<'a> {
35261     inner: CooperativeMatrixPropertiesNV,
35262     marker: ::std::marker::PhantomData<&'a ()>,
35263 }
35264 impl<'a> ::std::ops::Deref for CooperativeMatrixPropertiesNVBuilder<'a> {
35265     type Target = CooperativeMatrixPropertiesNV;
deref(&self) -> &Self::Target35266     fn deref(&self) -> &Self::Target {
35267         &self.inner
35268     }
35269 }
35270 impl<'a> ::std::ops::DerefMut for CooperativeMatrixPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35271     fn deref_mut(&mut self) -> &mut Self::Target {
35272         &mut self.inner
35273     }
35274 }
35275 impl<'a> CooperativeMatrixPropertiesNVBuilder<'a> {
m_size(mut self, m_size: u32) -> Self35276     pub fn m_size(mut self, m_size: u32) -> Self {
35277         self.inner.m_size = m_size;
35278         self
35279     }
n_size(mut self, n_size: u32) -> Self35280     pub fn n_size(mut self, n_size: u32) -> Self {
35281         self.inner.n_size = n_size;
35282         self
35283     }
k_size(mut self, k_size: u32) -> Self35284     pub fn k_size(mut self, k_size: u32) -> Self {
35285         self.inner.k_size = k_size;
35286         self
35287     }
a_type(mut self, a_type: ComponentTypeNV) -> Self35288     pub fn a_type(mut self, a_type: ComponentTypeNV) -> Self {
35289         self.inner.a_type = a_type;
35290         self
35291     }
b_type(mut self, b_type: ComponentTypeNV) -> Self35292     pub fn b_type(mut self, b_type: ComponentTypeNV) -> Self {
35293         self.inner.b_type = b_type;
35294         self
35295     }
c_type(mut self, c_type: ComponentTypeNV) -> Self35296     pub fn c_type(mut self, c_type: ComponentTypeNV) -> Self {
35297         self.inner.c_type = c_type;
35298         self
35299     }
d_type(mut self, d_type: ComponentTypeNV) -> Self35300     pub fn d_type(mut self, d_type: ComponentTypeNV) -> Self {
35301         self.inner.d_type = d_type;
35302         self
35303     }
scope(mut self, scope: ScopeNV) -> Self35304     pub fn scope(mut self, scope: ScopeNV) -> Self {
35305         self.inner.scope = scope;
35306         self
35307     }
35308     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35309     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35310     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CooperativeMatrixPropertiesNV35311     pub fn build(self) -> CooperativeMatrixPropertiesNV {
35312         self.inner
35313     }
35314 }
35315 #[repr(C)]
35316 #[derive(Copy, Clone, Debug)]
35317 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>"]
35318 pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
35319     pub s_type: StructureType,
35320     pub p_next: *mut c_void,
35321     pub ycbcr_image_arrays: Bool32,
35322 }
35323 impl ::std::default::Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
default() -> PhysicalDeviceYcbcrImageArraysFeaturesEXT35324     fn default() -> PhysicalDeviceYcbcrImageArraysFeaturesEXT {
35325         PhysicalDeviceYcbcrImageArraysFeaturesEXT {
35326             s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
35327             p_next: ::std::ptr::null_mut(),
35328             ycbcr_image_arrays: Bool32::default(),
35329         }
35330     }
35331 }
35332 impl PhysicalDeviceYcbcrImageArraysFeaturesEXT {
builder<'a>() -> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a>35333     pub fn builder<'a>() -> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35334         PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder {
35335             inner: PhysicalDeviceYcbcrImageArraysFeaturesEXT::default(),
35336             marker: ::std::marker::PhantomData,
35337         }
35338     }
35339 }
35340 #[repr(transparent)]
35341 pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35342     inner: PhysicalDeviceYcbcrImageArraysFeaturesEXT,
35343     marker: ::std::marker::PhantomData<&'a ()>,
35344 }
35345 unsafe impl ExtendsPhysicalDeviceFeatures2
35346     for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'_>
35347 {
35348 }
35349 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
35350 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'_> {}
35351 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
35352 impl<'a> ::std::ops::Deref for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
35353     type Target = PhysicalDeviceYcbcrImageArraysFeaturesEXT;
deref(&self) -> &Self::Target35354     fn deref(&self) -> &Self::Target {
35355         &self.inner
35356     }
35357 }
35358 impl<'a> ::std::ops::DerefMut for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35359     fn deref_mut(&mut self) -> &mut Self::Target {
35360         &mut self.inner
35361     }
35362 }
35363 impl<'a> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
ycbcr_image_arrays(mut self, ycbcr_image_arrays: bool) -> Self35364     pub fn ycbcr_image_arrays(mut self, ycbcr_image_arrays: bool) -> Self {
35365         self.inner.ycbcr_image_arrays = ycbcr_image_arrays.into();
35366         self
35367     }
35368     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35369     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35370     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceYcbcrImageArraysFeaturesEXT35371     pub fn build(self) -> PhysicalDeviceYcbcrImageArraysFeaturesEXT {
35372         self.inner
35373     }
35374 }
35375 #[repr(C)]
35376 #[derive(Copy, Clone, Debug)]
35377 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewHandleInfoNVX.html>"]
35378 pub struct ImageViewHandleInfoNVX {
35379     pub s_type: StructureType,
35380     pub p_next: *const c_void,
35381     pub image_view: ImageView,
35382     pub descriptor_type: DescriptorType,
35383     pub sampler: Sampler,
35384 }
35385 impl ::std::default::Default for ImageViewHandleInfoNVX {
default() -> ImageViewHandleInfoNVX35386     fn default() -> ImageViewHandleInfoNVX {
35387         ImageViewHandleInfoNVX {
35388             s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
35389             p_next: ::std::ptr::null(),
35390             image_view: ImageView::default(),
35391             descriptor_type: DescriptorType::default(),
35392             sampler: Sampler::default(),
35393         }
35394     }
35395 }
35396 impl ImageViewHandleInfoNVX {
builder<'a>() -> ImageViewHandleInfoNVXBuilder<'a>35397     pub fn builder<'a>() -> ImageViewHandleInfoNVXBuilder<'a> {
35398         ImageViewHandleInfoNVXBuilder {
35399             inner: ImageViewHandleInfoNVX::default(),
35400             marker: ::std::marker::PhantomData,
35401         }
35402     }
35403 }
35404 #[repr(transparent)]
35405 pub struct ImageViewHandleInfoNVXBuilder<'a> {
35406     inner: ImageViewHandleInfoNVX,
35407     marker: ::std::marker::PhantomData<&'a ()>,
35408 }
35409 impl<'a> ::std::ops::Deref for ImageViewHandleInfoNVXBuilder<'a> {
35410     type Target = ImageViewHandleInfoNVX;
deref(&self) -> &Self::Target35411     fn deref(&self) -> &Self::Target {
35412         &self.inner
35413     }
35414 }
35415 impl<'a> ::std::ops::DerefMut for ImageViewHandleInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35416     fn deref_mut(&mut self) -> &mut Self::Target {
35417         &mut self.inner
35418     }
35419 }
35420 impl<'a> ImageViewHandleInfoNVXBuilder<'a> {
image_view(mut self, image_view: ImageView) -> Self35421     pub fn image_view(mut self, image_view: ImageView) -> Self {
35422         self.inner.image_view = image_view;
35423         self
35424     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self35425     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
35426         self.inner.descriptor_type = descriptor_type;
35427         self
35428     }
sampler(mut self, sampler: Sampler) -> Self35429     pub fn sampler(mut self, sampler: Sampler) -> Self {
35430         self.inner.sampler = sampler;
35431         self
35432     }
35433     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35434     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35435     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewHandleInfoNVX35436     pub fn build(self) -> ImageViewHandleInfoNVX {
35437         self.inner
35438     }
35439 }
35440 #[repr(C)]
35441 #[derive(Copy, Clone, Debug)]
35442 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewAddressPropertiesNVX.html>"]
35443 pub struct ImageViewAddressPropertiesNVX {
35444     pub s_type: StructureType,
35445     pub p_next: *mut c_void,
35446     pub device_address: DeviceAddress,
35447     pub size: DeviceSize,
35448 }
35449 impl ::std::default::Default for ImageViewAddressPropertiesNVX {
default() -> ImageViewAddressPropertiesNVX35450     fn default() -> ImageViewAddressPropertiesNVX {
35451         ImageViewAddressPropertiesNVX {
35452             s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
35453             p_next: ::std::ptr::null_mut(),
35454             device_address: DeviceAddress::default(),
35455             size: DeviceSize::default(),
35456         }
35457     }
35458 }
35459 impl ImageViewAddressPropertiesNVX {
builder<'a>() -> ImageViewAddressPropertiesNVXBuilder<'a>35460     pub fn builder<'a>() -> ImageViewAddressPropertiesNVXBuilder<'a> {
35461         ImageViewAddressPropertiesNVXBuilder {
35462             inner: ImageViewAddressPropertiesNVX::default(),
35463             marker: ::std::marker::PhantomData,
35464         }
35465     }
35466 }
35467 #[repr(transparent)]
35468 pub struct ImageViewAddressPropertiesNVXBuilder<'a> {
35469     inner: ImageViewAddressPropertiesNVX,
35470     marker: ::std::marker::PhantomData<&'a ()>,
35471 }
35472 impl<'a> ::std::ops::Deref for ImageViewAddressPropertiesNVXBuilder<'a> {
35473     type Target = ImageViewAddressPropertiesNVX;
deref(&self) -> &Self::Target35474     fn deref(&self) -> &Self::Target {
35475         &self.inner
35476     }
35477 }
35478 impl<'a> ::std::ops::DerefMut for ImageViewAddressPropertiesNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35479     fn deref_mut(&mut self) -> &mut Self::Target {
35480         &mut self.inner
35481     }
35482 }
35483 impl<'a> ImageViewAddressPropertiesNVXBuilder<'a> {
device_address(mut self, device_address: DeviceAddress) -> Self35484     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
35485         self.inner.device_address = device_address;
35486         self
35487     }
size(mut self, size: DeviceSize) -> Self35488     pub fn size(mut self, size: DeviceSize) -> Self {
35489         self.inner.size = size;
35490         self
35491     }
35492     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35493     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35494     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewAddressPropertiesNVX35495     pub fn build(self) -> ImageViewAddressPropertiesNVX {
35496         self.inner
35497     }
35498 }
35499 #[repr(C)]
35500 #[derive(Copy, Clone, Debug)]
35501 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentFrameTokenGGP.html>"]
35502 pub struct PresentFrameTokenGGP {
35503     pub s_type: StructureType,
35504     pub p_next: *const c_void,
35505     pub frame_token: GgpFrameToken,
35506 }
35507 impl ::std::default::Default for PresentFrameTokenGGP {
default() -> PresentFrameTokenGGP35508     fn default() -> PresentFrameTokenGGP {
35509         PresentFrameTokenGGP {
35510             s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
35511             p_next: ::std::ptr::null(),
35512             frame_token: GgpFrameToken::default(),
35513         }
35514     }
35515 }
35516 impl PresentFrameTokenGGP {
builder<'a>() -> PresentFrameTokenGGPBuilder<'a>35517     pub fn builder<'a>() -> PresentFrameTokenGGPBuilder<'a> {
35518         PresentFrameTokenGGPBuilder {
35519             inner: PresentFrameTokenGGP::default(),
35520             marker: ::std::marker::PhantomData,
35521         }
35522     }
35523 }
35524 #[repr(transparent)]
35525 pub struct PresentFrameTokenGGPBuilder<'a> {
35526     inner: PresentFrameTokenGGP,
35527     marker: ::std::marker::PhantomData<&'a ()>,
35528 }
35529 unsafe impl ExtendsPresentInfoKHR for PresentFrameTokenGGPBuilder<'_> {}
35530 unsafe impl ExtendsPresentInfoKHR for PresentFrameTokenGGP {}
35531 impl<'a> ::std::ops::Deref for PresentFrameTokenGGPBuilder<'a> {
35532     type Target = PresentFrameTokenGGP;
deref(&self) -> &Self::Target35533     fn deref(&self) -> &Self::Target {
35534         &self.inner
35535     }
35536 }
35537 impl<'a> ::std::ops::DerefMut for PresentFrameTokenGGPBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35538     fn deref_mut(&mut self) -> &mut Self::Target {
35539         &mut self.inner
35540     }
35541 }
35542 impl<'a> PresentFrameTokenGGPBuilder<'a> {
frame_token(mut self, frame_token: GgpFrameToken) -> Self35543     pub fn frame_token(mut self, frame_token: GgpFrameToken) -> Self {
35544         self.inner.frame_token = frame_token;
35545         self
35546     }
35547     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35548     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35549     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentFrameTokenGGP35550     pub fn build(self) -> PresentFrameTokenGGP {
35551         self.inner
35552     }
35553 }
35554 #[repr(C)]
35555 #[derive(Copy, Clone, Default, Debug)]
35556 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCreationFeedbackEXT.html>"]
35557 pub struct PipelineCreationFeedbackEXT {
35558     pub flags: PipelineCreationFeedbackFlagsEXT,
35559     pub duration: u64,
35560 }
35561 impl PipelineCreationFeedbackEXT {
builder<'a>() -> PipelineCreationFeedbackEXTBuilder<'a>35562     pub fn builder<'a>() -> PipelineCreationFeedbackEXTBuilder<'a> {
35563         PipelineCreationFeedbackEXTBuilder {
35564             inner: PipelineCreationFeedbackEXT::default(),
35565             marker: ::std::marker::PhantomData,
35566         }
35567     }
35568 }
35569 #[repr(transparent)]
35570 pub struct PipelineCreationFeedbackEXTBuilder<'a> {
35571     inner: PipelineCreationFeedbackEXT,
35572     marker: ::std::marker::PhantomData<&'a ()>,
35573 }
35574 impl<'a> ::std::ops::Deref for PipelineCreationFeedbackEXTBuilder<'a> {
35575     type Target = PipelineCreationFeedbackEXT;
deref(&self) -> &Self::Target35576     fn deref(&self) -> &Self::Target {
35577         &self.inner
35578     }
35579 }
35580 impl<'a> ::std::ops::DerefMut for PipelineCreationFeedbackEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35581     fn deref_mut(&mut self) -> &mut Self::Target {
35582         &mut self.inner
35583     }
35584 }
35585 impl<'a> PipelineCreationFeedbackEXTBuilder<'a> {
flags(mut self, flags: PipelineCreationFeedbackFlagsEXT) -> Self35586     pub fn flags(mut self, flags: PipelineCreationFeedbackFlagsEXT) -> Self {
35587         self.inner.flags = flags;
35588         self
35589     }
duration(mut self, duration: u64) -> Self35590     pub fn duration(mut self, duration: u64) -> Self {
35591         self.inner.duration = duration;
35592         self
35593     }
35594     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35595     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35596     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCreationFeedbackEXT35597     pub fn build(self) -> PipelineCreationFeedbackEXT {
35598         self.inner
35599     }
35600 }
35601 #[repr(C)]
35602 #[derive(Copy, Clone, Debug)]
35603 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>"]
35604 pub struct PipelineCreationFeedbackCreateInfoEXT {
35605     pub s_type: StructureType,
35606     pub p_next: *const c_void,
35607     pub p_pipeline_creation_feedback: *mut PipelineCreationFeedbackEXT,
35608     pub pipeline_stage_creation_feedback_count: u32,
35609     pub p_pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedbackEXT,
35610 }
35611 impl ::std::default::Default for PipelineCreationFeedbackCreateInfoEXT {
default() -> PipelineCreationFeedbackCreateInfoEXT35612     fn default() -> PipelineCreationFeedbackCreateInfoEXT {
35613         PipelineCreationFeedbackCreateInfoEXT {
35614             s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT,
35615             p_next: ::std::ptr::null(),
35616             p_pipeline_creation_feedback: ::std::ptr::null_mut(),
35617             pipeline_stage_creation_feedback_count: u32::default(),
35618             p_pipeline_stage_creation_feedbacks: ::std::ptr::null_mut(),
35619         }
35620     }
35621 }
35622 impl PipelineCreationFeedbackCreateInfoEXT {
builder<'a>() -> PipelineCreationFeedbackCreateInfoEXTBuilder<'a>35623     pub fn builder<'a>() -> PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
35624         PipelineCreationFeedbackCreateInfoEXTBuilder {
35625             inner: PipelineCreationFeedbackCreateInfoEXT::default(),
35626             marker: ::std::marker::PhantomData,
35627         }
35628     }
35629 }
35630 #[repr(transparent)]
35631 pub struct PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
35632     inner: PipelineCreationFeedbackCreateInfoEXT,
35633     marker: ::std::marker::PhantomData<&'a ()>,
35634 }
35635 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXTBuilder<'_> {}
35636 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXT {}
35637 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXTBuilder<'_> {}
35638 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXT {}
35639 unsafe impl ExtendsRayTracingPipelineCreateInfoNV
35640     for PipelineCreationFeedbackCreateInfoEXTBuilder<'_>
35641 {
35642 }
35643 unsafe impl ExtendsRayTracingPipelineCreateInfoNV for PipelineCreationFeedbackCreateInfoEXT {}
35644 unsafe impl ExtendsRayTracingPipelineCreateInfoKHR
35645     for PipelineCreationFeedbackCreateInfoEXTBuilder<'_>
35646 {
35647 }
35648 unsafe impl ExtendsRayTracingPipelineCreateInfoKHR for PipelineCreationFeedbackCreateInfoEXT {}
35649 impl<'a> ::std::ops::Deref for PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
35650     type Target = PipelineCreationFeedbackCreateInfoEXT;
deref(&self) -> &Self::Target35651     fn deref(&self) -> &Self::Target {
35652         &self.inner
35653     }
35654 }
35655 impl<'a> ::std::ops::DerefMut for PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35656     fn deref_mut(&mut self) -> &mut Self::Target {
35657         &mut self.inner
35658     }
35659 }
35660 impl<'a> PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
pipeline_creation_feedback( mut self, pipeline_creation_feedback: &'a mut PipelineCreationFeedbackEXT, ) -> Self35661     pub fn pipeline_creation_feedback(
35662         mut self,
35663         pipeline_creation_feedback: &'a mut PipelineCreationFeedbackEXT,
35664     ) -> Self {
35665         self.inner.p_pipeline_creation_feedback = pipeline_creation_feedback;
35666         self
35667     }
pipeline_stage_creation_feedbacks( mut self, pipeline_stage_creation_feedbacks: &'a mut [PipelineCreationFeedbackEXT], ) -> Self35668     pub fn pipeline_stage_creation_feedbacks(
35669         mut self,
35670         pipeline_stage_creation_feedbacks: &'a mut [PipelineCreationFeedbackEXT],
35671     ) -> Self {
35672         self.inner.pipeline_stage_creation_feedback_count =
35673             pipeline_stage_creation_feedbacks.len() as _;
35674         self.inner.p_pipeline_stage_creation_feedbacks =
35675             pipeline_stage_creation_feedbacks.as_mut_ptr();
35676         self
35677     }
35678     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35679     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35680     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCreationFeedbackCreateInfoEXT35681     pub fn build(self) -> PipelineCreationFeedbackCreateInfoEXT {
35682         self.inner
35683     }
35684 }
35685 #[repr(C)]
35686 #[derive(Copy, Clone, Debug)]
35687 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>"]
35688 pub struct SurfaceFullScreenExclusiveInfoEXT {
35689     pub s_type: StructureType,
35690     pub p_next: *mut c_void,
35691     pub full_screen_exclusive: FullScreenExclusiveEXT,
35692 }
35693 impl ::std::default::Default for SurfaceFullScreenExclusiveInfoEXT {
default() -> SurfaceFullScreenExclusiveInfoEXT35694     fn default() -> SurfaceFullScreenExclusiveInfoEXT {
35695         SurfaceFullScreenExclusiveInfoEXT {
35696             s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
35697             p_next: ::std::ptr::null_mut(),
35698             full_screen_exclusive: FullScreenExclusiveEXT::default(),
35699         }
35700     }
35701 }
35702 impl SurfaceFullScreenExclusiveInfoEXT {
builder<'a>() -> SurfaceFullScreenExclusiveInfoEXTBuilder<'a>35703     pub fn builder<'a>() -> SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35704         SurfaceFullScreenExclusiveInfoEXTBuilder {
35705             inner: SurfaceFullScreenExclusiveInfoEXT::default(),
35706             marker: ::std::marker::PhantomData,
35707         }
35708     }
35709 }
35710 #[repr(transparent)]
35711 pub struct SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35712     inner: SurfaceFullScreenExclusiveInfoEXT,
35713     marker: ::std::marker::PhantomData<&'a ()>,
35714 }
35715 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveInfoEXTBuilder<'_> {}
35716 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveInfoEXT {}
35717 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveInfoEXTBuilder<'_> {}
35718 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveInfoEXT {}
35719 impl<'a> ::std::ops::Deref for SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
35720     type Target = SurfaceFullScreenExclusiveInfoEXT;
deref(&self) -> &Self::Target35721     fn deref(&self) -> &Self::Target {
35722         &self.inner
35723     }
35724 }
35725 impl<'a> ::std::ops::DerefMut for SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35726     fn deref_mut(&mut self) -> &mut Self::Target {
35727         &mut self.inner
35728     }
35729 }
35730 impl<'a> SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
full_screen_exclusive(mut self, full_screen_exclusive: FullScreenExclusiveEXT) -> Self35731     pub fn full_screen_exclusive(mut self, full_screen_exclusive: FullScreenExclusiveEXT) -> Self {
35732         self.inner.full_screen_exclusive = full_screen_exclusive;
35733         self
35734     }
35735     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35736     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35737     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFullScreenExclusiveInfoEXT35738     pub fn build(self) -> SurfaceFullScreenExclusiveInfoEXT {
35739         self.inner
35740     }
35741 }
35742 #[repr(C)]
35743 #[derive(Copy, Clone, Debug)]
35744 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>"]
35745 pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
35746     pub s_type: StructureType,
35747     pub p_next: *const c_void,
35748     pub hmonitor: HMONITOR,
35749 }
35750 impl ::std::default::Default for SurfaceFullScreenExclusiveWin32InfoEXT {
default() -> SurfaceFullScreenExclusiveWin32InfoEXT35751     fn default() -> SurfaceFullScreenExclusiveWin32InfoEXT {
35752         SurfaceFullScreenExclusiveWin32InfoEXT {
35753             s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
35754             p_next: ::std::ptr::null(),
35755             hmonitor: unsafe { ::std::mem::zeroed() },
35756         }
35757     }
35758 }
35759 impl SurfaceFullScreenExclusiveWin32InfoEXT {
builder<'a>() -> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a>35760     pub fn builder<'a>() -> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35761         SurfaceFullScreenExclusiveWin32InfoEXTBuilder {
35762             inner: SurfaceFullScreenExclusiveWin32InfoEXT::default(),
35763             marker: ::std::marker::PhantomData,
35764         }
35765     }
35766 }
35767 #[repr(transparent)]
35768 pub struct SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35769     inner: SurfaceFullScreenExclusiveWin32InfoEXT,
35770     marker: ::std::marker::PhantomData<&'a ()>,
35771 }
35772 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR
35773     for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'_>
35774 {
35775 }
35776 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveWin32InfoEXT {}
35777 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'_> {}
35778 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveWin32InfoEXT {}
35779 impl<'a> ::std::ops::Deref for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
35780     type Target = SurfaceFullScreenExclusiveWin32InfoEXT;
deref(&self) -> &Self::Target35781     fn deref(&self) -> &Self::Target {
35782         &self.inner
35783     }
35784 }
35785 impl<'a> ::std::ops::DerefMut for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35786     fn deref_mut(&mut self) -> &mut Self::Target {
35787         &mut self.inner
35788     }
35789 }
35790 impl<'a> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
hmonitor(mut self, hmonitor: HMONITOR) -> Self35791     pub fn hmonitor(mut self, hmonitor: HMONITOR) -> Self {
35792         self.inner.hmonitor = hmonitor;
35793         self
35794     }
35795     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35796     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35797     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFullScreenExclusiveWin32InfoEXT35798     pub fn build(self) -> SurfaceFullScreenExclusiveWin32InfoEXT {
35799         self.inner
35800     }
35801 }
35802 #[repr(C)]
35803 #[derive(Copy, Clone, Debug)]
35804 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>"]
35805 pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
35806     pub s_type: StructureType,
35807     pub p_next: *mut c_void,
35808     pub full_screen_exclusive_supported: Bool32,
35809 }
35810 impl ::std::default::Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
default() -> SurfaceCapabilitiesFullScreenExclusiveEXT35811     fn default() -> SurfaceCapabilitiesFullScreenExclusiveEXT {
35812         SurfaceCapabilitiesFullScreenExclusiveEXT {
35813             s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
35814             p_next: ::std::ptr::null_mut(),
35815             full_screen_exclusive_supported: Bool32::default(),
35816         }
35817     }
35818 }
35819 impl SurfaceCapabilitiesFullScreenExclusiveEXT {
builder<'a>() -> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a>35820     pub fn builder<'a>() -> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35821         SurfaceCapabilitiesFullScreenExclusiveEXTBuilder {
35822             inner: SurfaceCapabilitiesFullScreenExclusiveEXT::default(),
35823             marker: ::std::marker::PhantomData,
35824         }
35825     }
35826 }
35827 #[repr(transparent)]
35828 pub struct SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35829     inner: SurfaceCapabilitiesFullScreenExclusiveEXT,
35830     marker: ::std::marker::PhantomData<&'a ()>,
35831 }
35832 unsafe impl ExtendsSurfaceCapabilities2KHR
35833     for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'_>
35834 {
35835 }
35836 unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceCapabilitiesFullScreenExclusiveEXT {}
35837 impl<'a> ::std::ops::Deref for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
35838     type Target = SurfaceCapabilitiesFullScreenExclusiveEXT;
deref(&self) -> &Self::Target35839     fn deref(&self) -> &Self::Target {
35840         &self.inner
35841     }
35842 }
35843 impl<'a> ::std::ops::DerefMut for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35844     fn deref_mut(&mut self) -> &mut Self::Target {
35845         &mut self.inner
35846     }
35847 }
35848 impl<'a> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
full_screen_exclusive_supported( mut self, full_screen_exclusive_supported: bool, ) -> Self35849     pub fn full_screen_exclusive_supported(
35850         mut self,
35851         full_screen_exclusive_supported: bool,
35852     ) -> Self {
35853         self.inner.full_screen_exclusive_supported = full_screen_exclusive_supported.into();
35854         self
35855     }
35856     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35857     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35858     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilitiesFullScreenExclusiveEXT35859     pub fn build(self) -> SurfaceCapabilitiesFullScreenExclusiveEXT {
35860         self.inner
35861     }
35862 }
35863 #[repr(C)]
35864 #[derive(Copy, Clone, Debug)]
35865 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>"]
35866 pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
35867     pub s_type: StructureType,
35868     pub p_next: *mut c_void,
35869     pub performance_counter_query_pools: Bool32,
35870     pub performance_counter_multiple_query_pools: Bool32,
35871 }
35872 impl ::std::default::Default for PhysicalDevicePerformanceQueryFeaturesKHR {
default() -> PhysicalDevicePerformanceQueryFeaturesKHR35873     fn default() -> PhysicalDevicePerformanceQueryFeaturesKHR {
35874         PhysicalDevicePerformanceQueryFeaturesKHR {
35875             s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
35876             p_next: ::std::ptr::null_mut(),
35877             performance_counter_query_pools: Bool32::default(),
35878             performance_counter_multiple_query_pools: Bool32::default(),
35879         }
35880     }
35881 }
35882 impl PhysicalDevicePerformanceQueryFeaturesKHR {
builder<'a>() -> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a>35883     pub fn builder<'a>() -> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
35884         PhysicalDevicePerformanceQueryFeaturesKHRBuilder {
35885             inner: PhysicalDevicePerformanceQueryFeaturesKHR::default(),
35886             marker: ::std::marker::PhantomData,
35887         }
35888     }
35889 }
35890 #[repr(transparent)]
35891 pub struct PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
35892     inner: PhysicalDevicePerformanceQueryFeaturesKHR,
35893     marker: ::std::marker::PhantomData<&'a ()>,
35894 }
35895 unsafe impl ExtendsPhysicalDeviceFeatures2
35896     for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'_>
35897 {
35898 }
35899 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePerformanceQueryFeaturesKHR {}
35900 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'_> {}
35901 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePerformanceQueryFeaturesKHR {}
35902 impl<'a> ::std::ops::Deref for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
35903     type Target = PhysicalDevicePerformanceQueryFeaturesKHR;
deref(&self) -> &Self::Target35904     fn deref(&self) -> &Self::Target {
35905         &self.inner
35906     }
35907 }
35908 impl<'a> ::std::ops::DerefMut for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35909     fn deref_mut(&mut self) -> &mut Self::Target {
35910         &mut self.inner
35911     }
35912 }
35913 impl<'a> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
performance_counter_query_pools( mut self, performance_counter_query_pools: bool, ) -> Self35914     pub fn performance_counter_query_pools(
35915         mut self,
35916         performance_counter_query_pools: bool,
35917     ) -> Self {
35918         self.inner.performance_counter_query_pools = performance_counter_query_pools.into();
35919         self
35920     }
performance_counter_multiple_query_pools( mut self, performance_counter_multiple_query_pools: bool, ) -> Self35921     pub fn performance_counter_multiple_query_pools(
35922         mut self,
35923         performance_counter_multiple_query_pools: bool,
35924     ) -> Self {
35925         self.inner.performance_counter_multiple_query_pools =
35926             performance_counter_multiple_query_pools.into();
35927         self
35928     }
35929     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35930     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35931     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePerformanceQueryFeaturesKHR35932     pub fn build(self) -> PhysicalDevicePerformanceQueryFeaturesKHR {
35933         self.inner
35934     }
35935 }
35936 #[repr(C)]
35937 #[derive(Copy, Clone, Debug)]
35938 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>"]
35939 pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
35940     pub s_type: StructureType,
35941     pub p_next: *mut c_void,
35942     pub allow_command_buffer_query_copies: Bool32,
35943 }
35944 impl ::std::default::Default for PhysicalDevicePerformanceQueryPropertiesKHR {
default() -> PhysicalDevicePerformanceQueryPropertiesKHR35945     fn default() -> PhysicalDevicePerformanceQueryPropertiesKHR {
35946         PhysicalDevicePerformanceQueryPropertiesKHR {
35947             s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
35948             p_next: ::std::ptr::null_mut(),
35949             allow_command_buffer_query_copies: Bool32::default(),
35950         }
35951     }
35952 }
35953 impl PhysicalDevicePerformanceQueryPropertiesKHR {
builder<'a>() -> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a>35954     pub fn builder<'a>() -> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
35955         PhysicalDevicePerformanceQueryPropertiesKHRBuilder {
35956             inner: PhysicalDevicePerformanceQueryPropertiesKHR::default(),
35957             marker: ::std::marker::PhantomData,
35958         }
35959     }
35960 }
35961 #[repr(transparent)]
35962 pub struct PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
35963     inner: PhysicalDevicePerformanceQueryPropertiesKHR,
35964     marker: ::std::marker::PhantomData<&'a ()>,
35965 }
35966 unsafe impl ExtendsPhysicalDeviceProperties2
35967     for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'_>
35968 {
35969 }
35970 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePerformanceQueryPropertiesKHR {}
35971 impl<'a> ::std::ops::Deref for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
35972     type Target = PhysicalDevicePerformanceQueryPropertiesKHR;
deref(&self) -> &Self::Target35973     fn deref(&self) -> &Self::Target {
35974         &self.inner
35975     }
35976 }
35977 impl<'a> ::std::ops::DerefMut for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35978     fn deref_mut(&mut self) -> &mut Self::Target {
35979         &mut self.inner
35980     }
35981 }
35982 impl<'a> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
allow_command_buffer_query_copies( mut self, allow_command_buffer_query_copies: bool, ) -> Self35983     pub fn allow_command_buffer_query_copies(
35984         mut self,
35985         allow_command_buffer_query_copies: bool,
35986     ) -> Self {
35987         self.inner.allow_command_buffer_query_copies = allow_command_buffer_query_copies.into();
35988         self
35989     }
35990     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35991     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35992     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePerformanceQueryPropertiesKHR35993     pub fn build(self) -> PhysicalDevicePerformanceQueryPropertiesKHR {
35994         self.inner
35995     }
35996 }
35997 #[repr(C)]
35998 #[derive(Copy, Clone, Debug)]
35999 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterKHR.html>"]
36000 pub struct PerformanceCounterKHR {
36001     pub s_type: StructureType,
36002     pub p_next: *mut c_void,
36003     pub unit: PerformanceCounterUnitKHR,
36004     pub scope: PerformanceCounterScopeKHR,
36005     pub storage: PerformanceCounterStorageKHR,
36006     pub uuid: [u8; UUID_SIZE],
36007 }
36008 impl ::std::default::Default for PerformanceCounterKHR {
default() -> PerformanceCounterKHR36009     fn default() -> PerformanceCounterKHR {
36010         PerformanceCounterKHR {
36011             s_type: StructureType::PERFORMANCE_COUNTER_KHR,
36012             p_next: ::std::ptr::null_mut(),
36013             unit: PerformanceCounterUnitKHR::default(),
36014             scope: PerformanceCounterScopeKHR::default(),
36015             storage: PerformanceCounterStorageKHR::default(),
36016             uuid: unsafe { ::std::mem::zeroed() },
36017         }
36018     }
36019 }
36020 impl PerformanceCounterKHR {
builder<'a>() -> PerformanceCounterKHRBuilder<'a>36021     pub fn builder<'a>() -> PerformanceCounterKHRBuilder<'a> {
36022         PerformanceCounterKHRBuilder {
36023             inner: PerformanceCounterKHR::default(),
36024             marker: ::std::marker::PhantomData,
36025         }
36026     }
36027 }
36028 #[repr(transparent)]
36029 pub struct PerformanceCounterKHRBuilder<'a> {
36030     inner: PerformanceCounterKHR,
36031     marker: ::std::marker::PhantomData<&'a ()>,
36032 }
36033 impl<'a> ::std::ops::Deref for PerformanceCounterKHRBuilder<'a> {
36034     type Target = PerformanceCounterKHR;
deref(&self) -> &Self::Target36035     fn deref(&self) -> &Self::Target {
36036         &self.inner
36037     }
36038 }
36039 impl<'a> ::std::ops::DerefMut for PerformanceCounterKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36040     fn deref_mut(&mut self) -> &mut Self::Target {
36041         &mut self.inner
36042     }
36043 }
36044 impl<'a> PerformanceCounterKHRBuilder<'a> {
unit(mut self, unit: PerformanceCounterUnitKHR) -> Self36045     pub fn unit(mut self, unit: PerformanceCounterUnitKHR) -> Self {
36046         self.inner.unit = unit;
36047         self
36048     }
scope(mut self, scope: PerformanceCounterScopeKHR) -> Self36049     pub fn scope(mut self, scope: PerformanceCounterScopeKHR) -> Self {
36050         self.inner.scope = scope;
36051         self
36052     }
storage(mut self, storage: PerformanceCounterStorageKHR) -> Self36053     pub fn storage(mut self, storage: PerformanceCounterStorageKHR) -> Self {
36054         self.inner.storage = storage;
36055         self
36056     }
uuid(mut self, uuid: [u8; UUID_SIZE]) -> Self36057     pub fn uuid(mut self, uuid: [u8; UUID_SIZE]) -> Self {
36058         self.inner.uuid = uuid;
36059         self
36060     }
36061     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36062     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36063     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceCounterKHR36064     pub fn build(self) -> PerformanceCounterKHR {
36065         self.inner
36066     }
36067 }
36068 #[repr(C)]
36069 #[derive(Copy, Clone)]
36070 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterDescriptionKHR.html>"]
36071 pub struct PerformanceCounterDescriptionKHR {
36072     pub s_type: StructureType,
36073     pub p_next: *mut c_void,
36074     pub flags: PerformanceCounterDescriptionFlagsKHR,
36075     pub name: [c_char; MAX_DESCRIPTION_SIZE],
36076     pub category: [c_char; MAX_DESCRIPTION_SIZE],
36077     pub description: [c_char; MAX_DESCRIPTION_SIZE],
36078 }
36079 impl fmt::Debug for PerformanceCounterDescriptionKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result36080     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
36081         fmt.debug_struct("PerformanceCounterDescriptionKHR")
36082             .field("s_type", &self.s_type)
36083             .field("p_next", &self.p_next)
36084             .field("flags", &self.flags)
36085             .field("name", &unsafe {
36086                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
36087             })
36088             .field("category", &unsafe {
36089                 ::std::ffi::CStr::from_ptr(self.category.as_ptr() as *const c_char)
36090             })
36091             .field("description", &unsafe {
36092                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
36093             })
36094             .finish()
36095     }
36096 }
36097 impl ::std::default::Default for PerformanceCounterDescriptionKHR {
default() -> PerformanceCounterDescriptionKHR36098     fn default() -> PerformanceCounterDescriptionKHR {
36099         PerformanceCounterDescriptionKHR {
36100             s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
36101             p_next: ::std::ptr::null_mut(),
36102             flags: PerformanceCounterDescriptionFlagsKHR::default(),
36103             name: unsafe { ::std::mem::zeroed() },
36104             category: unsafe { ::std::mem::zeroed() },
36105             description: unsafe { ::std::mem::zeroed() },
36106         }
36107     }
36108 }
36109 impl PerformanceCounterDescriptionKHR {
builder<'a>() -> PerformanceCounterDescriptionKHRBuilder<'a>36110     pub fn builder<'a>() -> PerformanceCounterDescriptionKHRBuilder<'a> {
36111         PerformanceCounterDescriptionKHRBuilder {
36112             inner: PerformanceCounterDescriptionKHR::default(),
36113             marker: ::std::marker::PhantomData,
36114         }
36115     }
36116 }
36117 #[repr(transparent)]
36118 pub struct PerformanceCounterDescriptionKHRBuilder<'a> {
36119     inner: PerformanceCounterDescriptionKHR,
36120     marker: ::std::marker::PhantomData<&'a ()>,
36121 }
36122 impl<'a> ::std::ops::Deref for PerformanceCounterDescriptionKHRBuilder<'a> {
36123     type Target = PerformanceCounterDescriptionKHR;
deref(&self) -> &Self::Target36124     fn deref(&self) -> &Self::Target {
36125         &self.inner
36126     }
36127 }
36128 impl<'a> ::std::ops::DerefMut for PerformanceCounterDescriptionKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36129     fn deref_mut(&mut self) -> &mut Self::Target {
36130         &mut self.inner
36131     }
36132 }
36133 impl<'a> PerformanceCounterDescriptionKHRBuilder<'a> {
flags(mut self, flags: PerformanceCounterDescriptionFlagsKHR) -> Self36134     pub fn flags(mut self, flags: PerformanceCounterDescriptionFlagsKHR) -> Self {
36135         self.inner.flags = flags;
36136         self
36137     }
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self36138     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
36139         self.inner.name = name;
36140         self
36141     }
category(mut self, category: [c_char; MAX_DESCRIPTION_SIZE]) -> Self36142     pub fn category(mut self, category: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
36143         self.inner.category = category;
36144         self
36145     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self36146     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
36147         self.inner.description = description;
36148         self
36149     }
36150     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36151     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36152     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceCounterDescriptionKHR36153     pub fn build(self) -> PerformanceCounterDescriptionKHR {
36154         self.inner
36155     }
36156 }
36157 #[repr(C)]
36158 #[derive(Copy, Clone, Debug)]
36159 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>"]
36160 pub struct QueryPoolPerformanceCreateInfoKHR {
36161     pub s_type: StructureType,
36162     pub p_next: *const c_void,
36163     pub queue_family_index: u32,
36164     pub counter_index_count: u32,
36165     pub p_counter_indices: *const u32,
36166 }
36167 impl ::std::default::Default for QueryPoolPerformanceCreateInfoKHR {
default() -> QueryPoolPerformanceCreateInfoKHR36168     fn default() -> QueryPoolPerformanceCreateInfoKHR {
36169         QueryPoolPerformanceCreateInfoKHR {
36170             s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
36171             p_next: ::std::ptr::null(),
36172             queue_family_index: u32::default(),
36173             counter_index_count: u32::default(),
36174             p_counter_indices: ::std::ptr::null(),
36175         }
36176     }
36177 }
36178 impl QueryPoolPerformanceCreateInfoKHR {
builder<'a>() -> QueryPoolPerformanceCreateInfoKHRBuilder<'a>36179     pub fn builder<'a>() -> QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36180         QueryPoolPerformanceCreateInfoKHRBuilder {
36181             inner: QueryPoolPerformanceCreateInfoKHR::default(),
36182             marker: ::std::marker::PhantomData,
36183         }
36184     }
36185 }
36186 #[repr(transparent)]
36187 pub struct QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36188     inner: QueryPoolPerformanceCreateInfoKHR,
36189     marker: ::std::marker::PhantomData<&'a ()>,
36190 }
36191 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceCreateInfoKHRBuilder<'_> {}
36192 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceCreateInfoKHR {}
36193 impl<'a> ::std::ops::Deref for QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
36194     type Target = QueryPoolPerformanceCreateInfoKHR;
deref(&self) -> &Self::Target36195     fn deref(&self) -> &Self::Target {
36196         &self.inner
36197     }
36198 }
36199 impl<'a> ::std::ops::DerefMut for QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36200     fn deref_mut(&mut self) -> &mut Self::Target {
36201         &mut self.inner
36202     }
36203 }
36204 impl<'a> QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
queue_family_index(mut self, queue_family_index: u32) -> Self36205     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
36206         self.inner.queue_family_index = queue_family_index;
36207         self
36208     }
counter_indices(mut self, counter_indices: &'a [u32]) -> Self36209     pub fn counter_indices(mut self, counter_indices: &'a [u32]) -> Self {
36210         self.inner.counter_index_count = counter_indices.len() as _;
36211         self.inner.p_counter_indices = counter_indices.as_ptr();
36212         self
36213     }
36214     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36215     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36216     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueryPoolPerformanceCreateInfoKHR36217     pub fn build(self) -> QueryPoolPerformanceCreateInfoKHR {
36218         self.inner
36219     }
36220 }
36221 #[repr(C)]
36222 #[derive(Copy, Clone)]
36223 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterResultKHR.html>"]
36224 pub union PerformanceCounterResultKHR {
36225     pub int32: i32,
36226     pub int64: i64,
36227     pub uint32: u32,
36228     pub uint64: u64,
36229     pub float32: f32,
36230     pub float64: f64,
36231 }
36232 impl ::std::default::Default for PerformanceCounterResultKHR {
default() -> PerformanceCounterResultKHR36233     fn default() -> PerformanceCounterResultKHR {
36234         unsafe { ::std::mem::zeroed() }
36235     }
36236 }
36237 #[repr(C)]
36238 #[derive(Copy, Clone, Debug)]
36239 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAcquireProfilingLockInfoKHR.html>"]
36240 pub struct AcquireProfilingLockInfoKHR {
36241     pub s_type: StructureType,
36242     pub p_next: *const c_void,
36243     pub flags: AcquireProfilingLockFlagsKHR,
36244     pub timeout: u64,
36245 }
36246 impl ::std::default::Default for AcquireProfilingLockInfoKHR {
default() -> AcquireProfilingLockInfoKHR36247     fn default() -> AcquireProfilingLockInfoKHR {
36248         AcquireProfilingLockInfoKHR {
36249             s_type: StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR,
36250             p_next: ::std::ptr::null(),
36251             flags: AcquireProfilingLockFlagsKHR::default(),
36252             timeout: u64::default(),
36253         }
36254     }
36255 }
36256 impl AcquireProfilingLockInfoKHR {
builder<'a>() -> AcquireProfilingLockInfoKHRBuilder<'a>36257     pub fn builder<'a>() -> AcquireProfilingLockInfoKHRBuilder<'a> {
36258         AcquireProfilingLockInfoKHRBuilder {
36259             inner: AcquireProfilingLockInfoKHR::default(),
36260             marker: ::std::marker::PhantomData,
36261         }
36262     }
36263 }
36264 #[repr(transparent)]
36265 pub struct AcquireProfilingLockInfoKHRBuilder<'a> {
36266     inner: AcquireProfilingLockInfoKHR,
36267     marker: ::std::marker::PhantomData<&'a ()>,
36268 }
36269 impl<'a> ::std::ops::Deref for AcquireProfilingLockInfoKHRBuilder<'a> {
36270     type Target = AcquireProfilingLockInfoKHR;
deref(&self) -> &Self::Target36271     fn deref(&self) -> &Self::Target {
36272         &self.inner
36273     }
36274 }
36275 impl<'a> ::std::ops::DerefMut for AcquireProfilingLockInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36276     fn deref_mut(&mut self) -> &mut Self::Target {
36277         &mut self.inner
36278     }
36279 }
36280 impl<'a> AcquireProfilingLockInfoKHRBuilder<'a> {
flags(mut self, flags: AcquireProfilingLockFlagsKHR) -> Self36281     pub fn flags(mut self, flags: AcquireProfilingLockFlagsKHR) -> Self {
36282         self.inner.flags = flags;
36283         self
36284     }
timeout(mut self, timeout: u64) -> Self36285     pub fn timeout(mut self, timeout: u64) -> Self {
36286         self.inner.timeout = timeout;
36287         self
36288     }
36289     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36290     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36291     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AcquireProfilingLockInfoKHR36292     pub fn build(self) -> AcquireProfilingLockInfoKHR {
36293         self.inner
36294     }
36295 }
36296 #[repr(C)]
36297 #[derive(Copy, Clone, Debug)]
36298 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceQuerySubmitInfoKHR.html>"]
36299 pub struct PerformanceQuerySubmitInfoKHR {
36300     pub s_type: StructureType,
36301     pub p_next: *const c_void,
36302     pub counter_pass_index: u32,
36303 }
36304 impl ::std::default::Default for PerformanceQuerySubmitInfoKHR {
default() -> PerformanceQuerySubmitInfoKHR36305     fn default() -> PerformanceQuerySubmitInfoKHR {
36306         PerformanceQuerySubmitInfoKHR {
36307             s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
36308             p_next: ::std::ptr::null(),
36309             counter_pass_index: u32::default(),
36310         }
36311     }
36312 }
36313 impl PerformanceQuerySubmitInfoKHR {
builder<'a>() -> PerformanceQuerySubmitInfoKHRBuilder<'a>36314     pub fn builder<'a>() -> PerformanceQuerySubmitInfoKHRBuilder<'a> {
36315         PerformanceQuerySubmitInfoKHRBuilder {
36316             inner: PerformanceQuerySubmitInfoKHR::default(),
36317             marker: ::std::marker::PhantomData,
36318         }
36319     }
36320 }
36321 #[repr(transparent)]
36322 pub struct PerformanceQuerySubmitInfoKHRBuilder<'a> {
36323     inner: PerformanceQuerySubmitInfoKHR,
36324     marker: ::std::marker::PhantomData<&'a ()>,
36325 }
36326 unsafe impl ExtendsSubmitInfo for PerformanceQuerySubmitInfoKHRBuilder<'_> {}
36327 unsafe impl ExtendsSubmitInfo for PerformanceQuerySubmitInfoKHR {}
36328 unsafe impl ExtendsSubmitInfo2KHR for PerformanceQuerySubmitInfoKHRBuilder<'_> {}
36329 unsafe impl ExtendsSubmitInfo2KHR for PerformanceQuerySubmitInfoKHR {}
36330 impl<'a> ::std::ops::Deref for PerformanceQuerySubmitInfoKHRBuilder<'a> {
36331     type Target = PerformanceQuerySubmitInfoKHR;
deref(&self) -> &Self::Target36332     fn deref(&self) -> &Self::Target {
36333         &self.inner
36334     }
36335 }
36336 impl<'a> ::std::ops::DerefMut for PerformanceQuerySubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36337     fn deref_mut(&mut self) -> &mut Self::Target {
36338         &mut self.inner
36339     }
36340 }
36341 impl<'a> PerformanceQuerySubmitInfoKHRBuilder<'a> {
counter_pass_index(mut self, counter_pass_index: u32) -> Self36342     pub fn counter_pass_index(mut self, counter_pass_index: u32) -> Self {
36343         self.inner.counter_pass_index = counter_pass_index;
36344         self
36345     }
36346     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36347     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36348     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceQuerySubmitInfoKHR36349     pub fn build(self) -> PerformanceQuerySubmitInfoKHR {
36350         self.inner
36351     }
36352 }
36353 #[repr(C)]
36354 #[derive(Copy, Clone, Debug)]
36355 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkHeadlessSurfaceCreateInfoEXT.html>"]
36356 pub struct HeadlessSurfaceCreateInfoEXT {
36357     pub s_type: StructureType,
36358     pub p_next: *const c_void,
36359     pub flags: HeadlessSurfaceCreateFlagsEXT,
36360 }
36361 impl ::std::default::Default for HeadlessSurfaceCreateInfoEXT {
default() -> HeadlessSurfaceCreateInfoEXT36362     fn default() -> HeadlessSurfaceCreateInfoEXT {
36363         HeadlessSurfaceCreateInfoEXT {
36364             s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
36365             p_next: ::std::ptr::null(),
36366             flags: HeadlessSurfaceCreateFlagsEXT::default(),
36367         }
36368     }
36369 }
36370 impl HeadlessSurfaceCreateInfoEXT {
builder<'a>() -> HeadlessSurfaceCreateInfoEXTBuilder<'a>36371     pub fn builder<'a>() -> HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36372         HeadlessSurfaceCreateInfoEXTBuilder {
36373             inner: HeadlessSurfaceCreateInfoEXT::default(),
36374             marker: ::std::marker::PhantomData,
36375         }
36376     }
36377 }
36378 #[repr(transparent)]
36379 pub struct HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36380     inner: HeadlessSurfaceCreateInfoEXT,
36381     marker: ::std::marker::PhantomData<&'a ()>,
36382 }
36383 impl<'a> ::std::ops::Deref for HeadlessSurfaceCreateInfoEXTBuilder<'a> {
36384     type Target = HeadlessSurfaceCreateInfoEXT;
deref(&self) -> &Self::Target36385     fn deref(&self) -> &Self::Target {
36386         &self.inner
36387     }
36388 }
36389 impl<'a> ::std::ops::DerefMut for HeadlessSurfaceCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36390     fn deref_mut(&mut self) -> &mut Self::Target {
36391         &mut self.inner
36392     }
36393 }
36394 impl<'a> HeadlessSurfaceCreateInfoEXTBuilder<'a> {
flags(mut self, flags: HeadlessSurfaceCreateFlagsEXT) -> Self36395     pub fn flags(mut self, flags: HeadlessSurfaceCreateFlagsEXT) -> Self {
36396         self.inner.flags = flags;
36397         self
36398     }
36399     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36400     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36401     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> HeadlessSurfaceCreateInfoEXT36402     pub fn build(self) -> HeadlessSurfaceCreateInfoEXT {
36403         self.inner
36404     }
36405 }
36406 #[repr(C)]
36407 #[derive(Copy, Clone, Debug)]
36408 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>"]
36409 pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
36410     pub s_type: StructureType,
36411     pub p_next: *mut c_void,
36412     pub coverage_reduction_mode: Bool32,
36413 }
36414 impl ::std::default::Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
default() -> PhysicalDeviceCoverageReductionModeFeaturesNV36415     fn default() -> PhysicalDeviceCoverageReductionModeFeaturesNV {
36416         PhysicalDeviceCoverageReductionModeFeaturesNV {
36417             s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
36418             p_next: ::std::ptr::null_mut(),
36419             coverage_reduction_mode: Bool32::default(),
36420         }
36421     }
36422 }
36423 impl PhysicalDeviceCoverageReductionModeFeaturesNV {
builder<'a>() -> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a>36424     pub fn builder<'a>() -> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36425         PhysicalDeviceCoverageReductionModeFeaturesNVBuilder {
36426             inner: PhysicalDeviceCoverageReductionModeFeaturesNV::default(),
36427             marker: ::std::marker::PhantomData,
36428         }
36429     }
36430 }
36431 #[repr(transparent)]
36432 pub struct PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36433     inner: PhysicalDeviceCoverageReductionModeFeaturesNV,
36434     marker: ::std::marker::PhantomData<&'a ()>,
36435 }
36436 unsafe impl ExtendsPhysicalDeviceFeatures2
36437     for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'_>
36438 {
36439 }
36440 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoverageReductionModeFeaturesNV {}
36441 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'_> {}
36442 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoverageReductionModeFeaturesNV {}
36443 impl<'a> ::std::ops::Deref for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
36444     type Target = PhysicalDeviceCoverageReductionModeFeaturesNV;
deref(&self) -> &Self::Target36445     fn deref(&self) -> &Self::Target {
36446         &self.inner
36447     }
36448 }
36449 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36450     fn deref_mut(&mut self) -> &mut Self::Target {
36451         &mut self.inner
36452     }
36453 }
36454 impl<'a> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
coverage_reduction_mode(mut self, coverage_reduction_mode: bool) -> Self36455     pub fn coverage_reduction_mode(mut self, coverage_reduction_mode: bool) -> Self {
36456         self.inner.coverage_reduction_mode = coverage_reduction_mode.into();
36457         self
36458     }
36459     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36460     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36461     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCoverageReductionModeFeaturesNV36462     pub fn build(self) -> PhysicalDeviceCoverageReductionModeFeaturesNV {
36463         self.inner
36464     }
36465 }
36466 #[repr(C)]
36467 #[derive(Copy, Clone, Debug)]
36468 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>"]
36469 pub struct PipelineCoverageReductionStateCreateInfoNV {
36470     pub s_type: StructureType,
36471     pub p_next: *const c_void,
36472     pub flags: PipelineCoverageReductionStateCreateFlagsNV,
36473     pub coverage_reduction_mode: CoverageReductionModeNV,
36474 }
36475 impl ::std::default::Default for PipelineCoverageReductionStateCreateInfoNV {
default() -> PipelineCoverageReductionStateCreateInfoNV36476     fn default() -> PipelineCoverageReductionStateCreateInfoNV {
36477         PipelineCoverageReductionStateCreateInfoNV {
36478             s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
36479             p_next: ::std::ptr::null(),
36480             flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
36481             coverage_reduction_mode: CoverageReductionModeNV::default(),
36482         }
36483     }
36484 }
36485 impl PipelineCoverageReductionStateCreateInfoNV {
builder<'a>() -> PipelineCoverageReductionStateCreateInfoNVBuilder<'a>36486     pub fn builder<'a>() -> PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36487         PipelineCoverageReductionStateCreateInfoNVBuilder {
36488             inner: PipelineCoverageReductionStateCreateInfoNV::default(),
36489             marker: ::std::marker::PhantomData,
36490         }
36491     }
36492 }
36493 #[repr(transparent)]
36494 pub struct PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36495     inner: PipelineCoverageReductionStateCreateInfoNV,
36496     marker: ::std::marker::PhantomData<&'a ()>,
36497 }
36498 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
36499     for PipelineCoverageReductionStateCreateInfoNVBuilder<'_>
36500 {
36501 }
36502 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
36503     for PipelineCoverageReductionStateCreateInfoNV
36504 {
36505 }
36506 impl<'a> ::std::ops::Deref for PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
36507     type Target = PipelineCoverageReductionStateCreateInfoNV;
deref(&self) -> &Self::Target36508     fn deref(&self) -> &Self::Target {
36509         &self.inner
36510     }
36511 }
36512 impl<'a> ::std::ops::DerefMut for PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36513     fn deref_mut(&mut self) -> &mut Self::Target {
36514         &mut self.inner
36515     }
36516 }
36517 impl<'a> PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCoverageReductionStateCreateFlagsNV) -> Self36518     pub fn flags(mut self, flags: PipelineCoverageReductionStateCreateFlagsNV) -> Self {
36519         self.inner.flags = flags;
36520         self
36521     }
coverage_reduction_mode( mut self, coverage_reduction_mode: CoverageReductionModeNV, ) -> Self36522     pub fn coverage_reduction_mode(
36523         mut self,
36524         coverage_reduction_mode: CoverageReductionModeNV,
36525     ) -> Self {
36526         self.inner.coverage_reduction_mode = coverage_reduction_mode;
36527         self
36528     }
36529     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36530     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36531     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCoverageReductionStateCreateInfoNV36532     pub fn build(self) -> PipelineCoverageReductionStateCreateInfoNV {
36533         self.inner
36534     }
36535 }
36536 #[repr(C)]
36537 #[derive(Copy, Clone, Debug)]
36538 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferMixedSamplesCombinationNV.html>"]
36539 pub struct FramebufferMixedSamplesCombinationNV {
36540     pub s_type: StructureType,
36541     pub p_next: *mut c_void,
36542     pub coverage_reduction_mode: CoverageReductionModeNV,
36543     pub rasterization_samples: SampleCountFlags,
36544     pub depth_stencil_samples: SampleCountFlags,
36545     pub color_samples: SampleCountFlags,
36546 }
36547 impl ::std::default::Default for FramebufferMixedSamplesCombinationNV {
default() -> FramebufferMixedSamplesCombinationNV36548     fn default() -> FramebufferMixedSamplesCombinationNV {
36549         FramebufferMixedSamplesCombinationNV {
36550             s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
36551             p_next: ::std::ptr::null_mut(),
36552             coverage_reduction_mode: CoverageReductionModeNV::default(),
36553             rasterization_samples: SampleCountFlags::default(),
36554             depth_stencil_samples: SampleCountFlags::default(),
36555             color_samples: SampleCountFlags::default(),
36556         }
36557     }
36558 }
36559 impl FramebufferMixedSamplesCombinationNV {
builder<'a>() -> FramebufferMixedSamplesCombinationNVBuilder<'a>36560     pub fn builder<'a>() -> FramebufferMixedSamplesCombinationNVBuilder<'a> {
36561         FramebufferMixedSamplesCombinationNVBuilder {
36562             inner: FramebufferMixedSamplesCombinationNV::default(),
36563             marker: ::std::marker::PhantomData,
36564         }
36565     }
36566 }
36567 #[repr(transparent)]
36568 pub struct FramebufferMixedSamplesCombinationNVBuilder<'a> {
36569     inner: FramebufferMixedSamplesCombinationNV,
36570     marker: ::std::marker::PhantomData<&'a ()>,
36571 }
36572 impl<'a> ::std::ops::Deref for FramebufferMixedSamplesCombinationNVBuilder<'a> {
36573     type Target = FramebufferMixedSamplesCombinationNV;
deref(&self) -> &Self::Target36574     fn deref(&self) -> &Self::Target {
36575         &self.inner
36576     }
36577 }
36578 impl<'a> ::std::ops::DerefMut for FramebufferMixedSamplesCombinationNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36579     fn deref_mut(&mut self) -> &mut Self::Target {
36580         &mut self.inner
36581     }
36582 }
36583 impl<'a> FramebufferMixedSamplesCombinationNVBuilder<'a> {
coverage_reduction_mode( mut self, coverage_reduction_mode: CoverageReductionModeNV, ) -> Self36584     pub fn coverage_reduction_mode(
36585         mut self,
36586         coverage_reduction_mode: CoverageReductionModeNV,
36587     ) -> Self {
36588         self.inner.coverage_reduction_mode = coverage_reduction_mode;
36589         self
36590     }
rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self36591     pub fn rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self {
36592         self.inner.rasterization_samples = rasterization_samples;
36593         self
36594     }
depth_stencil_samples(mut self, depth_stencil_samples: SampleCountFlags) -> Self36595     pub fn depth_stencil_samples(mut self, depth_stencil_samples: SampleCountFlags) -> Self {
36596         self.inner.depth_stencil_samples = depth_stencil_samples;
36597         self
36598     }
color_samples(mut self, color_samples: SampleCountFlags) -> Self36599     pub fn color_samples(mut self, color_samples: SampleCountFlags) -> Self {
36600         self.inner.color_samples = color_samples;
36601         self
36602     }
36603     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36604     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36605     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferMixedSamplesCombinationNV36606     pub fn build(self) -> FramebufferMixedSamplesCombinationNV {
36607         self.inner
36608     }
36609 }
36610 #[repr(C)]
36611 #[derive(Copy, Clone, Debug)]
36612 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>"]
36613 pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
36614     pub s_type: StructureType,
36615     pub p_next: *mut c_void,
36616     pub shader_integer_functions2: Bool32,
36617 }
36618 impl ::std::default::Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
default() -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL36619     fn default() -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
36620         PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
36621             s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
36622             p_next: ::std::ptr::null_mut(),
36623             shader_integer_functions2: Bool32::default(),
36624         }
36625     }
36626 }
36627 impl PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
builder<'a>() -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a>36628     pub fn builder<'a>() -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
36629         PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder {
36630             inner: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL::default(),
36631             marker: ::std::marker::PhantomData,
36632         }
36633     }
36634 }
36635 #[repr(transparent)]
36636 pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
36637     inner: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL,
36638     marker: ::std::marker::PhantomData<&'a ()>,
36639 }
36640 unsafe impl ExtendsPhysicalDeviceFeatures2
36641     for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'_>
36642 {
36643 }
36644 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
36645 unsafe impl ExtendsDeviceCreateInfo
36646     for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'_>
36647 {
36648 }
36649 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
36650 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
36651     type Target = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
deref(&self) -> &Self::Target36652     fn deref(&self) -> &Self::Target {
36653         &self.inner
36654     }
36655 }
36656 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36657     fn deref_mut(&mut self) -> &mut Self::Target {
36658         &mut self.inner
36659     }
36660 }
36661 impl<'a> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
shader_integer_functions2(mut self, shader_integer_functions2: bool) -> Self36662     pub fn shader_integer_functions2(mut self, shader_integer_functions2: bool) -> Self {
36663         self.inner.shader_integer_functions2 = shader_integer_functions2.into();
36664         self
36665     }
36666     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36667     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36668     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL36669     pub fn build(self) -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
36670         self.inner
36671     }
36672 }
36673 #[repr(C)]
36674 #[derive(Copy, Clone)]
36675 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceValueDataINTEL.html>"]
36676 pub union PerformanceValueDataINTEL {
36677     pub value32: u32,
36678     pub value64: u64,
36679     pub value_float: f32,
36680     pub value_bool: Bool32,
36681     pub value_string: *const c_char,
36682 }
36683 impl ::std::default::Default for PerformanceValueDataINTEL {
default() -> PerformanceValueDataINTEL36684     fn default() -> PerformanceValueDataINTEL {
36685         unsafe { ::std::mem::zeroed() }
36686     }
36687 }
36688 #[repr(C)]
36689 #[derive(Copy, Clone, Default)]
36690 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceValueINTEL.html>"]
36691 pub struct PerformanceValueINTEL {
36692     pub ty: PerformanceValueTypeINTEL,
36693     pub data: PerformanceValueDataINTEL,
36694 }
36695 impl fmt::Debug for PerformanceValueINTEL {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result36696     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
36697         fmt.debug_struct("PerformanceValueINTEL")
36698             .field("ty", &self.ty)
36699             .field("data", &"union")
36700             .finish()
36701     }
36702 }
36703 impl PerformanceValueINTEL {
builder<'a>() -> PerformanceValueINTELBuilder<'a>36704     pub fn builder<'a>() -> PerformanceValueINTELBuilder<'a> {
36705         PerformanceValueINTELBuilder {
36706             inner: PerformanceValueINTEL::default(),
36707             marker: ::std::marker::PhantomData,
36708         }
36709     }
36710 }
36711 #[repr(transparent)]
36712 pub struct PerformanceValueINTELBuilder<'a> {
36713     inner: PerformanceValueINTEL,
36714     marker: ::std::marker::PhantomData<&'a ()>,
36715 }
36716 impl<'a> ::std::ops::Deref for PerformanceValueINTELBuilder<'a> {
36717     type Target = PerformanceValueINTEL;
deref(&self) -> &Self::Target36718     fn deref(&self) -> &Self::Target {
36719         &self.inner
36720     }
36721 }
36722 impl<'a> ::std::ops::DerefMut for PerformanceValueINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36723     fn deref_mut(&mut self) -> &mut Self::Target {
36724         &mut self.inner
36725     }
36726 }
36727 impl<'a> PerformanceValueINTELBuilder<'a> {
ty(mut self, ty: PerformanceValueTypeINTEL) -> Self36728     pub fn ty(mut self, ty: PerformanceValueTypeINTEL) -> Self {
36729         self.inner.ty = ty;
36730         self
36731     }
data(mut self, data: PerformanceValueDataINTEL) -> Self36732     pub fn data(mut self, data: PerformanceValueDataINTEL) -> Self {
36733         self.inner.data = data;
36734         self
36735     }
36736     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36737     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36738     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceValueINTEL36739     pub fn build(self) -> PerformanceValueINTEL {
36740         self.inner
36741     }
36742 }
36743 #[repr(C)]
36744 #[derive(Copy, Clone, Debug)]
36745 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInitializePerformanceApiInfoINTEL.html>"]
36746 pub struct InitializePerformanceApiInfoINTEL {
36747     pub s_type: StructureType,
36748     pub p_next: *const c_void,
36749     pub p_user_data: *mut c_void,
36750 }
36751 impl ::std::default::Default for InitializePerformanceApiInfoINTEL {
default() -> InitializePerformanceApiInfoINTEL36752     fn default() -> InitializePerformanceApiInfoINTEL {
36753         InitializePerformanceApiInfoINTEL {
36754             s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
36755             p_next: ::std::ptr::null(),
36756             p_user_data: ::std::ptr::null_mut(),
36757         }
36758     }
36759 }
36760 impl InitializePerformanceApiInfoINTEL {
builder<'a>() -> InitializePerformanceApiInfoINTELBuilder<'a>36761     pub fn builder<'a>() -> InitializePerformanceApiInfoINTELBuilder<'a> {
36762         InitializePerformanceApiInfoINTELBuilder {
36763             inner: InitializePerformanceApiInfoINTEL::default(),
36764             marker: ::std::marker::PhantomData,
36765         }
36766     }
36767 }
36768 #[repr(transparent)]
36769 pub struct InitializePerformanceApiInfoINTELBuilder<'a> {
36770     inner: InitializePerformanceApiInfoINTEL,
36771     marker: ::std::marker::PhantomData<&'a ()>,
36772 }
36773 impl<'a> ::std::ops::Deref for InitializePerformanceApiInfoINTELBuilder<'a> {
36774     type Target = InitializePerformanceApiInfoINTEL;
deref(&self) -> &Self::Target36775     fn deref(&self) -> &Self::Target {
36776         &self.inner
36777     }
36778 }
36779 impl<'a> ::std::ops::DerefMut for InitializePerformanceApiInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36780     fn deref_mut(&mut self) -> &mut Self::Target {
36781         &mut self.inner
36782     }
36783 }
36784 impl<'a> InitializePerformanceApiInfoINTELBuilder<'a> {
user_data(mut self, user_data: *mut c_void) -> Self36785     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
36786         self.inner.p_user_data = user_data;
36787         self
36788     }
36789     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36790     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36791     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> InitializePerformanceApiInfoINTEL36792     pub fn build(self) -> InitializePerformanceApiInfoINTEL {
36793         self.inner
36794     }
36795 }
36796 #[repr(C)]
36797 #[derive(Copy, Clone, Debug)]
36798 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>"]
36799 pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
36800     pub s_type: StructureType,
36801     pub p_next: *const c_void,
36802     pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
36803 }
36804 impl ::std::default::Default for QueryPoolPerformanceQueryCreateInfoINTEL {
default() -> QueryPoolPerformanceQueryCreateInfoINTEL36805     fn default() -> QueryPoolPerformanceQueryCreateInfoINTEL {
36806         QueryPoolPerformanceQueryCreateInfoINTEL {
36807             s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
36808             p_next: ::std::ptr::null(),
36809             performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
36810         }
36811     }
36812 }
36813 impl QueryPoolPerformanceQueryCreateInfoINTEL {
builder<'a>() -> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a>36814     pub fn builder<'a>() -> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36815         QueryPoolPerformanceQueryCreateInfoINTELBuilder {
36816             inner: QueryPoolPerformanceQueryCreateInfoINTEL::default(),
36817             marker: ::std::marker::PhantomData,
36818         }
36819     }
36820 }
36821 #[repr(transparent)]
36822 pub struct QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36823     inner: QueryPoolPerformanceQueryCreateInfoINTEL,
36824     marker: ::std::marker::PhantomData<&'a ()>,
36825 }
36826 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'_> {}
36827 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceQueryCreateInfoINTEL {}
36828 impl<'a> ::std::ops::Deref for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
36829     type Target = QueryPoolPerformanceQueryCreateInfoINTEL;
deref(&self) -> &Self::Target36830     fn deref(&self) -> &Self::Target {
36831         &self.inner
36832     }
36833 }
36834 impl<'a> ::std::ops::DerefMut for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36835     fn deref_mut(&mut self) -> &mut Self::Target {
36836         &mut self.inner
36837     }
36838 }
36839 impl<'a> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
performance_counters_sampling( mut self, performance_counters_sampling: QueryPoolSamplingModeINTEL, ) -> Self36840     pub fn performance_counters_sampling(
36841         mut self,
36842         performance_counters_sampling: QueryPoolSamplingModeINTEL,
36843     ) -> Self {
36844         self.inner.performance_counters_sampling = performance_counters_sampling;
36845         self
36846     }
36847     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36848     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36849     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueryPoolPerformanceQueryCreateInfoINTEL36850     pub fn build(self) -> QueryPoolPerformanceQueryCreateInfoINTEL {
36851         self.inner
36852     }
36853 }
36854 #[repr(C)]
36855 #[derive(Copy, Clone, Debug)]
36856 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceMarkerInfoINTEL.html>"]
36857 pub struct PerformanceMarkerInfoINTEL {
36858     pub s_type: StructureType,
36859     pub p_next: *const c_void,
36860     pub marker: u64,
36861 }
36862 impl ::std::default::Default for PerformanceMarkerInfoINTEL {
default() -> PerformanceMarkerInfoINTEL36863     fn default() -> PerformanceMarkerInfoINTEL {
36864         PerformanceMarkerInfoINTEL {
36865             s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
36866             p_next: ::std::ptr::null(),
36867             marker: u64::default(),
36868         }
36869     }
36870 }
36871 impl PerformanceMarkerInfoINTEL {
builder<'a>() -> PerformanceMarkerInfoINTELBuilder<'a>36872     pub fn builder<'a>() -> PerformanceMarkerInfoINTELBuilder<'a> {
36873         PerformanceMarkerInfoINTELBuilder {
36874             inner: PerformanceMarkerInfoINTEL::default(),
36875             marker: ::std::marker::PhantomData,
36876         }
36877     }
36878 }
36879 #[repr(transparent)]
36880 pub struct PerformanceMarkerInfoINTELBuilder<'a> {
36881     inner: PerformanceMarkerInfoINTEL,
36882     marker: ::std::marker::PhantomData<&'a ()>,
36883 }
36884 impl<'a> ::std::ops::Deref for PerformanceMarkerInfoINTELBuilder<'a> {
36885     type Target = PerformanceMarkerInfoINTEL;
deref(&self) -> &Self::Target36886     fn deref(&self) -> &Self::Target {
36887         &self.inner
36888     }
36889 }
36890 impl<'a> ::std::ops::DerefMut for PerformanceMarkerInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36891     fn deref_mut(&mut self) -> &mut Self::Target {
36892         &mut self.inner
36893     }
36894 }
36895 impl<'a> PerformanceMarkerInfoINTELBuilder<'a> {
marker(mut self, marker: u64) -> Self36896     pub fn marker(mut self, marker: u64) -> Self {
36897         self.inner.marker = marker;
36898         self
36899     }
36900     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36901     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36902     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceMarkerInfoINTEL36903     pub fn build(self) -> PerformanceMarkerInfoINTEL {
36904         self.inner
36905     }
36906 }
36907 #[repr(C)]
36908 #[derive(Copy, Clone, Debug)]
36909 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceStreamMarkerInfoINTEL.html>"]
36910 pub struct PerformanceStreamMarkerInfoINTEL {
36911     pub s_type: StructureType,
36912     pub p_next: *const c_void,
36913     pub marker: u32,
36914 }
36915 impl ::std::default::Default for PerformanceStreamMarkerInfoINTEL {
default() -> PerformanceStreamMarkerInfoINTEL36916     fn default() -> PerformanceStreamMarkerInfoINTEL {
36917         PerformanceStreamMarkerInfoINTEL {
36918             s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
36919             p_next: ::std::ptr::null(),
36920             marker: u32::default(),
36921         }
36922     }
36923 }
36924 impl PerformanceStreamMarkerInfoINTEL {
builder<'a>() -> PerformanceStreamMarkerInfoINTELBuilder<'a>36925     pub fn builder<'a>() -> PerformanceStreamMarkerInfoINTELBuilder<'a> {
36926         PerformanceStreamMarkerInfoINTELBuilder {
36927             inner: PerformanceStreamMarkerInfoINTEL::default(),
36928             marker: ::std::marker::PhantomData,
36929         }
36930     }
36931 }
36932 #[repr(transparent)]
36933 pub struct PerformanceStreamMarkerInfoINTELBuilder<'a> {
36934     inner: PerformanceStreamMarkerInfoINTEL,
36935     marker: ::std::marker::PhantomData<&'a ()>,
36936 }
36937 impl<'a> ::std::ops::Deref for PerformanceStreamMarkerInfoINTELBuilder<'a> {
36938     type Target = PerformanceStreamMarkerInfoINTEL;
deref(&self) -> &Self::Target36939     fn deref(&self) -> &Self::Target {
36940         &self.inner
36941     }
36942 }
36943 impl<'a> ::std::ops::DerefMut for PerformanceStreamMarkerInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36944     fn deref_mut(&mut self) -> &mut Self::Target {
36945         &mut self.inner
36946     }
36947 }
36948 impl<'a> PerformanceStreamMarkerInfoINTELBuilder<'a> {
marker(mut self, marker: u32) -> Self36949     pub fn marker(mut self, marker: u32) -> Self {
36950         self.inner.marker = marker;
36951         self
36952     }
36953     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36954     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36955     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceStreamMarkerInfoINTEL36956     pub fn build(self) -> PerformanceStreamMarkerInfoINTEL {
36957         self.inner
36958     }
36959 }
36960 #[repr(C)]
36961 #[derive(Copy, Clone, Debug)]
36962 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceOverrideInfoINTEL.html>"]
36963 pub struct PerformanceOverrideInfoINTEL {
36964     pub s_type: StructureType,
36965     pub p_next: *const c_void,
36966     pub ty: PerformanceOverrideTypeINTEL,
36967     pub enable: Bool32,
36968     pub parameter: u64,
36969 }
36970 impl ::std::default::Default for PerformanceOverrideInfoINTEL {
default() -> PerformanceOverrideInfoINTEL36971     fn default() -> PerformanceOverrideInfoINTEL {
36972         PerformanceOverrideInfoINTEL {
36973             s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
36974             p_next: ::std::ptr::null(),
36975             ty: PerformanceOverrideTypeINTEL::default(),
36976             enable: Bool32::default(),
36977             parameter: u64::default(),
36978         }
36979     }
36980 }
36981 impl PerformanceOverrideInfoINTEL {
builder<'a>() -> PerformanceOverrideInfoINTELBuilder<'a>36982     pub fn builder<'a>() -> PerformanceOverrideInfoINTELBuilder<'a> {
36983         PerformanceOverrideInfoINTELBuilder {
36984             inner: PerformanceOverrideInfoINTEL::default(),
36985             marker: ::std::marker::PhantomData,
36986         }
36987     }
36988 }
36989 #[repr(transparent)]
36990 pub struct PerformanceOverrideInfoINTELBuilder<'a> {
36991     inner: PerformanceOverrideInfoINTEL,
36992     marker: ::std::marker::PhantomData<&'a ()>,
36993 }
36994 impl<'a> ::std::ops::Deref for PerformanceOverrideInfoINTELBuilder<'a> {
36995     type Target = PerformanceOverrideInfoINTEL;
deref(&self) -> &Self::Target36996     fn deref(&self) -> &Self::Target {
36997         &self.inner
36998     }
36999 }
37000 impl<'a> ::std::ops::DerefMut for PerformanceOverrideInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37001     fn deref_mut(&mut self) -> &mut Self::Target {
37002         &mut self.inner
37003     }
37004 }
37005 impl<'a> PerformanceOverrideInfoINTELBuilder<'a> {
ty(mut self, ty: PerformanceOverrideTypeINTEL) -> Self37006     pub fn ty(mut self, ty: PerformanceOverrideTypeINTEL) -> Self {
37007         self.inner.ty = ty;
37008         self
37009     }
enable(mut self, enable: bool) -> Self37010     pub fn enable(mut self, enable: bool) -> Self {
37011         self.inner.enable = enable.into();
37012         self
37013     }
parameter(mut self, parameter: u64) -> Self37014     pub fn parameter(mut self, parameter: u64) -> Self {
37015         self.inner.parameter = parameter;
37016         self
37017     }
37018     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37019     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37020     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceOverrideInfoINTEL37021     pub fn build(self) -> PerformanceOverrideInfoINTEL {
37022         self.inner
37023     }
37024 }
37025 #[repr(C)]
37026 #[derive(Copy, Clone, Debug)]
37027 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>"]
37028 pub struct PerformanceConfigurationAcquireInfoINTEL {
37029     pub s_type: StructureType,
37030     pub p_next: *const c_void,
37031     pub ty: PerformanceConfigurationTypeINTEL,
37032 }
37033 impl ::std::default::Default for PerformanceConfigurationAcquireInfoINTEL {
default() -> PerformanceConfigurationAcquireInfoINTEL37034     fn default() -> PerformanceConfigurationAcquireInfoINTEL {
37035         PerformanceConfigurationAcquireInfoINTEL {
37036             s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
37037             p_next: ::std::ptr::null(),
37038             ty: PerformanceConfigurationTypeINTEL::default(),
37039         }
37040     }
37041 }
37042 impl PerformanceConfigurationAcquireInfoINTEL {
builder<'a>() -> PerformanceConfigurationAcquireInfoINTELBuilder<'a>37043     pub fn builder<'a>() -> PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37044         PerformanceConfigurationAcquireInfoINTELBuilder {
37045             inner: PerformanceConfigurationAcquireInfoINTEL::default(),
37046             marker: ::std::marker::PhantomData,
37047         }
37048     }
37049 }
37050 #[repr(transparent)]
37051 pub struct PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37052     inner: PerformanceConfigurationAcquireInfoINTEL,
37053     marker: ::std::marker::PhantomData<&'a ()>,
37054 }
37055 impl<'a> ::std::ops::Deref for PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37056     type Target = PerformanceConfigurationAcquireInfoINTEL;
deref(&self) -> &Self::Target37057     fn deref(&self) -> &Self::Target {
37058         &self.inner
37059     }
37060 }
37061 impl<'a> ::std::ops::DerefMut for PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37062     fn deref_mut(&mut self) -> &mut Self::Target {
37063         &mut self.inner
37064     }
37065 }
37066 impl<'a> PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
ty(mut self, ty: PerformanceConfigurationTypeINTEL) -> Self37067     pub fn ty(mut self, ty: PerformanceConfigurationTypeINTEL) -> Self {
37068         self.inner.ty = ty;
37069         self
37070     }
37071     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37072     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37073     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceConfigurationAcquireInfoINTEL37074     pub fn build(self) -> PerformanceConfigurationAcquireInfoINTEL {
37075         self.inner
37076     }
37077 }
37078 #[repr(C)]
37079 #[derive(Copy, Clone, Debug)]
37080 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>"]
37081 pub struct PhysicalDeviceShaderClockFeaturesKHR {
37082     pub s_type: StructureType,
37083     pub p_next: *mut c_void,
37084     pub shader_subgroup_clock: Bool32,
37085     pub shader_device_clock: Bool32,
37086 }
37087 impl ::std::default::Default for PhysicalDeviceShaderClockFeaturesKHR {
default() -> PhysicalDeviceShaderClockFeaturesKHR37088     fn default() -> PhysicalDeviceShaderClockFeaturesKHR {
37089         PhysicalDeviceShaderClockFeaturesKHR {
37090             s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
37091             p_next: ::std::ptr::null_mut(),
37092             shader_subgroup_clock: Bool32::default(),
37093             shader_device_clock: Bool32::default(),
37094         }
37095     }
37096 }
37097 impl PhysicalDeviceShaderClockFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a>37098     pub fn builder<'a>() -> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37099         PhysicalDeviceShaderClockFeaturesKHRBuilder {
37100             inner: PhysicalDeviceShaderClockFeaturesKHR::default(),
37101             marker: ::std::marker::PhantomData,
37102         }
37103     }
37104 }
37105 #[repr(transparent)]
37106 pub struct PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37107     inner: PhysicalDeviceShaderClockFeaturesKHR,
37108     marker: ::std::marker::PhantomData<&'a ()>,
37109 }
37110 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderClockFeaturesKHRBuilder<'_> {}
37111 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderClockFeaturesKHR {}
37112 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderClockFeaturesKHRBuilder<'_> {}
37113 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderClockFeaturesKHR {}
37114 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
37115     type Target = PhysicalDeviceShaderClockFeaturesKHR;
deref(&self) -> &Self::Target37116     fn deref(&self) -> &Self::Target {
37117         &self.inner
37118     }
37119 }
37120 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37121     fn deref_mut(&mut self) -> &mut Self::Target {
37122         &mut self.inner
37123     }
37124 }
37125 impl<'a> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
shader_subgroup_clock(mut self, shader_subgroup_clock: bool) -> Self37126     pub fn shader_subgroup_clock(mut self, shader_subgroup_clock: bool) -> Self {
37127         self.inner.shader_subgroup_clock = shader_subgroup_clock.into();
37128         self
37129     }
shader_device_clock(mut self, shader_device_clock: bool) -> Self37130     pub fn shader_device_clock(mut self, shader_device_clock: bool) -> Self {
37131         self.inner.shader_device_clock = shader_device_clock.into();
37132         self
37133     }
37134     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37135     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37136     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderClockFeaturesKHR37137     pub fn build(self) -> PhysicalDeviceShaderClockFeaturesKHR {
37138         self.inner
37139     }
37140 }
37141 #[repr(C)]
37142 #[derive(Copy, Clone, Debug)]
37143 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>"]
37144 pub struct PhysicalDeviceIndexTypeUint8FeaturesEXT {
37145     pub s_type: StructureType,
37146     pub p_next: *mut c_void,
37147     pub index_type_uint8: Bool32,
37148 }
37149 impl ::std::default::Default for PhysicalDeviceIndexTypeUint8FeaturesEXT {
default() -> PhysicalDeviceIndexTypeUint8FeaturesEXT37150     fn default() -> PhysicalDeviceIndexTypeUint8FeaturesEXT {
37151         PhysicalDeviceIndexTypeUint8FeaturesEXT {
37152             s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT,
37153             p_next: ::std::ptr::null_mut(),
37154             index_type_uint8: Bool32::default(),
37155         }
37156     }
37157 }
37158 impl PhysicalDeviceIndexTypeUint8FeaturesEXT {
builder<'a>() -> PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a>37159     pub fn builder<'a>() -> PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
37160         PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder {
37161             inner: PhysicalDeviceIndexTypeUint8FeaturesEXT::default(),
37162             marker: ::std::marker::PhantomData,
37163         }
37164     }
37165 }
37166 #[repr(transparent)]
37167 pub struct PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
37168     inner: PhysicalDeviceIndexTypeUint8FeaturesEXT,
37169     marker: ::std::marker::PhantomData<&'a ()>,
37170 }
37171 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'_> {}
37172 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceIndexTypeUint8FeaturesEXT {}
37173 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'_> {}
37174 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceIndexTypeUint8FeaturesEXT {}
37175 impl<'a> ::std::ops::Deref for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
37176     type Target = PhysicalDeviceIndexTypeUint8FeaturesEXT;
deref(&self) -> &Self::Target37177     fn deref(&self) -> &Self::Target {
37178         &self.inner
37179     }
37180 }
37181 impl<'a> ::std::ops::DerefMut for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37182     fn deref_mut(&mut self) -> &mut Self::Target {
37183         &mut self.inner
37184     }
37185 }
37186 impl<'a> PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
index_type_uint8(mut self, index_type_uint8: bool) -> Self37187     pub fn index_type_uint8(mut self, index_type_uint8: bool) -> Self {
37188         self.inner.index_type_uint8 = index_type_uint8.into();
37189         self
37190     }
37191     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37192     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37193     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceIndexTypeUint8FeaturesEXT37194     pub fn build(self) -> PhysicalDeviceIndexTypeUint8FeaturesEXT {
37195         self.inner
37196     }
37197 }
37198 #[repr(C)]
37199 #[derive(Copy, Clone, Debug)]
37200 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>"]
37201 pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
37202     pub s_type: StructureType,
37203     pub p_next: *mut c_void,
37204     pub shader_sm_count: u32,
37205     pub shader_warps_per_sm: u32,
37206 }
37207 impl ::std::default::Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
default() -> PhysicalDeviceShaderSMBuiltinsPropertiesNV37208     fn default() -> PhysicalDeviceShaderSMBuiltinsPropertiesNV {
37209         PhysicalDeviceShaderSMBuiltinsPropertiesNV {
37210             s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
37211             p_next: ::std::ptr::null_mut(),
37212             shader_sm_count: u32::default(),
37213             shader_warps_per_sm: u32::default(),
37214         }
37215     }
37216 }
37217 impl PhysicalDeviceShaderSMBuiltinsPropertiesNV {
builder<'a>() -> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a>37218     pub fn builder<'a>() -> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37219         PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder {
37220             inner: PhysicalDeviceShaderSMBuiltinsPropertiesNV::default(),
37221             marker: ::std::marker::PhantomData,
37222         }
37223     }
37224 }
37225 #[repr(transparent)]
37226 pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37227     inner: PhysicalDeviceShaderSMBuiltinsPropertiesNV,
37228     marker: ::std::marker::PhantomData<&'a ()>,
37229 }
37230 unsafe impl ExtendsPhysicalDeviceProperties2
37231     for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'_>
37232 {
37233 }
37234 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
37235 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
37236     type Target = PhysicalDeviceShaderSMBuiltinsPropertiesNV;
deref(&self) -> &Self::Target37237     fn deref(&self) -> &Self::Target {
37238         &self.inner
37239     }
37240 }
37241 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37242     fn deref_mut(&mut self) -> &mut Self::Target {
37243         &mut self.inner
37244     }
37245 }
37246 impl<'a> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
shader_sm_count(mut self, shader_sm_count: u32) -> Self37247     pub fn shader_sm_count(mut self, shader_sm_count: u32) -> Self {
37248         self.inner.shader_sm_count = shader_sm_count;
37249         self
37250     }
shader_warps_per_sm(mut self, shader_warps_per_sm: u32) -> Self37251     pub fn shader_warps_per_sm(mut self, shader_warps_per_sm: u32) -> Self {
37252         self.inner.shader_warps_per_sm = shader_warps_per_sm;
37253         self
37254     }
37255     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37256     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37257     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSMBuiltinsPropertiesNV37258     pub fn build(self) -> PhysicalDeviceShaderSMBuiltinsPropertiesNV {
37259         self.inner
37260     }
37261 }
37262 #[repr(C)]
37263 #[derive(Copy, Clone, Debug)]
37264 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>"]
37265 pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
37266     pub s_type: StructureType,
37267     pub p_next: *mut c_void,
37268     pub shader_sm_builtins: Bool32,
37269 }
37270 impl ::std::default::Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
default() -> PhysicalDeviceShaderSMBuiltinsFeaturesNV37271     fn default() -> PhysicalDeviceShaderSMBuiltinsFeaturesNV {
37272         PhysicalDeviceShaderSMBuiltinsFeaturesNV {
37273             s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
37274             p_next: ::std::ptr::null_mut(),
37275             shader_sm_builtins: Bool32::default(),
37276         }
37277     }
37278 }
37279 impl PhysicalDeviceShaderSMBuiltinsFeaturesNV {
builder<'a>() -> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a>37280     pub fn builder<'a>() -> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37281         PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder {
37282             inner: PhysicalDeviceShaderSMBuiltinsFeaturesNV::default(),
37283             marker: ::std::marker::PhantomData,
37284         }
37285     }
37286 }
37287 #[repr(transparent)]
37288 pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37289     inner: PhysicalDeviceShaderSMBuiltinsFeaturesNV,
37290     marker: ::std::marker::PhantomData<&'a ()>,
37291 }
37292 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'_> {}
37293 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
37294 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'_> {}
37295 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
37296 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
37297     type Target = PhysicalDeviceShaderSMBuiltinsFeaturesNV;
deref(&self) -> &Self::Target37298     fn deref(&self) -> &Self::Target {
37299         &self.inner
37300     }
37301 }
37302 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37303     fn deref_mut(&mut self) -> &mut Self::Target {
37304         &mut self.inner
37305     }
37306 }
37307 impl<'a> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
shader_sm_builtins(mut self, shader_sm_builtins: bool) -> Self37308     pub fn shader_sm_builtins(mut self, shader_sm_builtins: bool) -> Self {
37309         self.inner.shader_sm_builtins = shader_sm_builtins.into();
37310         self
37311     }
37312     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37313     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37314     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSMBuiltinsFeaturesNV37315     pub fn build(self) -> PhysicalDeviceShaderSMBuiltinsFeaturesNV {
37316         self.inner
37317     }
37318 }
37319 #[repr(C)]
37320 #[derive(Copy, Clone, Debug)]
37321 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>"]
37322 pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
37323     pub s_type: StructureType,
37324     pub p_next: *mut c_void,
37325     pub fragment_shader_sample_interlock: Bool32,
37326     pub fragment_shader_pixel_interlock: Bool32,
37327     pub fragment_shader_shading_rate_interlock: Bool32,
37328 }
37329 impl ::std::default::Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
default() -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT37330     fn default() -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
37331         PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
37332             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
37333             p_next: ::std::ptr::null_mut(),
37334             fragment_shader_sample_interlock: Bool32::default(),
37335             fragment_shader_pixel_interlock: Bool32::default(),
37336             fragment_shader_shading_rate_interlock: Bool32::default(),
37337         }
37338     }
37339 }
37340 impl PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
builder<'a>() -> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a>37341     pub fn builder<'a>() -> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37342         PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder {
37343             inner: PhysicalDeviceFragmentShaderInterlockFeaturesEXT::default(),
37344             marker: ::std::marker::PhantomData,
37345         }
37346     }
37347 }
37348 #[repr(transparent)]
37349 pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37350     inner: PhysicalDeviceFragmentShaderInterlockFeaturesEXT,
37351     marker: ::std::marker::PhantomData<&'a ()>,
37352 }
37353 unsafe impl ExtendsPhysicalDeviceFeatures2
37354     for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'_>
37355 {
37356 }
37357 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
37358 unsafe impl ExtendsDeviceCreateInfo
37359     for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'_>
37360 {
37361 }
37362 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
37363 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
37364     type Target = PhysicalDeviceFragmentShaderInterlockFeaturesEXT;
deref(&self) -> &Self::Target37365     fn deref(&self) -> &Self::Target {
37366         &self.inner
37367     }
37368 }
37369 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37370     fn deref_mut(&mut self) -> &mut Self::Target {
37371         &mut self.inner
37372     }
37373 }
37374 impl<'a> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
fragment_shader_sample_interlock( mut self, fragment_shader_sample_interlock: bool, ) -> Self37375     pub fn fragment_shader_sample_interlock(
37376         mut self,
37377         fragment_shader_sample_interlock: bool,
37378     ) -> Self {
37379         self.inner.fragment_shader_sample_interlock = fragment_shader_sample_interlock.into();
37380         self
37381     }
fragment_shader_pixel_interlock( mut self, fragment_shader_pixel_interlock: bool, ) -> Self37382     pub fn fragment_shader_pixel_interlock(
37383         mut self,
37384         fragment_shader_pixel_interlock: bool,
37385     ) -> Self {
37386         self.inner.fragment_shader_pixel_interlock = fragment_shader_pixel_interlock.into();
37387         self
37388     }
fragment_shader_shading_rate_interlock( mut self, fragment_shader_shading_rate_interlock: bool, ) -> Self37389     pub fn fragment_shader_shading_rate_interlock(
37390         mut self,
37391         fragment_shader_shading_rate_interlock: bool,
37392     ) -> Self {
37393         self.inner.fragment_shader_shading_rate_interlock =
37394             fragment_shader_shading_rate_interlock.into();
37395         self
37396     }
37397     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37398     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37399     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT37400     pub fn build(self) -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
37401         self.inner
37402     }
37403 }
37404 #[repr(C)]
37405 #[derive(Copy, Clone, Debug)]
37406 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>"]
37407 pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
37408     pub s_type: StructureType,
37409     pub p_next: *mut c_void,
37410     pub separate_depth_stencil_layouts: Bool32,
37411 }
37412 impl ::std::default::Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
default() -> PhysicalDeviceSeparateDepthStencilLayoutsFeatures37413     fn default() -> PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
37414         PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
37415             s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
37416             p_next: ::std::ptr::null_mut(),
37417             separate_depth_stencil_layouts: Bool32::default(),
37418         }
37419     }
37420 }
37421 impl PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
builder<'a>() -> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a>37422     pub fn builder<'a>() -> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
37423         PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder {
37424             inner: PhysicalDeviceSeparateDepthStencilLayoutsFeatures::default(),
37425             marker: ::std::marker::PhantomData,
37426         }
37427     }
37428 }
37429 #[repr(transparent)]
37430 pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
37431     inner: PhysicalDeviceSeparateDepthStencilLayoutsFeatures,
37432     marker: ::std::marker::PhantomData<&'a ()>,
37433 }
37434 unsafe impl ExtendsPhysicalDeviceFeatures2
37435     for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'_>
37436 {
37437 }
37438 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
37439 unsafe impl ExtendsDeviceCreateInfo
37440     for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'_>
37441 {
37442 }
37443 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
37444 impl<'a> ::std::ops::Deref for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
37445     type Target = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
deref(&self) -> &Self::Target37446     fn deref(&self) -> &Self::Target {
37447         &self.inner
37448     }
37449 }
37450 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37451     fn deref_mut(&mut self) -> &mut Self::Target {
37452         &mut self.inner
37453     }
37454 }
37455 impl<'a> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self37456     pub fn separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self {
37457         self.inner.separate_depth_stencil_layouts = separate_depth_stencil_layouts.into();
37458         self
37459     }
37460     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37461     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37462     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSeparateDepthStencilLayoutsFeatures37463     pub fn build(self) -> PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
37464         self.inner
37465     }
37466 }
37467 #[repr(C)]
37468 #[derive(Copy, Clone, Debug)]
37469 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReferenceStencilLayout.html>"]
37470 pub struct AttachmentReferenceStencilLayout {
37471     pub s_type: StructureType,
37472     pub p_next: *mut c_void,
37473     pub stencil_layout: ImageLayout,
37474 }
37475 impl ::std::default::Default for AttachmentReferenceStencilLayout {
default() -> AttachmentReferenceStencilLayout37476     fn default() -> AttachmentReferenceStencilLayout {
37477         AttachmentReferenceStencilLayout {
37478             s_type: StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
37479             p_next: ::std::ptr::null_mut(),
37480             stencil_layout: ImageLayout::default(),
37481         }
37482     }
37483 }
37484 impl AttachmentReferenceStencilLayout {
builder<'a>() -> AttachmentReferenceStencilLayoutBuilder<'a>37485     pub fn builder<'a>() -> AttachmentReferenceStencilLayoutBuilder<'a> {
37486         AttachmentReferenceStencilLayoutBuilder {
37487             inner: AttachmentReferenceStencilLayout::default(),
37488             marker: ::std::marker::PhantomData,
37489         }
37490     }
37491 }
37492 #[repr(transparent)]
37493 pub struct AttachmentReferenceStencilLayoutBuilder<'a> {
37494     inner: AttachmentReferenceStencilLayout,
37495     marker: ::std::marker::PhantomData<&'a ()>,
37496 }
37497 unsafe impl ExtendsAttachmentReference2 for AttachmentReferenceStencilLayoutBuilder<'_> {}
37498 unsafe impl ExtendsAttachmentReference2 for AttachmentReferenceStencilLayout {}
37499 impl<'a> ::std::ops::Deref for AttachmentReferenceStencilLayoutBuilder<'a> {
37500     type Target = AttachmentReferenceStencilLayout;
deref(&self) -> &Self::Target37501     fn deref(&self) -> &Self::Target {
37502         &self.inner
37503     }
37504 }
37505 impl<'a> ::std::ops::DerefMut for AttachmentReferenceStencilLayoutBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37506     fn deref_mut(&mut self) -> &mut Self::Target {
37507         &mut self.inner
37508     }
37509 }
37510 impl<'a> AttachmentReferenceStencilLayoutBuilder<'a> {
stencil_layout(mut self, stencil_layout: ImageLayout) -> Self37511     pub fn stencil_layout(mut self, stencil_layout: ImageLayout) -> Self {
37512         self.inner.stencil_layout = stencil_layout;
37513         self
37514     }
37515     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37516     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37517     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentReferenceStencilLayout37518     pub fn build(self) -> AttachmentReferenceStencilLayout {
37519         self.inner
37520     }
37521 }
37522 #[repr(C)]
37523 #[derive(Copy, Clone, Debug)]
37524 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>"]
37525 pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
37526     pub s_type: StructureType,
37527     pub p_next: *mut c_void,
37528     pub primitive_topology_list_restart: Bool32,
37529     pub primitive_topology_patch_list_restart: Bool32,
37530 }
37531 impl ::std::default::Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
default() -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT37532     fn default() -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
37533         PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
37534             s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
37535             p_next: ::std::ptr::null_mut(),
37536             primitive_topology_list_restart: Bool32::default(),
37537             primitive_topology_patch_list_restart: Bool32::default(),
37538         }
37539     }
37540 }
37541 impl PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
builder<'a>() -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a>37542     pub fn builder<'a>() -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
37543         PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder {
37544             inner: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT::default(),
37545             marker: ::std::marker::PhantomData,
37546         }
37547     }
37548 }
37549 #[repr(transparent)]
37550 pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
37551     inner: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT,
37552     marker: ::std::marker::PhantomData<&'a ()>,
37553 }
37554 unsafe impl ExtendsPhysicalDeviceFeatures2
37555     for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'_>
37556 {
37557 }
37558 unsafe impl ExtendsPhysicalDeviceFeatures2
37559     for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
37560 {
37561 }
37562 unsafe impl ExtendsDeviceCreateInfo
37563     for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'_>
37564 {
37565 }
37566 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
37567 impl<'a> ::std::ops::Deref for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
37568     type Target = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
deref(&self) -> &Self::Target37569     fn deref(&self) -> &Self::Target {
37570         &self.inner
37571     }
37572 }
37573 impl<'a> ::std::ops::DerefMut for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37574     fn deref_mut(&mut self) -> &mut Self::Target {
37575         &mut self.inner
37576     }
37577 }
37578 impl<'a> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
primitive_topology_list_restart( mut self, primitive_topology_list_restart: bool, ) -> Self37579     pub fn primitive_topology_list_restart(
37580         mut self,
37581         primitive_topology_list_restart: bool,
37582     ) -> Self {
37583         self.inner.primitive_topology_list_restart = primitive_topology_list_restart.into();
37584         self
37585     }
primitive_topology_patch_list_restart( mut self, primitive_topology_patch_list_restart: bool, ) -> Self37586     pub fn primitive_topology_patch_list_restart(
37587         mut self,
37588         primitive_topology_patch_list_restart: bool,
37589     ) -> Self {
37590         self.inner.primitive_topology_patch_list_restart =
37591             primitive_topology_patch_list_restart.into();
37592         self
37593     }
37594     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37595     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37596     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT37597     pub fn build(self) -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
37598         self.inner
37599     }
37600 }
37601 #[repr(C)]
37602 #[derive(Copy, Clone, Debug)]
37603 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescriptionStencilLayout.html>"]
37604 pub struct AttachmentDescriptionStencilLayout {
37605     pub s_type: StructureType,
37606     pub p_next: *mut c_void,
37607     pub stencil_initial_layout: ImageLayout,
37608     pub stencil_final_layout: ImageLayout,
37609 }
37610 impl ::std::default::Default for AttachmentDescriptionStencilLayout {
default() -> AttachmentDescriptionStencilLayout37611     fn default() -> AttachmentDescriptionStencilLayout {
37612         AttachmentDescriptionStencilLayout {
37613             s_type: StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
37614             p_next: ::std::ptr::null_mut(),
37615             stencil_initial_layout: ImageLayout::default(),
37616             stencil_final_layout: ImageLayout::default(),
37617         }
37618     }
37619 }
37620 impl AttachmentDescriptionStencilLayout {
builder<'a>() -> AttachmentDescriptionStencilLayoutBuilder<'a>37621     pub fn builder<'a>() -> AttachmentDescriptionStencilLayoutBuilder<'a> {
37622         AttachmentDescriptionStencilLayoutBuilder {
37623             inner: AttachmentDescriptionStencilLayout::default(),
37624             marker: ::std::marker::PhantomData,
37625         }
37626     }
37627 }
37628 #[repr(transparent)]
37629 pub struct AttachmentDescriptionStencilLayoutBuilder<'a> {
37630     inner: AttachmentDescriptionStencilLayout,
37631     marker: ::std::marker::PhantomData<&'a ()>,
37632 }
37633 unsafe impl ExtendsAttachmentDescription2 for AttachmentDescriptionStencilLayoutBuilder<'_> {}
37634 unsafe impl ExtendsAttachmentDescription2 for AttachmentDescriptionStencilLayout {}
37635 impl<'a> ::std::ops::Deref for AttachmentDescriptionStencilLayoutBuilder<'a> {
37636     type Target = AttachmentDescriptionStencilLayout;
deref(&self) -> &Self::Target37637     fn deref(&self) -> &Self::Target {
37638         &self.inner
37639     }
37640 }
37641 impl<'a> ::std::ops::DerefMut for AttachmentDescriptionStencilLayoutBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37642     fn deref_mut(&mut self) -> &mut Self::Target {
37643         &mut self.inner
37644     }
37645 }
37646 impl<'a> AttachmentDescriptionStencilLayoutBuilder<'a> {
stencil_initial_layout(mut self, stencil_initial_layout: ImageLayout) -> Self37647     pub fn stencil_initial_layout(mut self, stencil_initial_layout: ImageLayout) -> Self {
37648         self.inner.stencil_initial_layout = stencil_initial_layout;
37649         self
37650     }
stencil_final_layout(mut self, stencil_final_layout: ImageLayout) -> Self37651     pub fn stencil_final_layout(mut self, stencil_final_layout: ImageLayout) -> Self {
37652         self.inner.stencil_final_layout = stencil_final_layout;
37653         self
37654     }
37655     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37656     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37657     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentDescriptionStencilLayout37658     pub fn build(self) -> AttachmentDescriptionStencilLayout {
37659         self.inner
37660     }
37661 }
37662 #[repr(C)]
37663 #[derive(Copy, Clone, Debug)]
37664 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>"]
37665 pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
37666     pub s_type: StructureType,
37667     pub p_next: *mut c_void,
37668     pub pipeline_executable_info: Bool32,
37669 }
37670 impl ::std::default::Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
default() -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHR37671     fn default() -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
37672         PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
37673             s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
37674             p_next: ::std::ptr::null_mut(),
37675             pipeline_executable_info: Bool32::default(),
37676         }
37677     }
37678 }
37679 impl PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
builder<'a>() -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a>37680     pub fn builder<'a>() -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
37681         PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder {
37682             inner: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR::default(),
37683             marker: ::std::marker::PhantomData,
37684         }
37685     }
37686 }
37687 #[repr(transparent)]
37688 pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
37689     inner: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR,
37690     marker: ::std::marker::PhantomData<&'a ()>,
37691 }
37692 unsafe impl ExtendsPhysicalDeviceFeatures2
37693     for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'_>
37694 {
37695 }
37696 unsafe impl ExtendsPhysicalDeviceFeatures2
37697     for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
37698 {
37699 }
37700 unsafe impl ExtendsDeviceCreateInfo
37701     for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'_>
37702 {
37703 }
37704 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
37705 impl<'a> ::std::ops::Deref for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
37706     type Target = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
deref(&self) -> &Self::Target37707     fn deref(&self) -> &Self::Target {
37708         &self.inner
37709     }
37710 }
37711 impl<'a> ::std::ops::DerefMut for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37712     fn deref_mut(&mut self) -> &mut Self::Target {
37713         &mut self.inner
37714     }
37715 }
37716 impl<'a> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
pipeline_executable_info(mut self, pipeline_executable_info: bool) -> Self37717     pub fn pipeline_executable_info(mut self, pipeline_executable_info: bool) -> Self {
37718         self.inner.pipeline_executable_info = pipeline_executable_info.into();
37719         self
37720     }
37721     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37722     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37723     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHR37724     pub fn build(self) -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
37725         self.inner
37726     }
37727 }
37728 #[repr(C)]
37729 #[derive(Copy, Clone, Debug)]
37730 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInfoKHR.html>"]
37731 pub struct PipelineInfoKHR {
37732     pub s_type: StructureType,
37733     pub p_next: *const c_void,
37734     pub pipeline: Pipeline,
37735 }
37736 impl ::std::default::Default for PipelineInfoKHR {
default() -> PipelineInfoKHR37737     fn default() -> PipelineInfoKHR {
37738         PipelineInfoKHR {
37739             s_type: StructureType::PIPELINE_INFO_KHR,
37740             p_next: ::std::ptr::null(),
37741             pipeline: Pipeline::default(),
37742         }
37743     }
37744 }
37745 impl PipelineInfoKHR {
builder<'a>() -> PipelineInfoKHRBuilder<'a>37746     pub fn builder<'a>() -> PipelineInfoKHRBuilder<'a> {
37747         PipelineInfoKHRBuilder {
37748             inner: PipelineInfoKHR::default(),
37749             marker: ::std::marker::PhantomData,
37750         }
37751     }
37752 }
37753 #[repr(transparent)]
37754 pub struct PipelineInfoKHRBuilder<'a> {
37755     inner: PipelineInfoKHR,
37756     marker: ::std::marker::PhantomData<&'a ()>,
37757 }
37758 impl<'a> ::std::ops::Deref for PipelineInfoKHRBuilder<'a> {
37759     type Target = PipelineInfoKHR;
deref(&self) -> &Self::Target37760     fn deref(&self) -> &Self::Target {
37761         &self.inner
37762     }
37763 }
37764 impl<'a> ::std::ops::DerefMut for PipelineInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37765     fn deref_mut(&mut self) -> &mut Self::Target {
37766         &mut self.inner
37767     }
37768 }
37769 impl<'a> PipelineInfoKHRBuilder<'a> {
pipeline(mut self, pipeline: Pipeline) -> Self37770     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
37771         self.inner.pipeline = pipeline;
37772         self
37773     }
37774     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37775     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37776     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineInfoKHR37777     pub fn build(self) -> PipelineInfoKHR {
37778         self.inner
37779     }
37780 }
37781 #[repr(C)]
37782 #[derive(Copy, Clone)]
37783 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutablePropertiesKHR.html>"]
37784 pub struct PipelineExecutablePropertiesKHR {
37785     pub s_type: StructureType,
37786     pub p_next: *mut c_void,
37787     pub stages: ShaderStageFlags,
37788     pub name: [c_char; MAX_DESCRIPTION_SIZE],
37789     pub description: [c_char; MAX_DESCRIPTION_SIZE],
37790     pub subgroup_size: u32,
37791 }
37792 impl fmt::Debug for PipelineExecutablePropertiesKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result37793     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
37794         fmt.debug_struct("PipelineExecutablePropertiesKHR")
37795             .field("s_type", &self.s_type)
37796             .field("p_next", &self.p_next)
37797             .field("stages", &self.stages)
37798             .field("name", &unsafe {
37799                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
37800             })
37801             .field("description", &unsafe {
37802                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
37803             })
37804             .field("subgroup_size", &self.subgroup_size)
37805             .finish()
37806     }
37807 }
37808 impl ::std::default::Default for PipelineExecutablePropertiesKHR {
default() -> PipelineExecutablePropertiesKHR37809     fn default() -> PipelineExecutablePropertiesKHR {
37810         PipelineExecutablePropertiesKHR {
37811             s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
37812             p_next: ::std::ptr::null_mut(),
37813             stages: ShaderStageFlags::default(),
37814             name: unsafe { ::std::mem::zeroed() },
37815             description: unsafe { ::std::mem::zeroed() },
37816             subgroup_size: u32::default(),
37817         }
37818     }
37819 }
37820 impl PipelineExecutablePropertiesKHR {
builder<'a>() -> PipelineExecutablePropertiesKHRBuilder<'a>37821     pub fn builder<'a>() -> PipelineExecutablePropertiesKHRBuilder<'a> {
37822         PipelineExecutablePropertiesKHRBuilder {
37823             inner: PipelineExecutablePropertiesKHR::default(),
37824             marker: ::std::marker::PhantomData,
37825         }
37826     }
37827 }
37828 #[repr(transparent)]
37829 pub struct PipelineExecutablePropertiesKHRBuilder<'a> {
37830     inner: PipelineExecutablePropertiesKHR,
37831     marker: ::std::marker::PhantomData<&'a ()>,
37832 }
37833 impl<'a> ::std::ops::Deref for PipelineExecutablePropertiesKHRBuilder<'a> {
37834     type Target = PipelineExecutablePropertiesKHR;
deref(&self) -> &Self::Target37835     fn deref(&self) -> &Self::Target {
37836         &self.inner
37837     }
37838 }
37839 impl<'a> ::std::ops::DerefMut for PipelineExecutablePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37840     fn deref_mut(&mut self) -> &mut Self::Target {
37841         &mut self.inner
37842     }
37843 }
37844 impl<'a> PipelineExecutablePropertiesKHRBuilder<'a> {
stages(mut self, stages: ShaderStageFlags) -> Self37845     pub fn stages(mut self, stages: ShaderStageFlags) -> Self {
37846         self.inner.stages = stages;
37847         self
37848     }
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self37849     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
37850         self.inner.name = name;
37851         self
37852     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self37853     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
37854         self.inner.description = description;
37855         self
37856     }
subgroup_size(mut self, subgroup_size: u32) -> Self37857     pub fn subgroup_size(mut self, subgroup_size: u32) -> Self {
37858         self.inner.subgroup_size = subgroup_size;
37859         self
37860     }
37861     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37862     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37863     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutablePropertiesKHR37864     pub fn build(self) -> PipelineExecutablePropertiesKHR {
37865         self.inner
37866     }
37867 }
37868 #[repr(C)]
37869 #[derive(Copy, Clone, Debug)]
37870 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableInfoKHR.html>"]
37871 pub struct PipelineExecutableInfoKHR {
37872     pub s_type: StructureType,
37873     pub p_next: *const c_void,
37874     pub pipeline: Pipeline,
37875     pub executable_index: u32,
37876 }
37877 impl ::std::default::Default for PipelineExecutableInfoKHR {
default() -> PipelineExecutableInfoKHR37878     fn default() -> PipelineExecutableInfoKHR {
37879         PipelineExecutableInfoKHR {
37880             s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
37881             p_next: ::std::ptr::null(),
37882             pipeline: Pipeline::default(),
37883             executable_index: u32::default(),
37884         }
37885     }
37886 }
37887 impl PipelineExecutableInfoKHR {
builder<'a>() -> PipelineExecutableInfoKHRBuilder<'a>37888     pub fn builder<'a>() -> PipelineExecutableInfoKHRBuilder<'a> {
37889         PipelineExecutableInfoKHRBuilder {
37890             inner: PipelineExecutableInfoKHR::default(),
37891             marker: ::std::marker::PhantomData,
37892         }
37893     }
37894 }
37895 #[repr(transparent)]
37896 pub struct PipelineExecutableInfoKHRBuilder<'a> {
37897     inner: PipelineExecutableInfoKHR,
37898     marker: ::std::marker::PhantomData<&'a ()>,
37899 }
37900 impl<'a> ::std::ops::Deref for PipelineExecutableInfoKHRBuilder<'a> {
37901     type Target = PipelineExecutableInfoKHR;
deref(&self) -> &Self::Target37902     fn deref(&self) -> &Self::Target {
37903         &self.inner
37904     }
37905 }
37906 impl<'a> ::std::ops::DerefMut for PipelineExecutableInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37907     fn deref_mut(&mut self) -> &mut Self::Target {
37908         &mut self.inner
37909     }
37910 }
37911 impl<'a> PipelineExecutableInfoKHRBuilder<'a> {
pipeline(mut self, pipeline: Pipeline) -> Self37912     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
37913         self.inner.pipeline = pipeline;
37914         self
37915     }
executable_index(mut self, executable_index: u32) -> Self37916     pub fn executable_index(mut self, executable_index: u32) -> Self {
37917         self.inner.executable_index = executable_index;
37918         self
37919     }
37920     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37921     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37922     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutableInfoKHR37923     pub fn build(self) -> PipelineExecutableInfoKHR {
37924         self.inner
37925     }
37926 }
37927 #[repr(C)]
37928 #[derive(Copy, Clone)]
37929 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableStatisticValueKHR.html>"]
37930 pub union PipelineExecutableStatisticValueKHR {
37931     pub b32: Bool32,
37932     pub i64: i64,
37933     pub u64: u64,
37934     pub f64: f64,
37935 }
37936 impl ::std::default::Default for PipelineExecutableStatisticValueKHR {
default() -> PipelineExecutableStatisticValueKHR37937     fn default() -> PipelineExecutableStatisticValueKHR {
37938         unsafe { ::std::mem::zeroed() }
37939     }
37940 }
37941 #[repr(C)]
37942 #[derive(Copy, Clone)]
37943 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableStatisticKHR.html>"]
37944 pub struct PipelineExecutableStatisticKHR {
37945     pub s_type: StructureType,
37946     pub p_next: *mut c_void,
37947     pub name: [c_char; MAX_DESCRIPTION_SIZE],
37948     pub description: [c_char; MAX_DESCRIPTION_SIZE],
37949     pub format: PipelineExecutableStatisticFormatKHR,
37950     pub value: PipelineExecutableStatisticValueKHR,
37951 }
37952 impl fmt::Debug for PipelineExecutableStatisticKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result37953     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
37954         fmt.debug_struct("PipelineExecutableStatisticKHR")
37955             .field("s_type", &self.s_type)
37956             .field("p_next", &self.p_next)
37957             .field("name", &unsafe {
37958                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
37959             })
37960             .field("description", &unsafe {
37961                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
37962             })
37963             .field("format", &self.format)
37964             .field("value", &"union")
37965             .finish()
37966     }
37967 }
37968 impl ::std::default::Default for PipelineExecutableStatisticKHR {
default() -> PipelineExecutableStatisticKHR37969     fn default() -> PipelineExecutableStatisticKHR {
37970         PipelineExecutableStatisticKHR {
37971             s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
37972             p_next: ::std::ptr::null_mut(),
37973             name: unsafe { ::std::mem::zeroed() },
37974             description: unsafe { ::std::mem::zeroed() },
37975             format: PipelineExecutableStatisticFormatKHR::default(),
37976             value: PipelineExecutableStatisticValueKHR::default(),
37977         }
37978     }
37979 }
37980 impl PipelineExecutableStatisticKHR {
builder<'a>() -> PipelineExecutableStatisticKHRBuilder<'a>37981     pub fn builder<'a>() -> PipelineExecutableStatisticKHRBuilder<'a> {
37982         PipelineExecutableStatisticKHRBuilder {
37983             inner: PipelineExecutableStatisticKHR::default(),
37984             marker: ::std::marker::PhantomData,
37985         }
37986     }
37987 }
37988 #[repr(transparent)]
37989 pub struct PipelineExecutableStatisticKHRBuilder<'a> {
37990     inner: PipelineExecutableStatisticKHR,
37991     marker: ::std::marker::PhantomData<&'a ()>,
37992 }
37993 impl<'a> ::std::ops::Deref for PipelineExecutableStatisticKHRBuilder<'a> {
37994     type Target = PipelineExecutableStatisticKHR;
deref(&self) -> &Self::Target37995     fn deref(&self) -> &Self::Target {
37996         &self.inner
37997     }
37998 }
37999 impl<'a> ::std::ops::DerefMut for PipelineExecutableStatisticKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38000     fn deref_mut(&mut self) -> &mut Self::Target {
38001         &mut self.inner
38002     }
38003 }
38004 impl<'a> PipelineExecutableStatisticKHRBuilder<'a> {
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38005     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38006         self.inner.name = name;
38007         self
38008     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38009     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38010         self.inner.description = description;
38011         self
38012     }
format(mut self, format: PipelineExecutableStatisticFormatKHR) -> Self38013     pub fn format(mut self, format: PipelineExecutableStatisticFormatKHR) -> Self {
38014         self.inner.format = format;
38015         self
38016     }
value(mut self, value: PipelineExecutableStatisticValueKHR) -> Self38017     pub fn value(mut self, value: PipelineExecutableStatisticValueKHR) -> Self {
38018         self.inner.value = value;
38019         self
38020     }
38021     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38022     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38023     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutableStatisticKHR38024     pub fn build(self) -> PipelineExecutableStatisticKHR {
38025         self.inner
38026     }
38027 }
38028 #[repr(C)]
38029 #[derive(Copy, Clone)]
38030 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableInternalRepresentationKHR.html>"]
38031 pub struct PipelineExecutableInternalRepresentationKHR {
38032     pub s_type: StructureType,
38033     pub p_next: *mut c_void,
38034     pub name: [c_char; MAX_DESCRIPTION_SIZE],
38035     pub description: [c_char; MAX_DESCRIPTION_SIZE],
38036     pub is_text: Bool32,
38037     pub data_size: usize,
38038     pub p_data: *mut c_void,
38039 }
38040 impl fmt::Debug for PipelineExecutableInternalRepresentationKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result38041     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
38042         fmt.debug_struct("PipelineExecutableInternalRepresentationKHR")
38043             .field("s_type", &self.s_type)
38044             .field("p_next", &self.p_next)
38045             .field("name", &unsafe {
38046                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
38047             })
38048             .field("description", &unsafe {
38049                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
38050             })
38051             .field("is_text", &self.is_text)
38052             .field("data_size", &self.data_size)
38053             .field("p_data", &self.p_data)
38054             .finish()
38055     }
38056 }
38057 impl ::std::default::Default for PipelineExecutableInternalRepresentationKHR {
default() -> PipelineExecutableInternalRepresentationKHR38058     fn default() -> PipelineExecutableInternalRepresentationKHR {
38059         PipelineExecutableInternalRepresentationKHR {
38060             s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
38061             p_next: ::std::ptr::null_mut(),
38062             name: unsafe { ::std::mem::zeroed() },
38063             description: unsafe { ::std::mem::zeroed() },
38064             is_text: Bool32::default(),
38065             data_size: usize::default(),
38066             p_data: ::std::ptr::null_mut(),
38067         }
38068     }
38069 }
38070 impl PipelineExecutableInternalRepresentationKHR {
builder<'a>() -> PipelineExecutableInternalRepresentationKHRBuilder<'a>38071     pub fn builder<'a>() -> PipelineExecutableInternalRepresentationKHRBuilder<'a> {
38072         PipelineExecutableInternalRepresentationKHRBuilder {
38073             inner: PipelineExecutableInternalRepresentationKHR::default(),
38074             marker: ::std::marker::PhantomData,
38075         }
38076     }
38077 }
38078 #[repr(transparent)]
38079 pub struct PipelineExecutableInternalRepresentationKHRBuilder<'a> {
38080     inner: PipelineExecutableInternalRepresentationKHR,
38081     marker: ::std::marker::PhantomData<&'a ()>,
38082 }
38083 impl<'a> ::std::ops::Deref for PipelineExecutableInternalRepresentationKHRBuilder<'a> {
38084     type Target = PipelineExecutableInternalRepresentationKHR;
deref(&self) -> &Self::Target38085     fn deref(&self) -> &Self::Target {
38086         &self.inner
38087     }
38088 }
38089 impl<'a> ::std::ops::DerefMut for PipelineExecutableInternalRepresentationKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38090     fn deref_mut(&mut self) -> &mut Self::Target {
38091         &mut self.inner
38092     }
38093 }
38094 impl<'a> PipelineExecutableInternalRepresentationKHRBuilder<'a> {
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38095     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38096         self.inner.name = name;
38097         self
38098     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38099     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38100         self.inner.description = description;
38101         self
38102     }
is_text(mut self, is_text: bool) -> Self38103     pub fn is_text(mut self, is_text: bool) -> Self {
38104         self.inner.is_text = is_text.into();
38105         self
38106     }
data(mut self, data: &'a mut [u8]) -> Self38107     pub fn data(mut self, data: &'a mut [u8]) -> Self {
38108         self.inner.data_size = data.len() as _;
38109         self.inner.p_data = data.as_mut_ptr() as *mut c_void;
38110         self
38111     }
38112     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38113     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38114     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutableInternalRepresentationKHR38115     pub fn build(self) -> PipelineExecutableInternalRepresentationKHR {
38116         self.inner
38117     }
38118 }
38119 #[repr(C)]
38120 #[derive(Copy, Clone, Debug)]
38121 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>"]
38122 pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
38123     pub s_type: StructureType,
38124     pub p_next: *mut c_void,
38125     pub shader_demote_to_helper_invocation: Bool32,
38126 }
38127 impl ::std::default::Default for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
default() -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT38128     fn default() -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
38129         PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
38130             s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,
38131             p_next: ::std::ptr::null_mut(),
38132             shader_demote_to_helper_invocation: Bool32::default(),
38133         }
38134     }
38135 }
38136 impl PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a>38137     pub fn builder<'a>() -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
38138         PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder {
38139             inner: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::default(),
38140             marker: ::std::marker::PhantomData,
38141         }
38142     }
38143 }
38144 #[repr(transparent)]
38145 pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
38146     inner: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT,
38147     marker: ::std::marker::PhantomData<&'a ()>,
38148 }
38149 unsafe impl ExtendsPhysicalDeviceFeatures2
38150     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'_>
38151 {
38152 }
38153 unsafe impl ExtendsPhysicalDeviceFeatures2
38154     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
38155 {
38156 }
38157 unsafe impl ExtendsDeviceCreateInfo
38158     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'_>
38159 {
38160 }
38161 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {}
38162 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
38163     type Target = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
deref(&self) -> &Self::Target38164     fn deref(&self) -> &Self::Target {
38165         &self.inner
38166     }
38167 }
38168 impl<'a> ::std::ops::DerefMut
38169     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a>
38170 {
deref_mut(&mut self) -> &mut Self::Target38171     fn deref_mut(&mut self) -> &mut Self::Target {
38172         &mut self.inner
38173     }
38174 }
38175 impl<'a> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
shader_demote_to_helper_invocation( mut self, shader_demote_to_helper_invocation: bool, ) -> Self38176     pub fn shader_demote_to_helper_invocation(
38177         mut self,
38178         shader_demote_to_helper_invocation: bool,
38179     ) -> Self {
38180         self.inner.shader_demote_to_helper_invocation = shader_demote_to_helper_invocation.into();
38181         self
38182     }
38183     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38184     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38185     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT38186     pub fn build(self) -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
38187         self.inner
38188     }
38189 }
38190 #[repr(C)]
38191 #[derive(Copy, Clone, Debug)]
38192 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>"]
38193 pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
38194     pub s_type: StructureType,
38195     pub p_next: *mut c_void,
38196     pub texel_buffer_alignment: Bool32,
38197 }
38198 impl ::std::default::Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
default() -> PhysicalDeviceTexelBufferAlignmentFeaturesEXT38199     fn default() -> PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
38200         PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
38201             s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
38202             p_next: ::std::ptr::null_mut(),
38203             texel_buffer_alignment: Bool32::default(),
38204         }
38205     }
38206 }
38207 impl PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
builder<'a>() -> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a>38208     pub fn builder<'a>() -> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38209         PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder {
38210             inner: PhysicalDeviceTexelBufferAlignmentFeaturesEXT::default(),
38211             marker: ::std::marker::PhantomData,
38212         }
38213     }
38214 }
38215 #[repr(transparent)]
38216 pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38217     inner: PhysicalDeviceTexelBufferAlignmentFeaturesEXT,
38218     marker: ::std::marker::PhantomData<&'a ()>,
38219 }
38220 unsafe impl ExtendsPhysicalDeviceFeatures2
38221     for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'_>
38222 {
38223 }
38224 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
38225 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'_> {}
38226 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
38227 impl<'a> ::std::ops::Deref for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
38228     type Target = PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
deref(&self) -> &Self::Target38229     fn deref(&self) -> &Self::Target {
38230         &self.inner
38231     }
38232 }
38233 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38234     fn deref_mut(&mut self) -> &mut Self::Target {
38235         &mut self.inner
38236     }
38237 }
38238 impl<'a> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
texel_buffer_alignment(mut self, texel_buffer_alignment: bool) -> Self38239     pub fn texel_buffer_alignment(mut self, texel_buffer_alignment: bool) -> Self {
38240         self.inner.texel_buffer_alignment = texel_buffer_alignment.into();
38241         self
38242     }
38243     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38244     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38245     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTexelBufferAlignmentFeaturesEXT38246     pub fn build(self) -> PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
38247         self.inner
38248     }
38249 }
38250 #[repr(C)]
38251 #[derive(Copy, Clone, Debug)]
38252 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>"]
38253 pub struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
38254     pub s_type: StructureType,
38255     pub p_next: *mut c_void,
38256     pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
38257     pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
38258     pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
38259     pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
38260 }
38261 impl ::std::default::Default for PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
default() -> PhysicalDeviceTexelBufferAlignmentPropertiesEXT38262     fn default() -> PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
38263         PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
38264             s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,
38265             p_next: ::std::ptr::null_mut(),
38266             storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
38267             storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
38268             uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
38269             uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
38270         }
38271     }
38272 }
38273 impl PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
builder<'a>() -> PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a>38274     pub fn builder<'a>() -> PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
38275         PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder {
38276             inner: PhysicalDeviceTexelBufferAlignmentPropertiesEXT::default(),
38277             marker: ::std::marker::PhantomData,
38278         }
38279     }
38280 }
38281 #[repr(transparent)]
38282 pub struct PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
38283     inner: PhysicalDeviceTexelBufferAlignmentPropertiesEXT,
38284     marker: ::std::marker::PhantomData<&'a ()>,
38285 }
38286 unsafe impl ExtendsPhysicalDeviceProperties2
38287     for PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'_>
38288 {
38289 }
38290 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTexelBufferAlignmentPropertiesEXT {}
38291 impl<'a> ::std::ops::Deref for PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
38292     type Target = PhysicalDeviceTexelBufferAlignmentPropertiesEXT;
deref(&self) -> &Self::Target38293     fn deref(&self) -> &Self::Target {
38294         &self.inner
38295     }
38296 }
38297 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38298     fn deref_mut(&mut self) -> &mut Self::Target {
38299         &mut self.inner
38300     }
38301 }
38302 impl<'a> PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
storage_texel_buffer_offset_alignment_bytes( mut self, storage_texel_buffer_offset_alignment_bytes: DeviceSize, ) -> Self38303     pub fn storage_texel_buffer_offset_alignment_bytes(
38304         mut self,
38305         storage_texel_buffer_offset_alignment_bytes: DeviceSize,
38306     ) -> Self {
38307         self.inner.storage_texel_buffer_offset_alignment_bytes =
38308             storage_texel_buffer_offset_alignment_bytes;
38309         self
38310     }
storage_texel_buffer_offset_single_texel_alignment( mut self, storage_texel_buffer_offset_single_texel_alignment: bool, ) -> Self38311     pub fn storage_texel_buffer_offset_single_texel_alignment(
38312         mut self,
38313         storage_texel_buffer_offset_single_texel_alignment: bool,
38314     ) -> Self {
38315         self.inner
38316             .storage_texel_buffer_offset_single_texel_alignment =
38317             storage_texel_buffer_offset_single_texel_alignment.into();
38318         self
38319     }
uniform_texel_buffer_offset_alignment_bytes( mut self, uniform_texel_buffer_offset_alignment_bytes: DeviceSize, ) -> Self38320     pub fn uniform_texel_buffer_offset_alignment_bytes(
38321         mut self,
38322         uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
38323     ) -> Self {
38324         self.inner.uniform_texel_buffer_offset_alignment_bytes =
38325             uniform_texel_buffer_offset_alignment_bytes;
38326         self
38327     }
uniform_texel_buffer_offset_single_texel_alignment( mut self, uniform_texel_buffer_offset_single_texel_alignment: bool, ) -> Self38328     pub fn uniform_texel_buffer_offset_single_texel_alignment(
38329         mut self,
38330         uniform_texel_buffer_offset_single_texel_alignment: bool,
38331     ) -> Self {
38332         self.inner
38333             .uniform_texel_buffer_offset_single_texel_alignment =
38334             uniform_texel_buffer_offset_single_texel_alignment.into();
38335         self
38336     }
38337     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38338     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38339     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTexelBufferAlignmentPropertiesEXT38340     pub fn build(self) -> PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
38341         self.inner
38342     }
38343 }
38344 #[repr(C)]
38345 #[derive(Copy, Clone, Debug)]
38346 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>"]
38347 pub struct PhysicalDeviceSubgroupSizeControlFeaturesEXT {
38348     pub s_type: StructureType,
38349     pub p_next: *mut c_void,
38350     pub subgroup_size_control: Bool32,
38351     pub compute_full_subgroups: Bool32,
38352 }
38353 impl ::std::default::Default for PhysicalDeviceSubgroupSizeControlFeaturesEXT {
default() -> PhysicalDeviceSubgroupSizeControlFeaturesEXT38354     fn default() -> PhysicalDeviceSubgroupSizeControlFeaturesEXT {
38355         PhysicalDeviceSubgroupSizeControlFeaturesEXT {
38356             s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,
38357             p_next: ::std::ptr::null_mut(),
38358             subgroup_size_control: Bool32::default(),
38359             compute_full_subgroups: Bool32::default(),
38360         }
38361     }
38362 }
38363 impl PhysicalDeviceSubgroupSizeControlFeaturesEXT {
builder<'a>() -> PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a>38364     pub fn builder<'a>() -> PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
38365         PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder {
38366             inner: PhysicalDeviceSubgroupSizeControlFeaturesEXT::default(),
38367             marker: ::std::marker::PhantomData,
38368         }
38369     }
38370 }
38371 #[repr(transparent)]
38372 pub struct PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
38373     inner: PhysicalDeviceSubgroupSizeControlFeaturesEXT,
38374     marker: ::std::marker::PhantomData<&'a ()>,
38375 }
38376 unsafe impl ExtendsPhysicalDeviceFeatures2
38377     for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'_>
38378 {
38379 }
38380 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSubgroupSizeControlFeaturesEXT {}
38381 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'_> {}
38382 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubgroupSizeControlFeaturesEXT {}
38383 impl<'a> ::std::ops::Deref for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
38384     type Target = PhysicalDeviceSubgroupSizeControlFeaturesEXT;
deref(&self) -> &Self::Target38385     fn deref(&self) -> &Self::Target {
38386         &self.inner
38387     }
38388 }
38389 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38390     fn deref_mut(&mut self) -> &mut Self::Target {
38391         &mut self.inner
38392     }
38393 }
38394 impl<'a> PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
subgroup_size_control(mut self, subgroup_size_control: bool) -> Self38395     pub fn subgroup_size_control(mut self, subgroup_size_control: bool) -> Self {
38396         self.inner.subgroup_size_control = subgroup_size_control.into();
38397         self
38398     }
compute_full_subgroups(mut self, compute_full_subgroups: bool) -> Self38399     pub fn compute_full_subgroups(mut self, compute_full_subgroups: bool) -> Self {
38400         self.inner.compute_full_subgroups = compute_full_subgroups.into();
38401         self
38402     }
38403     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38404     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38405     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubgroupSizeControlFeaturesEXT38406     pub fn build(self) -> PhysicalDeviceSubgroupSizeControlFeaturesEXT {
38407         self.inner
38408     }
38409 }
38410 #[repr(C)]
38411 #[derive(Copy, Clone, Debug)]
38412 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>"]
38413 pub struct PhysicalDeviceSubgroupSizeControlPropertiesEXT {
38414     pub s_type: StructureType,
38415     pub p_next: *mut c_void,
38416     pub min_subgroup_size: u32,
38417     pub max_subgroup_size: u32,
38418     pub max_compute_workgroup_subgroups: u32,
38419     pub required_subgroup_size_stages: ShaderStageFlags,
38420 }
38421 impl ::std::default::Default for PhysicalDeviceSubgroupSizeControlPropertiesEXT {
default() -> PhysicalDeviceSubgroupSizeControlPropertiesEXT38422     fn default() -> PhysicalDeviceSubgroupSizeControlPropertiesEXT {
38423         PhysicalDeviceSubgroupSizeControlPropertiesEXT {
38424             s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT,
38425             p_next: ::std::ptr::null_mut(),
38426             min_subgroup_size: u32::default(),
38427             max_subgroup_size: u32::default(),
38428             max_compute_workgroup_subgroups: u32::default(),
38429             required_subgroup_size_stages: ShaderStageFlags::default(),
38430         }
38431     }
38432 }
38433 impl PhysicalDeviceSubgroupSizeControlPropertiesEXT {
builder<'a>() -> PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a>38434     pub fn builder<'a>() -> PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
38435         PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder {
38436             inner: PhysicalDeviceSubgroupSizeControlPropertiesEXT::default(),
38437             marker: ::std::marker::PhantomData,
38438         }
38439     }
38440 }
38441 #[repr(transparent)]
38442 pub struct PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
38443     inner: PhysicalDeviceSubgroupSizeControlPropertiesEXT,
38444     marker: ::std::marker::PhantomData<&'a ()>,
38445 }
38446 unsafe impl ExtendsPhysicalDeviceProperties2
38447     for PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'_>
38448 {
38449 }
38450 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupSizeControlPropertiesEXT {}
38451 impl<'a> ::std::ops::Deref for PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
38452     type Target = PhysicalDeviceSubgroupSizeControlPropertiesEXT;
deref(&self) -> &Self::Target38453     fn deref(&self) -> &Self::Target {
38454         &self.inner
38455     }
38456 }
38457 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38458     fn deref_mut(&mut self) -> &mut Self::Target {
38459         &mut self.inner
38460     }
38461 }
38462 impl<'a> PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
min_subgroup_size(mut self, min_subgroup_size: u32) -> Self38463     pub fn min_subgroup_size(mut self, min_subgroup_size: u32) -> Self {
38464         self.inner.min_subgroup_size = min_subgroup_size;
38465         self
38466     }
max_subgroup_size(mut self, max_subgroup_size: u32) -> Self38467     pub fn max_subgroup_size(mut self, max_subgroup_size: u32) -> Self {
38468         self.inner.max_subgroup_size = max_subgroup_size;
38469         self
38470     }
max_compute_workgroup_subgroups(mut self, max_compute_workgroup_subgroups: u32) -> Self38471     pub fn max_compute_workgroup_subgroups(mut self, max_compute_workgroup_subgroups: u32) -> Self {
38472         self.inner.max_compute_workgroup_subgroups = max_compute_workgroup_subgroups;
38473         self
38474     }
required_subgroup_size_stages( mut self, required_subgroup_size_stages: ShaderStageFlags, ) -> Self38475     pub fn required_subgroup_size_stages(
38476         mut self,
38477         required_subgroup_size_stages: ShaderStageFlags,
38478     ) -> Self {
38479         self.inner.required_subgroup_size_stages = required_subgroup_size_stages;
38480         self
38481     }
38482     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38483     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38484     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubgroupSizeControlPropertiesEXT38485     pub fn build(self) -> PhysicalDeviceSubgroupSizeControlPropertiesEXT {
38486         self.inner
38487     }
38488 }
38489 #[repr(C)]
38490 #[derive(Copy, Clone, Debug)]
38491 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>"]
38492 pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
38493     pub s_type: StructureType,
38494     pub p_next: *mut c_void,
38495     pub required_subgroup_size: u32,
38496 }
38497 impl ::std::default::Default for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
default() -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT38498     fn default() -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
38499         PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
38500             s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,
38501             p_next: ::std::ptr::null_mut(),
38502             required_subgroup_size: u32::default(),
38503         }
38504     }
38505 }
38506 impl PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
builder<'a>() -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a>38507     pub fn builder<'a>() -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
38508         PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder {
38509             inner: PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT::default(),
38510             marker: ::std::marker::PhantomData,
38511         }
38512     }
38513 }
38514 #[repr(transparent)]
38515 pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
38516     inner: PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT,
38517     marker: ::std::marker::PhantomData<&'a ()>,
38518 }
38519 unsafe impl ExtendsPipelineShaderStageCreateInfo
38520     for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'_>
38521 {
38522 }
38523 unsafe impl ExtendsPipelineShaderStageCreateInfo
38524     for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
38525 {
38526 }
38527 impl<'a> ::std::ops::Deref for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
38528     type Target = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
deref(&self) -> &Self::Target38529     fn deref(&self) -> &Self::Target {
38530         &self.inner
38531     }
38532 }
38533 impl<'a> ::std::ops::DerefMut for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38534     fn deref_mut(&mut self) -> &mut Self::Target {
38535         &mut self.inner
38536     }
38537 }
38538 impl<'a> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
required_subgroup_size(mut self, required_subgroup_size: u32) -> Self38539     pub fn required_subgroup_size(mut self, required_subgroup_size: u32) -> Self {
38540         self.inner.required_subgroup_size = required_subgroup_size;
38541         self
38542     }
38543     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38544     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38545     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT38546     pub fn build(self) -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
38547         self.inner
38548     }
38549 }
38550 #[repr(C)]
38551 #[derive(Copy, Clone, Debug)]
38552 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>"]
38553 pub struct SubpassShadingPipelineCreateInfoHUAWEI {
38554     pub s_type: StructureType,
38555     pub p_next: *mut c_void,
38556     pub render_pass: RenderPass,
38557     pub subpass: u32,
38558 }
38559 impl ::std::default::Default for SubpassShadingPipelineCreateInfoHUAWEI {
default() -> SubpassShadingPipelineCreateInfoHUAWEI38560     fn default() -> SubpassShadingPipelineCreateInfoHUAWEI {
38561         SubpassShadingPipelineCreateInfoHUAWEI {
38562             s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
38563             p_next: ::std::ptr::null_mut(),
38564             render_pass: RenderPass::default(),
38565             subpass: u32::default(),
38566         }
38567     }
38568 }
38569 impl SubpassShadingPipelineCreateInfoHUAWEI {
builder<'a>() -> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a>38570     pub fn builder<'a>() -> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38571         SubpassShadingPipelineCreateInfoHUAWEIBuilder {
38572             inner: SubpassShadingPipelineCreateInfoHUAWEI::default(),
38573             marker: ::std::marker::PhantomData,
38574         }
38575     }
38576 }
38577 #[repr(transparent)]
38578 pub struct SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38579     inner: SubpassShadingPipelineCreateInfoHUAWEI,
38580     marker: ::std::marker::PhantomData<&'a ()>,
38581 }
38582 unsafe impl ExtendsComputePipelineCreateInfo for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'_> {}
38583 unsafe impl ExtendsComputePipelineCreateInfo for SubpassShadingPipelineCreateInfoHUAWEI {}
38584 impl<'a> ::std::ops::Deref for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
38585     type Target = SubpassShadingPipelineCreateInfoHUAWEI;
deref(&self) -> &Self::Target38586     fn deref(&self) -> &Self::Target {
38587         &self.inner
38588     }
38589 }
38590 impl<'a> ::std::ops::DerefMut for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38591     fn deref_mut(&mut self) -> &mut Self::Target {
38592         &mut self.inner
38593     }
38594 }
38595 impl<'a> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
render_pass(mut self, render_pass: RenderPass) -> Self38596     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
38597         self.inner.render_pass = render_pass;
38598         self
38599     }
subpass(mut self, subpass: u32) -> Self38600     pub fn subpass(mut self, subpass: u32) -> Self {
38601         self.inner.subpass = subpass;
38602         self
38603     }
38604     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38605     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38606     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassShadingPipelineCreateInfoHUAWEI38607     pub fn build(self) -> SubpassShadingPipelineCreateInfoHUAWEI {
38608         self.inner
38609     }
38610 }
38611 #[repr(C)]
38612 #[derive(Copy, Clone, Debug)]
38613 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>"]
38614 pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
38615     pub s_type: StructureType,
38616     pub p_next: *mut c_void,
38617     pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
38618 }
38619 impl ::std::default::Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
default() -> PhysicalDeviceSubpassShadingPropertiesHUAWEI38620     fn default() -> PhysicalDeviceSubpassShadingPropertiesHUAWEI {
38621         PhysicalDeviceSubpassShadingPropertiesHUAWEI {
38622             s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
38623             p_next: ::std::ptr::null_mut(),
38624             max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
38625         }
38626     }
38627 }
38628 impl PhysicalDeviceSubpassShadingPropertiesHUAWEI {
builder<'a>() -> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a>38629     pub fn builder<'a>() -> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38630         PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder {
38631             inner: PhysicalDeviceSubpassShadingPropertiesHUAWEI::default(),
38632             marker: ::std::marker::PhantomData,
38633         }
38634     }
38635 }
38636 #[repr(transparent)]
38637 pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38638     inner: PhysicalDeviceSubpassShadingPropertiesHUAWEI,
38639     marker: ::std::marker::PhantomData<&'a ()>,
38640 }
38641 unsafe impl ExtendsPhysicalDeviceProperties2
38642     for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'_>
38643 {
38644 }
38645 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
38646 impl<'a> ::std::ops::Deref for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
38647     type Target = PhysicalDeviceSubpassShadingPropertiesHUAWEI;
deref(&self) -> &Self::Target38648     fn deref(&self) -> &Self::Target {
38649         &self.inner
38650     }
38651 }
38652 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38653     fn deref_mut(&mut self) -> &mut Self::Target {
38654         &mut self.inner
38655     }
38656 }
38657 impl<'a> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
max_subpass_shading_workgroup_size_aspect_ratio( mut self, max_subpass_shading_workgroup_size_aspect_ratio: u32, ) -> Self38658     pub fn max_subpass_shading_workgroup_size_aspect_ratio(
38659         mut self,
38660         max_subpass_shading_workgroup_size_aspect_ratio: u32,
38661     ) -> Self {
38662         self.inner.max_subpass_shading_workgroup_size_aspect_ratio =
38663             max_subpass_shading_workgroup_size_aspect_ratio;
38664         self
38665     }
38666     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38667     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38668     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubpassShadingPropertiesHUAWEI38669     pub fn build(self) -> PhysicalDeviceSubpassShadingPropertiesHUAWEI {
38670         self.inner
38671     }
38672 }
38673 #[repr(C)]
38674 #[derive(Copy, Clone, Debug)]
38675 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>"]
38676 pub struct MemoryOpaqueCaptureAddressAllocateInfo {
38677     pub s_type: StructureType,
38678     pub p_next: *const c_void,
38679     pub opaque_capture_address: u64,
38680 }
38681 impl ::std::default::Default for MemoryOpaqueCaptureAddressAllocateInfo {
default() -> MemoryOpaqueCaptureAddressAllocateInfo38682     fn default() -> MemoryOpaqueCaptureAddressAllocateInfo {
38683         MemoryOpaqueCaptureAddressAllocateInfo {
38684             s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
38685             p_next: ::std::ptr::null(),
38686             opaque_capture_address: u64::default(),
38687         }
38688     }
38689 }
38690 impl MemoryOpaqueCaptureAddressAllocateInfo {
builder<'a>() -> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a>38691     pub fn builder<'a>() -> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38692         MemoryOpaqueCaptureAddressAllocateInfoBuilder {
38693             inner: MemoryOpaqueCaptureAddressAllocateInfo::default(),
38694             marker: ::std::marker::PhantomData,
38695         }
38696     }
38697 }
38698 #[repr(transparent)]
38699 pub struct MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38700     inner: MemoryOpaqueCaptureAddressAllocateInfo,
38701     marker: ::std::marker::PhantomData<&'a ()>,
38702 }
38703 unsafe impl ExtendsMemoryAllocateInfo for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'_> {}
38704 unsafe impl ExtendsMemoryAllocateInfo for MemoryOpaqueCaptureAddressAllocateInfo {}
38705 impl<'a> ::std::ops::Deref for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
38706     type Target = MemoryOpaqueCaptureAddressAllocateInfo;
deref(&self) -> &Self::Target38707     fn deref(&self) -> &Self::Target {
38708         &self.inner
38709     }
38710 }
38711 impl<'a> ::std::ops::DerefMut for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38712     fn deref_mut(&mut self) -> &mut Self::Target {
38713         &mut self.inner
38714     }
38715 }
38716 impl<'a> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
opaque_capture_address(mut self, opaque_capture_address: u64) -> Self38717     pub fn opaque_capture_address(mut self, opaque_capture_address: u64) -> Self {
38718         self.inner.opaque_capture_address = opaque_capture_address;
38719         self
38720     }
38721     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38722     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38723     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryOpaqueCaptureAddressAllocateInfo38724     pub fn build(self) -> MemoryOpaqueCaptureAddressAllocateInfo {
38725         self.inner
38726     }
38727 }
38728 #[repr(C)]
38729 #[derive(Copy, Clone, Debug)]
38730 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>"]
38731 pub struct DeviceMemoryOpaqueCaptureAddressInfo {
38732     pub s_type: StructureType,
38733     pub p_next: *const c_void,
38734     pub memory: DeviceMemory,
38735 }
38736 impl ::std::default::Default for DeviceMemoryOpaqueCaptureAddressInfo {
default() -> DeviceMemoryOpaqueCaptureAddressInfo38737     fn default() -> DeviceMemoryOpaqueCaptureAddressInfo {
38738         DeviceMemoryOpaqueCaptureAddressInfo {
38739             s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
38740             p_next: ::std::ptr::null(),
38741             memory: DeviceMemory::default(),
38742         }
38743     }
38744 }
38745 impl DeviceMemoryOpaqueCaptureAddressInfo {
builder<'a>() -> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a>38746     pub fn builder<'a>() -> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38747         DeviceMemoryOpaqueCaptureAddressInfoBuilder {
38748             inner: DeviceMemoryOpaqueCaptureAddressInfo::default(),
38749             marker: ::std::marker::PhantomData,
38750         }
38751     }
38752 }
38753 #[repr(transparent)]
38754 pub struct DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38755     inner: DeviceMemoryOpaqueCaptureAddressInfo,
38756     marker: ::std::marker::PhantomData<&'a ()>,
38757 }
38758 impl<'a> ::std::ops::Deref for DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
38759     type Target = DeviceMemoryOpaqueCaptureAddressInfo;
deref(&self) -> &Self::Target38760     fn deref(&self) -> &Self::Target {
38761         &self.inner
38762     }
38763 }
38764 impl<'a> ::std::ops::DerefMut for DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38765     fn deref_mut(&mut self) -> &mut Self::Target {
38766         &mut self.inner
38767     }
38768 }
38769 impl<'a> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self38770     pub fn memory(mut self, memory: DeviceMemory) -> Self {
38771         self.inner.memory = memory;
38772         self
38773     }
38774     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38775     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38776     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceMemoryOpaqueCaptureAddressInfo38777     pub fn build(self) -> DeviceMemoryOpaqueCaptureAddressInfo {
38778         self.inner
38779     }
38780 }
38781 #[repr(C)]
38782 #[derive(Copy, Clone, Debug)]
38783 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>"]
38784 pub struct PhysicalDeviceLineRasterizationFeaturesEXT {
38785     pub s_type: StructureType,
38786     pub p_next: *mut c_void,
38787     pub rectangular_lines: Bool32,
38788     pub bresenham_lines: Bool32,
38789     pub smooth_lines: Bool32,
38790     pub stippled_rectangular_lines: Bool32,
38791     pub stippled_bresenham_lines: Bool32,
38792     pub stippled_smooth_lines: Bool32,
38793 }
38794 impl ::std::default::Default for PhysicalDeviceLineRasterizationFeaturesEXT {
default() -> PhysicalDeviceLineRasterizationFeaturesEXT38795     fn default() -> PhysicalDeviceLineRasterizationFeaturesEXT {
38796         PhysicalDeviceLineRasterizationFeaturesEXT {
38797             s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT,
38798             p_next: ::std::ptr::null_mut(),
38799             rectangular_lines: Bool32::default(),
38800             bresenham_lines: Bool32::default(),
38801             smooth_lines: Bool32::default(),
38802             stippled_rectangular_lines: Bool32::default(),
38803             stippled_bresenham_lines: Bool32::default(),
38804             stippled_smooth_lines: Bool32::default(),
38805         }
38806     }
38807 }
38808 impl PhysicalDeviceLineRasterizationFeaturesEXT {
builder<'a>() -> PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a>38809     pub fn builder<'a>() -> PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
38810         PhysicalDeviceLineRasterizationFeaturesEXTBuilder {
38811             inner: PhysicalDeviceLineRasterizationFeaturesEXT::default(),
38812             marker: ::std::marker::PhantomData,
38813         }
38814     }
38815 }
38816 #[repr(transparent)]
38817 pub struct PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
38818     inner: PhysicalDeviceLineRasterizationFeaturesEXT,
38819     marker: ::std::marker::PhantomData<&'a ()>,
38820 }
38821 unsafe impl ExtendsPhysicalDeviceFeatures2
38822     for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'_>
38823 {
38824 }
38825 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceLineRasterizationFeaturesEXT {}
38826 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'_> {}
38827 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLineRasterizationFeaturesEXT {}
38828 impl<'a> ::std::ops::Deref for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
38829     type Target = PhysicalDeviceLineRasterizationFeaturesEXT;
deref(&self) -> &Self::Target38830     fn deref(&self) -> &Self::Target {
38831         &self.inner
38832     }
38833 }
38834 impl<'a> ::std::ops::DerefMut for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38835     fn deref_mut(&mut self) -> &mut Self::Target {
38836         &mut self.inner
38837     }
38838 }
38839 impl<'a> PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
rectangular_lines(mut self, rectangular_lines: bool) -> Self38840     pub fn rectangular_lines(mut self, rectangular_lines: bool) -> Self {
38841         self.inner.rectangular_lines = rectangular_lines.into();
38842         self
38843     }
bresenham_lines(mut self, bresenham_lines: bool) -> Self38844     pub fn bresenham_lines(mut self, bresenham_lines: bool) -> Self {
38845         self.inner.bresenham_lines = bresenham_lines.into();
38846         self
38847     }
smooth_lines(mut self, smooth_lines: bool) -> Self38848     pub fn smooth_lines(mut self, smooth_lines: bool) -> Self {
38849         self.inner.smooth_lines = smooth_lines.into();
38850         self
38851     }
stippled_rectangular_lines(mut self, stippled_rectangular_lines: bool) -> Self38852     pub fn stippled_rectangular_lines(mut self, stippled_rectangular_lines: bool) -> Self {
38853         self.inner.stippled_rectangular_lines = stippled_rectangular_lines.into();
38854         self
38855     }
stippled_bresenham_lines(mut self, stippled_bresenham_lines: bool) -> Self38856     pub fn stippled_bresenham_lines(mut self, stippled_bresenham_lines: bool) -> Self {
38857         self.inner.stippled_bresenham_lines = stippled_bresenham_lines.into();
38858         self
38859     }
stippled_smooth_lines(mut self, stippled_smooth_lines: bool) -> Self38860     pub fn stippled_smooth_lines(mut self, stippled_smooth_lines: bool) -> Self {
38861         self.inner.stippled_smooth_lines = stippled_smooth_lines.into();
38862         self
38863     }
38864     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38865     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38866     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceLineRasterizationFeaturesEXT38867     pub fn build(self) -> PhysicalDeviceLineRasterizationFeaturesEXT {
38868         self.inner
38869     }
38870 }
38871 #[repr(C)]
38872 #[derive(Copy, Clone, Debug)]
38873 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>"]
38874 pub struct PhysicalDeviceLineRasterizationPropertiesEXT {
38875     pub s_type: StructureType,
38876     pub p_next: *mut c_void,
38877     pub line_sub_pixel_precision_bits: u32,
38878 }
38879 impl ::std::default::Default for PhysicalDeviceLineRasterizationPropertiesEXT {
default() -> PhysicalDeviceLineRasterizationPropertiesEXT38880     fn default() -> PhysicalDeviceLineRasterizationPropertiesEXT {
38881         PhysicalDeviceLineRasterizationPropertiesEXT {
38882             s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT,
38883             p_next: ::std::ptr::null_mut(),
38884             line_sub_pixel_precision_bits: u32::default(),
38885         }
38886     }
38887 }
38888 impl PhysicalDeviceLineRasterizationPropertiesEXT {
builder<'a>() -> PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a>38889     pub fn builder<'a>() -> PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
38890         PhysicalDeviceLineRasterizationPropertiesEXTBuilder {
38891             inner: PhysicalDeviceLineRasterizationPropertiesEXT::default(),
38892             marker: ::std::marker::PhantomData,
38893         }
38894     }
38895 }
38896 #[repr(transparent)]
38897 pub struct PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
38898     inner: PhysicalDeviceLineRasterizationPropertiesEXT,
38899     marker: ::std::marker::PhantomData<&'a ()>,
38900 }
38901 unsafe impl ExtendsPhysicalDeviceProperties2
38902     for PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'_>
38903 {
38904 }
38905 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceLineRasterizationPropertiesEXT {}
38906 impl<'a> ::std::ops::Deref for PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
38907     type Target = PhysicalDeviceLineRasterizationPropertiesEXT;
deref(&self) -> &Self::Target38908     fn deref(&self) -> &Self::Target {
38909         &self.inner
38910     }
38911 }
38912 impl<'a> ::std::ops::DerefMut for PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38913     fn deref_mut(&mut self) -> &mut Self::Target {
38914         &mut self.inner
38915     }
38916 }
38917 impl<'a> PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
line_sub_pixel_precision_bits(mut self, line_sub_pixel_precision_bits: u32) -> Self38918     pub fn line_sub_pixel_precision_bits(mut self, line_sub_pixel_precision_bits: u32) -> Self {
38919         self.inner.line_sub_pixel_precision_bits = line_sub_pixel_precision_bits;
38920         self
38921     }
38922     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38923     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38924     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceLineRasterizationPropertiesEXT38925     pub fn build(self) -> PhysicalDeviceLineRasterizationPropertiesEXT {
38926         self.inner
38927     }
38928 }
38929 #[repr(C)]
38930 #[derive(Copy, Clone, Debug)]
38931 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>"]
38932 pub struct PipelineRasterizationLineStateCreateInfoEXT {
38933     pub s_type: StructureType,
38934     pub p_next: *const c_void,
38935     pub line_rasterization_mode: LineRasterizationModeEXT,
38936     pub stippled_line_enable: Bool32,
38937     pub line_stipple_factor: u32,
38938     pub line_stipple_pattern: u16,
38939 }
38940 impl ::std::default::Default for PipelineRasterizationLineStateCreateInfoEXT {
default() -> PipelineRasterizationLineStateCreateInfoEXT38941     fn default() -> PipelineRasterizationLineStateCreateInfoEXT {
38942         PipelineRasterizationLineStateCreateInfoEXT {
38943             s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT,
38944             p_next: ::std::ptr::null(),
38945             line_rasterization_mode: LineRasterizationModeEXT::default(),
38946             stippled_line_enable: Bool32::default(),
38947             line_stipple_factor: u32::default(),
38948             line_stipple_pattern: u16::default(),
38949         }
38950     }
38951 }
38952 impl PipelineRasterizationLineStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationLineStateCreateInfoEXTBuilder<'a>38953     pub fn builder<'a>() -> PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
38954         PipelineRasterizationLineStateCreateInfoEXTBuilder {
38955             inner: PipelineRasterizationLineStateCreateInfoEXT::default(),
38956             marker: ::std::marker::PhantomData,
38957         }
38958     }
38959 }
38960 #[repr(transparent)]
38961 pub struct PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
38962     inner: PipelineRasterizationLineStateCreateInfoEXT,
38963     marker: ::std::marker::PhantomData<&'a ()>,
38964 }
38965 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
38966     for PipelineRasterizationLineStateCreateInfoEXTBuilder<'_>
38967 {
38968 }
38969 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
38970     for PipelineRasterizationLineStateCreateInfoEXT
38971 {
38972 }
38973 impl<'a> ::std::ops::Deref for PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
38974     type Target = PipelineRasterizationLineStateCreateInfoEXT;
deref(&self) -> &Self::Target38975     fn deref(&self) -> &Self::Target {
38976         &self.inner
38977     }
38978 }
38979 impl<'a> ::std::ops::DerefMut for PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38980     fn deref_mut(&mut self) -> &mut Self::Target {
38981         &mut self.inner
38982     }
38983 }
38984 impl<'a> PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
line_rasterization_mode( mut self, line_rasterization_mode: LineRasterizationModeEXT, ) -> Self38985     pub fn line_rasterization_mode(
38986         mut self,
38987         line_rasterization_mode: LineRasterizationModeEXT,
38988     ) -> Self {
38989         self.inner.line_rasterization_mode = line_rasterization_mode;
38990         self
38991     }
stippled_line_enable(mut self, stippled_line_enable: bool) -> Self38992     pub fn stippled_line_enable(mut self, stippled_line_enable: bool) -> Self {
38993         self.inner.stippled_line_enable = stippled_line_enable.into();
38994         self
38995     }
line_stipple_factor(mut self, line_stipple_factor: u32) -> Self38996     pub fn line_stipple_factor(mut self, line_stipple_factor: u32) -> Self {
38997         self.inner.line_stipple_factor = line_stipple_factor;
38998         self
38999     }
line_stipple_pattern(mut self, line_stipple_pattern: u16) -> Self39000     pub fn line_stipple_pattern(mut self, line_stipple_pattern: u16) -> Self {
39001         self.inner.line_stipple_pattern = line_stipple_pattern;
39002         self
39003     }
39004     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39005     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39006     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationLineStateCreateInfoEXT39007     pub fn build(self) -> PipelineRasterizationLineStateCreateInfoEXT {
39008         self.inner
39009     }
39010 }
39011 #[repr(C)]
39012 #[derive(Copy, Clone, Debug)]
39013 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>"]
39014 pub struct PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
39015     pub s_type: StructureType,
39016     pub p_next: *mut c_void,
39017     pub pipeline_creation_cache_control: Bool32,
39018 }
39019 impl ::std::default::Default for PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
default() -> PhysicalDevicePipelineCreationCacheControlFeaturesEXT39020     fn default() -> PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
39021         PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
39022             s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT,
39023             p_next: ::std::ptr::null_mut(),
39024             pipeline_creation_cache_control: Bool32::default(),
39025         }
39026     }
39027 }
39028 impl PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
builder<'a>() -> PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a>39029     pub fn builder<'a>() -> PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
39030         PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder {
39031             inner: PhysicalDevicePipelineCreationCacheControlFeaturesEXT::default(),
39032             marker: ::std::marker::PhantomData,
39033         }
39034     }
39035 }
39036 #[repr(transparent)]
39037 pub struct PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
39038     inner: PhysicalDevicePipelineCreationCacheControlFeaturesEXT,
39039     marker: ::std::marker::PhantomData<&'a ()>,
39040 }
39041 unsafe impl ExtendsPhysicalDeviceFeatures2
39042     for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'_>
39043 {
39044 }
39045 unsafe impl ExtendsPhysicalDeviceFeatures2
39046     for PhysicalDevicePipelineCreationCacheControlFeaturesEXT
39047 {
39048 }
39049 unsafe impl ExtendsDeviceCreateInfo
39050     for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'_>
39051 {
39052 }
39053 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineCreationCacheControlFeaturesEXT {}
39054 impl<'a> ::std::ops::Deref for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
39055     type Target = PhysicalDevicePipelineCreationCacheControlFeaturesEXT;
deref(&self) -> &Self::Target39056     fn deref(&self) -> &Self::Target {
39057         &self.inner
39058     }
39059 }
39060 impl<'a> ::std::ops::DerefMut for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39061     fn deref_mut(&mut self) -> &mut Self::Target {
39062         &mut self.inner
39063     }
39064 }
39065 impl<'a> PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
pipeline_creation_cache_control( mut self, pipeline_creation_cache_control: bool, ) -> Self39066     pub fn pipeline_creation_cache_control(
39067         mut self,
39068         pipeline_creation_cache_control: bool,
39069     ) -> Self {
39070         self.inner.pipeline_creation_cache_control = pipeline_creation_cache_control.into();
39071         self
39072     }
39073     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39074     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39075     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePipelineCreationCacheControlFeaturesEXT39076     pub fn build(self) -> PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
39077         self.inner
39078     }
39079 }
39080 #[repr(C)]
39081 #[derive(Copy, Clone, Debug)]
39082 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan11Features.html>"]
39083 pub struct PhysicalDeviceVulkan11Features {
39084     pub s_type: StructureType,
39085     pub p_next: *mut c_void,
39086     pub storage_buffer16_bit_access: Bool32,
39087     pub uniform_and_storage_buffer16_bit_access: Bool32,
39088     pub storage_push_constant16: Bool32,
39089     pub storage_input_output16: Bool32,
39090     pub multiview: Bool32,
39091     pub multiview_geometry_shader: Bool32,
39092     pub multiview_tessellation_shader: Bool32,
39093     pub variable_pointers_storage_buffer: Bool32,
39094     pub variable_pointers: Bool32,
39095     pub protected_memory: Bool32,
39096     pub sampler_ycbcr_conversion: Bool32,
39097     pub shader_draw_parameters: Bool32,
39098 }
39099 impl ::std::default::Default for PhysicalDeviceVulkan11Features {
default() -> PhysicalDeviceVulkan11Features39100     fn default() -> PhysicalDeviceVulkan11Features {
39101         PhysicalDeviceVulkan11Features {
39102             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
39103             p_next: ::std::ptr::null_mut(),
39104             storage_buffer16_bit_access: Bool32::default(),
39105             uniform_and_storage_buffer16_bit_access: Bool32::default(),
39106             storage_push_constant16: Bool32::default(),
39107             storage_input_output16: Bool32::default(),
39108             multiview: Bool32::default(),
39109             multiview_geometry_shader: Bool32::default(),
39110             multiview_tessellation_shader: Bool32::default(),
39111             variable_pointers_storage_buffer: Bool32::default(),
39112             variable_pointers: Bool32::default(),
39113             protected_memory: Bool32::default(),
39114             sampler_ycbcr_conversion: Bool32::default(),
39115             shader_draw_parameters: Bool32::default(),
39116         }
39117     }
39118 }
39119 impl PhysicalDeviceVulkan11Features {
builder<'a>() -> PhysicalDeviceVulkan11FeaturesBuilder<'a>39120     pub fn builder<'a>() -> PhysicalDeviceVulkan11FeaturesBuilder<'a> {
39121         PhysicalDeviceVulkan11FeaturesBuilder {
39122             inner: PhysicalDeviceVulkan11Features::default(),
39123             marker: ::std::marker::PhantomData,
39124         }
39125     }
39126 }
39127 #[repr(transparent)]
39128 pub struct PhysicalDeviceVulkan11FeaturesBuilder<'a> {
39129     inner: PhysicalDeviceVulkan11Features,
39130     marker: ::std::marker::PhantomData<&'a ()>,
39131 }
39132 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan11FeaturesBuilder<'_> {}
39133 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan11Features {}
39134 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan11FeaturesBuilder<'_> {}
39135 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan11Features {}
39136 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan11FeaturesBuilder<'a> {
39137     type Target = PhysicalDeviceVulkan11Features;
deref(&self) -> &Self::Target39138     fn deref(&self) -> &Self::Target {
39139         &self.inner
39140     }
39141 }
39142 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan11FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39143     fn deref_mut(&mut self) -> &mut Self::Target {
39144         &mut self.inner
39145     }
39146 }
39147 impl<'a> PhysicalDeviceVulkan11FeaturesBuilder<'a> {
storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self39148     pub fn storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self {
39149         self.inner.storage_buffer16_bit_access = storage_buffer16_bit_access.into();
39150         self
39151     }
uniform_and_storage_buffer16_bit_access( mut self, uniform_and_storage_buffer16_bit_access: bool, ) -> Self39152     pub fn uniform_and_storage_buffer16_bit_access(
39153         mut self,
39154         uniform_and_storage_buffer16_bit_access: bool,
39155     ) -> Self {
39156         self.inner.uniform_and_storage_buffer16_bit_access =
39157             uniform_and_storage_buffer16_bit_access.into();
39158         self
39159     }
storage_push_constant16(mut self, storage_push_constant16: bool) -> Self39160     pub fn storage_push_constant16(mut self, storage_push_constant16: bool) -> Self {
39161         self.inner.storage_push_constant16 = storage_push_constant16.into();
39162         self
39163     }
storage_input_output16(mut self, storage_input_output16: bool) -> Self39164     pub fn storage_input_output16(mut self, storage_input_output16: bool) -> Self {
39165         self.inner.storage_input_output16 = storage_input_output16.into();
39166         self
39167     }
multiview(mut self, multiview: bool) -> Self39168     pub fn multiview(mut self, multiview: bool) -> Self {
39169         self.inner.multiview = multiview.into();
39170         self
39171     }
multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self39172     pub fn multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self {
39173         self.inner.multiview_geometry_shader = multiview_geometry_shader.into();
39174         self
39175     }
multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self39176     pub fn multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self {
39177         self.inner.multiview_tessellation_shader = multiview_tessellation_shader.into();
39178         self
39179     }
variable_pointers_storage_buffer( mut self, variable_pointers_storage_buffer: bool, ) -> Self39180     pub fn variable_pointers_storage_buffer(
39181         mut self,
39182         variable_pointers_storage_buffer: bool,
39183     ) -> Self {
39184         self.inner.variable_pointers_storage_buffer = variable_pointers_storage_buffer.into();
39185         self
39186     }
variable_pointers(mut self, variable_pointers: bool) -> Self39187     pub fn variable_pointers(mut self, variable_pointers: bool) -> Self {
39188         self.inner.variable_pointers = variable_pointers.into();
39189         self
39190     }
protected_memory(mut self, protected_memory: bool) -> Self39191     pub fn protected_memory(mut self, protected_memory: bool) -> Self {
39192         self.inner.protected_memory = protected_memory.into();
39193         self
39194     }
sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self39195     pub fn sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self {
39196         self.inner.sampler_ycbcr_conversion = sampler_ycbcr_conversion.into();
39197         self
39198     }
shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self39199     pub fn shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self {
39200         self.inner.shader_draw_parameters = shader_draw_parameters.into();
39201         self
39202     }
39203     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39204     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39205     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan11Features39206     pub fn build(self) -> PhysicalDeviceVulkan11Features {
39207         self.inner
39208     }
39209 }
39210 #[repr(C)]
39211 #[derive(Copy, Clone, Debug)]
39212 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html>"]
39213 pub struct PhysicalDeviceVulkan11Properties {
39214     pub s_type: StructureType,
39215     pub p_next: *mut c_void,
39216     pub device_uuid: [u8; UUID_SIZE],
39217     pub driver_uuid: [u8; UUID_SIZE],
39218     pub device_luid: [u8; LUID_SIZE],
39219     pub device_node_mask: u32,
39220     pub device_luid_valid: Bool32,
39221     pub subgroup_size: u32,
39222     pub subgroup_supported_stages: ShaderStageFlags,
39223     pub subgroup_supported_operations: SubgroupFeatureFlags,
39224     pub subgroup_quad_operations_in_all_stages: Bool32,
39225     pub point_clipping_behavior: PointClippingBehavior,
39226     pub max_multiview_view_count: u32,
39227     pub max_multiview_instance_index: u32,
39228     pub protected_no_fault: Bool32,
39229     pub max_per_set_descriptors: u32,
39230     pub max_memory_allocation_size: DeviceSize,
39231 }
39232 impl ::std::default::Default for PhysicalDeviceVulkan11Properties {
default() -> PhysicalDeviceVulkan11Properties39233     fn default() -> PhysicalDeviceVulkan11Properties {
39234         PhysicalDeviceVulkan11Properties {
39235             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
39236             p_next: ::std::ptr::null_mut(),
39237             device_uuid: unsafe { ::std::mem::zeroed() },
39238             driver_uuid: unsafe { ::std::mem::zeroed() },
39239             device_luid: unsafe { ::std::mem::zeroed() },
39240             device_node_mask: u32::default(),
39241             device_luid_valid: Bool32::default(),
39242             subgroup_size: u32::default(),
39243             subgroup_supported_stages: ShaderStageFlags::default(),
39244             subgroup_supported_operations: SubgroupFeatureFlags::default(),
39245             subgroup_quad_operations_in_all_stages: Bool32::default(),
39246             point_clipping_behavior: PointClippingBehavior::default(),
39247             max_multiview_view_count: u32::default(),
39248             max_multiview_instance_index: u32::default(),
39249             protected_no_fault: Bool32::default(),
39250             max_per_set_descriptors: u32::default(),
39251             max_memory_allocation_size: DeviceSize::default(),
39252         }
39253     }
39254 }
39255 impl PhysicalDeviceVulkan11Properties {
builder<'a>() -> PhysicalDeviceVulkan11PropertiesBuilder<'a>39256     pub fn builder<'a>() -> PhysicalDeviceVulkan11PropertiesBuilder<'a> {
39257         PhysicalDeviceVulkan11PropertiesBuilder {
39258             inner: PhysicalDeviceVulkan11Properties::default(),
39259             marker: ::std::marker::PhantomData,
39260         }
39261     }
39262 }
39263 #[repr(transparent)]
39264 pub struct PhysicalDeviceVulkan11PropertiesBuilder<'a> {
39265     inner: PhysicalDeviceVulkan11Properties,
39266     marker: ::std::marker::PhantomData<&'a ()>,
39267 }
39268 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan11PropertiesBuilder<'_> {}
39269 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan11Properties {}
39270 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan11PropertiesBuilder<'a> {
39271     type Target = PhysicalDeviceVulkan11Properties;
deref(&self) -> &Self::Target39272     fn deref(&self) -> &Self::Target {
39273         &self.inner
39274     }
39275 }
39276 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan11PropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39277     fn deref_mut(&mut self) -> &mut Self::Target {
39278         &mut self.inner
39279     }
39280 }
39281 impl<'a> PhysicalDeviceVulkan11PropertiesBuilder<'a> {
device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self39282     pub fn device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self {
39283         self.inner.device_uuid = device_uuid;
39284         self
39285     }
driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self39286     pub fn driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self {
39287         self.inner.driver_uuid = driver_uuid;
39288         self
39289     }
device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self39290     pub fn device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self {
39291         self.inner.device_luid = device_luid;
39292         self
39293     }
device_node_mask(mut self, device_node_mask: u32) -> Self39294     pub fn device_node_mask(mut self, device_node_mask: u32) -> Self {
39295         self.inner.device_node_mask = device_node_mask;
39296         self
39297     }
device_luid_valid(mut self, device_luid_valid: bool) -> Self39298     pub fn device_luid_valid(mut self, device_luid_valid: bool) -> Self {
39299         self.inner.device_luid_valid = device_luid_valid.into();
39300         self
39301     }
subgroup_size(mut self, subgroup_size: u32) -> Self39302     pub fn subgroup_size(mut self, subgroup_size: u32) -> Self {
39303         self.inner.subgroup_size = subgroup_size;
39304         self
39305     }
subgroup_supported_stages( mut self, subgroup_supported_stages: ShaderStageFlags, ) -> Self39306     pub fn subgroup_supported_stages(
39307         mut self,
39308         subgroup_supported_stages: ShaderStageFlags,
39309     ) -> Self {
39310         self.inner.subgroup_supported_stages = subgroup_supported_stages;
39311         self
39312     }
subgroup_supported_operations( mut self, subgroup_supported_operations: SubgroupFeatureFlags, ) -> Self39313     pub fn subgroup_supported_operations(
39314         mut self,
39315         subgroup_supported_operations: SubgroupFeatureFlags,
39316     ) -> Self {
39317         self.inner.subgroup_supported_operations = subgroup_supported_operations;
39318         self
39319     }
subgroup_quad_operations_in_all_stages( mut self, subgroup_quad_operations_in_all_stages: bool, ) -> Self39320     pub fn subgroup_quad_operations_in_all_stages(
39321         mut self,
39322         subgroup_quad_operations_in_all_stages: bool,
39323     ) -> Self {
39324         self.inner.subgroup_quad_operations_in_all_stages =
39325             subgroup_quad_operations_in_all_stages.into();
39326         self
39327     }
point_clipping_behavior( mut self, point_clipping_behavior: PointClippingBehavior, ) -> Self39328     pub fn point_clipping_behavior(
39329         mut self,
39330         point_clipping_behavior: PointClippingBehavior,
39331     ) -> Self {
39332         self.inner.point_clipping_behavior = point_clipping_behavior;
39333         self
39334     }
max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self39335     pub fn max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self {
39336         self.inner.max_multiview_view_count = max_multiview_view_count;
39337         self
39338     }
max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self39339     pub fn max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self {
39340         self.inner.max_multiview_instance_index = max_multiview_instance_index;
39341         self
39342     }
protected_no_fault(mut self, protected_no_fault: bool) -> Self39343     pub fn protected_no_fault(mut self, protected_no_fault: bool) -> Self {
39344         self.inner.protected_no_fault = protected_no_fault.into();
39345         self
39346     }
max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self39347     pub fn max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self {
39348         self.inner.max_per_set_descriptors = max_per_set_descriptors;
39349         self
39350     }
max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self39351     pub fn max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self {
39352         self.inner.max_memory_allocation_size = max_memory_allocation_size;
39353         self
39354     }
39355     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39356     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39357     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan11Properties39358     pub fn build(self) -> PhysicalDeviceVulkan11Properties {
39359         self.inner
39360     }
39361 }
39362 #[repr(C)]
39363 #[derive(Copy, Clone, Debug)]
39364 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan12Features.html>"]
39365 pub struct PhysicalDeviceVulkan12Features {
39366     pub s_type: StructureType,
39367     pub p_next: *mut c_void,
39368     pub sampler_mirror_clamp_to_edge: Bool32,
39369     pub draw_indirect_count: Bool32,
39370     pub storage_buffer8_bit_access: Bool32,
39371     pub uniform_and_storage_buffer8_bit_access: Bool32,
39372     pub storage_push_constant8: Bool32,
39373     pub shader_buffer_int64_atomics: Bool32,
39374     pub shader_shared_int64_atomics: Bool32,
39375     pub shader_float16: Bool32,
39376     pub shader_int8: Bool32,
39377     pub descriptor_indexing: Bool32,
39378     pub shader_input_attachment_array_dynamic_indexing: Bool32,
39379     pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
39380     pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
39381     pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
39382     pub shader_sampled_image_array_non_uniform_indexing: Bool32,
39383     pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
39384     pub shader_storage_image_array_non_uniform_indexing: Bool32,
39385     pub shader_input_attachment_array_non_uniform_indexing: Bool32,
39386     pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
39387     pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
39388     pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
39389     pub descriptor_binding_sampled_image_update_after_bind: Bool32,
39390     pub descriptor_binding_storage_image_update_after_bind: Bool32,
39391     pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
39392     pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
39393     pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
39394     pub descriptor_binding_update_unused_while_pending: Bool32,
39395     pub descriptor_binding_partially_bound: Bool32,
39396     pub descriptor_binding_variable_descriptor_count: Bool32,
39397     pub runtime_descriptor_array: Bool32,
39398     pub sampler_filter_minmax: Bool32,
39399     pub scalar_block_layout: Bool32,
39400     pub imageless_framebuffer: Bool32,
39401     pub uniform_buffer_standard_layout: Bool32,
39402     pub shader_subgroup_extended_types: Bool32,
39403     pub separate_depth_stencil_layouts: Bool32,
39404     pub host_query_reset: Bool32,
39405     pub timeline_semaphore: Bool32,
39406     pub buffer_device_address: Bool32,
39407     pub buffer_device_address_capture_replay: Bool32,
39408     pub buffer_device_address_multi_device: Bool32,
39409     pub vulkan_memory_model: Bool32,
39410     pub vulkan_memory_model_device_scope: Bool32,
39411     pub vulkan_memory_model_availability_visibility_chains: Bool32,
39412     pub shader_output_viewport_index: Bool32,
39413     pub shader_output_layer: Bool32,
39414     pub subgroup_broadcast_dynamic_id: Bool32,
39415 }
39416 impl ::std::default::Default for PhysicalDeviceVulkan12Features {
default() -> PhysicalDeviceVulkan12Features39417     fn default() -> PhysicalDeviceVulkan12Features {
39418         PhysicalDeviceVulkan12Features {
39419             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
39420             p_next: ::std::ptr::null_mut(),
39421             sampler_mirror_clamp_to_edge: Bool32::default(),
39422             draw_indirect_count: Bool32::default(),
39423             storage_buffer8_bit_access: Bool32::default(),
39424             uniform_and_storage_buffer8_bit_access: Bool32::default(),
39425             storage_push_constant8: Bool32::default(),
39426             shader_buffer_int64_atomics: Bool32::default(),
39427             shader_shared_int64_atomics: Bool32::default(),
39428             shader_float16: Bool32::default(),
39429             shader_int8: Bool32::default(),
39430             descriptor_indexing: Bool32::default(),
39431             shader_input_attachment_array_dynamic_indexing: Bool32::default(),
39432             shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
39433             shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
39434             shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
39435             shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
39436             shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
39437             shader_storage_image_array_non_uniform_indexing: Bool32::default(),
39438             shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
39439             shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
39440             shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
39441             descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
39442             descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
39443             descriptor_binding_storage_image_update_after_bind: Bool32::default(),
39444             descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
39445             descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
39446             descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
39447             descriptor_binding_update_unused_while_pending: Bool32::default(),
39448             descriptor_binding_partially_bound: Bool32::default(),
39449             descriptor_binding_variable_descriptor_count: Bool32::default(),
39450             runtime_descriptor_array: Bool32::default(),
39451             sampler_filter_minmax: Bool32::default(),
39452             scalar_block_layout: Bool32::default(),
39453             imageless_framebuffer: Bool32::default(),
39454             uniform_buffer_standard_layout: Bool32::default(),
39455             shader_subgroup_extended_types: Bool32::default(),
39456             separate_depth_stencil_layouts: Bool32::default(),
39457             host_query_reset: Bool32::default(),
39458             timeline_semaphore: Bool32::default(),
39459             buffer_device_address: Bool32::default(),
39460             buffer_device_address_capture_replay: Bool32::default(),
39461             buffer_device_address_multi_device: Bool32::default(),
39462             vulkan_memory_model: Bool32::default(),
39463             vulkan_memory_model_device_scope: Bool32::default(),
39464             vulkan_memory_model_availability_visibility_chains: Bool32::default(),
39465             shader_output_viewport_index: Bool32::default(),
39466             shader_output_layer: Bool32::default(),
39467             subgroup_broadcast_dynamic_id: Bool32::default(),
39468         }
39469     }
39470 }
39471 impl PhysicalDeviceVulkan12Features {
builder<'a>() -> PhysicalDeviceVulkan12FeaturesBuilder<'a>39472     pub fn builder<'a>() -> PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39473         PhysicalDeviceVulkan12FeaturesBuilder {
39474             inner: PhysicalDeviceVulkan12Features::default(),
39475             marker: ::std::marker::PhantomData,
39476         }
39477     }
39478 }
39479 #[repr(transparent)]
39480 pub struct PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39481     inner: PhysicalDeviceVulkan12Features,
39482     marker: ::std::marker::PhantomData<&'a ()>,
39483 }
39484 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan12FeaturesBuilder<'_> {}
39485 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan12Features {}
39486 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan12FeaturesBuilder<'_> {}
39487 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan12Features {}
39488 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan12FeaturesBuilder<'a> {
39489     type Target = PhysicalDeviceVulkan12Features;
deref(&self) -> &Self::Target39490     fn deref(&self) -> &Self::Target {
39491         &self.inner
39492     }
39493 }
39494 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan12FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39495     fn deref_mut(&mut self) -> &mut Self::Target {
39496         &mut self.inner
39497     }
39498 }
39499 impl<'a> PhysicalDeviceVulkan12FeaturesBuilder<'a> {
sampler_mirror_clamp_to_edge(mut self, sampler_mirror_clamp_to_edge: bool) -> Self39500     pub fn sampler_mirror_clamp_to_edge(mut self, sampler_mirror_clamp_to_edge: bool) -> Self {
39501         self.inner.sampler_mirror_clamp_to_edge = sampler_mirror_clamp_to_edge.into();
39502         self
39503     }
draw_indirect_count(mut self, draw_indirect_count: bool) -> Self39504     pub fn draw_indirect_count(mut self, draw_indirect_count: bool) -> Self {
39505         self.inner.draw_indirect_count = draw_indirect_count.into();
39506         self
39507     }
storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self39508     pub fn storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self {
39509         self.inner.storage_buffer8_bit_access = storage_buffer8_bit_access.into();
39510         self
39511     }
uniform_and_storage_buffer8_bit_access( mut self, uniform_and_storage_buffer8_bit_access: bool, ) -> Self39512     pub fn uniform_and_storage_buffer8_bit_access(
39513         mut self,
39514         uniform_and_storage_buffer8_bit_access: bool,
39515     ) -> Self {
39516         self.inner.uniform_and_storage_buffer8_bit_access =
39517             uniform_and_storage_buffer8_bit_access.into();
39518         self
39519     }
storage_push_constant8(mut self, storage_push_constant8: bool) -> Self39520     pub fn storage_push_constant8(mut self, storage_push_constant8: bool) -> Self {
39521         self.inner.storage_push_constant8 = storage_push_constant8.into();
39522         self
39523     }
shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self39524     pub fn shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self {
39525         self.inner.shader_buffer_int64_atomics = shader_buffer_int64_atomics.into();
39526         self
39527     }
shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self39528     pub fn shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self {
39529         self.inner.shader_shared_int64_atomics = shader_shared_int64_atomics.into();
39530         self
39531     }
shader_float16(mut self, shader_float16: bool) -> Self39532     pub fn shader_float16(mut self, shader_float16: bool) -> Self {
39533         self.inner.shader_float16 = shader_float16.into();
39534         self
39535     }
shader_int8(mut self, shader_int8: bool) -> Self39536     pub fn shader_int8(mut self, shader_int8: bool) -> Self {
39537         self.inner.shader_int8 = shader_int8.into();
39538         self
39539     }
descriptor_indexing(mut self, descriptor_indexing: bool) -> Self39540     pub fn descriptor_indexing(mut self, descriptor_indexing: bool) -> Self {
39541         self.inner.descriptor_indexing = descriptor_indexing.into();
39542         self
39543     }
shader_input_attachment_array_dynamic_indexing( mut self, shader_input_attachment_array_dynamic_indexing: bool, ) -> Self39544     pub fn shader_input_attachment_array_dynamic_indexing(
39545         mut self,
39546         shader_input_attachment_array_dynamic_indexing: bool,
39547     ) -> Self {
39548         self.inner.shader_input_attachment_array_dynamic_indexing =
39549             shader_input_attachment_array_dynamic_indexing.into();
39550         self
39551     }
shader_uniform_texel_buffer_array_dynamic_indexing( mut self, shader_uniform_texel_buffer_array_dynamic_indexing: bool, ) -> Self39552     pub fn shader_uniform_texel_buffer_array_dynamic_indexing(
39553         mut self,
39554         shader_uniform_texel_buffer_array_dynamic_indexing: bool,
39555     ) -> Self {
39556         self.inner
39557             .shader_uniform_texel_buffer_array_dynamic_indexing =
39558             shader_uniform_texel_buffer_array_dynamic_indexing.into();
39559         self
39560     }
shader_storage_texel_buffer_array_dynamic_indexing( mut self, shader_storage_texel_buffer_array_dynamic_indexing: bool, ) -> Self39561     pub fn shader_storage_texel_buffer_array_dynamic_indexing(
39562         mut self,
39563         shader_storage_texel_buffer_array_dynamic_indexing: bool,
39564     ) -> Self {
39565         self.inner
39566             .shader_storage_texel_buffer_array_dynamic_indexing =
39567             shader_storage_texel_buffer_array_dynamic_indexing.into();
39568         self
39569     }
shader_uniform_buffer_array_non_uniform_indexing( mut self, shader_uniform_buffer_array_non_uniform_indexing: bool, ) -> Self39570     pub fn shader_uniform_buffer_array_non_uniform_indexing(
39571         mut self,
39572         shader_uniform_buffer_array_non_uniform_indexing: bool,
39573     ) -> Self {
39574         self.inner.shader_uniform_buffer_array_non_uniform_indexing =
39575             shader_uniform_buffer_array_non_uniform_indexing.into();
39576         self
39577     }
shader_sampled_image_array_non_uniform_indexing( mut self, shader_sampled_image_array_non_uniform_indexing: bool, ) -> Self39578     pub fn shader_sampled_image_array_non_uniform_indexing(
39579         mut self,
39580         shader_sampled_image_array_non_uniform_indexing: bool,
39581     ) -> Self {
39582         self.inner.shader_sampled_image_array_non_uniform_indexing =
39583             shader_sampled_image_array_non_uniform_indexing.into();
39584         self
39585     }
shader_storage_buffer_array_non_uniform_indexing( mut self, shader_storage_buffer_array_non_uniform_indexing: bool, ) -> Self39586     pub fn shader_storage_buffer_array_non_uniform_indexing(
39587         mut self,
39588         shader_storage_buffer_array_non_uniform_indexing: bool,
39589     ) -> Self {
39590         self.inner.shader_storage_buffer_array_non_uniform_indexing =
39591             shader_storage_buffer_array_non_uniform_indexing.into();
39592         self
39593     }
shader_storage_image_array_non_uniform_indexing( mut self, shader_storage_image_array_non_uniform_indexing: bool, ) -> Self39594     pub fn shader_storage_image_array_non_uniform_indexing(
39595         mut self,
39596         shader_storage_image_array_non_uniform_indexing: bool,
39597     ) -> Self {
39598         self.inner.shader_storage_image_array_non_uniform_indexing =
39599             shader_storage_image_array_non_uniform_indexing.into();
39600         self
39601     }
shader_input_attachment_array_non_uniform_indexing( mut self, shader_input_attachment_array_non_uniform_indexing: bool, ) -> Self39602     pub fn shader_input_attachment_array_non_uniform_indexing(
39603         mut self,
39604         shader_input_attachment_array_non_uniform_indexing: bool,
39605     ) -> Self {
39606         self.inner
39607             .shader_input_attachment_array_non_uniform_indexing =
39608             shader_input_attachment_array_non_uniform_indexing.into();
39609         self
39610     }
shader_uniform_texel_buffer_array_non_uniform_indexing( mut self, shader_uniform_texel_buffer_array_non_uniform_indexing: bool, ) -> Self39611     pub fn shader_uniform_texel_buffer_array_non_uniform_indexing(
39612         mut self,
39613         shader_uniform_texel_buffer_array_non_uniform_indexing: bool,
39614     ) -> Self {
39615         self.inner
39616             .shader_uniform_texel_buffer_array_non_uniform_indexing =
39617             shader_uniform_texel_buffer_array_non_uniform_indexing.into();
39618         self
39619     }
shader_storage_texel_buffer_array_non_uniform_indexing( mut self, shader_storage_texel_buffer_array_non_uniform_indexing: bool, ) -> Self39620     pub fn shader_storage_texel_buffer_array_non_uniform_indexing(
39621         mut self,
39622         shader_storage_texel_buffer_array_non_uniform_indexing: bool,
39623     ) -> Self {
39624         self.inner
39625             .shader_storage_texel_buffer_array_non_uniform_indexing =
39626             shader_storage_texel_buffer_array_non_uniform_indexing.into();
39627         self
39628     }
descriptor_binding_uniform_buffer_update_after_bind( mut self, descriptor_binding_uniform_buffer_update_after_bind: bool, ) -> Self39629     pub fn descriptor_binding_uniform_buffer_update_after_bind(
39630         mut self,
39631         descriptor_binding_uniform_buffer_update_after_bind: bool,
39632     ) -> Self {
39633         self.inner
39634             .descriptor_binding_uniform_buffer_update_after_bind =
39635             descriptor_binding_uniform_buffer_update_after_bind.into();
39636         self
39637     }
descriptor_binding_sampled_image_update_after_bind( mut self, descriptor_binding_sampled_image_update_after_bind: bool, ) -> Self39638     pub fn descriptor_binding_sampled_image_update_after_bind(
39639         mut self,
39640         descriptor_binding_sampled_image_update_after_bind: bool,
39641     ) -> Self {
39642         self.inner
39643             .descriptor_binding_sampled_image_update_after_bind =
39644             descriptor_binding_sampled_image_update_after_bind.into();
39645         self
39646     }
descriptor_binding_storage_image_update_after_bind( mut self, descriptor_binding_storage_image_update_after_bind: bool, ) -> Self39647     pub fn descriptor_binding_storage_image_update_after_bind(
39648         mut self,
39649         descriptor_binding_storage_image_update_after_bind: bool,
39650     ) -> Self {
39651         self.inner
39652             .descriptor_binding_storage_image_update_after_bind =
39653             descriptor_binding_storage_image_update_after_bind.into();
39654         self
39655     }
descriptor_binding_storage_buffer_update_after_bind( mut self, descriptor_binding_storage_buffer_update_after_bind: bool, ) -> Self39656     pub fn descriptor_binding_storage_buffer_update_after_bind(
39657         mut self,
39658         descriptor_binding_storage_buffer_update_after_bind: bool,
39659     ) -> Self {
39660         self.inner
39661             .descriptor_binding_storage_buffer_update_after_bind =
39662             descriptor_binding_storage_buffer_update_after_bind.into();
39663         self
39664     }
descriptor_binding_uniform_texel_buffer_update_after_bind( mut self, descriptor_binding_uniform_texel_buffer_update_after_bind: bool, ) -> Self39665     pub fn descriptor_binding_uniform_texel_buffer_update_after_bind(
39666         mut self,
39667         descriptor_binding_uniform_texel_buffer_update_after_bind: bool,
39668     ) -> Self {
39669         self.inner
39670             .descriptor_binding_uniform_texel_buffer_update_after_bind =
39671             descriptor_binding_uniform_texel_buffer_update_after_bind.into();
39672         self
39673     }
descriptor_binding_storage_texel_buffer_update_after_bind( mut self, descriptor_binding_storage_texel_buffer_update_after_bind: bool, ) -> Self39674     pub fn descriptor_binding_storage_texel_buffer_update_after_bind(
39675         mut self,
39676         descriptor_binding_storage_texel_buffer_update_after_bind: bool,
39677     ) -> Self {
39678         self.inner
39679             .descriptor_binding_storage_texel_buffer_update_after_bind =
39680             descriptor_binding_storage_texel_buffer_update_after_bind.into();
39681         self
39682     }
descriptor_binding_update_unused_while_pending( mut self, descriptor_binding_update_unused_while_pending: bool, ) -> Self39683     pub fn descriptor_binding_update_unused_while_pending(
39684         mut self,
39685         descriptor_binding_update_unused_while_pending: bool,
39686     ) -> Self {
39687         self.inner.descriptor_binding_update_unused_while_pending =
39688             descriptor_binding_update_unused_while_pending.into();
39689         self
39690     }
descriptor_binding_partially_bound( mut self, descriptor_binding_partially_bound: bool, ) -> Self39691     pub fn descriptor_binding_partially_bound(
39692         mut self,
39693         descriptor_binding_partially_bound: bool,
39694     ) -> Self {
39695         self.inner.descriptor_binding_partially_bound = descriptor_binding_partially_bound.into();
39696         self
39697     }
descriptor_binding_variable_descriptor_count( mut self, descriptor_binding_variable_descriptor_count: bool, ) -> Self39698     pub fn descriptor_binding_variable_descriptor_count(
39699         mut self,
39700         descriptor_binding_variable_descriptor_count: bool,
39701     ) -> Self {
39702         self.inner.descriptor_binding_variable_descriptor_count =
39703             descriptor_binding_variable_descriptor_count.into();
39704         self
39705     }
runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self39706     pub fn runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self {
39707         self.inner.runtime_descriptor_array = runtime_descriptor_array.into();
39708         self
39709     }
sampler_filter_minmax(mut self, sampler_filter_minmax: bool) -> Self39710     pub fn sampler_filter_minmax(mut self, sampler_filter_minmax: bool) -> Self {
39711         self.inner.sampler_filter_minmax = sampler_filter_minmax.into();
39712         self
39713     }
scalar_block_layout(mut self, scalar_block_layout: bool) -> Self39714     pub fn scalar_block_layout(mut self, scalar_block_layout: bool) -> Self {
39715         self.inner.scalar_block_layout = scalar_block_layout.into();
39716         self
39717     }
imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self39718     pub fn imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self {
39719         self.inner.imageless_framebuffer = imageless_framebuffer.into();
39720         self
39721     }
uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self39722     pub fn uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self {
39723         self.inner.uniform_buffer_standard_layout = uniform_buffer_standard_layout.into();
39724         self
39725     }
shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self39726     pub fn shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self {
39727         self.inner.shader_subgroup_extended_types = shader_subgroup_extended_types.into();
39728         self
39729     }
separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self39730     pub fn separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self {
39731         self.inner.separate_depth_stencil_layouts = separate_depth_stencil_layouts.into();
39732         self
39733     }
host_query_reset(mut self, host_query_reset: bool) -> Self39734     pub fn host_query_reset(mut self, host_query_reset: bool) -> Self {
39735         self.inner.host_query_reset = host_query_reset.into();
39736         self
39737     }
timeline_semaphore(mut self, timeline_semaphore: bool) -> Self39738     pub fn timeline_semaphore(mut self, timeline_semaphore: bool) -> Self {
39739         self.inner.timeline_semaphore = timeline_semaphore.into();
39740         self
39741     }
buffer_device_address(mut self, buffer_device_address: bool) -> Self39742     pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self {
39743         self.inner.buffer_device_address = buffer_device_address.into();
39744         self
39745     }
buffer_device_address_capture_replay( mut self, buffer_device_address_capture_replay: bool, ) -> Self39746     pub fn buffer_device_address_capture_replay(
39747         mut self,
39748         buffer_device_address_capture_replay: bool,
39749     ) -> Self {
39750         self.inner.buffer_device_address_capture_replay =
39751             buffer_device_address_capture_replay.into();
39752         self
39753     }
buffer_device_address_multi_device( mut self, buffer_device_address_multi_device: bool, ) -> Self39754     pub fn buffer_device_address_multi_device(
39755         mut self,
39756         buffer_device_address_multi_device: bool,
39757     ) -> Self {
39758         self.inner.buffer_device_address_multi_device = buffer_device_address_multi_device.into();
39759         self
39760     }
vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self39761     pub fn vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self {
39762         self.inner.vulkan_memory_model = vulkan_memory_model.into();
39763         self
39764     }
vulkan_memory_model_device_scope( mut self, vulkan_memory_model_device_scope: bool, ) -> Self39765     pub fn vulkan_memory_model_device_scope(
39766         mut self,
39767         vulkan_memory_model_device_scope: bool,
39768     ) -> Self {
39769         self.inner.vulkan_memory_model_device_scope = vulkan_memory_model_device_scope.into();
39770         self
39771     }
vulkan_memory_model_availability_visibility_chains( mut self, vulkan_memory_model_availability_visibility_chains: bool, ) -> Self39772     pub fn vulkan_memory_model_availability_visibility_chains(
39773         mut self,
39774         vulkan_memory_model_availability_visibility_chains: bool,
39775     ) -> Self {
39776         self.inner
39777             .vulkan_memory_model_availability_visibility_chains =
39778             vulkan_memory_model_availability_visibility_chains.into();
39779         self
39780     }
shader_output_viewport_index(mut self, shader_output_viewport_index: bool) -> Self39781     pub fn shader_output_viewport_index(mut self, shader_output_viewport_index: bool) -> Self {
39782         self.inner.shader_output_viewport_index = shader_output_viewport_index.into();
39783         self
39784     }
shader_output_layer(mut self, shader_output_layer: bool) -> Self39785     pub fn shader_output_layer(mut self, shader_output_layer: bool) -> Self {
39786         self.inner.shader_output_layer = shader_output_layer.into();
39787         self
39788     }
subgroup_broadcast_dynamic_id(mut self, subgroup_broadcast_dynamic_id: bool) -> Self39789     pub fn subgroup_broadcast_dynamic_id(mut self, subgroup_broadcast_dynamic_id: bool) -> Self {
39790         self.inner.subgroup_broadcast_dynamic_id = subgroup_broadcast_dynamic_id.into();
39791         self
39792     }
39793     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39794     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39795     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan12Features39796     pub fn build(self) -> PhysicalDeviceVulkan12Features {
39797         self.inner
39798     }
39799 }
39800 #[repr(C)]
39801 #[derive(Copy, Clone)]
39802 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html>"]
39803 pub struct PhysicalDeviceVulkan12Properties {
39804     pub s_type: StructureType,
39805     pub p_next: *mut c_void,
39806     pub driver_id: DriverId,
39807     pub driver_name: [c_char; MAX_DRIVER_NAME_SIZE],
39808     pub driver_info: [c_char; MAX_DRIVER_INFO_SIZE],
39809     pub conformance_version: ConformanceVersion,
39810     pub denorm_behavior_independence: ShaderFloatControlsIndependence,
39811     pub rounding_mode_independence: ShaderFloatControlsIndependence,
39812     pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
39813     pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
39814     pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
39815     pub shader_denorm_preserve_float16: Bool32,
39816     pub shader_denorm_preserve_float32: Bool32,
39817     pub shader_denorm_preserve_float64: Bool32,
39818     pub shader_denorm_flush_to_zero_float16: Bool32,
39819     pub shader_denorm_flush_to_zero_float32: Bool32,
39820     pub shader_denorm_flush_to_zero_float64: Bool32,
39821     pub shader_rounding_mode_rte_float16: Bool32,
39822     pub shader_rounding_mode_rte_float32: Bool32,
39823     pub shader_rounding_mode_rte_float64: Bool32,
39824     pub shader_rounding_mode_rtz_float16: Bool32,
39825     pub shader_rounding_mode_rtz_float32: Bool32,
39826     pub shader_rounding_mode_rtz_float64: Bool32,
39827     pub max_update_after_bind_descriptors_in_all_pools: u32,
39828     pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
39829     pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
39830     pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
39831     pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
39832     pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
39833     pub robust_buffer_access_update_after_bind: Bool32,
39834     pub quad_divergent_implicit_lod: Bool32,
39835     pub max_per_stage_descriptor_update_after_bind_samplers: u32,
39836     pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
39837     pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
39838     pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
39839     pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
39840     pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
39841     pub max_per_stage_update_after_bind_resources: u32,
39842     pub max_descriptor_set_update_after_bind_samplers: u32,
39843     pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
39844     pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
39845     pub max_descriptor_set_update_after_bind_storage_buffers: u32,
39846     pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
39847     pub max_descriptor_set_update_after_bind_sampled_images: u32,
39848     pub max_descriptor_set_update_after_bind_storage_images: u32,
39849     pub max_descriptor_set_update_after_bind_input_attachments: u32,
39850     pub supported_depth_resolve_modes: ResolveModeFlags,
39851     pub supported_stencil_resolve_modes: ResolveModeFlags,
39852     pub independent_resolve_none: Bool32,
39853     pub independent_resolve: Bool32,
39854     pub filter_minmax_single_component_formats: Bool32,
39855     pub filter_minmax_image_component_mapping: Bool32,
39856     pub max_timeline_semaphore_value_difference: u64,
39857     pub framebuffer_integer_color_sample_counts: SampleCountFlags,
39858 }
39859 impl fmt::Debug for PhysicalDeviceVulkan12Properties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result39860     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
39861         fmt.debug_struct("PhysicalDeviceVulkan12Properties")
39862             .field("s_type", &self.s_type)
39863             .field("p_next", &self.p_next)
39864             .field("driver_id", &self.driver_id)
39865             .field("driver_name", &unsafe {
39866                 ::std::ffi::CStr::from_ptr(self.driver_name.as_ptr() as *const c_char)
39867             })
39868             .field("driver_info", &unsafe {
39869                 ::std::ffi::CStr::from_ptr(self.driver_info.as_ptr() as *const c_char)
39870             })
39871             .field("conformance_version", &self.conformance_version)
39872             .field(
39873                 "denorm_behavior_independence",
39874                 &self.denorm_behavior_independence,
39875             )
39876             .field(
39877                 "rounding_mode_independence",
39878                 &self.rounding_mode_independence,
39879             )
39880             .field(
39881                 "shader_signed_zero_inf_nan_preserve_float16",
39882                 &self.shader_signed_zero_inf_nan_preserve_float16,
39883             )
39884             .field(
39885                 "shader_signed_zero_inf_nan_preserve_float32",
39886                 &self.shader_signed_zero_inf_nan_preserve_float32,
39887             )
39888             .field(
39889                 "shader_signed_zero_inf_nan_preserve_float64",
39890                 &self.shader_signed_zero_inf_nan_preserve_float64,
39891             )
39892             .field(
39893                 "shader_denorm_preserve_float16",
39894                 &self.shader_denorm_preserve_float16,
39895             )
39896             .field(
39897                 "shader_denorm_preserve_float32",
39898                 &self.shader_denorm_preserve_float32,
39899             )
39900             .field(
39901                 "shader_denorm_preserve_float64",
39902                 &self.shader_denorm_preserve_float64,
39903             )
39904             .field(
39905                 "shader_denorm_flush_to_zero_float16",
39906                 &self.shader_denorm_flush_to_zero_float16,
39907             )
39908             .field(
39909                 "shader_denorm_flush_to_zero_float32",
39910                 &self.shader_denorm_flush_to_zero_float32,
39911             )
39912             .field(
39913                 "shader_denorm_flush_to_zero_float64",
39914                 &self.shader_denorm_flush_to_zero_float64,
39915             )
39916             .field(
39917                 "shader_rounding_mode_rte_float16",
39918                 &self.shader_rounding_mode_rte_float16,
39919             )
39920             .field(
39921                 "shader_rounding_mode_rte_float32",
39922                 &self.shader_rounding_mode_rte_float32,
39923             )
39924             .field(
39925                 "shader_rounding_mode_rte_float64",
39926                 &self.shader_rounding_mode_rte_float64,
39927             )
39928             .field(
39929                 "shader_rounding_mode_rtz_float16",
39930                 &self.shader_rounding_mode_rtz_float16,
39931             )
39932             .field(
39933                 "shader_rounding_mode_rtz_float32",
39934                 &self.shader_rounding_mode_rtz_float32,
39935             )
39936             .field(
39937                 "shader_rounding_mode_rtz_float64",
39938                 &self.shader_rounding_mode_rtz_float64,
39939             )
39940             .field(
39941                 "max_update_after_bind_descriptors_in_all_pools",
39942                 &self.max_update_after_bind_descriptors_in_all_pools,
39943             )
39944             .field(
39945                 "shader_uniform_buffer_array_non_uniform_indexing_native",
39946                 &self.shader_uniform_buffer_array_non_uniform_indexing_native,
39947             )
39948             .field(
39949                 "shader_sampled_image_array_non_uniform_indexing_native",
39950                 &self.shader_sampled_image_array_non_uniform_indexing_native,
39951             )
39952             .field(
39953                 "shader_storage_buffer_array_non_uniform_indexing_native",
39954                 &self.shader_storage_buffer_array_non_uniform_indexing_native,
39955             )
39956             .field(
39957                 "shader_storage_image_array_non_uniform_indexing_native",
39958                 &self.shader_storage_image_array_non_uniform_indexing_native,
39959             )
39960             .field(
39961                 "shader_input_attachment_array_non_uniform_indexing_native",
39962                 &self.shader_input_attachment_array_non_uniform_indexing_native,
39963             )
39964             .field(
39965                 "robust_buffer_access_update_after_bind",
39966                 &self.robust_buffer_access_update_after_bind,
39967             )
39968             .field(
39969                 "quad_divergent_implicit_lod",
39970                 &self.quad_divergent_implicit_lod,
39971             )
39972             .field(
39973                 "max_per_stage_descriptor_update_after_bind_samplers",
39974                 &self.max_per_stage_descriptor_update_after_bind_samplers,
39975             )
39976             .field(
39977                 "max_per_stage_descriptor_update_after_bind_uniform_buffers",
39978                 &self.max_per_stage_descriptor_update_after_bind_uniform_buffers,
39979             )
39980             .field(
39981                 "max_per_stage_descriptor_update_after_bind_storage_buffers",
39982                 &self.max_per_stage_descriptor_update_after_bind_storage_buffers,
39983             )
39984             .field(
39985                 "max_per_stage_descriptor_update_after_bind_sampled_images",
39986                 &self.max_per_stage_descriptor_update_after_bind_sampled_images,
39987             )
39988             .field(
39989                 "max_per_stage_descriptor_update_after_bind_storage_images",
39990                 &self.max_per_stage_descriptor_update_after_bind_storage_images,
39991             )
39992             .field(
39993                 "max_per_stage_descriptor_update_after_bind_input_attachments",
39994                 &self.max_per_stage_descriptor_update_after_bind_input_attachments,
39995             )
39996             .field(
39997                 "max_per_stage_update_after_bind_resources",
39998                 &self.max_per_stage_update_after_bind_resources,
39999             )
40000             .field(
40001                 "max_descriptor_set_update_after_bind_samplers",
40002                 &self.max_descriptor_set_update_after_bind_samplers,
40003             )
40004             .field(
40005                 "max_descriptor_set_update_after_bind_uniform_buffers",
40006                 &self.max_descriptor_set_update_after_bind_uniform_buffers,
40007             )
40008             .field(
40009                 "max_descriptor_set_update_after_bind_uniform_buffers_dynamic",
40010                 &self.max_descriptor_set_update_after_bind_uniform_buffers_dynamic,
40011             )
40012             .field(
40013                 "max_descriptor_set_update_after_bind_storage_buffers",
40014                 &self.max_descriptor_set_update_after_bind_storage_buffers,
40015             )
40016             .field(
40017                 "max_descriptor_set_update_after_bind_storage_buffers_dynamic",
40018                 &self.max_descriptor_set_update_after_bind_storage_buffers_dynamic,
40019             )
40020             .field(
40021                 "max_descriptor_set_update_after_bind_sampled_images",
40022                 &self.max_descriptor_set_update_after_bind_sampled_images,
40023             )
40024             .field(
40025                 "max_descriptor_set_update_after_bind_storage_images",
40026                 &self.max_descriptor_set_update_after_bind_storage_images,
40027             )
40028             .field(
40029                 "max_descriptor_set_update_after_bind_input_attachments",
40030                 &self.max_descriptor_set_update_after_bind_input_attachments,
40031             )
40032             .field(
40033                 "supported_depth_resolve_modes",
40034                 &self.supported_depth_resolve_modes,
40035             )
40036             .field(
40037                 "supported_stencil_resolve_modes",
40038                 &self.supported_stencil_resolve_modes,
40039             )
40040             .field("independent_resolve_none", &self.independent_resolve_none)
40041             .field("independent_resolve", &self.independent_resolve)
40042             .field(
40043                 "filter_minmax_single_component_formats",
40044                 &self.filter_minmax_single_component_formats,
40045             )
40046             .field(
40047                 "filter_minmax_image_component_mapping",
40048                 &self.filter_minmax_image_component_mapping,
40049             )
40050             .field(
40051                 "max_timeline_semaphore_value_difference",
40052                 &self.max_timeline_semaphore_value_difference,
40053             )
40054             .field(
40055                 "framebuffer_integer_color_sample_counts",
40056                 &self.framebuffer_integer_color_sample_counts,
40057             )
40058             .finish()
40059     }
40060 }
40061 impl ::std::default::Default for PhysicalDeviceVulkan12Properties {
default() -> PhysicalDeviceVulkan12Properties40062     fn default() -> PhysicalDeviceVulkan12Properties {
40063         PhysicalDeviceVulkan12Properties {
40064             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
40065             p_next: ::std::ptr::null_mut(),
40066             driver_id: DriverId::default(),
40067             driver_name: unsafe { ::std::mem::zeroed() },
40068             driver_info: unsafe { ::std::mem::zeroed() },
40069             conformance_version: ConformanceVersion::default(),
40070             denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
40071             rounding_mode_independence: ShaderFloatControlsIndependence::default(),
40072             shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
40073             shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
40074             shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
40075             shader_denorm_preserve_float16: Bool32::default(),
40076             shader_denorm_preserve_float32: Bool32::default(),
40077             shader_denorm_preserve_float64: Bool32::default(),
40078             shader_denorm_flush_to_zero_float16: Bool32::default(),
40079             shader_denorm_flush_to_zero_float32: Bool32::default(),
40080             shader_denorm_flush_to_zero_float64: Bool32::default(),
40081             shader_rounding_mode_rte_float16: Bool32::default(),
40082             shader_rounding_mode_rte_float32: Bool32::default(),
40083             shader_rounding_mode_rte_float64: Bool32::default(),
40084             shader_rounding_mode_rtz_float16: Bool32::default(),
40085             shader_rounding_mode_rtz_float32: Bool32::default(),
40086             shader_rounding_mode_rtz_float64: Bool32::default(),
40087             max_update_after_bind_descriptors_in_all_pools: u32::default(),
40088             shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
40089             shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
40090             shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
40091             shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
40092             shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
40093             robust_buffer_access_update_after_bind: Bool32::default(),
40094             quad_divergent_implicit_lod: Bool32::default(),
40095             max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
40096             max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
40097             max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
40098             max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
40099             max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
40100             max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
40101             max_per_stage_update_after_bind_resources: u32::default(),
40102             max_descriptor_set_update_after_bind_samplers: u32::default(),
40103             max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
40104             max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
40105             max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
40106             max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
40107             max_descriptor_set_update_after_bind_sampled_images: u32::default(),
40108             max_descriptor_set_update_after_bind_storage_images: u32::default(),
40109             max_descriptor_set_update_after_bind_input_attachments: u32::default(),
40110             supported_depth_resolve_modes: ResolveModeFlags::default(),
40111             supported_stencil_resolve_modes: ResolveModeFlags::default(),
40112             independent_resolve_none: Bool32::default(),
40113             independent_resolve: Bool32::default(),
40114             filter_minmax_single_component_formats: Bool32::default(),
40115             filter_minmax_image_component_mapping: Bool32::default(),
40116             max_timeline_semaphore_value_difference: u64::default(),
40117             framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
40118         }
40119     }
40120 }
40121 impl PhysicalDeviceVulkan12Properties {
builder<'a>() -> PhysicalDeviceVulkan12PropertiesBuilder<'a>40122     pub fn builder<'a>() -> PhysicalDeviceVulkan12PropertiesBuilder<'a> {
40123         PhysicalDeviceVulkan12PropertiesBuilder {
40124             inner: PhysicalDeviceVulkan12Properties::default(),
40125             marker: ::std::marker::PhantomData,
40126         }
40127     }
40128 }
40129 #[repr(transparent)]
40130 pub struct PhysicalDeviceVulkan12PropertiesBuilder<'a> {
40131     inner: PhysicalDeviceVulkan12Properties,
40132     marker: ::std::marker::PhantomData<&'a ()>,
40133 }
40134 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan12PropertiesBuilder<'_> {}
40135 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan12Properties {}
40136 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan12PropertiesBuilder<'a> {
40137     type Target = PhysicalDeviceVulkan12Properties;
deref(&self) -> &Self::Target40138     fn deref(&self) -> &Self::Target {
40139         &self.inner
40140     }
40141 }
40142 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan12PropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40143     fn deref_mut(&mut self) -> &mut Self::Target {
40144         &mut self.inner
40145     }
40146 }
40147 impl<'a> PhysicalDeviceVulkan12PropertiesBuilder<'a> {
driver_id(mut self, driver_id: DriverId) -> Self40148     pub fn driver_id(mut self, driver_id: DriverId) -> Self {
40149         self.inner.driver_id = driver_id;
40150         self
40151     }
driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self40152     pub fn driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self {
40153         self.inner.driver_name = driver_name;
40154         self
40155     }
driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self40156     pub fn driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self {
40157         self.inner.driver_info = driver_info;
40158         self
40159     }
conformance_version(mut self, conformance_version: ConformanceVersion) -> Self40160     pub fn conformance_version(mut self, conformance_version: ConformanceVersion) -> Self {
40161         self.inner.conformance_version = conformance_version;
40162         self
40163     }
denorm_behavior_independence( mut self, denorm_behavior_independence: ShaderFloatControlsIndependence, ) -> Self40164     pub fn denorm_behavior_independence(
40165         mut self,
40166         denorm_behavior_independence: ShaderFloatControlsIndependence,
40167     ) -> Self {
40168         self.inner.denorm_behavior_independence = denorm_behavior_independence;
40169         self
40170     }
rounding_mode_independence( mut self, rounding_mode_independence: ShaderFloatControlsIndependence, ) -> Self40171     pub fn rounding_mode_independence(
40172         mut self,
40173         rounding_mode_independence: ShaderFloatControlsIndependence,
40174     ) -> Self {
40175         self.inner.rounding_mode_independence = rounding_mode_independence;
40176         self
40177     }
shader_signed_zero_inf_nan_preserve_float16( mut self, shader_signed_zero_inf_nan_preserve_float16: bool, ) -> Self40178     pub fn shader_signed_zero_inf_nan_preserve_float16(
40179         mut self,
40180         shader_signed_zero_inf_nan_preserve_float16: bool,
40181     ) -> Self {
40182         self.inner.shader_signed_zero_inf_nan_preserve_float16 =
40183             shader_signed_zero_inf_nan_preserve_float16.into();
40184         self
40185     }
shader_signed_zero_inf_nan_preserve_float32( mut self, shader_signed_zero_inf_nan_preserve_float32: bool, ) -> Self40186     pub fn shader_signed_zero_inf_nan_preserve_float32(
40187         mut self,
40188         shader_signed_zero_inf_nan_preserve_float32: bool,
40189     ) -> Self {
40190         self.inner.shader_signed_zero_inf_nan_preserve_float32 =
40191             shader_signed_zero_inf_nan_preserve_float32.into();
40192         self
40193     }
shader_signed_zero_inf_nan_preserve_float64( mut self, shader_signed_zero_inf_nan_preserve_float64: bool, ) -> Self40194     pub fn shader_signed_zero_inf_nan_preserve_float64(
40195         mut self,
40196         shader_signed_zero_inf_nan_preserve_float64: bool,
40197     ) -> Self {
40198         self.inner.shader_signed_zero_inf_nan_preserve_float64 =
40199             shader_signed_zero_inf_nan_preserve_float64.into();
40200         self
40201     }
shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self40202     pub fn shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self {
40203         self.inner.shader_denorm_preserve_float16 = shader_denorm_preserve_float16.into();
40204         self
40205     }
shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self40206     pub fn shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self {
40207         self.inner.shader_denorm_preserve_float32 = shader_denorm_preserve_float32.into();
40208         self
40209     }
shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self40210     pub fn shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self {
40211         self.inner.shader_denorm_preserve_float64 = shader_denorm_preserve_float64.into();
40212         self
40213     }
shader_denorm_flush_to_zero_float16( mut self, shader_denorm_flush_to_zero_float16: bool, ) -> Self40214     pub fn shader_denorm_flush_to_zero_float16(
40215         mut self,
40216         shader_denorm_flush_to_zero_float16: bool,
40217     ) -> Self {
40218         self.inner.shader_denorm_flush_to_zero_float16 = shader_denorm_flush_to_zero_float16.into();
40219         self
40220     }
shader_denorm_flush_to_zero_float32( mut self, shader_denorm_flush_to_zero_float32: bool, ) -> Self40221     pub fn shader_denorm_flush_to_zero_float32(
40222         mut self,
40223         shader_denorm_flush_to_zero_float32: bool,
40224     ) -> Self {
40225         self.inner.shader_denorm_flush_to_zero_float32 = shader_denorm_flush_to_zero_float32.into();
40226         self
40227     }
shader_denorm_flush_to_zero_float64( mut self, shader_denorm_flush_to_zero_float64: bool, ) -> Self40228     pub fn shader_denorm_flush_to_zero_float64(
40229         mut self,
40230         shader_denorm_flush_to_zero_float64: bool,
40231     ) -> Self {
40232         self.inner.shader_denorm_flush_to_zero_float64 = shader_denorm_flush_to_zero_float64.into();
40233         self
40234     }
shader_rounding_mode_rte_float16( mut self, shader_rounding_mode_rte_float16: bool, ) -> Self40235     pub fn shader_rounding_mode_rte_float16(
40236         mut self,
40237         shader_rounding_mode_rte_float16: bool,
40238     ) -> Self {
40239         self.inner.shader_rounding_mode_rte_float16 = shader_rounding_mode_rte_float16.into();
40240         self
40241     }
shader_rounding_mode_rte_float32( mut self, shader_rounding_mode_rte_float32: bool, ) -> Self40242     pub fn shader_rounding_mode_rte_float32(
40243         mut self,
40244         shader_rounding_mode_rte_float32: bool,
40245     ) -> Self {
40246         self.inner.shader_rounding_mode_rte_float32 = shader_rounding_mode_rte_float32.into();
40247         self
40248     }
shader_rounding_mode_rte_float64( mut self, shader_rounding_mode_rte_float64: bool, ) -> Self40249     pub fn shader_rounding_mode_rte_float64(
40250         mut self,
40251         shader_rounding_mode_rte_float64: bool,
40252     ) -> Self {
40253         self.inner.shader_rounding_mode_rte_float64 = shader_rounding_mode_rte_float64.into();
40254         self
40255     }
shader_rounding_mode_rtz_float16( mut self, shader_rounding_mode_rtz_float16: bool, ) -> Self40256     pub fn shader_rounding_mode_rtz_float16(
40257         mut self,
40258         shader_rounding_mode_rtz_float16: bool,
40259     ) -> Self {
40260         self.inner.shader_rounding_mode_rtz_float16 = shader_rounding_mode_rtz_float16.into();
40261         self
40262     }
shader_rounding_mode_rtz_float32( mut self, shader_rounding_mode_rtz_float32: bool, ) -> Self40263     pub fn shader_rounding_mode_rtz_float32(
40264         mut self,
40265         shader_rounding_mode_rtz_float32: bool,
40266     ) -> Self {
40267         self.inner.shader_rounding_mode_rtz_float32 = shader_rounding_mode_rtz_float32.into();
40268         self
40269     }
shader_rounding_mode_rtz_float64( mut self, shader_rounding_mode_rtz_float64: bool, ) -> Self40270     pub fn shader_rounding_mode_rtz_float64(
40271         mut self,
40272         shader_rounding_mode_rtz_float64: bool,
40273     ) -> Self {
40274         self.inner.shader_rounding_mode_rtz_float64 = shader_rounding_mode_rtz_float64.into();
40275         self
40276     }
max_update_after_bind_descriptors_in_all_pools( mut self, max_update_after_bind_descriptors_in_all_pools: u32, ) -> Self40277     pub fn max_update_after_bind_descriptors_in_all_pools(
40278         mut self,
40279         max_update_after_bind_descriptors_in_all_pools: u32,
40280     ) -> Self {
40281         self.inner.max_update_after_bind_descriptors_in_all_pools =
40282             max_update_after_bind_descriptors_in_all_pools;
40283         self
40284     }
shader_uniform_buffer_array_non_uniform_indexing_native( mut self, shader_uniform_buffer_array_non_uniform_indexing_native: bool, ) -> Self40285     pub fn shader_uniform_buffer_array_non_uniform_indexing_native(
40286         mut self,
40287         shader_uniform_buffer_array_non_uniform_indexing_native: bool,
40288     ) -> Self {
40289         self.inner
40290             .shader_uniform_buffer_array_non_uniform_indexing_native =
40291             shader_uniform_buffer_array_non_uniform_indexing_native.into();
40292         self
40293     }
shader_sampled_image_array_non_uniform_indexing_native( mut self, shader_sampled_image_array_non_uniform_indexing_native: bool, ) -> Self40294     pub fn shader_sampled_image_array_non_uniform_indexing_native(
40295         mut self,
40296         shader_sampled_image_array_non_uniform_indexing_native: bool,
40297     ) -> Self {
40298         self.inner
40299             .shader_sampled_image_array_non_uniform_indexing_native =
40300             shader_sampled_image_array_non_uniform_indexing_native.into();
40301         self
40302     }
shader_storage_buffer_array_non_uniform_indexing_native( mut self, shader_storage_buffer_array_non_uniform_indexing_native: bool, ) -> Self40303     pub fn shader_storage_buffer_array_non_uniform_indexing_native(
40304         mut self,
40305         shader_storage_buffer_array_non_uniform_indexing_native: bool,
40306     ) -> Self {
40307         self.inner
40308             .shader_storage_buffer_array_non_uniform_indexing_native =
40309             shader_storage_buffer_array_non_uniform_indexing_native.into();
40310         self
40311     }
shader_storage_image_array_non_uniform_indexing_native( mut self, shader_storage_image_array_non_uniform_indexing_native: bool, ) -> Self40312     pub fn shader_storage_image_array_non_uniform_indexing_native(
40313         mut self,
40314         shader_storage_image_array_non_uniform_indexing_native: bool,
40315     ) -> Self {
40316         self.inner
40317             .shader_storage_image_array_non_uniform_indexing_native =
40318             shader_storage_image_array_non_uniform_indexing_native.into();
40319         self
40320     }
shader_input_attachment_array_non_uniform_indexing_native( mut self, shader_input_attachment_array_non_uniform_indexing_native: bool, ) -> Self40321     pub fn shader_input_attachment_array_non_uniform_indexing_native(
40322         mut self,
40323         shader_input_attachment_array_non_uniform_indexing_native: bool,
40324     ) -> Self {
40325         self.inner
40326             .shader_input_attachment_array_non_uniform_indexing_native =
40327             shader_input_attachment_array_non_uniform_indexing_native.into();
40328         self
40329     }
robust_buffer_access_update_after_bind( mut self, robust_buffer_access_update_after_bind: bool, ) -> Self40330     pub fn robust_buffer_access_update_after_bind(
40331         mut self,
40332         robust_buffer_access_update_after_bind: bool,
40333     ) -> Self {
40334         self.inner.robust_buffer_access_update_after_bind =
40335             robust_buffer_access_update_after_bind.into();
40336         self
40337     }
quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self40338     pub fn quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self {
40339         self.inner.quad_divergent_implicit_lod = quad_divergent_implicit_lod.into();
40340         self
40341     }
max_per_stage_descriptor_update_after_bind_samplers( mut self, max_per_stage_descriptor_update_after_bind_samplers: u32, ) -> Self40342     pub fn max_per_stage_descriptor_update_after_bind_samplers(
40343         mut self,
40344         max_per_stage_descriptor_update_after_bind_samplers: u32,
40345     ) -> Self {
40346         self.inner
40347             .max_per_stage_descriptor_update_after_bind_samplers =
40348             max_per_stage_descriptor_update_after_bind_samplers;
40349         self
40350     }
max_per_stage_descriptor_update_after_bind_uniform_buffers( mut self, max_per_stage_descriptor_update_after_bind_uniform_buffers: u32, ) -> Self40351     pub fn max_per_stage_descriptor_update_after_bind_uniform_buffers(
40352         mut self,
40353         max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
40354     ) -> Self {
40355         self.inner
40356             .max_per_stage_descriptor_update_after_bind_uniform_buffers =
40357             max_per_stage_descriptor_update_after_bind_uniform_buffers;
40358         self
40359     }
max_per_stage_descriptor_update_after_bind_storage_buffers( mut self, max_per_stage_descriptor_update_after_bind_storage_buffers: u32, ) -> Self40360     pub fn max_per_stage_descriptor_update_after_bind_storage_buffers(
40361         mut self,
40362         max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
40363     ) -> Self {
40364         self.inner
40365             .max_per_stage_descriptor_update_after_bind_storage_buffers =
40366             max_per_stage_descriptor_update_after_bind_storage_buffers;
40367         self
40368     }
max_per_stage_descriptor_update_after_bind_sampled_images( mut self, max_per_stage_descriptor_update_after_bind_sampled_images: u32, ) -> Self40369     pub fn max_per_stage_descriptor_update_after_bind_sampled_images(
40370         mut self,
40371         max_per_stage_descriptor_update_after_bind_sampled_images: u32,
40372     ) -> Self {
40373         self.inner
40374             .max_per_stage_descriptor_update_after_bind_sampled_images =
40375             max_per_stage_descriptor_update_after_bind_sampled_images;
40376         self
40377     }
max_per_stage_descriptor_update_after_bind_storage_images( mut self, max_per_stage_descriptor_update_after_bind_storage_images: u32, ) -> Self40378     pub fn max_per_stage_descriptor_update_after_bind_storage_images(
40379         mut self,
40380         max_per_stage_descriptor_update_after_bind_storage_images: u32,
40381     ) -> Self {
40382         self.inner
40383             .max_per_stage_descriptor_update_after_bind_storage_images =
40384             max_per_stage_descriptor_update_after_bind_storage_images;
40385         self
40386     }
max_per_stage_descriptor_update_after_bind_input_attachments( mut self, max_per_stage_descriptor_update_after_bind_input_attachments: u32, ) -> Self40387     pub fn max_per_stage_descriptor_update_after_bind_input_attachments(
40388         mut self,
40389         max_per_stage_descriptor_update_after_bind_input_attachments: u32,
40390     ) -> Self {
40391         self.inner
40392             .max_per_stage_descriptor_update_after_bind_input_attachments =
40393             max_per_stage_descriptor_update_after_bind_input_attachments;
40394         self
40395     }
max_per_stage_update_after_bind_resources( mut self, max_per_stage_update_after_bind_resources: u32, ) -> Self40396     pub fn max_per_stage_update_after_bind_resources(
40397         mut self,
40398         max_per_stage_update_after_bind_resources: u32,
40399     ) -> Self {
40400         self.inner.max_per_stage_update_after_bind_resources =
40401             max_per_stage_update_after_bind_resources;
40402         self
40403     }
max_descriptor_set_update_after_bind_samplers( mut self, max_descriptor_set_update_after_bind_samplers: u32, ) -> Self40404     pub fn max_descriptor_set_update_after_bind_samplers(
40405         mut self,
40406         max_descriptor_set_update_after_bind_samplers: u32,
40407     ) -> Self {
40408         self.inner.max_descriptor_set_update_after_bind_samplers =
40409             max_descriptor_set_update_after_bind_samplers;
40410         self
40411     }
max_descriptor_set_update_after_bind_uniform_buffers( mut self, max_descriptor_set_update_after_bind_uniform_buffers: u32, ) -> Self40412     pub fn max_descriptor_set_update_after_bind_uniform_buffers(
40413         mut self,
40414         max_descriptor_set_update_after_bind_uniform_buffers: u32,
40415     ) -> Self {
40416         self.inner
40417             .max_descriptor_set_update_after_bind_uniform_buffers =
40418             max_descriptor_set_update_after_bind_uniform_buffers;
40419         self
40420     }
max_descriptor_set_update_after_bind_uniform_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32, ) -> Self40421     pub fn max_descriptor_set_update_after_bind_uniform_buffers_dynamic(
40422         mut self,
40423         max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
40424     ) -> Self {
40425         self.inner
40426             .max_descriptor_set_update_after_bind_uniform_buffers_dynamic =
40427             max_descriptor_set_update_after_bind_uniform_buffers_dynamic;
40428         self
40429     }
max_descriptor_set_update_after_bind_storage_buffers( mut self, max_descriptor_set_update_after_bind_storage_buffers: u32, ) -> Self40430     pub fn max_descriptor_set_update_after_bind_storage_buffers(
40431         mut self,
40432         max_descriptor_set_update_after_bind_storage_buffers: u32,
40433     ) -> Self {
40434         self.inner
40435             .max_descriptor_set_update_after_bind_storage_buffers =
40436             max_descriptor_set_update_after_bind_storage_buffers;
40437         self
40438     }
max_descriptor_set_update_after_bind_storage_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32, ) -> Self40439     pub fn max_descriptor_set_update_after_bind_storage_buffers_dynamic(
40440         mut self,
40441         max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
40442     ) -> Self {
40443         self.inner
40444             .max_descriptor_set_update_after_bind_storage_buffers_dynamic =
40445             max_descriptor_set_update_after_bind_storage_buffers_dynamic;
40446         self
40447     }
max_descriptor_set_update_after_bind_sampled_images( mut self, max_descriptor_set_update_after_bind_sampled_images: u32, ) -> Self40448     pub fn max_descriptor_set_update_after_bind_sampled_images(
40449         mut self,
40450         max_descriptor_set_update_after_bind_sampled_images: u32,
40451     ) -> Self {
40452         self.inner
40453             .max_descriptor_set_update_after_bind_sampled_images =
40454             max_descriptor_set_update_after_bind_sampled_images;
40455         self
40456     }
max_descriptor_set_update_after_bind_storage_images( mut self, max_descriptor_set_update_after_bind_storage_images: u32, ) -> Self40457     pub fn max_descriptor_set_update_after_bind_storage_images(
40458         mut self,
40459         max_descriptor_set_update_after_bind_storage_images: u32,
40460     ) -> Self {
40461         self.inner
40462             .max_descriptor_set_update_after_bind_storage_images =
40463             max_descriptor_set_update_after_bind_storage_images;
40464         self
40465     }
max_descriptor_set_update_after_bind_input_attachments( mut self, max_descriptor_set_update_after_bind_input_attachments: u32, ) -> Self40466     pub fn max_descriptor_set_update_after_bind_input_attachments(
40467         mut self,
40468         max_descriptor_set_update_after_bind_input_attachments: u32,
40469     ) -> Self {
40470         self.inner
40471             .max_descriptor_set_update_after_bind_input_attachments =
40472             max_descriptor_set_update_after_bind_input_attachments;
40473         self
40474     }
supported_depth_resolve_modes( mut self, supported_depth_resolve_modes: ResolveModeFlags, ) -> Self40475     pub fn supported_depth_resolve_modes(
40476         mut self,
40477         supported_depth_resolve_modes: ResolveModeFlags,
40478     ) -> Self {
40479         self.inner.supported_depth_resolve_modes = supported_depth_resolve_modes;
40480         self
40481     }
supported_stencil_resolve_modes( mut self, supported_stencil_resolve_modes: ResolveModeFlags, ) -> Self40482     pub fn supported_stencil_resolve_modes(
40483         mut self,
40484         supported_stencil_resolve_modes: ResolveModeFlags,
40485     ) -> Self {
40486         self.inner.supported_stencil_resolve_modes = supported_stencil_resolve_modes;
40487         self
40488     }
independent_resolve_none(mut self, independent_resolve_none: bool) -> Self40489     pub fn independent_resolve_none(mut self, independent_resolve_none: bool) -> Self {
40490         self.inner.independent_resolve_none = independent_resolve_none.into();
40491         self
40492     }
independent_resolve(mut self, independent_resolve: bool) -> Self40493     pub fn independent_resolve(mut self, independent_resolve: bool) -> Self {
40494         self.inner.independent_resolve = independent_resolve.into();
40495         self
40496     }
filter_minmax_single_component_formats( mut self, filter_minmax_single_component_formats: bool, ) -> Self40497     pub fn filter_minmax_single_component_formats(
40498         mut self,
40499         filter_minmax_single_component_formats: bool,
40500     ) -> Self {
40501         self.inner.filter_minmax_single_component_formats =
40502             filter_minmax_single_component_formats.into();
40503         self
40504     }
filter_minmax_image_component_mapping( mut self, filter_minmax_image_component_mapping: bool, ) -> Self40505     pub fn filter_minmax_image_component_mapping(
40506         mut self,
40507         filter_minmax_image_component_mapping: bool,
40508     ) -> Self {
40509         self.inner.filter_minmax_image_component_mapping =
40510             filter_minmax_image_component_mapping.into();
40511         self
40512     }
max_timeline_semaphore_value_difference( mut self, max_timeline_semaphore_value_difference: u64, ) -> Self40513     pub fn max_timeline_semaphore_value_difference(
40514         mut self,
40515         max_timeline_semaphore_value_difference: u64,
40516     ) -> Self {
40517         self.inner.max_timeline_semaphore_value_difference =
40518             max_timeline_semaphore_value_difference;
40519         self
40520     }
framebuffer_integer_color_sample_counts( mut self, framebuffer_integer_color_sample_counts: SampleCountFlags, ) -> Self40521     pub fn framebuffer_integer_color_sample_counts(
40522         mut self,
40523         framebuffer_integer_color_sample_counts: SampleCountFlags,
40524     ) -> Self {
40525         self.inner.framebuffer_integer_color_sample_counts =
40526             framebuffer_integer_color_sample_counts;
40527         self
40528     }
40529     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40530     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40531     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan12Properties40532     pub fn build(self) -> PhysicalDeviceVulkan12Properties {
40533         self.inner
40534     }
40535 }
40536 #[repr(C)]
40537 #[derive(Copy, Clone, Debug)]
40538 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCompilerControlCreateInfoAMD.html>"]
40539 pub struct PipelineCompilerControlCreateInfoAMD {
40540     pub s_type: StructureType,
40541     pub p_next: *const c_void,
40542     pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
40543 }
40544 impl ::std::default::Default for PipelineCompilerControlCreateInfoAMD {
default() -> PipelineCompilerControlCreateInfoAMD40545     fn default() -> PipelineCompilerControlCreateInfoAMD {
40546         PipelineCompilerControlCreateInfoAMD {
40547             s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
40548             p_next: ::std::ptr::null(),
40549             compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
40550         }
40551     }
40552 }
40553 impl PipelineCompilerControlCreateInfoAMD {
builder<'a>() -> PipelineCompilerControlCreateInfoAMDBuilder<'a>40554     pub fn builder<'a>() -> PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40555         PipelineCompilerControlCreateInfoAMDBuilder {
40556             inner: PipelineCompilerControlCreateInfoAMD::default(),
40557             marker: ::std::marker::PhantomData,
40558         }
40559     }
40560 }
40561 #[repr(transparent)]
40562 pub struct PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40563     inner: PipelineCompilerControlCreateInfoAMD,
40564     marker: ::std::marker::PhantomData<&'a ()>,
40565 }
40566 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCompilerControlCreateInfoAMDBuilder<'_> {}
40567 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCompilerControlCreateInfoAMD {}
40568 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCompilerControlCreateInfoAMDBuilder<'_> {}
40569 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCompilerControlCreateInfoAMD {}
40570 impl<'a> ::std::ops::Deref for PipelineCompilerControlCreateInfoAMDBuilder<'a> {
40571     type Target = PipelineCompilerControlCreateInfoAMD;
deref(&self) -> &Self::Target40572     fn deref(&self) -> &Self::Target {
40573         &self.inner
40574     }
40575 }
40576 impl<'a> ::std::ops::DerefMut for PipelineCompilerControlCreateInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40577     fn deref_mut(&mut self) -> &mut Self::Target {
40578         &mut self.inner
40579     }
40580 }
40581 impl<'a> PipelineCompilerControlCreateInfoAMDBuilder<'a> {
compiler_control_flags( mut self, compiler_control_flags: PipelineCompilerControlFlagsAMD, ) -> Self40582     pub fn compiler_control_flags(
40583         mut self,
40584         compiler_control_flags: PipelineCompilerControlFlagsAMD,
40585     ) -> Self {
40586         self.inner.compiler_control_flags = compiler_control_flags;
40587         self
40588     }
40589     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40590     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40591     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCompilerControlCreateInfoAMD40592     pub fn build(self) -> PipelineCompilerControlCreateInfoAMD {
40593         self.inner
40594     }
40595 }
40596 #[repr(C)]
40597 #[derive(Copy, Clone, Debug)]
40598 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>"]
40599 pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
40600     pub s_type: StructureType,
40601     pub p_next: *mut c_void,
40602     pub device_coherent_memory: Bool32,
40603 }
40604 impl ::std::default::Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
default() -> PhysicalDeviceCoherentMemoryFeaturesAMD40605     fn default() -> PhysicalDeviceCoherentMemoryFeaturesAMD {
40606         PhysicalDeviceCoherentMemoryFeaturesAMD {
40607             s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
40608             p_next: ::std::ptr::null_mut(),
40609             device_coherent_memory: Bool32::default(),
40610         }
40611     }
40612 }
40613 impl PhysicalDeviceCoherentMemoryFeaturesAMD {
builder<'a>() -> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a>40614     pub fn builder<'a>() -> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40615         PhysicalDeviceCoherentMemoryFeaturesAMDBuilder {
40616             inner: PhysicalDeviceCoherentMemoryFeaturesAMD::default(),
40617             marker: ::std::marker::PhantomData,
40618         }
40619     }
40620 }
40621 #[repr(transparent)]
40622 pub struct PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40623     inner: PhysicalDeviceCoherentMemoryFeaturesAMD,
40624     marker: ::std::marker::PhantomData<&'a ()>,
40625 }
40626 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'_> {}
40627 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoherentMemoryFeaturesAMD {}
40628 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'_> {}
40629 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoherentMemoryFeaturesAMD {}
40630 impl<'a> ::std::ops::Deref for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
40631     type Target = PhysicalDeviceCoherentMemoryFeaturesAMD;
deref(&self) -> &Self::Target40632     fn deref(&self) -> &Self::Target {
40633         &self.inner
40634     }
40635 }
40636 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40637     fn deref_mut(&mut self) -> &mut Self::Target {
40638         &mut self.inner
40639     }
40640 }
40641 impl<'a> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
device_coherent_memory(mut self, device_coherent_memory: bool) -> Self40642     pub fn device_coherent_memory(mut self, device_coherent_memory: bool) -> Self {
40643         self.inner.device_coherent_memory = device_coherent_memory.into();
40644         self
40645     }
40646     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40647     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40648     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCoherentMemoryFeaturesAMD40649     pub fn build(self) -> PhysicalDeviceCoherentMemoryFeaturesAMD {
40650         self.inner
40651     }
40652 }
40653 #[repr(C)]
40654 #[derive(Copy, Clone)]
40655 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceToolPropertiesEXT.html>"]
40656 pub struct PhysicalDeviceToolPropertiesEXT {
40657     pub s_type: StructureType,
40658     pub p_next: *mut c_void,
40659     pub name: [c_char; MAX_EXTENSION_NAME_SIZE],
40660     pub version: [c_char; MAX_EXTENSION_NAME_SIZE],
40661     pub purposes: ToolPurposeFlagsEXT,
40662     pub description: [c_char; MAX_DESCRIPTION_SIZE],
40663     pub layer: [c_char; MAX_EXTENSION_NAME_SIZE],
40664 }
40665 impl fmt::Debug for PhysicalDeviceToolPropertiesEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result40666     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
40667         fmt.debug_struct("PhysicalDeviceToolPropertiesEXT")
40668             .field("s_type", &self.s_type)
40669             .field("p_next", &self.p_next)
40670             .field("name", &unsafe {
40671                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
40672             })
40673             .field("version", &unsafe {
40674                 ::std::ffi::CStr::from_ptr(self.version.as_ptr() as *const c_char)
40675             })
40676             .field("purposes", &self.purposes)
40677             .field("description", &unsafe {
40678                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
40679             })
40680             .field("layer", &unsafe {
40681                 ::std::ffi::CStr::from_ptr(self.layer.as_ptr() as *const c_char)
40682             })
40683             .finish()
40684     }
40685 }
40686 impl ::std::default::Default for PhysicalDeviceToolPropertiesEXT {
default() -> PhysicalDeviceToolPropertiesEXT40687     fn default() -> PhysicalDeviceToolPropertiesEXT {
40688         PhysicalDeviceToolPropertiesEXT {
40689             s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,
40690             p_next: ::std::ptr::null_mut(),
40691             name: unsafe { ::std::mem::zeroed() },
40692             version: unsafe { ::std::mem::zeroed() },
40693             purposes: ToolPurposeFlagsEXT::default(),
40694             description: unsafe { ::std::mem::zeroed() },
40695             layer: unsafe { ::std::mem::zeroed() },
40696         }
40697     }
40698 }
40699 impl PhysicalDeviceToolPropertiesEXT {
builder<'a>() -> PhysicalDeviceToolPropertiesEXTBuilder<'a>40700     pub fn builder<'a>() -> PhysicalDeviceToolPropertiesEXTBuilder<'a> {
40701         PhysicalDeviceToolPropertiesEXTBuilder {
40702             inner: PhysicalDeviceToolPropertiesEXT::default(),
40703             marker: ::std::marker::PhantomData,
40704         }
40705     }
40706 }
40707 #[repr(transparent)]
40708 pub struct PhysicalDeviceToolPropertiesEXTBuilder<'a> {
40709     inner: PhysicalDeviceToolPropertiesEXT,
40710     marker: ::std::marker::PhantomData<&'a ()>,
40711 }
40712 impl<'a> ::std::ops::Deref for PhysicalDeviceToolPropertiesEXTBuilder<'a> {
40713     type Target = PhysicalDeviceToolPropertiesEXT;
deref(&self) -> &Self::Target40714     fn deref(&self) -> &Self::Target {
40715         &self.inner
40716     }
40717 }
40718 impl<'a> ::std::ops::DerefMut for PhysicalDeviceToolPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40719     fn deref_mut(&mut self) -> &mut Self::Target {
40720         &mut self.inner
40721     }
40722 }
40723 impl<'a> PhysicalDeviceToolPropertiesEXTBuilder<'a> {
name(mut self, name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self40724     pub fn name(mut self, name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
40725         self.inner.name = name;
40726         self
40727     }
version(mut self, version: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self40728     pub fn version(mut self, version: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
40729         self.inner.version = version;
40730         self
40731     }
purposes(mut self, purposes: ToolPurposeFlagsEXT) -> Self40732     pub fn purposes(mut self, purposes: ToolPurposeFlagsEXT) -> Self {
40733         self.inner.purposes = purposes;
40734         self
40735     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self40736     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
40737         self.inner.description = description;
40738         self
40739     }
layer(mut self, layer: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self40740     pub fn layer(mut self, layer: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
40741         self.inner.layer = layer;
40742         self
40743     }
40744     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40745     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40746     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceToolPropertiesEXT40747     pub fn build(self) -> PhysicalDeviceToolPropertiesEXT {
40748         self.inner
40749     }
40750 }
40751 #[repr(C)]
40752 #[derive(Copy, Clone)]
40753 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>"]
40754 pub struct SamplerCustomBorderColorCreateInfoEXT {
40755     pub s_type: StructureType,
40756     pub p_next: *const c_void,
40757     pub custom_border_color: ClearColorValue,
40758     pub format: Format,
40759 }
40760 impl fmt::Debug for SamplerCustomBorderColorCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result40761     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
40762         fmt.debug_struct("SamplerCustomBorderColorCreateInfoEXT")
40763             .field("s_type", &self.s_type)
40764             .field("p_next", &self.p_next)
40765             .field("custom_border_color", &"union")
40766             .field("format", &self.format)
40767             .finish()
40768     }
40769 }
40770 impl ::std::default::Default for SamplerCustomBorderColorCreateInfoEXT {
default() -> SamplerCustomBorderColorCreateInfoEXT40771     fn default() -> SamplerCustomBorderColorCreateInfoEXT {
40772         SamplerCustomBorderColorCreateInfoEXT {
40773             s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
40774             p_next: ::std::ptr::null(),
40775             custom_border_color: ClearColorValue::default(),
40776             format: Format::default(),
40777         }
40778     }
40779 }
40780 impl SamplerCustomBorderColorCreateInfoEXT {
builder<'a>() -> SamplerCustomBorderColorCreateInfoEXTBuilder<'a>40781     pub fn builder<'a>() -> SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
40782         SamplerCustomBorderColorCreateInfoEXTBuilder {
40783             inner: SamplerCustomBorderColorCreateInfoEXT::default(),
40784             marker: ::std::marker::PhantomData,
40785         }
40786     }
40787 }
40788 #[repr(transparent)]
40789 pub struct SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
40790     inner: SamplerCustomBorderColorCreateInfoEXT,
40791     marker: ::std::marker::PhantomData<&'a ()>,
40792 }
40793 unsafe impl ExtendsSamplerCreateInfo for SamplerCustomBorderColorCreateInfoEXTBuilder<'_> {}
40794 unsafe impl ExtendsSamplerCreateInfo for SamplerCustomBorderColorCreateInfoEXT {}
40795 impl<'a> ::std::ops::Deref for SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
40796     type Target = SamplerCustomBorderColorCreateInfoEXT;
deref(&self) -> &Self::Target40797     fn deref(&self) -> &Self::Target {
40798         &self.inner
40799     }
40800 }
40801 impl<'a> ::std::ops::DerefMut for SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40802     fn deref_mut(&mut self) -> &mut Self::Target {
40803         &mut self.inner
40804     }
40805 }
40806 impl<'a> SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
custom_border_color(mut self, custom_border_color: ClearColorValue) -> Self40807     pub fn custom_border_color(mut self, custom_border_color: ClearColorValue) -> Self {
40808         self.inner.custom_border_color = custom_border_color;
40809         self
40810     }
format(mut self, format: Format) -> Self40811     pub fn format(mut self, format: Format) -> Self {
40812         self.inner.format = format;
40813         self
40814     }
40815     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40816     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40817     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerCustomBorderColorCreateInfoEXT40818     pub fn build(self) -> SamplerCustomBorderColorCreateInfoEXT {
40819         self.inner
40820     }
40821 }
40822 #[repr(C)]
40823 #[derive(Copy, Clone, Debug)]
40824 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>"]
40825 pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
40826     pub s_type: StructureType,
40827     pub p_next: *mut c_void,
40828     pub max_custom_border_color_samplers: u32,
40829 }
40830 impl ::std::default::Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
default() -> PhysicalDeviceCustomBorderColorPropertiesEXT40831     fn default() -> PhysicalDeviceCustomBorderColorPropertiesEXT {
40832         PhysicalDeviceCustomBorderColorPropertiesEXT {
40833             s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
40834             p_next: ::std::ptr::null_mut(),
40835             max_custom_border_color_samplers: u32::default(),
40836         }
40837     }
40838 }
40839 impl PhysicalDeviceCustomBorderColorPropertiesEXT {
builder<'a>() -> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a>40840     pub fn builder<'a>() -> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
40841         PhysicalDeviceCustomBorderColorPropertiesEXTBuilder {
40842             inner: PhysicalDeviceCustomBorderColorPropertiesEXT::default(),
40843             marker: ::std::marker::PhantomData,
40844         }
40845     }
40846 }
40847 #[repr(transparent)]
40848 pub struct PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
40849     inner: PhysicalDeviceCustomBorderColorPropertiesEXT,
40850     marker: ::std::marker::PhantomData<&'a ()>,
40851 }
40852 unsafe impl ExtendsPhysicalDeviceProperties2
40853     for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'_>
40854 {
40855 }
40856 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCustomBorderColorPropertiesEXT {}
40857 impl<'a> ::std::ops::Deref for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
40858     type Target = PhysicalDeviceCustomBorderColorPropertiesEXT;
deref(&self) -> &Self::Target40859     fn deref(&self) -> &Self::Target {
40860         &self.inner
40861     }
40862 }
40863 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40864     fn deref_mut(&mut self) -> &mut Self::Target {
40865         &mut self.inner
40866     }
40867 }
40868 impl<'a> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
max_custom_border_color_samplers( mut self, max_custom_border_color_samplers: u32, ) -> Self40869     pub fn max_custom_border_color_samplers(
40870         mut self,
40871         max_custom_border_color_samplers: u32,
40872     ) -> Self {
40873         self.inner.max_custom_border_color_samplers = max_custom_border_color_samplers;
40874         self
40875     }
40876     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40877     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40878     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCustomBorderColorPropertiesEXT40879     pub fn build(self) -> PhysicalDeviceCustomBorderColorPropertiesEXT {
40880         self.inner
40881     }
40882 }
40883 #[repr(C)]
40884 #[derive(Copy, Clone, Debug)]
40885 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>"]
40886 pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
40887     pub s_type: StructureType,
40888     pub p_next: *mut c_void,
40889     pub custom_border_colors: Bool32,
40890     pub custom_border_color_without_format: Bool32,
40891 }
40892 impl ::std::default::Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
default() -> PhysicalDeviceCustomBorderColorFeaturesEXT40893     fn default() -> PhysicalDeviceCustomBorderColorFeaturesEXT {
40894         PhysicalDeviceCustomBorderColorFeaturesEXT {
40895             s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
40896             p_next: ::std::ptr::null_mut(),
40897             custom_border_colors: Bool32::default(),
40898             custom_border_color_without_format: Bool32::default(),
40899         }
40900     }
40901 }
40902 impl PhysicalDeviceCustomBorderColorFeaturesEXT {
builder<'a>() -> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a>40903     pub fn builder<'a>() -> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
40904         PhysicalDeviceCustomBorderColorFeaturesEXTBuilder {
40905             inner: PhysicalDeviceCustomBorderColorFeaturesEXT::default(),
40906             marker: ::std::marker::PhantomData,
40907         }
40908     }
40909 }
40910 #[repr(transparent)]
40911 pub struct PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
40912     inner: PhysicalDeviceCustomBorderColorFeaturesEXT,
40913     marker: ::std::marker::PhantomData<&'a ()>,
40914 }
40915 unsafe impl ExtendsPhysicalDeviceFeatures2
40916     for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'_>
40917 {
40918 }
40919 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCustomBorderColorFeaturesEXT {}
40920 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'_> {}
40921 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCustomBorderColorFeaturesEXT {}
40922 impl<'a> ::std::ops::Deref for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
40923     type Target = PhysicalDeviceCustomBorderColorFeaturesEXT;
deref(&self) -> &Self::Target40924     fn deref(&self) -> &Self::Target {
40925         &self.inner
40926     }
40927 }
40928 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40929     fn deref_mut(&mut self) -> &mut Self::Target {
40930         &mut self.inner
40931     }
40932 }
40933 impl<'a> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
custom_border_colors(mut self, custom_border_colors: bool) -> Self40934     pub fn custom_border_colors(mut self, custom_border_colors: bool) -> Self {
40935         self.inner.custom_border_colors = custom_border_colors.into();
40936         self
40937     }
custom_border_color_without_format( mut self, custom_border_color_without_format: bool, ) -> Self40938     pub fn custom_border_color_without_format(
40939         mut self,
40940         custom_border_color_without_format: bool,
40941     ) -> Self {
40942         self.inner.custom_border_color_without_format = custom_border_color_without_format.into();
40943         self
40944     }
40945     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40946     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40947     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCustomBorderColorFeaturesEXT40948     pub fn build(self) -> PhysicalDeviceCustomBorderColorFeaturesEXT {
40949         self.inner
40950     }
40951 }
40952 #[repr(C)]
40953 #[derive(Copy, Clone)]
40954 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceOrHostAddressKHR.html>"]
40955 pub union DeviceOrHostAddressKHR {
40956     pub device_address: DeviceAddress,
40957     pub host_address: *mut c_void,
40958 }
40959 impl ::std::default::Default for DeviceOrHostAddressKHR {
default() -> DeviceOrHostAddressKHR40960     fn default() -> DeviceOrHostAddressKHR {
40961         unsafe { ::std::mem::zeroed() }
40962     }
40963 }
40964 #[repr(C)]
40965 #[derive(Copy, Clone)]
40966 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceOrHostAddressConstKHR.html>"]
40967 pub union DeviceOrHostAddressConstKHR {
40968     pub device_address: DeviceAddress,
40969     pub host_address: *const c_void,
40970 }
40971 impl ::std::default::Default for DeviceOrHostAddressConstKHR {
default() -> DeviceOrHostAddressConstKHR40972     fn default() -> DeviceOrHostAddressConstKHR {
40973         unsafe { ::std::mem::zeroed() }
40974     }
40975 }
40976 #[repr(C)]
40977 #[derive(Copy, Clone)]
40978 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html>"]
40979 pub struct AccelerationStructureGeometryTrianglesDataKHR {
40980     pub s_type: StructureType,
40981     pub p_next: *const c_void,
40982     pub vertex_format: Format,
40983     pub vertex_data: DeviceOrHostAddressConstKHR,
40984     pub vertex_stride: DeviceSize,
40985     pub max_vertex: u32,
40986     pub index_type: IndexType,
40987     pub index_data: DeviceOrHostAddressConstKHR,
40988     pub transform_data: DeviceOrHostAddressConstKHR,
40989 }
40990 impl fmt::Debug for AccelerationStructureGeometryTrianglesDataKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result40991     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
40992         fmt.debug_struct("AccelerationStructureGeometryTrianglesDataKHR")
40993             .field("s_type", &self.s_type)
40994             .field("p_next", &self.p_next)
40995             .field("vertex_format", &self.vertex_format)
40996             .field("vertex_data", &"union")
40997             .field("vertex_stride", &self.vertex_stride)
40998             .field("max_vertex", &self.max_vertex)
40999             .field("index_type", &self.index_type)
41000             .field("index_data", &"union")
41001             .field("transform_data", &"union")
41002             .finish()
41003     }
41004 }
41005 impl ::std::default::Default for AccelerationStructureGeometryTrianglesDataKHR {
default() -> AccelerationStructureGeometryTrianglesDataKHR41006     fn default() -> AccelerationStructureGeometryTrianglesDataKHR {
41007         AccelerationStructureGeometryTrianglesDataKHR {
41008             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,
41009             p_next: ::std::ptr::null(),
41010             vertex_format: Format::default(),
41011             vertex_data: DeviceOrHostAddressConstKHR::default(),
41012             vertex_stride: DeviceSize::default(),
41013             max_vertex: u32::default(),
41014             index_type: IndexType::default(),
41015             index_data: DeviceOrHostAddressConstKHR::default(),
41016             transform_data: DeviceOrHostAddressConstKHR::default(),
41017         }
41018     }
41019 }
41020 impl AccelerationStructureGeometryTrianglesDataKHR {
builder<'a>() -> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a>41021     pub fn builder<'a>() -> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41022         AccelerationStructureGeometryTrianglesDataKHRBuilder {
41023             inner: AccelerationStructureGeometryTrianglesDataKHR::default(),
41024             marker: ::std::marker::PhantomData,
41025         }
41026     }
41027 }
41028 #[repr(transparent)]
41029 pub struct AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41030     inner: AccelerationStructureGeometryTrianglesDataKHR,
41031     marker: ::std::marker::PhantomData<&'a ()>,
41032 }
41033 pub unsafe trait ExtendsAccelerationStructureGeometryTrianglesDataKHR {}
41034 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
41035     type Target = AccelerationStructureGeometryTrianglesDataKHR;
deref(&self) -> &Self::Target41036     fn deref(&self) -> &Self::Target {
41037         &self.inner
41038     }
41039 }
41040 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41041     fn deref_mut(&mut self) -> &mut Self::Target {
41042         &mut self.inner
41043     }
41044 }
41045 impl<'a> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
vertex_format(mut self, vertex_format: Format) -> Self41046     pub fn vertex_format(mut self, vertex_format: Format) -> Self {
41047         self.inner.vertex_format = vertex_format;
41048         self
41049     }
vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self41050     pub fn vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self {
41051         self.inner.vertex_data = vertex_data;
41052         self
41053     }
vertex_stride(mut self, vertex_stride: DeviceSize) -> Self41054     pub fn vertex_stride(mut self, vertex_stride: DeviceSize) -> Self {
41055         self.inner.vertex_stride = vertex_stride;
41056         self
41057     }
max_vertex(mut self, max_vertex: u32) -> Self41058     pub fn max_vertex(mut self, max_vertex: u32) -> Self {
41059         self.inner.max_vertex = max_vertex;
41060         self
41061     }
index_type(mut self, index_type: IndexType) -> Self41062     pub fn index_type(mut self, index_type: IndexType) -> Self {
41063         self.inner.index_type = index_type;
41064         self
41065     }
index_data(mut self, index_data: DeviceOrHostAddressConstKHR) -> Self41066     pub fn index_data(mut self, index_data: DeviceOrHostAddressConstKHR) -> Self {
41067         self.inner.index_data = index_data;
41068         self
41069     }
transform_data(mut self, transform_data: DeviceOrHostAddressConstKHR) -> Self41070     pub fn transform_data(mut self, transform_data: DeviceOrHostAddressConstKHR) -> Self {
41071         self.inner.transform_data = transform_data;
41072         self
41073     }
41074     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
41075     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
41076     #[doc = r" valid extension structs can be pushed into the chain."]
41077     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
41078     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR>( mut self, next: &'a mut T, ) -> Self41079     pub fn push_next<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR>(
41080         mut self,
41081         next: &'a mut T,
41082     ) -> Self {
41083         unsafe {
41084             let next_ptr = next as *mut T as *mut BaseOutStructure;
41085             let last_next = ptr_chain_iter(next).last().unwrap();
41086             (*last_next).p_next = self.inner.p_next as _;
41087             self.inner.p_next = next_ptr as _;
41088         }
41089         self
41090     }
41091     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41092     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41093     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryTrianglesDataKHR41094     pub fn build(self) -> AccelerationStructureGeometryTrianglesDataKHR {
41095         self.inner
41096     }
41097 }
41098 #[repr(C)]
41099 #[derive(Copy, Clone)]
41100 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html>"]
41101 pub struct AccelerationStructureGeometryAabbsDataKHR {
41102     pub s_type: StructureType,
41103     pub p_next: *const c_void,
41104     pub data: DeviceOrHostAddressConstKHR,
41105     pub stride: DeviceSize,
41106 }
41107 impl fmt::Debug for AccelerationStructureGeometryAabbsDataKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41108     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41109         fmt.debug_struct("AccelerationStructureGeometryAabbsDataKHR")
41110             .field("s_type", &self.s_type)
41111             .field("p_next", &self.p_next)
41112             .field("data", &"union")
41113             .field("stride", &self.stride)
41114             .finish()
41115     }
41116 }
41117 impl ::std::default::Default for AccelerationStructureGeometryAabbsDataKHR {
default() -> AccelerationStructureGeometryAabbsDataKHR41118     fn default() -> AccelerationStructureGeometryAabbsDataKHR {
41119         AccelerationStructureGeometryAabbsDataKHR {
41120             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,
41121             p_next: ::std::ptr::null(),
41122             data: DeviceOrHostAddressConstKHR::default(),
41123             stride: DeviceSize::default(),
41124         }
41125     }
41126 }
41127 impl AccelerationStructureGeometryAabbsDataKHR {
builder<'a>() -> AccelerationStructureGeometryAabbsDataKHRBuilder<'a>41128     pub fn builder<'a>() -> AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41129         AccelerationStructureGeometryAabbsDataKHRBuilder {
41130             inner: AccelerationStructureGeometryAabbsDataKHR::default(),
41131             marker: ::std::marker::PhantomData,
41132         }
41133     }
41134 }
41135 #[repr(transparent)]
41136 pub struct AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41137     inner: AccelerationStructureGeometryAabbsDataKHR,
41138     marker: ::std::marker::PhantomData<&'a ()>,
41139 }
41140 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
41141     type Target = AccelerationStructureGeometryAabbsDataKHR;
deref(&self) -> &Self::Target41142     fn deref(&self) -> &Self::Target {
41143         &self.inner
41144     }
41145 }
41146 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41147     fn deref_mut(&mut self) -> &mut Self::Target {
41148         &mut self.inner
41149     }
41150 }
41151 impl<'a> AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
data(mut self, data: DeviceOrHostAddressConstKHR) -> Self41152     pub fn data(mut self, data: DeviceOrHostAddressConstKHR) -> Self {
41153         self.inner.data = data;
41154         self
41155     }
stride(mut self, stride: DeviceSize) -> Self41156     pub fn stride(mut self, stride: DeviceSize) -> Self {
41157         self.inner.stride = stride;
41158         self
41159     }
41160     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41161     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41162     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryAabbsDataKHR41163     pub fn build(self) -> AccelerationStructureGeometryAabbsDataKHR {
41164         self.inner
41165     }
41166 }
41167 #[repr(C)]
41168 #[derive(Copy, Clone)]
41169 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html>"]
41170 pub struct AccelerationStructureGeometryInstancesDataKHR {
41171     pub s_type: StructureType,
41172     pub p_next: *const c_void,
41173     pub array_of_pointers: Bool32,
41174     pub data: DeviceOrHostAddressConstKHR,
41175 }
41176 impl fmt::Debug for AccelerationStructureGeometryInstancesDataKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41177     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41178         fmt.debug_struct("AccelerationStructureGeometryInstancesDataKHR")
41179             .field("s_type", &self.s_type)
41180             .field("p_next", &self.p_next)
41181             .field("array_of_pointers", &self.array_of_pointers)
41182             .field("data", &"union")
41183             .finish()
41184     }
41185 }
41186 impl ::std::default::Default for AccelerationStructureGeometryInstancesDataKHR {
default() -> AccelerationStructureGeometryInstancesDataKHR41187     fn default() -> AccelerationStructureGeometryInstancesDataKHR {
41188         AccelerationStructureGeometryInstancesDataKHR {
41189             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,
41190             p_next: ::std::ptr::null(),
41191             array_of_pointers: Bool32::default(),
41192             data: DeviceOrHostAddressConstKHR::default(),
41193         }
41194     }
41195 }
41196 impl AccelerationStructureGeometryInstancesDataKHR {
builder<'a>() -> AccelerationStructureGeometryInstancesDataKHRBuilder<'a>41197     pub fn builder<'a>() -> AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41198         AccelerationStructureGeometryInstancesDataKHRBuilder {
41199             inner: AccelerationStructureGeometryInstancesDataKHR::default(),
41200             marker: ::std::marker::PhantomData,
41201         }
41202     }
41203 }
41204 #[repr(transparent)]
41205 pub struct AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41206     inner: AccelerationStructureGeometryInstancesDataKHR,
41207     marker: ::std::marker::PhantomData<&'a ()>,
41208 }
41209 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
41210     type Target = AccelerationStructureGeometryInstancesDataKHR;
deref(&self) -> &Self::Target41211     fn deref(&self) -> &Self::Target {
41212         &self.inner
41213     }
41214 }
41215 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41216     fn deref_mut(&mut self) -> &mut Self::Target {
41217         &mut self.inner
41218     }
41219 }
41220 impl<'a> AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
array_of_pointers(mut self, array_of_pointers: bool) -> Self41221     pub fn array_of_pointers(mut self, array_of_pointers: bool) -> Self {
41222         self.inner.array_of_pointers = array_of_pointers.into();
41223         self
41224     }
data(mut self, data: DeviceOrHostAddressConstKHR) -> Self41225     pub fn data(mut self, data: DeviceOrHostAddressConstKHR) -> Self {
41226         self.inner.data = data;
41227         self
41228     }
41229     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41230     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41231     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryInstancesDataKHR41232     pub fn build(self) -> AccelerationStructureGeometryInstancesDataKHR {
41233         self.inner
41234     }
41235 }
41236 #[repr(C)]
41237 #[derive(Copy, Clone)]
41238 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryDataKHR.html>"]
41239 pub union AccelerationStructureGeometryDataKHR {
41240     pub triangles: AccelerationStructureGeometryTrianglesDataKHR,
41241     pub aabbs: AccelerationStructureGeometryAabbsDataKHR,
41242     pub instances: AccelerationStructureGeometryInstancesDataKHR,
41243 }
41244 impl ::std::default::Default for AccelerationStructureGeometryDataKHR {
default() -> AccelerationStructureGeometryDataKHR41245     fn default() -> AccelerationStructureGeometryDataKHR {
41246         unsafe { ::std::mem::zeroed() }
41247     }
41248 }
41249 #[repr(C)]
41250 #[derive(Copy, Clone)]
41251 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryKHR.html>"]
41252 pub struct AccelerationStructureGeometryKHR {
41253     pub s_type: StructureType,
41254     pub p_next: *const c_void,
41255     pub geometry_type: GeometryTypeKHR,
41256     pub geometry: AccelerationStructureGeometryDataKHR,
41257     pub flags: GeometryFlagsKHR,
41258 }
41259 impl fmt::Debug for AccelerationStructureGeometryKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41260     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41261         fmt.debug_struct("AccelerationStructureGeometryKHR")
41262             .field("s_type", &self.s_type)
41263             .field("p_next", &self.p_next)
41264             .field("geometry_type", &self.geometry_type)
41265             .field("geometry", &"union")
41266             .field("flags", &self.flags)
41267             .finish()
41268     }
41269 }
41270 impl ::std::default::Default for AccelerationStructureGeometryKHR {
default() -> AccelerationStructureGeometryKHR41271     fn default() -> AccelerationStructureGeometryKHR {
41272         AccelerationStructureGeometryKHR {
41273             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR,
41274             p_next: ::std::ptr::null(),
41275             geometry_type: GeometryTypeKHR::default(),
41276             geometry: AccelerationStructureGeometryDataKHR::default(),
41277             flags: GeometryFlagsKHR::default(),
41278         }
41279     }
41280 }
41281 impl AccelerationStructureGeometryKHR {
builder<'a>() -> AccelerationStructureGeometryKHRBuilder<'a>41282     pub fn builder<'a>() -> AccelerationStructureGeometryKHRBuilder<'a> {
41283         AccelerationStructureGeometryKHRBuilder {
41284             inner: AccelerationStructureGeometryKHR::default(),
41285             marker: ::std::marker::PhantomData,
41286         }
41287     }
41288 }
41289 #[repr(transparent)]
41290 pub struct AccelerationStructureGeometryKHRBuilder<'a> {
41291     inner: AccelerationStructureGeometryKHR,
41292     marker: ::std::marker::PhantomData<&'a ()>,
41293 }
41294 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryKHRBuilder<'a> {
41295     type Target = AccelerationStructureGeometryKHR;
deref(&self) -> &Self::Target41296     fn deref(&self) -> &Self::Target {
41297         &self.inner
41298     }
41299 }
41300 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41301     fn deref_mut(&mut self) -> &mut Self::Target {
41302         &mut self.inner
41303     }
41304 }
41305 impl<'a> AccelerationStructureGeometryKHRBuilder<'a> {
geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self41306     pub fn geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self {
41307         self.inner.geometry_type = geometry_type;
41308         self
41309     }
geometry(mut self, geometry: AccelerationStructureGeometryDataKHR) -> Self41310     pub fn geometry(mut self, geometry: AccelerationStructureGeometryDataKHR) -> Self {
41311         self.inner.geometry = geometry;
41312         self
41313     }
flags(mut self, flags: GeometryFlagsKHR) -> Self41314     pub fn flags(mut self, flags: GeometryFlagsKHR) -> Self {
41315         self.inner.flags = flags;
41316         self
41317     }
41318     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41319     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41320     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryKHR41321     pub fn build(self) -> AccelerationStructureGeometryKHR {
41322         self.inner
41323     }
41324 }
41325 #[repr(C)]
41326 #[derive(Copy, Clone)]
41327 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html>"]
41328 pub struct AccelerationStructureBuildGeometryInfoKHR {
41329     pub s_type: StructureType,
41330     pub p_next: *const c_void,
41331     pub ty: AccelerationStructureTypeKHR,
41332     pub flags: BuildAccelerationStructureFlagsKHR,
41333     pub mode: BuildAccelerationStructureModeKHR,
41334     pub src_acceleration_structure: AccelerationStructureKHR,
41335     pub dst_acceleration_structure: AccelerationStructureKHR,
41336     pub geometry_count: u32,
41337     pub p_geometries: *const AccelerationStructureGeometryKHR,
41338     pub pp_geometries: *const *const AccelerationStructureGeometryKHR,
41339     pub scratch_data: DeviceOrHostAddressKHR,
41340 }
41341 impl fmt::Debug for AccelerationStructureBuildGeometryInfoKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41342     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41343         fmt.debug_struct("AccelerationStructureBuildGeometryInfoKHR")
41344             .field("s_type", &self.s_type)
41345             .field("p_next", &self.p_next)
41346             .field("ty", &self.ty)
41347             .field("flags", &self.flags)
41348             .field("mode", &self.mode)
41349             .field(
41350                 "src_acceleration_structure",
41351                 &self.src_acceleration_structure,
41352             )
41353             .field(
41354                 "dst_acceleration_structure",
41355                 &self.dst_acceleration_structure,
41356             )
41357             .field("geometry_count", &self.geometry_count)
41358             .field("p_geometries", &self.p_geometries)
41359             .field("pp_geometries", &self.pp_geometries)
41360             .field("scratch_data", &"union")
41361             .finish()
41362     }
41363 }
41364 impl ::std::default::Default for AccelerationStructureBuildGeometryInfoKHR {
default() -> AccelerationStructureBuildGeometryInfoKHR41365     fn default() -> AccelerationStructureBuildGeometryInfoKHR {
41366         AccelerationStructureBuildGeometryInfoKHR {
41367             s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,
41368             p_next: ::std::ptr::null(),
41369             ty: AccelerationStructureTypeKHR::default(),
41370             flags: BuildAccelerationStructureFlagsKHR::default(),
41371             mode: BuildAccelerationStructureModeKHR::default(),
41372             src_acceleration_structure: AccelerationStructureKHR::default(),
41373             dst_acceleration_structure: AccelerationStructureKHR::default(),
41374             geometry_count: u32::default(),
41375             p_geometries: ::std::ptr::null(),
41376             pp_geometries: ::std::ptr::null(),
41377             scratch_data: DeviceOrHostAddressKHR::default(),
41378         }
41379     }
41380 }
41381 impl AccelerationStructureBuildGeometryInfoKHR {
builder<'a>() -> AccelerationStructureBuildGeometryInfoKHRBuilder<'a>41382     pub fn builder<'a>() -> AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41383         AccelerationStructureBuildGeometryInfoKHRBuilder {
41384             inner: AccelerationStructureBuildGeometryInfoKHR::default(),
41385             marker: ::std::marker::PhantomData,
41386         }
41387     }
41388 }
41389 #[repr(transparent)]
41390 pub struct AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41391     inner: AccelerationStructureBuildGeometryInfoKHR,
41392     marker: ::std::marker::PhantomData<&'a ()>,
41393 }
41394 impl<'a> ::std::ops::Deref for AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
41395     type Target = AccelerationStructureBuildGeometryInfoKHR;
deref(&self) -> &Self::Target41396     fn deref(&self) -> &Self::Target {
41397         &self.inner
41398     }
41399 }
41400 impl<'a> ::std::ops::DerefMut for AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41401     fn deref_mut(&mut self) -> &mut Self::Target {
41402         &mut self.inner
41403     }
41404 }
41405 impl<'a> AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
ty(mut self, ty: AccelerationStructureTypeKHR) -> Self41406     pub fn ty(mut self, ty: AccelerationStructureTypeKHR) -> Self {
41407         self.inner.ty = ty;
41408         self
41409     }
flags(mut self, flags: BuildAccelerationStructureFlagsKHR) -> Self41410     pub fn flags(mut self, flags: BuildAccelerationStructureFlagsKHR) -> Self {
41411         self.inner.flags = flags;
41412         self
41413     }
mode(mut self, mode: BuildAccelerationStructureModeKHR) -> Self41414     pub fn mode(mut self, mode: BuildAccelerationStructureModeKHR) -> Self {
41415         self.inner.mode = mode;
41416         self
41417     }
src_acceleration_structure( mut self, src_acceleration_structure: AccelerationStructureKHR, ) -> Self41418     pub fn src_acceleration_structure(
41419         mut self,
41420         src_acceleration_structure: AccelerationStructureKHR,
41421     ) -> Self {
41422         self.inner.src_acceleration_structure = src_acceleration_structure;
41423         self
41424     }
dst_acceleration_structure( mut self, dst_acceleration_structure: AccelerationStructureKHR, ) -> Self41425     pub fn dst_acceleration_structure(
41426         mut self,
41427         dst_acceleration_structure: AccelerationStructureKHR,
41428     ) -> Self {
41429         self.inner.dst_acceleration_structure = dst_acceleration_structure;
41430         self
41431     }
geometries(mut self, geometries: &'a [AccelerationStructureGeometryKHR]) -> Self41432     pub fn geometries(mut self, geometries: &'a [AccelerationStructureGeometryKHR]) -> Self {
41433         self.inner.geometry_count = geometries.len() as _;
41434         self.inner.p_geometries = geometries.as_ptr();
41435         self
41436     }
geometries_ptrs( mut self, geometries: &'a [&'a AccelerationStructureGeometryKHR], ) -> Self41437     pub fn geometries_ptrs(
41438         mut self,
41439         geometries: &'a [&'a AccelerationStructureGeometryKHR],
41440     ) -> Self {
41441         self.inner.geometry_count = geometries.len() as _;
41442         self.inner.pp_geometries = geometries.as_ptr() as *const *const _;
41443         self
41444     }
scratch_data(mut self, scratch_data: DeviceOrHostAddressKHR) -> Self41445     pub fn scratch_data(mut self, scratch_data: DeviceOrHostAddressKHR) -> Self {
41446         self.inner.scratch_data = scratch_data;
41447         self
41448     }
41449     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41450     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41451     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureBuildGeometryInfoKHR41452     pub fn build(self) -> AccelerationStructureBuildGeometryInfoKHR {
41453         self.inner
41454     }
41455 }
41456 #[repr(C)]
41457 #[derive(Copy, Clone, Default, Debug)]
41458 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildRangeInfoKHR.html>"]
41459 pub struct AccelerationStructureBuildRangeInfoKHR {
41460     pub primitive_count: u32,
41461     pub primitive_offset: u32,
41462     pub first_vertex: u32,
41463     pub transform_offset: u32,
41464 }
41465 impl AccelerationStructureBuildRangeInfoKHR {
builder<'a>() -> AccelerationStructureBuildRangeInfoKHRBuilder<'a>41466     pub fn builder<'a>() -> AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
41467         AccelerationStructureBuildRangeInfoKHRBuilder {
41468             inner: AccelerationStructureBuildRangeInfoKHR::default(),
41469             marker: ::std::marker::PhantomData,
41470         }
41471     }
41472 }
41473 #[repr(transparent)]
41474 pub struct AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
41475     inner: AccelerationStructureBuildRangeInfoKHR,
41476     marker: ::std::marker::PhantomData<&'a ()>,
41477 }
41478 impl<'a> ::std::ops::Deref for AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
41479     type Target = AccelerationStructureBuildRangeInfoKHR;
deref(&self) -> &Self::Target41480     fn deref(&self) -> &Self::Target {
41481         &self.inner
41482     }
41483 }
41484 impl<'a> ::std::ops::DerefMut for AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41485     fn deref_mut(&mut self) -> &mut Self::Target {
41486         &mut self.inner
41487     }
41488 }
41489 impl<'a> AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
primitive_count(mut self, primitive_count: u32) -> Self41490     pub fn primitive_count(mut self, primitive_count: u32) -> Self {
41491         self.inner.primitive_count = primitive_count;
41492         self
41493     }
primitive_offset(mut self, primitive_offset: u32) -> Self41494     pub fn primitive_offset(mut self, primitive_offset: u32) -> Self {
41495         self.inner.primitive_offset = primitive_offset;
41496         self
41497     }
first_vertex(mut self, first_vertex: u32) -> Self41498     pub fn first_vertex(mut self, first_vertex: u32) -> Self {
41499         self.inner.first_vertex = first_vertex;
41500         self
41501     }
transform_offset(mut self, transform_offset: u32) -> Self41502     pub fn transform_offset(mut self, transform_offset: u32) -> Self {
41503         self.inner.transform_offset = transform_offset;
41504         self
41505     }
41506     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41507     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41508     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureBuildRangeInfoKHR41509     pub fn build(self) -> AccelerationStructureBuildRangeInfoKHR {
41510         self.inner
41511     }
41512 }
41513 #[repr(C)]
41514 #[derive(Copy, Clone, Debug)]
41515 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureCreateInfoKHR.html>"]
41516 pub struct AccelerationStructureCreateInfoKHR {
41517     pub s_type: StructureType,
41518     pub p_next: *const c_void,
41519     pub create_flags: AccelerationStructureCreateFlagsKHR,
41520     pub buffer: Buffer,
41521     pub offset: DeviceSize,
41522     pub size: DeviceSize,
41523     pub ty: AccelerationStructureTypeKHR,
41524     pub device_address: DeviceAddress,
41525 }
41526 impl ::std::default::Default for AccelerationStructureCreateInfoKHR {
default() -> AccelerationStructureCreateInfoKHR41527     fn default() -> AccelerationStructureCreateInfoKHR {
41528         AccelerationStructureCreateInfoKHR {
41529             s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR,
41530             p_next: ::std::ptr::null(),
41531             create_flags: AccelerationStructureCreateFlagsKHR::default(),
41532             buffer: Buffer::default(),
41533             offset: DeviceSize::default(),
41534             size: DeviceSize::default(),
41535             ty: AccelerationStructureTypeKHR::default(),
41536             device_address: DeviceAddress::default(),
41537         }
41538     }
41539 }
41540 impl AccelerationStructureCreateInfoKHR {
builder<'a>() -> AccelerationStructureCreateInfoKHRBuilder<'a>41541     pub fn builder<'a>() -> AccelerationStructureCreateInfoKHRBuilder<'a> {
41542         AccelerationStructureCreateInfoKHRBuilder {
41543             inner: AccelerationStructureCreateInfoKHR::default(),
41544             marker: ::std::marker::PhantomData,
41545         }
41546     }
41547 }
41548 #[repr(transparent)]
41549 pub struct AccelerationStructureCreateInfoKHRBuilder<'a> {
41550     inner: AccelerationStructureCreateInfoKHR,
41551     marker: ::std::marker::PhantomData<&'a ()>,
41552 }
41553 pub unsafe trait ExtendsAccelerationStructureCreateInfoKHR {}
41554 impl<'a> ::std::ops::Deref for AccelerationStructureCreateInfoKHRBuilder<'a> {
41555     type Target = AccelerationStructureCreateInfoKHR;
deref(&self) -> &Self::Target41556     fn deref(&self) -> &Self::Target {
41557         &self.inner
41558     }
41559 }
41560 impl<'a> ::std::ops::DerefMut for AccelerationStructureCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41561     fn deref_mut(&mut self) -> &mut Self::Target {
41562         &mut self.inner
41563     }
41564 }
41565 impl<'a> AccelerationStructureCreateInfoKHRBuilder<'a> {
create_flags(mut self, create_flags: AccelerationStructureCreateFlagsKHR) -> Self41566     pub fn create_flags(mut self, create_flags: AccelerationStructureCreateFlagsKHR) -> Self {
41567         self.inner.create_flags = create_flags;
41568         self
41569     }
buffer(mut self, buffer: Buffer) -> Self41570     pub fn buffer(mut self, buffer: Buffer) -> Self {
41571         self.inner.buffer = buffer;
41572         self
41573     }
offset(mut self, offset: DeviceSize) -> Self41574     pub fn offset(mut self, offset: DeviceSize) -> Self {
41575         self.inner.offset = offset;
41576         self
41577     }
size(mut self, size: DeviceSize) -> Self41578     pub fn size(mut self, size: DeviceSize) -> Self {
41579         self.inner.size = size;
41580         self
41581     }
ty(mut self, ty: AccelerationStructureTypeKHR) -> Self41582     pub fn ty(mut self, ty: AccelerationStructureTypeKHR) -> Self {
41583         self.inner.ty = ty;
41584         self
41585     }
device_address(mut self, device_address: DeviceAddress) -> Self41586     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
41587         self.inner.device_address = device_address;
41588         self
41589     }
41590     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
41591     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
41592     #[doc = r" valid extension structs can be pushed into the chain."]
41593     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
41594     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAccelerationStructureCreateInfoKHR>( mut self, next: &'a mut T, ) -> Self41595     pub fn push_next<T: ExtendsAccelerationStructureCreateInfoKHR>(
41596         mut self,
41597         next: &'a mut T,
41598     ) -> Self {
41599         unsafe {
41600             let next_ptr = next as *mut T as *mut BaseOutStructure;
41601             let last_next = ptr_chain_iter(next).last().unwrap();
41602             (*last_next).p_next = self.inner.p_next as _;
41603             self.inner.p_next = next_ptr as _;
41604         }
41605         self
41606     }
41607     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41608     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41609     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureCreateInfoKHR41610     pub fn build(self) -> AccelerationStructureCreateInfoKHR {
41611         self.inner
41612     }
41613 }
41614 #[repr(C)]
41615 #[derive(Copy, Clone, Default, Debug)]
41616 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAabbPositionsKHR.html>"]
41617 pub struct AabbPositionsKHR {
41618     pub min_x: f32,
41619     pub min_y: f32,
41620     pub min_z: f32,
41621     pub max_x: f32,
41622     pub max_y: f32,
41623     pub max_z: f32,
41624 }
41625 impl AabbPositionsKHR {
builder<'a>() -> AabbPositionsKHRBuilder<'a>41626     pub fn builder<'a>() -> AabbPositionsKHRBuilder<'a> {
41627         AabbPositionsKHRBuilder {
41628             inner: AabbPositionsKHR::default(),
41629             marker: ::std::marker::PhantomData,
41630         }
41631     }
41632 }
41633 #[repr(transparent)]
41634 pub struct AabbPositionsKHRBuilder<'a> {
41635     inner: AabbPositionsKHR,
41636     marker: ::std::marker::PhantomData<&'a ()>,
41637 }
41638 impl<'a> ::std::ops::Deref for AabbPositionsKHRBuilder<'a> {
41639     type Target = AabbPositionsKHR;
deref(&self) -> &Self::Target41640     fn deref(&self) -> &Self::Target {
41641         &self.inner
41642     }
41643 }
41644 impl<'a> ::std::ops::DerefMut for AabbPositionsKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41645     fn deref_mut(&mut self) -> &mut Self::Target {
41646         &mut self.inner
41647     }
41648 }
41649 impl<'a> AabbPositionsKHRBuilder<'a> {
min_x(mut self, min_x: f32) -> Self41650     pub fn min_x(mut self, min_x: f32) -> Self {
41651         self.inner.min_x = min_x;
41652         self
41653     }
min_y(mut self, min_y: f32) -> Self41654     pub fn min_y(mut self, min_y: f32) -> Self {
41655         self.inner.min_y = min_y;
41656         self
41657     }
min_z(mut self, min_z: f32) -> Self41658     pub fn min_z(mut self, min_z: f32) -> Self {
41659         self.inner.min_z = min_z;
41660         self
41661     }
max_x(mut self, max_x: f32) -> Self41662     pub fn max_x(mut self, max_x: f32) -> Self {
41663         self.inner.max_x = max_x;
41664         self
41665     }
max_y(mut self, max_y: f32) -> Self41666     pub fn max_y(mut self, max_y: f32) -> Self {
41667         self.inner.max_y = max_y;
41668         self
41669     }
max_z(mut self, max_z: f32) -> Self41670     pub fn max_z(mut self, max_z: f32) -> Self {
41671         self.inner.max_z = max_z;
41672         self
41673     }
41674     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41675     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41676     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AabbPositionsKHR41677     pub fn build(self) -> AabbPositionsKHR {
41678         self.inner
41679     }
41680 }
41681 #[repr(C)]
41682 #[derive(Copy, Clone)]
41683 pub struct TransformMatrixKHR {
41684     pub matrix: [f32; 12],
41685 }
41686 #[repr(C)]
41687 #[derive(Copy, Clone)]
41688 pub union AccelerationStructureReferenceKHR {
41689     pub device_handle: DeviceAddress,
41690     pub host_handle: AccelerationStructureKHR,
41691 }
41692 #[repr(C)]
41693 #[derive(Copy, Clone)]
41694 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureInstanceKHR.html>"]
41695 pub struct AccelerationStructureInstanceKHR {
41696     pub transform: TransformMatrixKHR,
41697     pub instance_custom_index_and_mask: u32,
41698     pub instance_shader_binding_table_record_offset_and_flags: u32,
41699     pub acceleration_structure_reference: AccelerationStructureReferenceKHR,
41700 }
41701 #[repr(C)]
41702 #[derive(Copy, Clone, Debug)]
41703 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html>"]
41704 pub struct AccelerationStructureDeviceAddressInfoKHR {
41705     pub s_type: StructureType,
41706     pub p_next: *const c_void,
41707     pub acceleration_structure: AccelerationStructureKHR,
41708 }
41709 impl ::std::default::Default for AccelerationStructureDeviceAddressInfoKHR {
default() -> AccelerationStructureDeviceAddressInfoKHR41710     fn default() -> AccelerationStructureDeviceAddressInfoKHR {
41711         AccelerationStructureDeviceAddressInfoKHR {
41712             s_type: StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,
41713             p_next: ::std::ptr::null(),
41714             acceleration_structure: AccelerationStructureKHR::default(),
41715         }
41716     }
41717 }
41718 impl AccelerationStructureDeviceAddressInfoKHR {
builder<'a>() -> AccelerationStructureDeviceAddressInfoKHRBuilder<'a>41719     pub fn builder<'a>() -> AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
41720         AccelerationStructureDeviceAddressInfoKHRBuilder {
41721             inner: AccelerationStructureDeviceAddressInfoKHR::default(),
41722             marker: ::std::marker::PhantomData,
41723         }
41724     }
41725 }
41726 #[repr(transparent)]
41727 pub struct AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
41728     inner: AccelerationStructureDeviceAddressInfoKHR,
41729     marker: ::std::marker::PhantomData<&'a ()>,
41730 }
41731 impl<'a> ::std::ops::Deref for AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
41732     type Target = AccelerationStructureDeviceAddressInfoKHR;
deref(&self) -> &Self::Target41733     fn deref(&self) -> &Self::Target {
41734         &self.inner
41735     }
41736 }
41737 impl<'a> ::std::ops::DerefMut for AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41738     fn deref_mut(&mut self) -> &mut Self::Target {
41739         &mut self.inner
41740     }
41741 }
41742 impl<'a> AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
acceleration_structure( mut self, acceleration_structure: AccelerationStructureKHR, ) -> Self41743     pub fn acceleration_structure(
41744         mut self,
41745         acceleration_structure: AccelerationStructureKHR,
41746     ) -> Self {
41747         self.inner.acceleration_structure = acceleration_structure;
41748         self
41749     }
41750     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41751     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41752     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureDeviceAddressInfoKHR41753     pub fn build(self) -> AccelerationStructureDeviceAddressInfoKHR {
41754         self.inner
41755     }
41756 }
41757 #[repr(C)]
41758 #[derive(Copy, Clone, Debug)]
41759 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureVersionInfoKHR.html>"]
41760 pub struct AccelerationStructureVersionInfoKHR {
41761     pub s_type: StructureType,
41762     pub p_next: *const c_void,
41763     pub p_version_data: *const [u8; 2 * UUID_SIZE],
41764 }
41765 impl ::std::default::Default for AccelerationStructureVersionInfoKHR {
default() -> AccelerationStructureVersionInfoKHR41766     fn default() -> AccelerationStructureVersionInfoKHR {
41767         AccelerationStructureVersionInfoKHR {
41768             s_type: StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR,
41769             p_next: ::std::ptr::null(),
41770             p_version_data: ::std::ptr::null(),
41771         }
41772     }
41773 }
41774 impl AccelerationStructureVersionInfoKHR {
builder<'a>() -> AccelerationStructureVersionInfoKHRBuilder<'a>41775     pub fn builder<'a>() -> AccelerationStructureVersionInfoKHRBuilder<'a> {
41776         AccelerationStructureVersionInfoKHRBuilder {
41777             inner: AccelerationStructureVersionInfoKHR::default(),
41778             marker: ::std::marker::PhantomData,
41779         }
41780     }
41781 }
41782 #[repr(transparent)]
41783 pub struct AccelerationStructureVersionInfoKHRBuilder<'a> {
41784     inner: AccelerationStructureVersionInfoKHR,
41785     marker: ::std::marker::PhantomData<&'a ()>,
41786 }
41787 impl<'a> ::std::ops::Deref for AccelerationStructureVersionInfoKHRBuilder<'a> {
41788     type Target = AccelerationStructureVersionInfoKHR;
deref(&self) -> &Self::Target41789     fn deref(&self) -> &Self::Target {
41790         &self.inner
41791     }
41792 }
41793 impl<'a> ::std::ops::DerefMut for AccelerationStructureVersionInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41794     fn deref_mut(&mut self) -> &mut Self::Target {
41795         &mut self.inner
41796     }
41797 }
41798 impl<'a> AccelerationStructureVersionInfoKHRBuilder<'a> {
version_data(mut self, version_data: &'a [u8; 2 * UUID_SIZE]) -> Self41799     pub fn version_data(mut self, version_data: &'a [u8; 2 * UUID_SIZE]) -> Self {
41800         self.inner.p_version_data = version_data as *const [u8; 2 * UUID_SIZE];
41801         self
41802     }
41803     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41804     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41805     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureVersionInfoKHR41806     pub fn build(self) -> AccelerationStructureVersionInfoKHR {
41807         self.inner
41808     }
41809 }
41810 #[repr(C)]
41811 #[derive(Copy, Clone, Debug)]
41812 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyAccelerationStructureInfoKHR.html>"]
41813 pub struct CopyAccelerationStructureInfoKHR {
41814     pub s_type: StructureType,
41815     pub p_next: *const c_void,
41816     pub src: AccelerationStructureKHR,
41817     pub dst: AccelerationStructureKHR,
41818     pub mode: CopyAccelerationStructureModeKHR,
41819 }
41820 impl ::std::default::Default for CopyAccelerationStructureInfoKHR {
default() -> CopyAccelerationStructureInfoKHR41821     fn default() -> CopyAccelerationStructureInfoKHR {
41822         CopyAccelerationStructureInfoKHR {
41823             s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
41824             p_next: ::std::ptr::null(),
41825             src: AccelerationStructureKHR::default(),
41826             dst: AccelerationStructureKHR::default(),
41827             mode: CopyAccelerationStructureModeKHR::default(),
41828         }
41829     }
41830 }
41831 impl CopyAccelerationStructureInfoKHR {
builder<'a>() -> CopyAccelerationStructureInfoKHRBuilder<'a>41832     pub fn builder<'a>() -> CopyAccelerationStructureInfoKHRBuilder<'a> {
41833         CopyAccelerationStructureInfoKHRBuilder {
41834             inner: CopyAccelerationStructureInfoKHR::default(),
41835             marker: ::std::marker::PhantomData,
41836         }
41837     }
41838 }
41839 #[repr(transparent)]
41840 pub struct CopyAccelerationStructureInfoKHRBuilder<'a> {
41841     inner: CopyAccelerationStructureInfoKHR,
41842     marker: ::std::marker::PhantomData<&'a ()>,
41843 }
41844 impl<'a> ::std::ops::Deref for CopyAccelerationStructureInfoKHRBuilder<'a> {
41845     type Target = CopyAccelerationStructureInfoKHR;
deref(&self) -> &Self::Target41846     fn deref(&self) -> &Self::Target {
41847         &self.inner
41848     }
41849 }
41850 impl<'a> ::std::ops::DerefMut for CopyAccelerationStructureInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41851     fn deref_mut(&mut self) -> &mut Self::Target {
41852         &mut self.inner
41853     }
41854 }
41855 impl<'a> CopyAccelerationStructureInfoKHRBuilder<'a> {
src(mut self, src: AccelerationStructureKHR) -> Self41856     pub fn src(mut self, src: AccelerationStructureKHR) -> Self {
41857         self.inner.src = src;
41858         self
41859     }
dst(mut self, dst: AccelerationStructureKHR) -> Self41860     pub fn dst(mut self, dst: AccelerationStructureKHR) -> Self {
41861         self.inner.dst = dst;
41862         self
41863     }
mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self41864     pub fn mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self {
41865         self.inner.mode = mode;
41866         self
41867     }
41868     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41869     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41870     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyAccelerationStructureInfoKHR41871     pub fn build(self) -> CopyAccelerationStructureInfoKHR {
41872         self.inner
41873     }
41874 }
41875 #[repr(C)]
41876 #[derive(Copy, Clone)]
41877 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>"]
41878 pub struct CopyAccelerationStructureToMemoryInfoKHR {
41879     pub s_type: StructureType,
41880     pub p_next: *const c_void,
41881     pub src: AccelerationStructureKHR,
41882     pub dst: DeviceOrHostAddressKHR,
41883     pub mode: CopyAccelerationStructureModeKHR,
41884 }
41885 impl fmt::Debug for CopyAccelerationStructureToMemoryInfoKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41886     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41887         fmt.debug_struct("CopyAccelerationStructureToMemoryInfoKHR")
41888             .field("s_type", &self.s_type)
41889             .field("p_next", &self.p_next)
41890             .field("src", &self.src)
41891             .field("dst", &"union")
41892             .field("mode", &self.mode)
41893             .finish()
41894     }
41895 }
41896 impl ::std::default::Default for CopyAccelerationStructureToMemoryInfoKHR {
default() -> CopyAccelerationStructureToMemoryInfoKHR41897     fn default() -> CopyAccelerationStructureToMemoryInfoKHR {
41898         CopyAccelerationStructureToMemoryInfoKHR {
41899             s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
41900             p_next: ::std::ptr::null(),
41901             src: AccelerationStructureKHR::default(),
41902             dst: DeviceOrHostAddressKHR::default(),
41903             mode: CopyAccelerationStructureModeKHR::default(),
41904         }
41905     }
41906 }
41907 impl CopyAccelerationStructureToMemoryInfoKHR {
builder<'a>() -> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a>41908     pub fn builder<'a>() -> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
41909         CopyAccelerationStructureToMemoryInfoKHRBuilder {
41910             inner: CopyAccelerationStructureToMemoryInfoKHR::default(),
41911             marker: ::std::marker::PhantomData,
41912         }
41913     }
41914 }
41915 #[repr(transparent)]
41916 pub struct CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
41917     inner: CopyAccelerationStructureToMemoryInfoKHR,
41918     marker: ::std::marker::PhantomData<&'a ()>,
41919 }
41920 impl<'a> ::std::ops::Deref for CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
41921     type Target = CopyAccelerationStructureToMemoryInfoKHR;
deref(&self) -> &Self::Target41922     fn deref(&self) -> &Self::Target {
41923         &self.inner
41924     }
41925 }
41926 impl<'a> ::std::ops::DerefMut for CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41927     fn deref_mut(&mut self) -> &mut Self::Target {
41928         &mut self.inner
41929     }
41930 }
41931 impl<'a> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
src(mut self, src: AccelerationStructureKHR) -> Self41932     pub fn src(mut self, src: AccelerationStructureKHR) -> Self {
41933         self.inner.src = src;
41934         self
41935     }
dst(mut self, dst: DeviceOrHostAddressKHR) -> Self41936     pub fn dst(mut self, dst: DeviceOrHostAddressKHR) -> Self {
41937         self.inner.dst = dst;
41938         self
41939     }
mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self41940     pub fn mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self {
41941         self.inner.mode = mode;
41942         self
41943     }
41944     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41945     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41946     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyAccelerationStructureToMemoryInfoKHR41947     pub fn build(self) -> CopyAccelerationStructureToMemoryInfoKHR {
41948         self.inner
41949     }
41950 }
41951 #[repr(C)]
41952 #[derive(Copy, Clone)]
41953 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>"]
41954 pub struct CopyMemoryToAccelerationStructureInfoKHR {
41955     pub s_type: StructureType,
41956     pub p_next: *const c_void,
41957     pub src: DeviceOrHostAddressConstKHR,
41958     pub dst: AccelerationStructureKHR,
41959     pub mode: CopyAccelerationStructureModeKHR,
41960 }
41961 impl fmt::Debug for CopyMemoryToAccelerationStructureInfoKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41962     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41963         fmt.debug_struct("CopyMemoryToAccelerationStructureInfoKHR")
41964             .field("s_type", &self.s_type)
41965             .field("p_next", &self.p_next)
41966             .field("src", &"union")
41967             .field("dst", &self.dst)
41968             .field("mode", &self.mode)
41969             .finish()
41970     }
41971 }
41972 impl ::std::default::Default for CopyMemoryToAccelerationStructureInfoKHR {
default() -> CopyMemoryToAccelerationStructureInfoKHR41973     fn default() -> CopyMemoryToAccelerationStructureInfoKHR {
41974         CopyMemoryToAccelerationStructureInfoKHR {
41975             s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
41976             p_next: ::std::ptr::null(),
41977             src: DeviceOrHostAddressConstKHR::default(),
41978             dst: AccelerationStructureKHR::default(),
41979             mode: CopyAccelerationStructureModeKHR::default(),
41980         }
41981     }
41982 }
41983 impl CopyMemoryToAccelerationStructureInfoKHR {
builder<'a>() -> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a>41984     pub fn builder<'a>() -> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
41985         CopyMemoryToAccelerationStructureInfoKHRBuilder {
41986             inner: CopyMemoryToAccelerationStructureInfoKHR::default(),
41987             marker: ::std::marker::PhantomData,
41988         }
41989     }
41990 }
41991 #[repr(transparent)]
41992 pub struct CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
41993     inner: CopyMemoryToAccelerationStructureInfoKHR,
41994     marker: ::std::marker::PhantomData<&'a ()>,
41995 }
41996 impl<'a> ::std::ops::Deref for CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
41997     type Target = CopyMemoryToAccelerationStructureInfoKHR;
deref(&self) -> &Self::Target41998     fn deref(&self) -> &Self::Target {
41999         &self.inner
42000     }
42001 }
42002 impl<'a> ::std::ops::DerefMut for CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42003     fn deref_mut(&mut self) -> &mut Self::Target {
42004         &mut self.inner
42005     }
42006 }
42007 impl<'a> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
src(mut self, src: DeviceOrHostAddressConstKHR) -> Self42008     pub fn src(mut self, src: DeviceOrHostAddressConstKHR) -> Self {
42009         self.inner.src = src;
42010         self
42011     }
dst(mut self, dst: AccelerationStructureKHR) -> Self42012     pub fn dst(mut self, dst: AccelerationStructureKHR) -> Self {
42013         self.inner.dst = dst;
42014         self
42015     }
mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self42016     pub fn mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self {
42017         self.inner.mode = mode;
42018         self
42019     }
42020     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42021     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42022     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyMemoryToAccelerationStructureInfoKHR42023     pub fn build(self) -> CopyMemoryToAccelerationStructureInfoKHR {
42024         self.inner
42025     }
42026 }
42027 #[repr(C)]
42028 #[derive(Copy, Clone, Debug)]
42029 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>"]
42030 pub struct RayTracingPipelineInterfaceCreateInfoKHR {
42031     pub s_type: StructureType,
42032     pub p_next: *const c_void,
42033     pub max_pipeline_ray_payload_size: u32,
42034     pub max_pipeline_ray_hit_attribute_size: u32,
42035 }
42036 impl ::std::default::Default for RayTracingPipelineInterfaceCreateInfoKHR {
default() -> RayTracingPipelineInterfaceCreateInfoKHR42037     fn default() -> RayTracingPipelineInterfaceCreateInfoKHR {
42038         RayTracingPipelineInterfaceCreateInfoKHR {
42039             s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
42040             p_next: ::std::ptr::null(),
42041             max_pipeline_ray_payload_size: u32::default(),
42042             max_pipeline_ray_hit_attribute_size: u32::default(),
42043         }
42044     }
42045 }
42046 impl RayTracingPipelineInterfaceCreateInfoKHR {
builder<'a>() -> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a>42047     pub fn builder<'a>() -> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42048         RayTracingPipelineInterfaceCreateInfoKHRBuilder {
42049             inner: RayTracingPipelineInterfaceCreateInfoKHR::default(),
42050             marker: ::std::marker::PhantomData,
42051         }
42052     }
42053 }
42054 #[repr(transparent)]
42055 pub struct RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42056     inner: RayTracingPipelineInterfaceCreateInfoKHR,
42057     marker: ::std::marker::PhantomData<&'a ()>,
42058 }
42059 impl<'a> ::std::ops::Deref for RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
42060     type Target = RayTracingPipelineInterfaceCreateInfoKHR;
deref(&self) -> &Self::Target42061     fn deref(&self) -> &Self::Target {
42062         &self.inner
42063     }
42064 }
42065 impl<'a> ::std::ops::DerefMut for RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42066     fn deref_mut(&mut self) -> &mut Self::Target {
42067         &mut self.inner
42068     }
42069 }
42070 impl<'a> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
max_pipeline_ray_payload_size(mut self, max_pipeline_ray_payload_size: u32) -> Self42071     pub fn max_pipeline_ray_payload_size(mut self, max_pipeline_ray_payload_size: u32) -> Self {
42072         self.inner.max_pipeline_ray_payload_size = max_pipeline_ray_payload_size;
42073         self
42074     }
max_pipeline_ray_hit_attribute_size( mut self, max_pipeline_ray_hit_attribute_size: u32, ) -> Self42075     pub fn max_pipeline_ray_hit_attribute_size(
42076         mut self,
42077         max_pipeline_ray_hit_attribute_size: u32,
42078     ) -> Self {
42079         self.inner.max_pipeline_ray_hit_attribute_size = max_pipeline_ray_hit_attribute_size;
42080         self
42081     }
42082     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42083     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42084     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingPipelineInterfaceCreateInfoKHR42085     pub fn build(self) -> RayTracingPipelineInterfaceCreateInfoKHR {
42086         self.inner
42087     }
42088 }
42089 #[repr(C)]
42090 #[derive(Copy, Clone, Debug)]
42091 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLibraryCreateInfoKHR.html>"]
42092 pub struct PipelineLibraryCreateInfoKHR {
42093     pub s_type: StructureType,
42094     pub p_next: *const c_void,
42095     pub library_count: u32,
42096     pub p_libraries: *const Pipeline,
42097 }
42098 impl ::std::default::Default for PipelineLibraryCreateInfoKHR {
default() -> PipelineLibraryCreateInfoKHR42099     fn default() -> PipelineLibraryCreateInfoKHR {
42100         PipelineLibraryCreateInfoKHR {
42101             s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
42102             p_next: ::std::ptr::null(),
42103             library_count: u32::default(),
42104             p_libraries: ::std::ptr::null(),
42105         }
42106     }
42107 }
42108 impl PipelineLibraryCreateInfoKHR {
builder<'a>() -> PipelineLibraryCreateInfoKHRBuilder<'a>42109     pub fn builder<'a>() -> PipelineLibraryCreateInfoKHRBuilder<'a> {
42110         PipelineLibraryCreateInfoKHRBuilder {
42111             inner: PipelineLibraryCreateInfoKHR::default(),
42112             marker: ::std::marker::PhantomData,
42113         }
42114     }
42115 }
42116 #[repr(transparent)]
42117 pub struct PipelineLibraryCreateInfoKHRBuilder<'a> {
42118     inner: PipelineLibraryCreateInfoKHR,
42119     marker: ::std::marker::PhantomData<&'a ()>,
42120 }
42121 impl<'a> ::std::ops::Deref for PipelineLibraryCreateInfoKHRBuilder<'a> {
42122     type Target = PipelineLibraryCreateInfoKHR;
deref(&self) -> &Self::Target42123     fn deref(&self) -> &Self::Target {
42124         &self.inner
42125     }
42126 }
42127 impl<'a> ::std::ops::DerefMut for PipelineLibraryCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42128     fn deref_mut(&mut self) -> &mut Self::Target {
42129         &mut self.inner
42130     }
42131 }
42132 impl<'a> PipelineLibraryCreateInfoKHRBuilder<'a> {
libraries(mut self, libraries: &'a [Pipeline]) -> Self42133     pub fn libraries(mut self, libraries: &'a [Pipeline]) -> Self {
42134         self.inner.library_count = libraries.len() as _;
42135         self.inner.p_libraries = libraries.as_ptr();
42136         self
42137     }
42138     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42139     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42140     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineLibraryCreateInfoKHR42141     pub fn build(self) -> PipelineLibraryCreateInfoKHR {
42142         self.inner
42143     }
42144 }
42145 #[repr(C)]
42146 #[derive(Copy, Clone, Debug)]
42147 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>"]
42148 pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
42149     pub s_type: StructureType,
42150     pub p_next: *mut c_void,
42151     pub extended_dynamic_state: Bool32,
42152 }
42153 impl ::std::default::Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
default() -> PhysicalDeviceExtendedDynamicStateFeaturesEXT42154     fn default() -> PhysicalDeviceExtendedDynamicStateFeaturesEXT {
42155         PhysicalDeviceExtendedDynamicStateFeaturesEXT {
42156             s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
42157             p_next: ::std::ptr::null_mut(),
42158             extended_dynamic_state: Bool32::default(),
42159         }
42160     }
42161 }
42162 impl PhysicalDeviceExtendedDynamicStateFeaturesEXT {
builder<'a>() -> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a>42163     pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42164         PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder {
42165             inner: PhysicalDeviceExtendedDynamicStateFeaturesEXT::default(),
42166             marker: ::std::marker::PhantomData,
42167         }
42168     }
42169 }
42170 #[repr(transparent)]
42171 pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42172     inner: PhysicalDeviceExtendedDynamicStateFeaturesEXT,
42173     marker: ::std::marker::PhantomData<&'a ()>,
42174 }
42175 unsafe impl ExtendsPhysicalDeviceFeatures2
42176     for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'_>
42177 {
42178 }
42179 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
42180 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'_> {}
42181 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
42182 impl<'a> ::std::ops::Deref for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
42183     type Target = PhysicalDeviceExtendedDynamicStateFeaturesEXT;
deref(&self) -> &Self::Target42184     fn deref(&self) -> &Self::Target {
42185         &self.inner
42186     }
42187 }
42188 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42189     fn deref_mut(&mut self) -> &mut Self::Target {
42190         &mut self.inner
42191     }
42192 }
42193 impl<'a> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
extended_dynamic_state(mut self, extended_dynamic_state: bool) -> Self42194     pub fn extended_dynamic_state(mut self, extended_dynamic_state: bool) -> Self {
42195         self.inner.extended_dynamic_state = extended_dynamic_state.into();
42196         self
42197     }
42198     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42199     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42200     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExtendedDynamicStateFeaturesEXT42201     pub fn build(self) -> PhysicalDeviceExtendedDynamicStateFeaturesEXT {
42202         self.inner
42203     }
42204 }
42205 #[repr(C)]
42206 #[derive(Copy, Clone, Debug)]
42207 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>"]
42208 pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
42209     pub s_type: StructureType,
42210     pub p_next: *mut c_void,
42211     pub extended_dynamic_state2: Bool32,
42212     pub extended_dynamic_state2_logic_op: Bool32,
42213     pub extended_dynamic_state2_patch_control_points: Bool32,
42214 }
42215 impl ::std::default::Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
default() -> PhysicalDeviceExtendedDynamicState2FeaturesEXT42216     fn default() -> PhysicalDeviceExtendedDynamicState2FeaturesEXT {
42217         PhysicalDeviceExtendedDynamicState2FeaturesEXT {
42218             s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
42219             p_next: ::std::ptr::null_mut(),
42220             extended_dynamic_state2: Bool32::default(),
42221             extended_dynamic_state2_logic_op: Bool32::default(),
42222             extended_dynamic_state2_patch_control_points: Bool32::default(),
42223         }
42224     }
42225 }
42226 impl PhysicalDeviceExtendedDynamicState2FeaturesEXT {
builder<'a>() -> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a>42227     pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42228         PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder {
42229             inner: PhysicalDeviceExtendedDynamicState2FeaturesEXT::default(),
42230             marker: ::std::marker::PhantomData,
42231         }
42232     }
42233 }
42234 #[repr(transparent)]
42235 pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42236     inner: PhysicalDeviceExtendedDynamicState2FeaturesEXT,
42237     marker: ::std::marker::PhantomData<&'a ()>,
42238 }
42239 unsafe impl ExtendsPhysicalDeviceFeatures2
42240     for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'_>
42241 {
42242 }
42243 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
42244 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'_> {}
42245 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
42246 impl<'a> ::std::ops::Deref for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
42247     type Target = PhysicalDeviceExtendedDynamicState2FeaturesEXT;
deref(&self) -> &Self::Target42248     fn deref(&self) -> &Self::Target {
42249         &self.inner
42250     }
42251 }
42252 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42253     fn deref_mut(&mut self) -> &mut Self::Target {
42254         &mut self.inner
42255     }
42256 }
42257 impl<'a> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
extended_dynamic_state2(mut self, extended_dynamic_state2: bool) -> Self42258     pub fn extended_dynamic_state2(mut self, extended_dynamic_state2: bool) -> Self {
42259         self.inner.extended_dynamic_state2 = extended_dynamic_state2.into();
42260         self
42261     }
extended_dynamic_state2_logic_op( mut self, extended_dynamic_state2_logic_op: bool, ) -> Self42262     pub fn extended_dynamic_state2_logic_op(
42263         mut self,
42264         extended_dynamic_state2_logic_op: bool,
42265     ) -> Self {
42266         self.inner.extended_dynamic_state2_logic_op = extended_dynamic_state2_logic_op.into();
42267         self
42268     }
extended_dynamic_state2_patch_control_points( mut self, extended_dynamic_state2_patch_control_points: bool, ) -> Self42269     pub fn extended_dynamic_state2_patch_control_points(
42270         mut self,
42271         extended_dynamic_state2_patch_control_points: bool,
42272     ) -> Self {
42273         self.inner.extended_dynamic_state2_patch_control_points =
42274             extended_dynamic_state2_patch_control_points.into();
42275         self
42276     }
42277     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42278     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42279     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExtendedDynamicState2FeaturesEXT42280     pub fn build(self) -> PhysicalDeviceExtendedDynamicState2FeaturesEXT {
42281         self.inner
42282     }
42283 }
42284 #[repr(C)]
42285 #[derive(Copy, Clone, Debug)]
42286 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassTransformBeginInfoQCOM.html>"]
42287 pub struct RenderPassTransformBeginInfoQCOM {
42288     pub s_type: StructureType,
42289     pub p_next: *mut c_void,
42290     pub transform: SurfaceTransformFlagsKHR,
42291 }
42292 impl ::std::default::Default for RenderPassTransformBeginInfoQCOM {
default() -> RenderPassTransformBeginInfoQCOM42293     fn default() -> RenderPassTransformBeginInfoQCOM {
42294         RenderPassTransformBeginInfoQCOM {
42295             s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
42296             p_next: ::std::ptr::null_mut(),
42297             transform: SurfaceTransformFlagsKHR::default(),
42298         }
42299     }
42300 }
42301 impl RenderPassTransformBeginInfoQCOM {
builder<'a>() -> RenderPassTransformBeginInfoQCOMBuilder<'a>42302     pub fn builder<'a>() -> RenderPassTransformBeginInfoQCOMBuilder<'a> {
42303         RenderPassTransformBeginInfoQCOMBuilder {
42304             inner: RenderPassTransformBeginInfoQCOM::default(),
42305             marker: ::std::marker::PhantomData,
42306         }
42307     }
42308 }
42309 #[repr(transparent)]
42310 pub struct RenderPassTransformBeginInfoQCOMBuilder<'a> {
42311     inner: RenderPassTransformBeginInfoQCOM,
42312     marker: ::std::marker::PhantomData<&'a ()>,
42313 }
42314 unsafe impl ExtendsRenderPassBeginInfo for RenderPassTransformBeginInfoQCOMBuilder<'_> {}
42315 unsafe impl ExtendsRenderPassBeginInfo for RenderPassTransformBeginInfoQCOM {}
42316 impl<'a> ::std::ops::Deref for RenderPassTransformBeginInfoQCOMBuilder<'a> {
42317     type Target = RenderPassTransformBeginInfoQCOM;
deref(&self) -> &Self::Target42318     fn deref(&self) -> &Self::Target {
42319         &self.inner
42320     }
42321 }
42322 impl<'a> ::std::ops::DerefMut for RenderPassTransformBeginInfoQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42323     fn deref_mut(&mut self) -> &mut Self::Target {
42324         &mut self.inner
42325     }
42326 }
42327 impl<'a> RenderPassTransformBeginInfoQCOMBuilder<'a> {
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self42328     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
42329         self.inner.transform = transform;
42330         self
42331     }
42332     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42333     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42334     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassTransformBeginInfoQCOM42335     pub fn build(self) -> RenderPassTransformBeginInfoQCOM {
42336         self.inner
42337     }
42338 }
42339 #[repr(C)]
42340 #[derive(Copy, Clone, Debug)]
42341 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyCommandTransformInfoQCOM.html>"]
42342 pub struct CopyCommandTransformInfoQCOM {
42343     pub s_type: StructureType,
42344     pub p_next: *const c_void,
42345     pub transform: SurfaceTransformFlagsKHR,
42346 }
42347 impl ::std::default::Default for CopyCommandTransformInfoQCOM {
default() -> CopyCommandTransformInfoQCOM42348     fn default() -> CopyCommandTransformInfoQCOM {
42349         CopyCommandTransformInfoQCOM {
42350             s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
42351             p_next: ::std::ptr::null(),
42352             transform: SurfaceTransformFlagsKHR::default(),
42353         }
42354     }
42355 }
42356 impl CopyCommandTransformInfoQCOM {
builder<'a>() -> CopyCommandTransformInfoQCOMBuilder<'a>42357     pub fn builder<'a>() -> CopyCommandTransformInfoQCOMBuilder<'a> {
42358         CopyCommandTransformInfoQCOMBuilder {
42359             inner: CopyCommandTransformInfoQCOM::default(),
42360             marker: ::std::marker::PhantomData,
42361         }
42362     }
42363 }
42364 #[repr(transparent)]
42365 pub struct CopyCommandTransformInfoQCOMBuilder<'a> {
42366     inner: CopyCommandTransformInfoQCOM,
42367     marker: ::std::marker::PhantomData<&'a ()>,
42368 }
42369 unsafe impl ExtendsBufferImageCopy2KHR for CopyCommandTransformInfoQCOMBuilder<'_> {}
42370 unsafe impl ExtendsBufferImageCopy2KHR for CopyCommandTransformInfoQCOM {}
42371 unsafe impl ExtendsImageBlit2KHR for CopyCommandTransformInfoQCOMBuilder<'_> {}
42372 unsafe impl ExtendsImageBlit2KHR for CopyCommandTransformInfoQCOM {}
42373 impl<'a> ::std::ops::Deref for CopyCommandTransformInfoQCOMBuilder<'a> {
42374     type Target = CopyCommandTransformInfoQCOM;
deref(&self) -> &Self::Target42375     fn deref(&self) -> &Self::Target {
42376         &self.inner
42377     }
42378 }
42379 impl<'a> ::std::ops::DerefMut for CopyCommandTransformInfoQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42380     fn deref_mut(&mut self) -> &mut Self::Target {
42381         &mut self.inner
42382     }
42383 }
42384 impl<'a> CopyCommandTransformInfoQCOMBuilder<'a> {
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self42385     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
42386         self.inner.transform = transform;
42387         self
42388     }
42389     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42390     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42391     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyCommandTransformInfoQCOM42392     pub fn build(self) -> CopyCommandTransformInfoQCOM {
42393         self.inner
42394     }
42395 }
42396 #[repr(C)]
42397 #[derive(Copy, Clone, Debug)]
42398 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>"]
42399 pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
42400     pub s_type: StructureType,
42401     pub p_next: *mut c_void,
42402     pub transform: SurfaceTransformFlagsKHR,
42403     pub render_area: Rect2D,
42404 }
42405 impl ::std::default::Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
default() -> CommandBufferInheritanceRenderPassTransformInfoQCOM42406     fn default() -> CommandBufferInheritanceRenderPassTransformInfoQCOM {
42407         CommandBufferInheritanceRenderPassTransformInfoQCOM {
42408             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
42409             p_next: ::std::ptr::null_mut(),
42410             transform: SurfaceTransformFlagsKHR::default(),
42411             render_area: Rect2D::default(),
42412         }
42413     }
42414 }
42415 impl CommandBufferInheritanceRenderPassTransformInfoQCOM {
builder<'a>() -> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a>42416     pub fn builder<'a>() -> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
42417         CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder {
42418             inner: CommandBufferInheritanceRenderPassTransformInfoQCOM::default(),
42419             marker: ::std::marker::PhantomData,
42420         }
42421     }
42422 }
42423 #[repr(transparent)]
42424 pub struct CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
42425     inner: CommandBufferInheritanceRenderPassTransformInfoQCOM,
42426     marker: ::std::marker::PhantomData<&'a ()>,
42427 }
42428 unsafe impl ExtendsCommandBufferInheritanceInfo
42429     for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'_>
42430 {
42431 }
42432 unsafe impl ExtendsCommandBufferInheritanceInfo
42433     for CommandBufferInheritanceRenderPassTransformInfoQCOM
42434 {
42435 }
42436 impl<'a> ::std::ops::Deref for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
42437     type Target = CommandBufferInheritanceRenderPassTransformInfoQCOM;
deref(&self) -> &Self::Target42438     fn deref(&self) -> &Self::Target {
42439         &self.inner
42440     }
42441 }
42442 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42443     fn deref_mut(&mut self) -> &mut Self::Target {
42444         &mut self.inner
42445     }
42446 }
42447 impl<'a> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self42448     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
42449         self.inner.transform = transform;
42450         self
42451     }
render_area(mut self, render_area: Rect2D) -> Self42452     pub fn render_area(mut self, render_area: Rect2D) -> Self {
42453         self.inner.render_area = render_area;
42454         self
42455     }
42456     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42457     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42458     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceRenderPassTransformInfoQCOM42459     pub fn build(self) -> CommandBufferInheritanceRenderPassTransformInfoQCOM {
42460         self.inner
42461     }
42462 }
42463 #[repr(C)]
42464 #[derive(Copy, Clone, Debug)]
42465 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>"]
42466 pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
42467     pub s_type: StructureType,
42468     pub p_next: *mut c_void,
42469     pub diagnostics_config: Bool32,
42470 }
42471 impl ::std::default::Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
default() -> PhysicalDeviceDiagnosticsConfigFeaturesNV42472     fn default() -> PhysicalDeviceDiagnosticsConfigFeaturesNV {
42473         PhysicalDeviceDiagnosticsConfigFeaturesNV {
42474             s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
42475             p_next: ::std::ptr::null_mut(),
42476             diagnostics_config: Bool32::default(),
42477         }
42478     }
42479 }
42480 impl PhysicalDeviceDiagnosticsConfigFeaturesNV {
builder<'a>() -> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a>42481     pub fn builder<'a>() -> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
42482         PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder {
42483             inner: PhysicalDeviceDiagnosticsConfigFeaturesNV::default(),
42484             marker: ::std::marker::PhantomData,
42485         }
42486     }
42487 }
42488 #[repr(transparent)]
42489 pub struct PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
42490     inner: PhysicalDeviceDiagnosticsConfigFeaturesNV,
42491     marker: ::std::marker::PhantomData<&'a ()>,
42492 }
42493 unsafe impl ExtendsPhysicalDeviceFeatures2
42494     for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'_>
42495 {
42496 }
42497 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
42498 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'_> {}
42499 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
42500 impl<'a> ::std::ops::Deref for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
42501     type Target = PhysicalDeviceDiagnosticsConfigFeaturesNV;
deref(&self) -> &Self::Target42502     fn deref(&self) -> &Self::Target {
42503         &self.inner
42504     }
42505 }
42506 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42507     fn deref_mut(&mut self) -> &mut Self::Target {
42508         &mut self.inner
42509     }
42510 }
42511 impl<'a> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
diagnostics_config(mut self, diagnostics_config: bool) -> Self42512     pub fn diagnostics_config(mut self, diagnostics_config: bool) -> Self {
42513         self.inner.diagnostics_config = diagnostics_config.into();
42514         self
42515     }
42516     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42517     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42518     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDiagnosticsConfigFeaturesNV42519     pub fn build(self) -> PhysicalDeviceDiagnosticsConfigFeaturesNV {
42520         self.inner
42521     }
42522 }
42523 #[repr(C)]
42524 #[derive(Copy, Clone, Debug)]
42525 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>"]
42526 pub struct DeviceDiagnosticsConfigCreateInfoNV {
42527     pub s_type: StructureType,
42528     pub p_next: *const c_void,
42529     pub flags: DeviceDiagnosticsConfigFlagsNV,
42530 }
42531 impl ::std::default::Default for DeviceDiagnosticsConfigCreateInfoNV {
default() -> DeviceDiagnosticsConfigCreateInfoNV42532     fn default() -> DeviceDiagnosticsConfigCreateInfoNV {
42533         DeviceDiagnosticsConfigCreateInfoNV {
42534             s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
42535             p_next: ::std::ptr::null(),
42536             flags: DeviceDiagnosticsConfigFlagsNV::default(),
42537         }
42538     }
42539 }
42540 impl DeviceDiagnosticsConfigCreateInfoNV {
builder<'a>() -> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a>42541     pub fn builder<'a>() -> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
42542         DeviceDiagnosticsConfigCreateInfoNVBuilder {
42543             inner: DeviceDiagnosticsConfigCreateInfoNV::default(),
42544             marker: ::std::marker::PhantomData,
42545         }
42546     }
42547 }
42548 #[repr(transparent)]
42549 pub struct DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
42550     inner: DeviceDiagnosticsConfigCreateInfoNV,
42551     marker: ::std::marker::PhantomData<&'a ()>,
42552 }
42553 unsafe impl ExtendsDeviceCreateInfo for DeviceDiagnosticsConfigCreateInfoNVBuilder<'_> {}
42554 unsafe impl ExtendsDeviceCreateInfo for DeviceDiagnosticsConfigCreateInfoNV {}
42555 impl<'a> ::std::ops::Deref for DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
42556     type Target = DeviceDiagnosticsConfigCreateInfoNV;
deref(&self) -> &Self::Target42557     fn deref(&self) -> &Self::Target {
42558         &self.inner
42559     }
42560 }
42561 impl<'a> ::std::ops::DerefMut for DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42562     fn deref_mut(&mut self) -> &mut Self::Target {
42563         &mut self.inner
42564     }
42565 }
42566 impl<'a> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
flags(mut self, flags: DeviceDiagnosticsConfigFlagsNV) -> Self42567     pub fn flags(mut self, flags: DeviceDiagnosticsConfigFlagsNV) -> Self {
42568         self.inner.flags = flags;
42569         self
42570     }
42571     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42572     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42573     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceDiagnosticsConfigCreateInfoNV42574     pub fn build(self) -> DeviceDiagnosticsConfigCreateInfoNV {
42575         self.inner
42576     }
42577 }
42578 #[repr(C)]
42579 #[derive(Copy, Clone, Debug)]
42580 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>"]
42581 pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
42582     pub s_type: StructureType,
42583     pub p_next: *mut c_void,
42584     pub shader_zero_initialize_workgroup_memory: Bool32,
42585 }
42586 impl ::std::default::Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
default() -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR42587     fn default() -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
42588         PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
42589             s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR,
42590             p_next: ::std::ptr::null_mut(),
42591             shader_zero_initialize_workgroup_memory: Bool32::default(),
42592         }
42593     }
42594 }
42595 impl PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
builder<'a>() -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a>42596     pub fn builder<'a>() -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
42597         PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder {
42598             inner: PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR::default(),
42599             marker: ::std::marker::PhantomData,
42600         }
42601     }
42602 }
42603 #[repr(transparent)]
42604 pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
42605     inner: PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR,
42606     marker: ::std::marker::PhantomData<&'a ()>,
42607 }
42608 unsafe impl ExtendsPhysicalDeviceFeatures2
42609     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'_>
42610 {
42611 }
42612 unsafe impl ExtendsPhysicalDeviceFeatures2
42613     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
42614 {
42615 }
42616 unsafe impl ExtendsDeviceCreateInfo
42617     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'_>
42618 {
42619 }
42620 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {}
42621 impl<'a> ::std::ops::Deref for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
42622     type Target = PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
deref(&self) -> &Self::Target42623     fn deref(&self) -> &Self::Target {
42624         &self.inner
42625     }
42626 }
42627 impl<'a> ::std::ops::DerefMut
42628     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a>
42629 {
deref_mut(&mut self) -> &mut Self::Target42630     fn deref_mut(&mut self) -> &mut Self::Target {
42631         &mut self.inner
42632     }
42633 }
42634 impl<'a> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
shader_zero_initialize_workgroup_memory( mut self, shader_zero_initialize_workgroup_memory: bool, ) -> Self42635     pub fn shader_zero_initialize_workgroup_memory(
42636         mut self,
42637         shader_zero_initialize_workgroup_memory: bool,
42638     ) -> Self {
42639         self.inner.shader_zero_initialize_workgroup_memory =
42640             shader_zero_initialize_workgroup_memory.into();
42641         self
42642     }
42643     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42644     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42645     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR42646     pub fn build(self) -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
42647         self.inner
42648     }
42649 }
42650 #[repr(C)]
42651 #[derive(Copy, Clone, Debug)]
42652 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>"]
42653 pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
42654     pub s_type: StructureType,
42655     pub p_next: *mut c_void,
42656     pub shader_subgroup_uniform_control_flow: Bool32,
42657 }
42658 impl ::std::default::Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
default() -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR42659     fn default() -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
42660         PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
42661             s_type:
42662                 StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
42663             p_next: ::std::ptr::null_mut(),
42664             shader_subgroup_uniform_control_flow: Bool32::default(),
42665         }
42666     }
42667 }
42668 impl PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a>42669     pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
42670         PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder {
42671             inner: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR::default(),
42672             marker: ::std::marker::PhantomData,
42673         }
42674     }
42675 }
42676 #[repr(transparent)]
42677 pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
42678     inner: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR,
42679     marker: ::std::marker::PhantomData<&'a ()>,
42680 }
42681 unsafe impl ExtendsPhysicalDeviceFeatures2
42682     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'_>
42683 {
42684 }
42685 unsafe impl ExtendsPhysicalDeviceFeatures2
42686     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
42687 {
42688 }
42689 unsafe impl ExtendsDeviceCreateInfo
42690     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'_>
42691 {
42692 }
42693 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
42694 impl<'a> ::std::ops::Deref
42695     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a>
42696 {
42697     type Target = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
deref(&self) -> &Self::Target42698     fn deref(&self) -> &Self::Target {
42699         &self.inner
42700     }
42701 }
42702 impl<'a> ::std::ops::DerefMut
42703     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a>
42704 {
deref_mut(&mut self) -> &mut Self::Target42705     fn deref_mut(&mut self) -> &mut Self::Target {
42706         &mut self.inner
42707     }
42708 }
42709 impl<'a> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
shader_subgroup_uniform_control_flow( mut self, shader_subgroup_uniform_control_flow: bool, ) -> Self42710     pub fn shader_subgroup_uniform_control_flow(
42711         mut self,
42712         shader_subgroup_uniform_control_flow: bool,
42713     ) -> Self {
42714         self.inner.shader_subgroup_uniform_control_flow =
42715             shader_subgroup_uniform_control_flow.into();
42716         self
42717     }
42718     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42719     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42720     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR42721     pub fn build(self) -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
42722         self.inner
42723     }
42724 }
42725 #[repr(C)]
42726 #[derive(Copy, Clone, Debug)]
42727 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>"]
42728 pub struct PhysicalDeviceRobustness2FeaturesEXT {
42729     pub s_type: StructureType,
42730     pub p_next: *mut c_void,
42731     pub robust_buffer_access2: Bool32,
42732     pub robust_image_access2: Bool32,
42733     pub null_descriptor: Bool32,
42734 }
42735 impl ::std::default::Default for PhysicalDeviceRobustness2FeaturesEXT {
default() -> PhysicalDeviceRobustness2FeaturesEXT42736     fn default() -> PhysicalDeviceRobustness2FeaturesEXT {
42737         PhysicalDeviceRobustness2FeaturesEXT {
42738             s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT,
42739             p_next: ::std::ptr::null_mut(),
42740             robust_buffer_access2: Bool32::default(),
42741             robust_image_access2: Bool32::default(),
42742             null_descriptor: Bool32::default(),
42743         }
42744     }
42745 }
42746 impl PhysicalDeviceRobustness2FeaturesEXT {
builder<'a>() -> PhysicalDeviceRobustness2FeaturesEXTBuilder<'a>42747     pub fn builder<'a>() -> PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
42748         PhysicalDeviceRobustness2FeaturesEXTBuilder {
42749             inner: PhysicalDeviceRobustness2FeaturesEXT::default(),
42750             marker: ::std::marker::PhantomData,
42751         }
42752     }
42753 }
42754 #[repr(transparent)]
42755 pub struct PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
42756     inner: PhysicalDeviceRobustness2FeaturesEXT,
42757     marker: ::std::marker::PhantomData<&'a ()>,
42758 }
42759 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRobustness2FeaturesEXTBuilder<'_> {}
42760 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRobustness2FeaturesEXT {}
42761 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRobustness2FeaturesEXTBuilder<'_> {}
42762 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRobustness2FeaturesEXT {}
42763 impl<'a> ::std::ops::Deref for PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
42764     type Target = PhysicalDeviceRobustness2FeaturesEXT;
deref(&self) -> &Self::Target42765     fn deref(&self) -> &Self::Target {
42766         &self.inner
42767     }
42768 }
42769 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42770     fn deref_mut(&mut self) -> &mut Self::Target {
42771         &mut self.inner
42772     }
42773 }
42774 impl<'a> PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
robust_buffer_access2(mut self, robust_buffer_access2: bool) -> Self42775     pub fn robust_buffer_access2(mut self, robust_buffer_access2: bool) -> Self {
42776         self.inner.robust_buffer_access2 = robust_buffer_access2.into();
42777         self
42778     }
robust_image_access2(mut self, robust_image_access2: bool) -> Self42779     pub fn robust_image_access2(mut self, robust_image_access2: bool) -> Self {
42780         self.inner.robust_image_access2 = robust_image_access2.into();
42781         self
42782     }
null_descriptor(mut self, null_descriptor: bool) -> Self42783     pub fn null_descriptor(mut self, null_descriptor: bool) -> Self {
42784         self.inner.null_descriptor = null_descriptor.into();
42785         self
42786     }
42787     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42788     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42789     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRobustness2FeaturesEXT42790     pub fn build(self) -> PhysicalDeviceRobustness2FeaturesEXT {
42791         self.inner
42792     }
42793 }
42794 #[repr(C)]
42795 #[derive(Copy, Clone, Debug)]
42796 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>"]
42797 pub struct PhysicalDeviceRobustness2PropertiesEXT {
42798     pub s_type: StructureType,
42799     pub p_next: *mut c_void,
42800     pub robust_storage_buffer_access_size_alignment: DeviceSize,
42801     pub robust_uniform_buffer_access_size_alignment: DeviceSize,
42802 }
42803 impl ::std::default::Default for PhysicalDeviceRobustness2PropertiesEXT {
default() -> PhysicalDeviceRobustness2PropertiesEXT42804     fn default() -> PhysicalDeviceRobustness2PropertiesEXT {
42805         PhysicalDeviceRobustness2PropertiesEXT {
42806             s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT,
42807             p_next: ::std::ptr::null_mut(),
42808             robust_storage_buffer_access_size_alignment: DeviceSize::default(),
42809             robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
42810         }
42811     }
42812 }
42813 impl PhysicalDeviceRobustness2PropertiesEXT {
builder<'a>() -> PhysicalDeviceRobustness2PropertiesEXTBuilder<'a>42814     pub fn builder<'a>() -> PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
42815         PhysicalDeviceRobustness2PropertiesEXTBuilder {
42816             inner: PhysicalDeviceRobustness2PropertiesEXT::default(),
42817             marker: ::std::marker::PhantomData,
42818         }
42819     }
42820 }
42821 #[repr(transparent)]
42822 pub struct PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
42823     inner: PhysicalDeviceRobustness2PropertiesEXT,
42824     marker: ::std::marker::PhantomData<&'a ()>,
42825 }
42826 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRobustness2PropertiesEXTBuilder<'_> {}
42827 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRobustness2PropertiesEXT {}
42828 impl<'a> ::std::ops::Deref for PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
42829     type Target = PhysicalDeviceRobustness2PropertiesEXT;
deref(&self) -> &Self::Target42830     fn deref(&self) -> &Self::Target {
42831         &self.inner
42832     }
42833 }
42834 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42835     fn deref_mut(&mut self) -> &mut Self::Target {
42836         &mut self.inner
42837     }
42838 }
42839 impl<'a> PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
robust_storage_buffer_access_size_alignment( mut self, robust_storage_buffer_access_size_alignment: DeviceSize, ) -> Self42840     pub fn robust_storage_buffer_access_size_alignment(
42841         mut self,
42842         robust_storage_buffer_access_size_alignment: DeviceSize,
42843     ) -> Self {
42844         self.inner.robust_storage_buffer_access_size_alignment =
42845             robust_storage_buffer_access_size_alignment;
42846         self
42847     }
robust_uniform_buffer_access_size_alignment( mut self, robust_uniform_buffer_access_size_alignment: DeviceSize, ) -> Self42848     pub fn robust_uniform_buffer_access_size_alignment(
42849         mut self,
42850         robust_uniform_buffer_access_size_alignment: DeviceSize,
42851     ) -> Self {
42852         self.inner.robust_uniform_buffer_access_size_alignment =
42853             robust_uniform_buffer_access_size_alignment;
42854         self
42855     }
42856     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42857     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42858     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRobustness2PropertiesEXT42859     pub fn build(self) -> PhysicalDeviceRobustness2PropertiesEXT {
42860         self.inner
42861     }
42862 }
42863 #[repr(C)]
42864 #[derive(Copy, Clone, Debug)]
42865 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>"]
42866 pub struct PhysicalDeviceImageRobustnessFeaturesEXT {
42867     pub s_type: StructureType,
42868     pub p_next: *mut c_void,
42869     pub robust_image_access: Bool32,
42870 }
42871 impl ::std::default::Default for PhysicalDeviceImageRobustnessFeaturesEXT {
default() -> PhysicalDeviceImageRobustnessFeaturesEXT42872     fn default() -> PhysicalDeviceImageRobustnessFeaturesEXT {
42873         PhysicalDeviceImageRobustnessFeaturesEXT {
42874             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT,
42875             p_next: ::std::ptr::null_mut(),
42876             robust_image_access: Bool32::default(),
42877         }
42878     }
42879 }
42880 impl PhysicalDeviceImageRobustnessFeaturesEXT {
builder<'a>() -> PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a>42881     pub fn builder<'a>() -> PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
42882         PhysicalDeviceImageRobustnessFeaturesEXTBuilder {
42883             inner: PhysicalDeviceImageRobustnessFeaturesEXT::default(),
42884             marker: ::std::marker::PhantomData,
42885         }
42886     }
42887 }
42888 #[repr(transparent)]
42889 pub struct PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
42890     inner: PhysicalDeviceImageRobustnessFeaturesEXT,
42891     marker: ::std::marker::PhantomData<&'a ()>,
42892 }
42893 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'_> {}
42894 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageRobustnessFeaturesEXT {}
42895 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'_> {}
42896 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageRobustnessFeaturesEXT {}
42897 impl<'a> ::std::ops::Deref for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
42898     type Target = PhysicalDeviceImageRobustnessFeaturesEXT;
deref(&self) -> &Self::Target42899     fn deref(&self) -> &Self::Target {
42900         &self.inner
42901     }
42902 }
42903 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42904     fn deref_mut(&mut self) -> &mut Self::Target {
42905         &mut self.inner
42906     }
42907 }
42908 impl<'a> PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
robust_image_access(mut self, robust_image_access: bool) -> Self42909     pub fn robust_image_access(mut self, robust_image_access: bool) -> Self {
42910         self.inner.robust_image_access = robust_image_access.into();
42911         self
42912     }
42913     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42914     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42915     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageRobustnessFeaturesEXT42916     pub fn build(self) -> PhysicalDeviceImageRobustnessFeaturesEXT {
42917         self.inner
42918     }
42919 }
42920 #[repr(C)]
42921 #[derive(Copy, Clone, Debug)]
42922 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>"]
42923 pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
42924     pub s_type: StructureType,
42925     pub p_next: *mut c_void,
42926     pub workgroup_memory_explicit_layout: Bool32,
42927     pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
42928     pub workgroup_memory_explicit_layout8_bit_access: Bool32,
42929     pub workgroup_memory_explicit_layout16_bit_access: Bool32,
42930 }
42931 impl ::std::default::Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
default() -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR42932     fn default() -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
42933         PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
42934             s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
42935             p_next: ::std::ptr::null_mut(),
42936             workgroup_memory_explicit_layout: Bool32::default(),
42937             workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
42938             workgroup_memory_explicit_layout8_bit_access: Bool32::default(),
42939             workgroup_memory_explicit_layout16_bit_access: Bool32::default(),
42940         }
42941     }
42942 }
42943 impl PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
builder<'a>() -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a>42944     pub fn builder<'a>() -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
42945         PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder {
42946             inner: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR::default(),
42947             marker: ::std::marker::PhantomData,
42948         }
42949     }
42950 }
42951 #[repr(transparent)]
42952 pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
42953     inner: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR,
42954     marker: ::std::marker::PhantomData<&'a ()>,
42955 }
42956 unsafe impl ExtendsPhysicalDeviceFeatures2
42957     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'_>
42958 {
42959 }
42960 unsafe impl ExtendsPhysicalDeviceFeatures2
42961     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
42962 {
42963 }
42964 unsafe impl ExtendsDeviceCreateInfo
42965     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'_>
42966 {
42967 }
42968 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
42969 impl<'a> ::std::ops::Deref for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
42970     type Target = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
deref(&self) -> &Self::Target42971     fn deref(&self) -> &Self::Target {
42972         &self.inner
42973     }
42974 }
42975 impl<'a> ::std::ops::DerefMut
42976     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a>
42977 {
deref_mut(&mut self) -> &mut Self::Target42978     fn deref_mut(&mut self) -> &mut Self::Target {
42979         &mut self.inner
42980     }
42981 }
42982 impl<'a> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
workgroup_memory_explicit_layout( mut self, workgroup_memory_explicit_layout: bool, ) -> Self42983     pub fn workgroup_memory_explicit_layout(
42984         mut self,
42985         workgroup_memory_explicit_layout: bool,
42986     ) -> Self {
42987         self.inner.workgroup_memory_explicit_layout = workgroup_memory_explicit_layout.into();
42988         self
42989     }
workgroup_memory_explicit_layout_scalar_block_layout( mut self, workgroup_memory_explicit_layout_scalar_block_layout: bool, ) -> Self42990     pub fn workgroup_memory_explicit_layout_scalar_block_layout(
42991         mut self,
42992         workgroup_memory_explicit_layout_scalar_block_layout: bool,
42993     ) -> Self {
42994         self.inner
42995             .workgroup_memory_explicit_layout_scalar_block_layout =
42996             workgroup_memory_explicit_layout_scalar_block_layout.into();
42997         self
42998     }
workgroup_memory_explicit_layout8_bit_access( mut self, workgroup_memory_explicit_layout8_bit_access: bool, ) -> Self42999     pub fn workgroup_memory_explicit_layout8_bit_access(
43000         mut self,
43001         workgroup_memory_explicit_layout8_bit_access: bool,
43002     ) -> Self {
43003         self.inner.workgroup_memory_explicit_layout8_bit_access =
43004             workgroup_memory_explicit_layout8_bit_access.into();
43005         self
43006     }
workgroup_memory_explicit_layout16_bit_access( mut self, workgroup_memory_explicit_layout16_bit_access: bool, ) -> Self43007     pub fn workgroup_memory_explicit_layout16_bit_access(
43008         mut self,
43009         workgroup_memory_explicit_layout16_bit_access: bool,
43010     ) -> Self {
43011         self.inner.workgroup_memory_explicit_layout16_bit_access =
43012             workgroup_memory_explicit_layout16_bit_access.into();
43013         self
43014     }
43015     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43016     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43017     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR43018     pub fn build(self) -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
43019         self.inner
43020     }
43021 }
43022 #[repr(C)]
43023 #[derive(Copy, Clone, Debug)]
43024 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>"]
43025 pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
43026     pub s_type: StructureType,
43027     pub p_next: *mut c_void,
43028     pub constant_alpha_color_blend_factors: Bool32,
43029     pub events: Bool32,
43030     pub image_view_format_reinterpretation: Bool32,
43031     pub image_view_format_swizzle: Bool32,
43032     pub image_view2_d_on3_d_image: Bool32,
43033     pub multisample_array_image: Bool32,
43034     pub mutable_comparison_samplers: Bool32,
43035     pub point_polygons: Bool32,
43036     pub sampler_mip_lod_bias: Bool32,
43037     pub separate_stencil_mask_ref: Bool32,
43038     pub shader_sample_rate_interpolation_functions: Bool32,
43039     pub tessellation_isolines: Bool32,
43040     pub tessellation_point_mode: Bool32,
43041     pub triangle_fans: Bool32,
43042     pub vertex_attribute_access_beyond_stride: Bool32,
43043 }
43044 impl ::std::default::Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
default() -> PhysicalDevicePortabilitySubsetFeaturesKHR43045     fn default() -> PhysicalDevicePortabilitySubsetFeaturesKHR {
43046         PhysicalDevicePortabilitySubsetFeaturesKHR {
43047             s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
43048             p_next: ::std::ptr::null_mut(),
43049             constant_alpha_color_blend_factors: Bool32::default(),
43050             events: Bool32::default(),
43051             image_view_format_reinterpretation: Bool32::default(),
43052             image_view_format_swizzle: Bool32::default(),
43053             image_view2_d_on3_d_image: Bool32::default(),
43054             multisample_array_image: Bool32::default(),
43055             mutable_comparison_samplers: Bool32::default(),
43056             point_polygons: Bool32::default(),
43057             sampler_mip_lod_bias: Bool32::default(),
43058             separate_stencil_mask_ref: Bool32::default(),
43059             shader_sample_rate_interpolation_functions: Bool32::default(),
43060             tessellation_isolines: Bool32::default(),
43061             tessellation_point_mode: Bool32::default(),
43062             triangle_fans: Bool32::default(),
43063             vertex_attribute_access_beyond_stride: Bool32::default(),
43064         }
43065     }
43066 }
43067 impl PhysicalDevicePortabilitySubsetFeaturesKHR {
builder<'a>() -> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a>43068     pub fn builder<'a>() -> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
43069         PhysicalDevicePortabilitySubsetFeaturesKHRBuilder {
43070             inner: PhysicalDevicePortabilitySubsetFeaturesKHR::default(),
43071             marker: ::std::marker::PhantomData,
43072         }
43073     }
43074 }
43075 #[repr(transparent)]
43076 pub struct PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
43077     inner: PhysicalDevicePortabilitySubsetFeaturesKHR,
43078     marker: ::std::marker::PhantomData<&'a ()>,
43079 }
43080 unsafe impl ExtendsPhysicalDeviceFeatures2
43081     for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'_>
43082 {
43083 }
43084 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePortabilitySubsetFeaturesKHR {}
43085 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'_> {}
43086 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePortabilitySubsetFeaturesKHR {}
43087 impl<'a> ::std::ops::Deref for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
43088     type Target = PhysicalDevicePortabilitySubsetFeaturesKHR;
deref(&self) -> &Self::Target43089     fn deref(&self) -> &Self::Target {
43090         &self.inner
43091     }
43092 }
43093 impl<'a> ::std::ops::DerefMut for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43094     fn deref_mut(&mut self) -> &mut Self::Target {
43095         &mut self.inner
43096     }
43097 }
43098 impl<'a> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
constant_alpha_color_blend_factors( mut self, constant_alpha_color_blend_factors: bool, ) -> Self43099     pub fn constant_alpha_color_blend_factors(
43100         mut self,
43101         constant_alpha_color_blend_factors: bool,
43102     ) -> Self {
43103         self.inner.constant_alpha_color_blend_factors = constant_alpha_color_blend_factors.into();
43104         self
43105     }
events(mut self, events: bool) -> Self43106     pub fn events(mut self, events: bool) -> Self {
43107         self.inner.events = events.into();
43108         self
43109     }
image_view_format_reinterpretation( mut self, image_view_format_reinterpretation: bool, ) -> Self43110     pub fn image_view_format_reinterpretation(
43111         mut self,
43112         image_view_format_reinterpretation: bool,
43113     ) -> Self {
43114         self.inner.image_view_format_reinterpretation = image_view_format_reinterpretation.into();
43115         self
43116     }
image_view_format_swizzle(mut self, image_view_format_swizzle: bool) -> Self43117     pub fn image_view_format_swizzle(mut self, image_view_format_swizzle: bool) -> Self {
43118         self.inner.image_view_format_swizzle = image_view_format_swizzle.into();
43119         self
43120     }
image_view2_d_on3_d_image(mut self, image_view2_d_on3_d_image: bool) -> Self43121     pub fn image_view2_d_on3_d_image(mut self, image_view2_d_on3_d_image: bool) -> Self {
43122         self.inner.image_view2_d_on3_d_image = image_view2_d_on3_d_image.into();
43123         self
43124     }
multisample_array_image(mut self, multisample_array_image: bool) -> Self43125     pub fn multisample_array_image(mut self, multisample_array_image: bool) -> Self {
43126         self.inner.multisample_array_image = multisample_array_image.into();
43127         self
43128     }
mutable_comparison_samplers(mut self, mutable_comparison_samplers: bool) -> Self43129     pub fn mutable_comparison_samplers(mut self, mutable_comparison_samplers: bool) -> Self {
43130         self.inner.mutable_comparison_samplers = mutable_comparison_samplers.into();
43131         self
43132     }
point_polygons(mut self, point_polygons: bool) -> Self43133     pub fn point_polygons(mut self, point_polygons: bool) -> Self {
43134         self.inner.point_polygons = point_polygons.into();
43135         self
43136     }
sampler_mip_lod_bias(mut self, sampler_mip_lod_bias: bool) -> Self43137     pub fn sampler_mip_lod_bias(mut self, sampler_mip_lod_bias: bool) -> Self {
43138         self.inner.sampler_mip_lod_bias = sampler_mip_lod_bias.into();
43139         self
43140     }
separate_stencil_mask_ref(mut self, separate_stencil_mask_ref: bool) -> Self43141     pub fn separate_stencil_mask_ref(mut self, separate_stencil_mask_ref: bool) -> Self {
43142         self.inner.separate_stencil_mask_ref = separate_stencil_mask_ref.into();
43143         self
43144     }
shader_sample_rate_interpolation_functions( mut self, shader_sample_rate_interpolation_functions: bool, ) -> Self43145     pub fn shader_sample_rate_interpolation_functions(
43146         mut self,
43147         shader_sample_rate_interpolation_functions: bool,
43148     ) -> Self {
43149         self.inner.shader_sample_rate_interpolation_functions =
43150             shader_sample_rate_interpolation_functions.into();
43151         self
43152     }
tessellation_isolines(mut self, tessellation_isolines: bool) -> Self43153     pub fn tessellation_isolines(mut self, tessellation_isolines: bool) -> Self {
43154         self.inner.tessellation_isolines = tessellation_isolines.into();
43155         self
43156     }
tessellation_point_mode(mut self, tessellation_point_mode: bool) -> Self43157     pub fn tessellation_point_mode(mut self, tessellation_point_mode: bool) -> Self {
43158         self.inner.tessellation_point_mode = tessellation_point_mode.into();
43159         self
43160     }
triangle_fans(mut self, triangle_fans: bool) -> Self43161     pub fn triangle_fans(mut self, triangle_fans: bool) -> Self {
43162         self.inner.triangle_fans = triangle_fans.into();
43163         self
43164     }
vertex_attribute_access_beyond_stride( mut self, vertex_attribute_access_beyond_stride: bool, ) -> Self43165     pub fn vertex_attribute_access_beyond_stride(
43166         mut self,
43167         vertex_attribute_access_beyond_stride: bool,
43168     ) -> Self {
43169         self.inner.vertex_attribute_access_beyond_stride =
43170             vertex_attribute_access_beyond_stride.into();
43171         self
43172     }
43173     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43174     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43175     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePortabilitySubsetFeaturesKHR43176     pub fn build(self) -> PhysicalDevicePortabilitySubsetFeaturesKHR {
43177         self.inner
43178     }
43179 }
43180 #[repr(C)]
43181 #[derive(Copy, Clone, Debug)]
43182 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>"]
43183 pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
43184     pub s_type: StructureType,
43185     pub p_next: *mut c_void,
43186     pub min_vertex_input_binding_stride_alignment: u32,
43187 }
43188 impl ::std::default::Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
default() -> PhysicalDevicePortabilitySubsetPropertiesKHR43189     fn default() -> PhysicalDevicePortabilitySubsetPropertiesKHR {
43190         PhysicalDevicePortabilitySubsetPropertiesKHR {
43191             s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
43192             p_next: ::std::ptr::null_mut(),
43193             min_vertex_input_binding_stride_alignment: u32::default(),
43194         }
43195     }
43196 }
43197 impl PhysicalDevicePortabilitySubsetPropertiesKHR {
builder<'a>() -> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a>43198     pub fn builder<'a>() -> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
43199         PhysicalDevicePortabilitySubsetPropertiesKHRBuilder {
43200             inner: PhysicalDevicePortabilitySubsetPropertiesKHR::default(),
43201             marker: ::std::marker::PhantomData,
43202         }
43203     }
43204 }
43205 #[repr(transparent)]
43206 pub struct PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
43207     inner: PhysicalDevicePortabilitySubsetPropertiesKHR,
43208     marker: ::std::marker::PhantomData<&'a ()>,
43209 }
43210 unsafe impl ExtendsPhysicalDeviceProperties2
43211     for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'_>
43212 {
43213 }
43214 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePortabilitySubsetPropertiesKHR {}
43215 impl<'a> ::std::ops::Deref for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
43216     type Target = PhysicalDevicePortabilitySubsetPropertiesKHR;
deref(&self) -> &Self::Target43217     fn deref(&self) -> &Self::Target {
43218         &self.inner
43219     }
43220 }
43221 impl<'a> ::std::ops::DerefMut for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43222     fn deref_mut(&mut self) -> &mut Self::Target {
43223         &mut self.inner
43224     }
43225 }
43226 impl<'a> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
min_vertex_input_binding_stride_alignment( mut self, min_vertex_input_binding_stride_alignment: u32, ) -> Self43227     pub fn min_vertex_input_binding_stride_alignment(
43228         mut self,
43229         min_vertex_input_binding_stride_alignment: u32,
43230     ) -> Self {
43231         self.inner.min_vertex_input_binding_stride_alignment =
43232             min_vertex_input_binding_stride_alignment;
43233         self
43234     }
43235     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43236     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43237     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePortabilitySubsetPropertiesKHR43238     pub fn build(self) -> PhysicalDevicePortabilitySubsetPropertiesKHR {
43239         self.inner
43240     }
43241 }
43242 #[repr(C)]
43243 #[derive(Copy, Clone, Debug)]
43244 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>"]
43245 pub struct PhysicalDevice4444FormatsFeaturesEXT {
43246     pub s_type: StructureType,
43247     pub p_next: *mut c_void,
43248     pub format_a4r4g4b4: Bool32,
43249     pub format_a4b4g4r4: Bool32,
43250 }
43251 impl ::std::default::Default for PhysicalDevice4444FormatsFeaturesEXT {
default() -> PhysicalDevice4444FormatsFeaturesEXT43252     fn default() -> PhysicalDevice4444FormatsFeaturesEXT {
43253         PhysicalDevice4444FormatsFeaturesEXT {
43254             s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
43255             p_next: ::std::ptr::null_mut(),
43256             format_a4r4g4b4: Bool32::default(),
43257             format_a4b4g4r4: Bool32::default(),
43258         }
43259     }
43260 }
43261 impl PhysicalDevice4444FormatsFeaturesEXT {
builder<'a>() -> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a>43262     pub fn builder<'a>() -> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
43263         PhysicalDevice4444FormatsFeaturesEXTBuilder {
43264             inner: PhysicalDevice4444FormatsFeaturesEXT::default(),
43265             marker: ::std::marker::PhantomData,
43266         }
43267     }
43268 }
43269 #[repr(transparent)]
43270 pub struct PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
43271     inner: PhysicalDevice4444FormatsFeaturesEXT,
43272     marker: ::std::marker::PhantomData<&'a ()>,
43273 }
43274 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice4444FormatsFeaturesEXTBuilder<'_> {}
43275 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice4444FormatsFeaturesEXT {}
43276 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice4444FormatsFeaturesEXTBuilder<'_> {}
43277 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice4444FormatsFeaturesEXT {}
43278 impl<'a> ::std::ops::Deref for PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
43279     type Target = PhysicalDevice4444FormatsFeaturesEXT;
deref(&self) -> &Self::Target43280     fn deref(&self) -> &Self::Target {
43281         &self.inner
43282     }
43283 }
43284 impl<'a> ::std::ops::DerefMut for PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43285     fn deref_mut(&mut self) -> &mut Self::Target {
43286         &mut self.inner
43287     }
43288 }
43289 impl<'a> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
format_a4r4g4b4(mut self, format_a4r4g4b4: bool) -> Self43290     pub fn format_a4r4g4b4(mut self, format_a4r4g4b4: bool) -> Self {
43291         self.inner.format_a4r4g4b4 = format_a4r4g4b4.into();
43292         self
43293     }
format_a4b4g4r4(mut self, format_a4b4g4r4: bool) -> Self43294     pub fn format_a4b4g4r4(mut self, format_a4b4g4r4: bool) -> Self {
43295         self.inner.format_a4b4g4r4 = format_a4b4g4r4.into();
43296         self
43297     }
43298     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43299     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43300     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevice4444FormatsFeaturesEXT43301     pub fn build(self) -> PhysicalDevice4444FormatsFeaturesEXT {
43302         self.inner
43303     }
43304 }
43305 #[repr(C)]
43306 #[derive(Copy, Clone, Debug)]
43307 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>"]
43308 pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
43309     pub s_type: StructureType,
43310     pub p_next: *mut c_void,
43311     pub subpass_shading: Bool32,
43312 }
43313 impl ::std::default::Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
default() -> PhysicalDeviceSubpassShadingFeaturesHUAWEI43314     fn default() -> PhysicalDeviceSubpassShadingFeaturesHUAWEI {
43315         PhysicalDeviceSubpassShadingFeaturesHUAWEI {
43316             s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
43317             p_next: ::std::ptr::null_mut(),
43318             subpass_shading: Bool32::default(),
43319         }
43320     }
43321 }
43322 impl PhysicalDeviceSubpassShadingFeaturesHUAWEI {
builder<'a>() -> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a>43323     pub fn builder<'a>() -> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
43324         PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder {
43325             inner: PhysicalDeviceSubpassShadingFeaturesHUAWEI::default(),
43326             marker: ::std::marker::PhantomData,
43327         }
43328     }
43329 }
43330 #[repr(transparent)]
43331 pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
43332     inner: PhysicalDeviceSubpassShadingFeaturesHUAWEI,
43333     marker: ::std::marker::PhantomData<&'a ()>,
43334 }
43335 unsafe impl ExtendsPhysicalDeviceFeatures2
43336     for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'_>
43337 {
43338 }
43339 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
43340 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'_> {}
43341 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
43342 impl<'a> ::std::ops::Deref for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
43343     type Target = PhysicalDeviceSubpassShadingFeaturesHUAWEI;
deref(&self) -> &Self::Target43344     fn deref(&self) -> &Self::Target {
43345         &self.inner
43346     }
43347 }
43348 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43349     fn deref_mut(&mut self) -> &mut Self::Target {
43350         &mut self.inner
43351     }
43352 }
43353 impl<'a> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
subpass_shading(mut self, subpass_shading: bool) -> Self43354     pub fn subpass_shading(mut self, subpass_shading: bool) -> Self {
43355         self.inner.subpass_shading = subpass_shading.into();
43356         self
43357     }
43358     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43359     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43360     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubpassShadingFeaturesHUAWEI43361     pub fn build(self) -> PhysicalDeviceSubpassShadingFeaturesHUAWEI {
43362         self.inner
43363     }
43364 }
43365 #[repr(C)]
43366 #[derive(Copy, Clone, Debug)]
43367 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCopy2KHR.html>"]
43368 pub struct BufferCopy2KHR {
43369     pub s_type: StructureType,
43370     pub p_next: *const c_void,
43371     pub src_offset: DeviceSize,
43372     pub dst_offset: DeviceSize,
43373     pub size: DeviceSize,
43374 }
43375 impl ::std::default::Default for BufferCopy2KHR {
default() -> BufferCopy2KHR43376     fn default() -> BufferCopy2KHR {
43377         BufferCopy2KHR {
43378             s_type: StructureType::BUFFER_COPY_2_KHR,
43379             p_next: ::std::ptr::null(),
43380             src_offset: DeviceSize::default(),
43381             dst_offset: DeviceSize::default(),
43382             size: DeviceSize::default(),
43383         }
43384     }
43385 }
43386 impl BufferCopy2KHR {
builder<'a>() -> BufferCopy2KHRBuilder<'a>43387     pub fn builder<'a>() -> BufferCopy2KHRBuilder<'a> {
43388         BufferCopy2KHRBuilder {
43389             inner: BufferCopy2KHR::default(),
43390             marker: ::std::marker::PhantomData,
43391         }
43392     }
43393 }
43394 #[repr(transparent)]
43395 pub struct BufferCopy2KHRBuilder<'a> {
43396     inner: BufferCopy2KHR,
43397     marker: ::std::marker::PhantomData<&'a ()>,
43398 }
43399 impl<'a> ::std::ops::Deref for BufferCopy2KHRBuilder<'a> {
43400     type Target = BufferCopy2KHR;
deref(&self) -> &Self::Target43401     fn deref(&self) -> &Self::Target {
43402         &self.inner
43403     }
43404 }
43405 impl<'a> ::std::ops::DerefMut for BufferCopy2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43406     fn deref_mut(&mut self) -> &mut Self::Target {
43407         &mut self.inner
43408     }
43409 }
43410 impl<'a> BufferCopy2KHRBuilder<'a> {
src_offset(mut self, src_offset: DeviceSize) -> Self43411     pub fn src_offset(mut self, src_offset: DeviceSize) -> Self {
43412         self.inner.src_offset = src_offset;
43413         self
43414     }
dst_offset(mut self, dst_offset: DeviceSize) -> Self43415     pub fn dst_offset(mut self, dst_offset: DeviceSize) -> Self {
43416         self.inner.dst_offset = dst_offset;
43417         self
43418     }
size(mut self, size: DeviceSize) -> Self43419     pub fn size(mut self, size: DeviceSize) -> Self {
43420         self.inner.size = size;
43421         self
43422     }
43423     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43424     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43425     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCopy2KHR43426     pub fn build(self) -> BufferCopy2KHR {
43427         self.inner
43428     }
43429 }
43430 #[repr(C)]
43431 #[derive(Copy, Clone, Debug)]
43432 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCopy2KHR.html>"]
43433 pub struct ImageCopy2KHR {
43434     pub s_type: StructureType,
43435     pub p_next: *const c_void,
43436     pub src_subresource: ImageSubresourceLayers,
43437     pub src_offset: Offset3D,
43438     pub dst_subresource: ImageSubresourceLayers,
43439     pub dst_offset: Offset3D,
43440     pub extent: Extent3D,
43441 }
43442 impl ::std::default::Default for ImageCopy2KHR {
default() -> ImageCopy2KHR43443     fn default() -> ImageCopy2KHR {
43444         ImageCopy2KHR {
43445             s_type: StructureType::IMAGE_COPY_2_KHR,
43446             p_next: ::std::ptr::null(),
43447             src_subresource: ImageSubresourceLayers::default(),
43448             src_offset: Offset3D::default(),
43449             dst_subresource: ImageSubresourceLayers::default(),
43450             dst_offset: Offset3D::default(),
43451             extent: Extent3D::default(),
43452         }
43453     }
43454 }
43455 impl ImageCopy2KHR {
builder<'a>() -> ImageCopy2KHRBuilder<'a>43456     pub fn builder<'a>() -> ImageCopy2KHRBuilder<'a> {
43457         ImageCopy2KHRBuilder {
43458             inner: ImageCopy2KHR::default(),
43459             marker: ::std::marker::PhantomData,
43460         }
43461     }
43462 }
43463 #[repr(transparent)]
43464 pub struct ImageCopy2KHRBuilder<'a> {
43465     inner: ImageCopy2KHR,
43466     marker: ::std::marker::PhantomData<&'a ()>,
43467 }
43468 impl<'a> ::std::ops::Deref for ImageCopy2KHRBuilder<'a> {
43469     type Target = ImageCopy2KHR;
deref(&self) -> &Self::Target43470     fn deref(&self) -> &Self::Target {
43471         &self.inner
43472     }
43473 }
43474 impl<'a> ::std::ops::DerefMut for ImageCopy2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43475     fn deref_mut(&mut self) -> &mut Self::Target {
43476         &mut self.inner
43477     }
43478 }
43479 impl<'a> ImageCopy2KHRBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self43480     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
43481         self.inner.src_subresource = src_subresource;
43482         self
43483     }
src_offset(mut self, src_offset: Offset3D) -> Self43484     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
43485         self.inner.src_offset = src_offset;
43486         self
43487     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self43488     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
43489         self.inner.dst_subresource = dst_subresource;
43490         self
43491     }
dst_offset(mut self, dst_offset: Offset3D) -> Self43492     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
43493         self.inner.dst_offset = dst_offset;
43494         self
43495     }
extent(mut self, extent: Extent3D) -> Self43496     pub fn extent(mut self, extent: Extent3D) -> Self {
43497         self.inner.extent = extent;
43498         self
43499     }
43500     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43501     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43502     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageCopy2KHR43503     pub fn build(self) -> ImageCopy2KHR {
43504         self.inner
43505     }
43506 }
43507 #[repr(C)]
43508 #[derive(Copy, Clone, Debug)]
43509 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageBlit2KHR.html>"]
43510 pub struct ImageBlit2KHR {
43511     pub s_type: StructureType,
43512     pub p_next: *const c_void,
43513     pub src_subresource: ImageSubresourceLayers,
43514     pub src_offsets: [Offset3D; 2],
43515     pub dst_subresource: ImageSubresourceLayers,
43516     pub dst_offsets: [Offset3D; 2],
43517 }
43518 impl ::std::default::Default for ImageBlit2KHR {
default() -> ImageBlit2KHR43519     fn default() -> ImageBlit2KHR {
43520         ImageBlit2KHR {
43521             s_type: StructureType::IMAGE_BLIT_2_KHR,
43522             p_next: ::std::ptr::null(),
43523             src_subresource: ImageSubresourceLayers::default(),
43524             src_offsets: unsafe { ::std::mem::zeroed() },
43525             dst_subresource: ImageSubresourceLayers::default(),
43526             dst_offsets: unsafe { ::std::mem::zeroed() },
43527         }
43528     }
43529 }
43530 impl ImageBlit2KHR {
builder<'a>() -> ImageBlit2KHRBuilder<'a>43531     pub fn builder<'a>() -> ImageBlit2KHRBuilder<'a> {
43532         ImageBlit2KHRBuilder {
43533             inner: ImageBlit2KHR::default(),
43534             marker: ::std::marker::PhantomData,
43535         }
43536     }
43537 }
43538 #[repr(transparent)]
43539 pub struct ImageBlit2KHRBuilder<'a> {
43540     inner: ImageBlit2KHR,
43541     marker: ::std::marker::PhantomData<&'a ()>,
43542 }
43543 pub unsafe trait ExtendsImageBlit2KHR {}
43544 impl<'a> ::std::ops::Deref for ImageBlit2KHRBuilder<'a> {
43545     type Target = ImageBlit2KHR;
deref(&self) -> &Self::Target43546     fn deref(&self) -> &Self::Target {
43547         &self.inner
43548     }
43549 }
43550 impl<'a> ::std::ops::DerefMut for ImageBlit2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43551     fn deref_mut(&mut self) -> &mut Self::Target {
43552         &mut self.inner
43553     }
43554 }
43555 impl<'a> ImageBlit2KHRBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self43556     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
43557         self.inner.src_subresource = src_subresource;
43558         self
43559     }
src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self43560     pub fn src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self {
43561         self.inner.src_offsets = src_offsets;
43562         self
43563     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self43564     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
43565         self.inner.dst_subresource = dst_subresource;
43566         self
43567     }
dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self43568     pub fn dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self {
43569         self.inner.dst_offsets = dst_offsets;
43570         self
43571     }
43572     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
43573     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
43574     #[doc = r" valid extension structs can be pushed into the chain."]
43575     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
43576     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageBlit2KHR>(mut self, next: &'a mut T) -> Self43577     pub fn push_next<T: ExtendsImageBlit2KHR>(mut self, next: &'a mut T) -> Self {
43578         unsafe {
43579             let next_ptr = next as *mut T as *mut BaseOutStructure;
43580             let last_next = ptr_chain_iter(next).last().unwrap();
43581             (*last_next).p_next = self.inner.p_next as _;
43582             self.inner.p_next = next_ptr as _;
43583         }
43584         self
43585     }
43586     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43587     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43588     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageBlit2KHR43589     pub fn build(self) -> ImageBlit2KHR {
43590         self.inner
43591     }
43592 }
43593 #[repr(C)]
43594 #[derive(Copy, Clone, Debug)]
43595 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferImageCopy2KHR.html>"]
43596 pub struct BufferImageCopy2KHR {
43597     pub s_type: StructureType,
43598     pub p_next: *const c_void,
43599     pub buffer_offset: DeviceSize,
43600     pub buffer_row_length: u32,
43601     pub buffer_image_height: u32,
43602     pub image_subresource: ImageSubresourceLayers,
43603     pub image_offset: Offset3D,
43604     pub image_extent: Extent3D,
43605 }
43606 impl ::std::default::Default for BufferImageCopy2KHR {
default() -> BufferImageCopy2KHR43607     fn default() -> BufferImageCopy2KHR {
43608         BufferImageCopy2KHR {
43609             s_type: StructureType::BUFFER_IMAGE_COPY_2_KHR,
43610             p_next: ::std::ptr::null(),
43611             buffer_offset: DeviceSize::default(),
43612             buffer_row_length: u32::default(),
43613             buffer_image_height: u32::default(),
43614             image_subresource: ImageSubresourceLayers::default(),
43615             image_offset: Offset3D::default(),
43616             image_extent: Extent3D::default(),
43617         }
43618     }
43619 }
43620 impl BufferImageCopy2KHR {
builder<'a>() -> BufferImageCopy2KHRBuilder<'a>43621     pub fn builder<'a>() -> BufferImageCopy2KHRBuilder<'a> {
43622         BufferImageCopy2KHRBuilder {
43623             inner: BufferImageCopy2KHR::default(),
43624             marker: ::std::marker::PhantomData,
43625         }
43626     }
43627 }
43628 #[repr(transparent)]
43629 pub struct BufferImageCopy2KHRBuilder<'a> {
43630     inner: BufferImageCopy2KHR,
43631     marker: ::std::marker::PhantomData<&'a ()>,
43632 }
43633 pub unsafe trait ExtendsBufferImageCopy2KHR {}
43634 impl<'a> ::std::ops::Deref for BufferImageCopy2KHRBuilder<'a> {
43635     type Target = BufferImageCopy2KHR;
deref(&self) -> &Self::Target43636     fn deref(&self) -> &Self::Target {
43637         &self.inner
43638     }
43639 }
43640 impl<'a> ::std::ops::DerefMut for BufferImageCopy2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43641     fn deref_mut(&mut self) -> &mut Self::Target {
43642         &mut self.inner
43643     }
43644 }
43645 impl<'a> BufferImageCopy2KHRBuilder<'a> {
buffer_offset(mut self, buffer_offset: DeviceSize) -> Self43646     pub fn buffer_offset(mut self, buffer_offset: DeviceSize) -> Self {
43647         self.inner.buffer_offset = buffer_offset;
43648         self
43649     }
buffer_row_length(mut self, buffer_row_length: u32) -> Self43650     pub fn buffer_row_length(mut self, buffer_row_length: u32) -> Self {
43651         self.inner.buffer_row_length = buffer_row_length;
43652         self
43653     }
buffer_image_height(mut self, buffer_image_height: u32) -> Self43654     pub fn buffer_image_height(mut self, buffer_image_height: u32) -> Self {
43655         self.inner.buffer_image_height = buffer_image_height;
43656         self
43657     }
image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self43658     pub fn image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self {
43659         self.inner.image_subresource = image_subresource;
43660         self
43661     }
image_offset(mut self, image_offset: Offset3D) -> Self43662     pub fn image_offset(mut self, image_offset: Offset3D) -> Self {
43663         self.inner.image_offset = image_offset;
43664         self
43665     }
image_extent(mut self, image_extent: Extent3D) -> Self43666     pub fn image_extent(mut self, image_extent: Extent3D) -> Self {
43667         self.inner.image_extent = image_extent;
43668         self
43669     }
43670     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
43671     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
43672     #[doc = r" valid extension structs can be pushed into the chain."]
43673     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
43674     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBufferImageCopy2KHR>(mut self, next: &'a mut T) -> Self43675     pub fn push_next<T: ExtendsBufferImageCopy2KHR>(mut self, next: &'a mut T) -> Self {
43676         unsafe {
43677             let next_ptr = next as *mut T as *mut BaseOutStructure;
43678             let last_next = ptr_chain_iter(next).last().unwrap();
43679             (*last_next).p_next = self.inner.p_next as _;
43680             self.inner.p_next = next_ptr as _;
43681         }
43682         self
43683     }
43684     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43685     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43686     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferImageCopy2KHR43687     pub fn build(self) -> BufferImageCopy2KHR {
43688         self.inner
43689     }
43690 }
43691 #[repr(C)]
43692 #[derive(Copy, Clone, Debug)]
43693 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageResolve2KHR.html>"]
43694 pub struct ImageResolve2KHR {
43695     pub s_type: StructureType,
43696     pub p_next: *const c_void,
43697     pub src_subresource: ImageSubresourceLayers,
43698     pub src_offset: Offset3D,
43699     pub dst_subresource: ImageSubresourceLayers,
43700     pub dst_offset: Offset3D,
43701     pub extent: Extent3D,
43702 }
43703 impl ::std::default::Default for ImageResolve2KHR {
default() -> ImageResolve2KHR43704     fn default() -> ImageResolve2KHR {
43705         ImageResolve2KHR {
43706             s_type: StructureType::IMAGE_RESOLVE_2_KHR,
43707             p_next: ::std::ptr::null(),
43708             src_subresource: ImageSubresourceLayers::default(),
43709             src_offset: Offset3D::default(),
43710             dst_subresource: ImageSubresourceLayers::default(),
43711             dst_offset: Offset3D::default(),
43712             extent: Extent3D::default(),
43713         }
43714     }
43715 }
43716 impl ImageResolve2KHR {
builder<'a>() -> ImageResolve2KHRBuilder<'a>43717     pub fn builder<'a>() -> ImageResolve2KHRBuilder<'a> {
43718         ImageResolve2KHRBuilder {
43719             inner: ImageResolve2KHR::default(),
43720             marker: ::std::marker::PhantomData,
43721         }
43722     }
43723 }
43724 #[repr(transparent)]
43725 pub struct ImageResolve2KHRBuilder<'a> {
43726     inner: ImageResolve2KHR,
43727     marker: ::std::marker::PhantomData<&'a ()>,
43728 }
43729 impl<'a> ::std::ops::Deref for ImageResolve2KHRBuilder<'a> {
43730     type Target = ImageResolve2KHR;
deref(&self) -> &Self::Target43731     fn deref(&self) -> &Self::Target {
43732         &self.inner
43733     }
43734 }
43735 impl<'a> ::std::ops::DerefMut for ImageResolve2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43736     fn deref_mut(&mut self) -> &mut Self::Target {
43737         &mut self.inner
43738     }
43739 }
43740 impl<'a> ImageResolve2KHRBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self43741     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
43742         self.inner.src_subresource = src_subresource;
43743         self
43744     }
src_offset(mut self, src_offset: Offset3D) -> Self43745     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
43746         self.inner.src_offset = src_offset;
43747         self
43748     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self43749     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
43750         self.inner.dst_subresource = dst_subresource;
43751         self
43752     }
dst_offset(mut self, dst_offset: Offset3D) -> Self43753     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
43754         self.inner.dst_offset = dst_offset;
43755         self
43756     }
extent(mut self, extent: Extent3D) -> Self43757     pub fn extent(mut self, extent: Extent3D) -> Self {
43758         self.inner.extent = extent;
43759         self
43760     }
43761     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43762     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43763     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageResolve2KHR43764     pub fn build(self) -> ImageResolve2KHR {
43765         self.inner
43766     }
43767 }
43768 #[repr(C)]
43769 #[derive(Copy, Clone, Debug)]
43770 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyBufferInfo2KHR.html>"]
43771 pub struct CopyBufferInfo2KHR {
43772     pub s_type: StructureType,
43773     pub p_next: *const c_void,
43774     pub src_buffer: Buffer,
43775     pub dst_buffer: Buffer,
43776     pub region_count: u32,
43777     pub p_regions: *const BufferCopy2KHR,
43778 }
43779 impl ::std::default::Default for CopyBufferInfo2KHR {
default() -> CopyBufferInfo2KHR43780     fn default() -> CopyBufferInfo2KHR {
43781         CopyBufferInfo2KHR {
43782             s_type: StructureType::COPY_BUFFER_INFO_2_KHR,
43783             p_next: ::std::ptr::null(),
43784             src_buffer: Buffer::default(),
43785             dst_buffer: Buffer::default(),
43786             region_count: u32::default(),
43787             p_regions: ::std::ptr::null(),
43788         }
43789     }
43790 }
43791 impl CopyBufferInfo2KHR {
builder<'a>() -> CopyBufferInfo2KHRBuilder<'a>43792     pub fn builder<'a>() -> CopyBufferInfo2KHRBuilder<'a> {
43793         CopyBufferInfo2KHRBuilder {
43794             inner: CopyBufferInfo2KHR::default(),
43795             marker: ::std::marker::PhantomData,
43796         }
43797     }
43798 }
43799 #[repr(transparent)]
43800 pub struct CopyBufferInfo2KHRBuilder<'a> {
43801     inner: CopyBufferInfo2KHR,
43802     marker: ::std::marker::PhantomData<&'a ()>,
43803 }
43804 impl<'a> ::std::ops::Deref for CopyBufferInfo2KHRBuilder<'a> {
43805     type Target = CopyBufferInfo2KHR;
deref(&self) -> &Self::Target43806     fn deref(&self) -> &Self::Target {
43807         &self.inner
43808     }
43809 }
43810 impl<'a> ::std::ops::DerefMut for CopyBufferInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43811     fn deref_mut(&mut self) -> &mut Self::Target {
43812         &mut self.inner
43813     }
43814 }
43815 impl<'a> CopyBufferInfo2KHRBuilder<'a> {
src_buffer(mut self, src_buffer: Buffer) -> Self43816     pub fn src_buffer(mut self, src_buffer: Buffer) -> Self {
43817         self.inner.src_buffer = src_buffer;
43818         self
43819     }
dst_buffer(mut self, dst_buffer: Buffer) -> Self43820     pub fn dst_buffer(mut self, dst_buffer: Buffer) -> Self {
43821         self.inner.dst_buffer = dst_buffer;
43822         self
43823     }
regions(mut self, regions: &'a [BufferCopy2KHR]) -> Self43824     pub fn regions(mut self, regions: &'a [BufferCopy2KHR]) -> Self {
43825         self.inner.region_count = regions.len() as _;
43826         self.inner.p_regions = regions.as_ptr();
43827         self
43828     }
43829     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43830     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43831     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyBufferInfo2KHR43832     pub fn build(self) -> CopyBufferInfo2KHR {
43833         self.inner
43834     }
43835 }
43836 #[repr(C)]
43837 #[derive(Copy, Clone, Debug)]
43838 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyImageInfo2KHR.html>"]
43839 pub struct CopyImageInfo2KHR {
43840     pub s_type: StructureType,
43841     pub p_next: *const c_void,
43842     pub src_image: Image,
43843     pub src_image_layout: ImageLayout,
43844     pub dst_image: Image,
43845     pub dst_image_layout: ImageLayout,
43846     pub region_count: u32,
43847     pub p_regions: *const ImageCopy2KHR,
43848 }
43849 impl ::std::default::Default for CopyImageInfo2KHR {
default() -> CopyImageInfo2KHR43850     fn default() -> CopyImageInfo2KHR {
43851         CopyImageInfo2KHR {
43852             s_type: StructureType::COPY_IMAGE_INFO_2_KHR,
43853             p_next: ::std::ptr::null(),
43854             src_image: Image::default(),
43855             src_image_layout: ImageLayout::default(),
43856             dst_image: Image::default(),
43857             dst_image_layout: ImageLayout::default(),
43858             region_count: u32::default(),
43859             p_regions: ::std::ptr::null(),
43860         }
43861     }
43862 }
43863 impl CopyImageInfo2KHR {
builder<'a>() -> CopyImageInfo2KHRBuilder<'a>43864     pub fn builder<'a>() -> CopyImageInfo2KHRBuilder<'a> {
43865         CopyImageInfo2KHRBuilder {
43866             inner: CopyImageInfo2KHR::default(),
43867             marker: ::std::marker::PhantomData,
43868         }
43869     }
43870 }
43871 #[repr(transparent)]
43872 pub struct CopyImageInfo2KHRBuilder<'a> {
43873     inner: CopyImageInfo2KHR,
43874     marker: ::std::marker::PhantomData<&'a ()>,
43875 }
43876 impl<'a> ::std::ops::Deref for CopyImageInfo2KHRBuilder<'a> {
43877     type Target = CopyImageInfo2KHR;
deref(&self) -> &Self::Target43878     fn deref(&self) -> &Self::Target {
43879         &self.inner
43880     }
43881 }
43882 impl<'a> ::std::ops::DerefMut for CopyImageInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43883     fn deref_mut(&mut self) -> &mut Self::Target {
43884         &mut self.inner
43885     }
43886 }
43887 impl<'a> CopyImageInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self43888     pub fn src_image(mut self, src_image: Image) -> Self {
43889         self.inner.src_image = src_image;
43890         self
43891     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self43892     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
43893         self.inner.src_image_layout = src_image_layout;
43894         self
43895     }
dst_image(mut self, dst_image: Image) -> Self43896     pub fn dst_image(mut self, dst_image: Image) -> Self {
43897         self.inner.dst_image = dst_image;
43898         self
43899     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self43900     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
43901         self.inner.dst_image_layout = dst_image_layout;
43902         self
43903     }
regions(mut self, regions: &'a [ImageCopy2KHR]) -> Self43904     pub fn regions(mut self, regions: &'a [ImageCopy2KHR]) -> Self {
43905         self.inner.region_count = regions.len() as _;
43906         self.inner.p_regions = regions.as_ptr();
43907         self
43908     }
43909     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43910     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43911     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyImageInfo2KHR43912     pub fn build(self) -> CopyImageInfo2KHR {
43913         self.inner
43914     }
43915 }
43916 #[repr(C)]
43917 #[derive(Copy, Clone, Debug)]
43918 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlitImageInfo2KHR.html>"]
43919 pub struct BlitImageInfo2KHR {
43920     pub s_type: StructureType,
43921     pub p_next: *const c_void,
43922     pub src_image: Image,
43923     pub src_image_layout: ImageLayout,
43924     pub dst_image: Image,
43925     pub dst_image_layout: ImageLayout,
43926     pub region_count: u32,
43927     pub p_regions: *const ImageBlit2KHR,
43928     pub filter: Filter,
43929 }
43930 impl ::std::default::Default for BlitImageInfo2KHR {
default() -> BlitImageInfo2KHR43931     fn default() -> BlitImageInfo2KHR {
43932         BlitImageInfo2KHR {
43933             s_type: StructureType::BLIT_IMAGE_INFO_2_KHR,
43934             p_next: ::std::ptr::null(),
43935             src_image: Image::default(),
43936             src_image_layout: ImageLayout::default(),
43937             dst_image: Image::default(),
43938             dst_image_layout: ImageLayout::default(),
43939             region_count: u32::default(),
43940             p_regions: ::std::ptr::null(),
43941             filter: Filter::default(),
43942         }
43943     }
43944 }
43945 impl BlitImageInfo2KHR {
builder<'a>() -> BlitImageInfo2KHRBuilder<'a>43946     pub fn builder<'a>() -> BlitImageInfo2KHRBuilder<'a> {
43947         BlitImageInfo2KHRBuilder {
43948             inner: BlitImageInfo2KHR::default(),
43949             marker: ::std::marker::PhantomData,
43950         }
43951     }
43952 }
43953 #[repr(transparent)]
43954 pub struct BlitImageInfo2KHRBuilder<'a> {
43955     inner: BlitImageInfo2KHR,
43956     marker: ::std::marker::PhantomData<&'a ()>,
43957 }
43958 impl<'a> ::std::ops::Deref for BlitImageInfo2KHRBuilder<'a> {
43959     type Target = BlitImageInfo2KHR;
deref(&self) -> &Self::Target43960     fn deref(&self) -> &Self::Target {
43961         &self.inner
43962     }
43963 }
43964 impl<'a> ::std::ops::DerefMut for BlitImageInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43965     fn deref_mut(&mut self) -> &mut Self::Target {
43966         &mut self.inner
43967     }
43968 }
43969 impl<'a> BlitImageInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self43970     pub fn src_image(mut self, src_image: Image) -> Self {
43971         self.inner.src_image = src_image;
43972         self
43973     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self43974     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
43975         self.inner.src_image_layout = src_image_layout;
43976         self
43977     }
dst_image(mut self, dst_image: Image) -> Self43978     pub fn dst_image(mut self, dst_image: Image) -> Self {
43979         self.inner.dst_image = dst_image;
43980         self
43981     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self43982     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
43983         self.inner.dst_image_layout = dst_image_layout;
43984         self
43985     }
regions(mut self, regions: &'a [ImageBlit2KHR]) -> Self43986     pub fn regions(mut self, regions: &'a [ImageBlit2KHR]) -> Self {
43987         self.inner.region_count = regions.len() as _;
43988         self.inner.p_regions = regions.as_ptr();
43989         self
43990     }
filter(mut self, filter: Filter) -> Self43991     pub fn filter(mut self, filter: Filter) -> Self {
43992         self.inner.filter = filter;
43993         self
43994     }
43995     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43996     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43997     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BlitImageInfo2KHR43998     pub fn build(self) -> BlitImageInfo2KHR {
43999         self.inner
44000     }
44001 }
44002 #[repr(C)]
44003 #[derive(Copy, Clone, Debug)]
44004 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyBufferToImageInfo2KHR.html>"]
44005 pub struct CopyBufferToImageInfo2KHR {
44006     pub s_type: StructureType,
44007     pub p_next: *const c_void,
44008     pub src_buffer: Buffer,
44009     pub dst_image: Image,
44010     pub dst_image_layout: ImageLayout,
44011     pub region_count: u32,
44012     pub p_regions: *const BufferImageCopy2KHR,
44013 }
44014 impl ::std::default::Default for CopyBufferToImageInfo2KHR {
default() -> CopyBufferToImageInfo2KHR44015     fn default() -> CopyBufferToImageInfo2KHR {
44016         CopyBufferToImageInfo2KHR {
44017             s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2_KHR,
44018             p_next: ::std::ptr::null(),
44019             src_buffer: Buffer::default(),
44020             dst_image: Image::default(),
44021             dst_image_layout: ImageLayout::default(),
44022             region_count: u32::default(),
44023             p_regions: ::std::ptr::null(),
44024         }
44025     }
44026 }
44027 impl CopyBufferToImageInfo2KHR {
builder<'a>() -> CopyBufferToImageInfo2KHRBuilder<'a>44028     pub fn builder<'a>() -> CopyBufferToImageInfo2KHRBuilder<'a> {
44029         CopyBufferToImageInfo2KHRBuilder {
44030             inner: CopyBufferToImageInfo2KHR::default(),
44031             marker: ::std::marker::PhantomData,
44032         }
44033     }
44034 }
44035 #[repr(transparent)]
44036 pub struct CopyBufferToImageInfo2KHRBuilder<'a> {
44037     inner: CopyBufferToImageInfo2KHR,
44038     marker: ::std::marker::PhantomData<&'a ()>,
44039 }
44040 impl<'a> ::std::ops::Deref for CopyBufferToImageInfo2KHRBuilder<'a> {
44041     type Target = CopyBufferToImageInfo2KHR;
deref(&self) -> &Self::Target44042     fn deref(&self) -> &Self::Target {
44043         &self.inner
44044     }
44045 }
44046 impl<'a> ::std::ops::DerefMut for CopyBufferToImageInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44047     fn deref_mut(&mut self) -> &mut Self::Target {
44048         &mut self.inner
44049     }
44050 }
44051 impl<'a> CopyBufferToImageInfo2KHRBuilder<'a> {
src_buffer(mut self, src_buffer: Buffer) -> Self44052     pub fn src_buffer(mut self, src_buffer: Buffer) -> Self {
44053         self.inner.src_buffer = src_buffer;
44054         self
44055     }
dst_image(mut self, dst_image: Image) -> Self44056     pub fn dst_image(mut self, dst_image: Image) -> Self {
44057         self.inner.dst_image = dst_image;
44058         self
44059     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self44060     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
44061         self.inner.dst_image_layout = dst_image_layout;
44062         self
44063     }
regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self44064     pub fn regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self {
44065         self.inner.region_count = regions.len() as _;
44066         self.inner.p_regions = regions.as_ptr();
44067         self
44068     }
44069     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44070     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44071     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyBufferToImageInfo2KHR44072     pub fn build(self) -> CopyBufferToImageInfo2KHR {
44073         self.inner
44074     }
44075 }
44076 #[repr(C)]
44077 #[derive(Copy, Clone, Debug)]
44078 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyImageToBufferInfo2KHR.html>"]
44079 pub struct CopyImageToBufferInfo2KHR {
44080     pub s_type: StructureType,
44081     pub p_next: *const c_void,
44082     pub src_image: Image,
44083     pub src_image_layout: ImageLayout,
44084     pub dst_buffer: Buffer,
44085     pub region_count: u32,
44086     pub p_regions: *const BufferImageCopy2KHR,
44087 }
44088 impl ::std::default::Default for CopyImageToBufferInfo2KHR {
default() -> CopyImageToBufferInfo2KHR44089     fn default() -> CopyImageToBufferInfo2KHR {
44090         CopyImageToBufferInfo2KHR {
44091             s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2_KHR,
44092             p_next: ::std::ptr::null(),
44093             src_image: Image::default(),
44094             src_image_layout: ImageLayout::default(),
44095             dst_buffer: Buffer::default(),
44096             region_count: u32::default(),
44097             p_regions: ::std::ptr::null(),
44098         }
44099     }
44100 }
44101 impl CopyImageToBufferInfo2KHR {
builder<'a>() -> CopyImageToBufferInfo2KHRBuilder<'a>44102     pub fn builder<'a>() -> CopyImageToBufferInfo2KHRBuilder<'a> {
44103         CopyImageToBufferInfo2KHRBuilder {
44104             inner: CopyImageToBufferInfo2KHR::default(),
44105             marker: ::std::marker::PhantomData,
44106         }
44107     }
44108 }
44109 #[repr(transparent)]
44110 pub struct CopyImageToBufferInfo2KHRBuilder<'a> {
44111     inner: CopyImageToBufferInfo2KHR,
44112     marker: ::std::marker::PhantomData<&'a ()>,
44113 }
44114 impl<'a> ::std::ops::Deref for CopyImageToBufferInfo2KHRBuilder<'a> {
44115     type Target = CopyImageToBufferInfo2KHR;
deref(&self) -> &Self::Target44116     fn deref(&self) -> &Self::Target {
44117         &self.inner
44118     }
44119 }
44120 impl<'a> ::std::ops::DerefMut for CopyImageToBufferInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44121     fn deref_mut(&mut self) -> &mut Self::Target {
44122         &mut self.inner
44123     }
44124 }
44125 impl<'a> CopyImageToBufferInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self44126     pub fn src_image(mut self, src_image: Image) -> Self {
44127         self.inner.src_image = src_image;
44128         self
44129     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self44130     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
44131         self.inner.src_image_layout = src_image_layout;
44132         self
44133     }
dst_buffer(mut self, dst_buffer: Buffer) -> Self44134     pub fn dst_buffer(mut self, dst_buffer: Buffer) -> Self {
44135         self.inner.dst_buffer = dst_buffer;
44136         self
44137     }
regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self44138     pub fn regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self {
44139         self.inner.region_count = regions.len() as _;
44140         self.inner.p_regions = regions.as_ptr();
44141         self
44142     }
44143     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44144     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44145     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyImageToBufferInfo2KHR44146     pub fn build(self) -> CopyImageToBufferInfo2KHR {
44147         self.inner
44148     }
44149 }
44150 #[repr(C)]
44151 #[derive(Copy, Clone, Debug)]
44152 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkResolveImageInfo2KHR.html>"]
44153 pub struct ResolveImageInfo2KHR {
44154     pub s_type: StructureType,
44155     pub p_next: *const c_void,
44156     pub src_image: Image,
44157     pub src_image_layout: ImageLayout,
44158     pub dst_image: Image,
44159     pub dst_image_layout: ImageLayout,
44160     pub region_count: u32,
44161     pub p_regions: *const ImageResolve2KHR,
44162 }
44163 impl ::std::default::Default for ResolveImageInfo2KHR {
default() -> ResolveImageInfo2KHR44164     fn default() -> ResolveImageInfo2KHR {
44165         ResolveImageInfo2KHR {
44166             s_type: StructureType::RESOLVE_IMAGE_INFO_2_KHR,
44167             p_next: ::std::ptr::null(),
44168             src_image: Image::default(),
44169             src_image_layout: ImageLayout::default(),
44170             dst_image: Image::default(),
44171             dst_image_layout: ImageLayout::default(),
44172             region_count: u32::default(),
44173             p_regions: ::std::ptr::null(),
44174         }
44175     }
44176 }
44177 impl ResolveImageInfo2KHR {
builder<'a>() -> ResolveImageInfo2KHRBuilder<'a>44178     pub fn builder<'a>() -> ResolveImageInfo2KHRBuilder<'a> {
44179         ResolveImageInfo2KHRBuilder {
44180             inner: ResolveImageInfo2KHR::default(),
44181             marker: ::std::marker::PhantomData,
44182         }
44183     }
44184 }
44185 #[repr(transparent)]
44186 pub struct ResolveImageInfo2KHRBuilder<'a> {
44187     inner: ResolveImageInfo2KHR,
44188     marker: ::std::marker::PhantomData<&'a ()>,
44189 }
44190 impl<'a> ::std::ops::Deref for ResolveImageInfo2KHRBuilder<'a> {
44191     type Target = ResolveImageInfo2KHR;
deref(&self) -> &Self::Target44192     fn deref(&self) -> &Self::Target {
44193         &self.inner
44194     }
44195 }
44196 impl<'a> ::std::ops::DerefMut for ResolveImageInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44197     fn deref_mut(&mut self) -> &mut Self::Target {
44198         &mut self.inner
44199     }
44200 }
44201 impl<'a> ResolveImageInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self44202     pub fn src_image(mut self, src_image: Image) -> Self {
44203         self.inner.src_image = src_image;
44204         self
44205     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self44206     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
44207         self.inner.src_image_layout = src_image_layout;
44208         self
44209     }
dst_image(mut self, dst_image: Image) -> Self44210     pub fn dst_image(mut self, dst_image: Image) -> Self {
44211         self.inner.dst_image = dst_image;
44212         self
44213     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self44214     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
44215         self.inner.dst_image_layout = dst_image_layout;
44216         self
44217     }
regions(mut self, regions: &'a [ImageResolve2KHR]) -> Self44218     pub fn regions(mut self, regions: &'a [ImageResolve2KHR]) -> Self {
44219         self.inner.region_count = regions.len() as _;
44220         self.inner.p_regions = regions.as_ptr();
44221         self
44222     }
44223     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44224     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44225     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ResolveImageInfo2KHR44226     pub fn build(self) -> ResolveImageInfo2KHR {
44227         self.inner
44228     }
44229 }
44230 #[repr(C)]
44231 #[derive(Copy, Clone, Debug)]
44232 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>"]
44233 pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
44234     pub s_type: StructureType,
44235     pub p_next: *mut c_void,
44236     pub shader_image_int64_atomics: Bool32,
44237     pub sparse_image_int64_atomics: Bool32,
44238 }
44239 impl ::std::default::Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
default() -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT44240     fn default() -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
44241         PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
44242             s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
44243             p_next: ::std::ptr::null_mut(),
44244             shader_image_int64_atomics: Bool32::default(),
44245             sparse_image_int64_atomics: Bool32::default(),
44246         }
44247     }
44248 }
44249 impl PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a>44250     pub fn builder<'a>() -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
44251         PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder {
44252             inner: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT::default(),
44253             marker: ::std::marker::PhantomData,
44254         }
44255     }
44256 }
44257 #[repr(transparent)]
44258 pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
44259     inner: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT,
44260     marker: ::std::marker::PhantomData<&'a ()>,
44261 }
44262 unsafe impl ExtendsPhysicalDeviceFeatures2
44263     for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'_>
44264 {
44265 }
44266 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
44267 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'_> {}
44268 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
44269 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
44270     type Target = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
deref(&self) -> &Self::Target44271     fn deref(&self) -> &Self::Target {
44272         &self.inner
44273     }
44274 }
44275 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44276     fn deref_mut(&mut self) -> &mut Self::Target {
44277         &mut self.inner
44278     }
44279 }
44280 impl<'a> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
shader_image_int64_atomics(mut self, shader_image_int64_atomics: bool) -> Self44281     pub fn shader_image_int64_atomics(mut self, shader_image_int64_atomics: bool) -> Self {
44282         self.inner.shader_image_int64_atomics = shader_image_int64_atomics.into();
44283         self
44284     }
sparse_image_int64_atomics(mut self, sparse_image_int64_atomics: bool) -> Self44285     pub fn sparse_image_int64_atomics(mut self, sparse_image_int64_atomics: bool) -> Self {
44286         self.inner.sparse_image_int64_atomics = sparse_image_int64_atomics.into();
44287         self
44288     }
44289     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44290     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44291     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT44292     pub fn build(self) -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
44293         self.inner
44294     }
44295 }
44296 #[repr(C)]
44297 #[derive(Copy, Clone, Debug)]
44298 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>"]
44299 pub struct FragmentShadingRateAttachmentInfoKHR {
44300     pub s_type: StructureType,
44301     pub p_next: *const c_void,
44302     pub p_fragment_shading_rate_attachment: *const AttachmentReference2,
44303     pub shading_rate_attachment_texel_size: Extent2D,
44304 }
44305 impl ::std::default::Default for FragmentShadingRateAttachmentInfoKHR {
default() -> FragmentShadingRateAttachmentInfoKHR44306     fn default() -> FragmentShadingRateAttachmentInfoKHR {
44307         FragmentShadingRateAttachmentInfoKHR {
44308             s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
44309             p_next: ::std::ptr::null(),
44310             p_fragment_shading_rate_attachment: ::std::ptr::null(),
44311             shading_rate_attachment_texel_size: Extent2D::default(),
44312         }
44313     }
44314 }
44315 impl FragmentShadingRateAttachmentInfoKHR {
builder<'a>() -> FragmentShadingRateAttachmentInfoKHRBuilder<'a>44316     pub fn builder<'a>() -> FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
44317         FragmentShadingRateAttachmentInfoKHRBuilder {
44318             inner: FragmentShadingRateAttachmentInfoKHR::default(),
44319             marker: ::std::marker::PhantomData,
44320         }
44321     }
44322 }
44323 #[repr(transparent)]
44324 pub struct FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
44325     inner: FragmentShadingRateAttachmentInfoKHR,
44326     marker: ::std::marker::PhantomData<&'a ()>,
44327 }
44328 unsafe impl ExtendsSubpassDescription2 for FragmentShadingRateAttachmentInfoKHRBuilder<'_> {}
44329 unsafe impl ExtendsSubpassDescription2 for FragmentShadingRateAttachmentInfoKHR {}
44330 impl<'a> ::std::ops::Deref for FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
44331     type Target = FragmentShadingRateAttachmentInfoKHR;
deref(&self) -> &Self::Target44332     fn deref(&self) -> &Self::Target {
44333         &self.inner
44334     }
44335 }
44336 impl<'a> ::std::ops::DerefMut for FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44337     fn deref_mut(&mut self) -> &mut Self::Target {
44338         &mut self.inner
44339     }
44340 }
44341 impl<'a> FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
fragment_shading_rate_attachment( mut self, fragment_shading_rate_attachment: &'a AttachmentReference2, ) -> Self44342     pub fn fragment_shading_rate_attachment(
44343         mut self,
44344         fragment_shading_rate_attachment: &'a AttachmentReference2,
44345     ) -> Self {
44346         self.inner.p_fragment_shading_rate_attachment = fragment_shading_rate_attachment;
44347         self
44348     }
shading_rate_attachment_texel_size( mut self, shading_rate_attachment_texel_size: Extent2D, ) -> Self44349     pub fn shading_rate_attachment_texel_size(
44350         mut self,
44351         shading_rate_attachment_texel_size: Extent2D,
44352     ) -> Self {
44353         self.inner.shading_rate_attachment_texel_size = shading_rate_attachment_texel_size;
44354         self
44355     }
44356     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44357     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44358     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FragmentShadingRateAttachmentInfoKHR44359     pub fn build(self) -> FragmentShadingRateAttachmentInfoKHR {
44360         self.inner
44361     }
44362 }
44363 #[repr(C)]
44364 #[derive(Copy, Clone, Debug)]
44365 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>"]
44366 pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
44367     pub s_type: StructureType,
44368     pub p_next: *const c_void,
44369     pub fragment_size: Extent2D,
44370     pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
44371 }
44372 impl ::std::default::Default for PipelineFragmentShadingRateStateCreateInfoKHR {
default() -> PipelineFragmentShadingRateStateCreateInfoKHR44373     fn default() -> PipelineFragmentShadingRateStateCreateInfoKHR {
44374         PipelineFragmentShadingRateStateCreateInfoKHR {
44375             s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
44376             p_next: ::std::ptr::null(),
44377             fragment_size: Extent2D::default(),
44378             combiner_ops: unsafe { ::std::mem::zeroed() },
44379         }
44380     }
44381 }
44382 impl PipelineFragmentShadingRateStateCreateInfoKHR {
builder<'a>() -> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a>44383     pub fn builder<'a>() -> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
44384         PipelineFragmentShadingRateStateCreateInfoKHRBuilder {
44385             inner: PipelineFragmentShadingRateStateCreateInfoKHR::default(),
44386             marker: ::std::marker::PhantomData,
44387         }
44388     }
44389 }
44390 #[repr(transparent)]
44391 pub struct PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
44392     inner: PipelineFragmentShadingRateStateCreateInfoKHR,
44393     marker: ::std::marker::PhantomData<&'a ()>,
44394 }
44395 unsafe impl ExtendsGraphicsPipelineCreateInfo
44396     for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'_>
44397 {
44398 }
44399 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineFragmentShadingRateStateCreateInfoKHR {}
44400 impl<'a> ::std::ops::Deref for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
44401     type Target = PipelineFragmentShadingRateStateCreateInfoKHR;
deref(&self) -> &Self::Target44402     fn deref(&self) -> &Self::Target {
44403         &self.inner
44404     }
44405 }
44406 impl<'a> ::std::ops::DerefMut for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44407     fn deref_mut(&mut self) -> &mut Self::Target {
44408         &mut self.inner
44409     }
44410 }
44411 impl<'a> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
fragment_size(mut self, fragment_size: Extent2D) -> Self44412     pub fn fragment_size(mut self, fragment_size: Extent2D) -> Self {
44413         self.inner.fragment_size = fragment_size;
44414         self
44415     }
combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self44416     pub fn combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self {
44417         self.inner.combiner_ops = combiner_ops;
44418         self
44419     }
44420     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44421     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44422     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineFragmentShadingRateStateCreateInfoKHR44423     pub fn build(self) -> PipelineFragmentShadingRateStateCreateInfoKHR {
44424         self.inner
44425     }
44426 }
44427 #[repr(C)]
44428 #[derive(Copy, Clone, Debug)]
44429 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>"]
44430 pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
44431     pub s_type: StructureType,
44432     pub p_next: *mut c_void,
44433     pub pipeline_fragment_shading_rate: Bool32,
44434     pub primitive_fragment_shading_rate: Bool32,
44435     pub attachment_fragment_shading_rate: Bool32,
44436 }
44437 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
default() -> PhysicalDeviceFragmentShadingRateFeaturesKHR44438     fn default() -> PhysicalDeviceFragmentShadingRateFeaturesKHR {
44439         PhysicalDeviceFragmentShadingRateFeaturesKHR {
44440             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
44441             p_next: ::std::ptr::null_mut(),
44442             pipeline_fragment_shading_rate: Bool32::default(),
44443             primitive_fragment_shading_rate: Bool32::default(),
44444             attachment_fragment_shading_rate: Bool32::default(),
44445         }
44446     }
44447 }
44448 impl PhysicalDeviceFragmentShadingRateFeaturesKHR {
builder<'a>() -> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a>44449     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
44450         PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder {
44451             inner: PhysicalDeviceFragmentShadingRateFeaturesKHR::default(),
44452             marker: ::std::marker::PhantomData,
44453         }
44454     }
44455 }
44456 #[repr(transparent)]
44457 pub struct PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
44458     inner: PhysicalDeviceFragmentShadingRateFeaturesKHR,
44459     marker: ::std::marker::PhantomData<&'a ()>,
44460 }
44461 unsafe impl ExtendsPhysicalDeviceFeatures2
44462     for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'_>
44463 {
44464 }
44465 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
44466 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'_> {}
44467 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
44468 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
44469     type Target = PhysicalDeviceFragmentShadingRateFeaturesKHR;
deref(&self) -> &Self::Target44470     fn deref(&self) -> &Self::Target {
44471         &self.inner
44472     }
44473 }
44474 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44475     fn deref_mut(&mut self) -> &mut Self::Target {
44476         &mut self.inner
44477     }
44478 }
44479 impl<'a> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
pipeline_fragment_shading_rate(mut self, pipeline_fragment_shading_rate: bool) -> Self44480     pub fn pipeline_fragment_shading_rate(mut self, pipeline_fragment_shading_rate: bool) -> Self {
44481         self.inner.pipeline_fragment_shading_rate = pipeline_fragment_shading_rate.into();
44482         self
44483     }
primitive_fragment_shading_rate( mut self, primitive_fragment_shading_rate: bool, ) -> Self44484     pub fn primitive_fragment_shading_rate(
44485         mut self,
44486         primitive_fragment_shading_rate: bool,
44487     ) -> Self {
44488         self.inner.primitive_fragment_shading_rate = primitive_fragment_shading_rate.into();
44489         self
44490     }
attachment_fragment_shading_rate( mut self, attachment_fragment_shading_rate: bool, ) -> Self44491     pub fn attachment_fragment_shading_rate(
44492         mut self,
44493         attachment_fragment_shading_rate: bool,
44494     ) -> Self {
44495         self.inner.attachment_fragment_shading_rate = attachment_fragment_shading_rate.into();
44496         self
44497     }
44498     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44499     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44500     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateFeaturesKHR44501     pub fn build(self) -> PhysicalDeviceFragmentShadingRateFeaturesKHR {
44502         self.inner
44503     }
44504 }
44505 #[repr(C)]
44506 #[derive(Copy, Clone, Debug)]
44507 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>"]
44508 pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
44509     pub s_type: StructureType,
44510     pub p_next: *mut c_void,
44511     pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
44512     pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
44513     pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
44514     pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
44515     pub layered_shading_rate_attachments: Bool32,
44516     pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
44517     pub max_fragment_size: Extent2D,
44518     pub max_fragment_size_aspect_ratio: u32,
44519     pub max_fragment_shading_rate_coverage_samples: u32,
44520     pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
44521     pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
44522     pub fragment_shading_rate_with_sample_mask: Bool32,
44523     pub fragment_shading_rate_with_shader_sample_mask: Bool32,
44524     pub fragment_shading_rate_with_conservative_rasterization: Bool32,
44525     pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
44526     pub fragment_shading_rate_with_custom_sample_locations: Bool32,
44527     pub fragment_shading_rate_strict_multiply_combiner: Bool32,
44528 }
44529 impl ::std::default::Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
default() -> PhysicalDeviceFragmentShadingRatePropertiesKHR44530     fn default() -> PhysicalDeviceFragmentShadingRatePropertiesKHR {
44531         PhysicalDeviceFragmentShadingRatePropertiesKHR {
44532             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
44533             p_next: ::std::ptr::null_mut(),
44534             min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
44535             max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
44536             max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
44537             primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
44538             layered_shading_rate_attachments: Bool32::default(),
44539             fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
44540             max_fragment_size: Extent2D::default(),
44541             max_fragment_size_aspect_ratio: u32::default(),
44542             max_fragment_shading_rate_coverage_samples: u32::default(),
44543             max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
44544             fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
44545             fragment_shading_rate_with_sample_mask: Bool32::default(),
44546             fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
44547             fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
44548             fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
44549             fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
44550             fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
44551         }
44552     }
44553 }
44554 impl PhysicalDeviceFragmentShadingRatePropertiesKHR {
builder<'a>() -> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a>44555     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
44556         PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder {
44557             inner: PhysicalDeviceFragmentShadingRatePropertiesKHR::default(),
44558             marker: ::std::marker::PhantomData,
44559         }
44560     }
44561 }
44562 #[repr(transparent)]
44563 pub struct PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
44564     inner: PhysicalDeviceFragmentShadingRatePropertiesKHR,
44565     marker: ::std::marker::PhantomData<&'a ()>,
44566 }
44567 unsafe impl ExtendsPhysicalDeviceProperties2
44568     for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'_>
44569 {
44570 }
44571 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
44572 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
44573     type Target = PhysicalDeviceFragmentShadingRatePropertiesKHR;
deref(&self) -> &Self::Target44574     fn deref(&self) -> &Self::Target {
44575         &self.inner
44576     }
44577 }
44578 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44579     fn deref_mut(&mut self) -> &mut Self::Target {
44580         &mut self.inner
44581     }
44582 }
44583 impl<'a> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
min_fragment_shading_rate_attachment_texel_size( mut self, min_fragment_shading_rate_attachment_texel_size: Extent2D, ) -> Self44584     pub fn min_fragment_shading_rate_attachment_texel_size(
44585         mut self,
44586         min_fragment_shading_rate_attachment_texel_size: Extent2D,
44587     ) -> Self {
44588         self.inner.min_fragment_shading_rate_attachment_texel_size =
44589             min_fragment_shading_rate_attachment_texel_size;
44590         self
44591     }
max_fragment_shading_rate_attachment_texel_size( mut self, max_fragment_shading_rate_attachment_texel_size: Extent2D, ) -> Self44592     pub fn max_fragment_shading_rate_attachment_texel_size(
44593         mut self,
44594         max_fragment_shading_rate_attachment_texel_size: Extent2D,
44595     ) -> Self {
44596         self.inner.max_fragment_shading_rate_attachment_texel_size =
44597             max_fragment_shading_rate_attachment_texel_size;
44598         self
44599     }
max_fragment_shading_rate_attachment_texel_size_aspect_ratio( mut self, max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32, ) -> Self44600     pub fn max_fragment_shading_rate_attachment_texel_size_aspect_ratio(
44601         mut self,
44602         max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
44603     ) -> Self {
44604         self.inner
44605             .max_fragment_shading_rate_attachment_texel_size_aspect_ratio =
44606             max_fragment_shading_rate_attachment_texel_size_aspect_ratio;
44607         self
44608     }
primitive_fragment_shading_rate_with_multiple_viewports( mut self, primitive_fragment_shading_rate_with_multiple_viewports: bool, ) -> Self44609     pub fn primitive_fragment_shading_rate_with_multiple_viewports(
44610         mut self,
44611         primitive_fragment_shading_rate_with_multiple_viewports: bool,
44612     ) -> Self {
44613         self.inner
44614             .primitive_fragment_shading_rate_with_multiple_viewports =
44615             primitive_fragment_shading_rate_with_multiple_viewports.into();
44616         self
44617     }
layered_shading_rate_attachments( mut self, layered_shading_rate_attachments: bool, ) -> Self44618     pub fn layered_shading_rate_attachments(
44619         mut self,
44620         layered_shading_rate_attachments: bool,
44621     ) -> Self {
44622         self.inner.layered_shading_rate_attachments = layered_shading_rate_attachments.into();
44623         self
44624     }
fragment_shading_rate_non_trivial_combiner_ops( mut self, fragment_shading_rate_non_trivial_combiner_ops: bool, ) -> Self44625     pub fn fragment_shading_rate_non_trivial_combiner_ops(
44626         mut self,
44627         fragment_shading_rate_non_trivial_combiner_ops: bool,
44628     ) -> Self {
44629         self.inner.fragment_shading_rate_non_trivial_combiner_ops =
44630             fragment_shading_rate_non_trivial_combiner_ops.into();
44631         self
44632     }
max_fragment_size(mut self, max_fragment_size: Extent2D) -> Self44633     pub fn max_fragment_size(mut self, max_fragment_size: Extent2D) -> Self {
44634         self.inner.max_fragment_size = max_fragment_size;
44635         self
44636     }
max_fragment_size_aspect_ratio(mut self, max_fragment_size_aspect_ratio: u32) -> Self44637     pub fn max_fragment_size_aspect_ratio(mut self, max_fragment_size_aspect_ratio: u32) -> Self {
44638         self.inner.max_fragment_size_aspect_ratio = max_fragment_size_aspect_ratio;
44639         self
44640     }
max_fragment_shading_rate_coverage_samples( mut self, max_fragment_shading_rate_coverage_samples: u32, ) -> Self44641     pub fn max_fragment_shading_rate_coverage_samples(
44642         mut self,
44643         max_fragment_shading_rate_coverage_samples: u32,
44644     ) -> Self {
44645         self.inner.max_fragment_shading_rate_coverage_samples =
44646             max_fragment_shading_rate_coverage_samples;
44647         self
44648     }
max_fragment_shading_rate_rasterization_samples( mut self, max_fragment_shading_rate_rasterization_samples: SampleCountFlags, ) -> Self44649     pub fn max_fragment_shading_rate_rasterization_samples(
44650         mut self,
44651         max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
44652     ) -> Self {
44653         self.inner.max_fragment_shading_rate_rasterization_samples =
44654             max_fragment_shading_rate_rasterization_samples;
44655         self
44656     }
fragment_shading_rate_with_shader_depth_stencil_writes( mut self, fragment_shading_rate_with_shader_depth_stencil_writes: bool, ) -> Self44657     pub fn fragment_shading_rate_with_shader_depth_stencil_writes(
44658         mut self,
44659         fragment_shading_rate_with_shader_depth_stencil_writes: bool,
44660     ) -> Self {
44661         self.inner
44662             .fragment_shading_rate_with_shader_depth_stencil_writes =
44663             fragment_shading_rate_with_shader_depth_stencil_writes.into();
44664         self
44665     }
fragment_shading_rate_with_sample_mask( mut self, fragment_shading_rate_with_sample_mask: bool, ) -> Self44666     pub fn fragment_shading_rate_with_sample_mask(
44667         mut self,
44668         fragment_shading_rate_with_sample_mask: bool,
44669     ) -> Self {
44670         self.inner.fragment_shading_rate_with_sample_mask =
44671             fragment_shading_rate_with_sample_mask.into();
44672         self
44673     }
fragment_shading_rate_with_shader_sample_mask( mut self, fragment_shading_rate_with_shader_sample_mask: bool, ) -> Self44674     pub fn fragment_shading_rate_with_shader_sample_mask(
44675         mut self,
44676         fragment_shading_rate_with_shader_sample_mask: bool,
44677     ) -> Self {
44678         self.inner.fragment_shading_rate_with_shader_sample_mask =
44679             fragment_shading_rate_with_shader_sample_mask.into();
44680         self
44681     }
fragment_shading_rate_with_conservative_rasterization( mut self, fragment_shading_rate_with_conservative_rasterization: bool, ) -> Self44682     pub fn fragment_shading_rate_with_conservative_rasterization(
44683         mut self,
44684         fragment_shading_rate_with_conservative_rasterization: bool,
44685     ) -> Self {
44686         self.inner
44687             .fragment_shading_rate_with_conservative_rasterization =
44688             fragment_shading_rate_with_conservative_rasterization.into();
44689         self
44690     }
fragment_shading_rate_with_fragment_shader_interlock( mut self, fragment_shading_rate_with_fragment_shader_interlock: bool, ) -> Self44691     pub fn fragment_shading_rate_with_fragment_shader_interlock(
44692         mut self,
44693         fragment_shading_rate_with_fragment_shader_interlock: bool,
44694     ) -> Self {
44695         self.inner
44696             .fragment_shading_rate_with_fragment_shader_interlock =
44697             fragment_shading_rate_with_fragment_shader_interlock.into();
44698         self
44699     }
fragment_shading_rate_with_custom_sample_locations( mut self, fragment_shading_rate_with_custom_sample_locations: bool, ) -> Self44700     pub fn fragment_shading_rate_with_custom_sample_locations(
44701         mut self,
44702         fragment_shading_rate_with_custom_sample_locations: bool,
44703     ) -> Self {
44704         self.inner
44705             .fragment_shading_rate_with_custom_sample_locations =
44706             fragment_shading_rate_with_custom_sample_locations.into();
44707         self
44708     }
fragment_shading_rate_strict_multiply_combiner( mut self, fragment_shading_rate_strict_multiply_combiner: bool, ) -> Self44709     pub fn fragment_shading_rate_strict_multiply_combiner(
44710         mut self,
44711         fragment_shading_rate_strict_multiply_combiner: bool,
44712     ) -> Self {
44713         self.inner.fragment_shading_rate_strict_multiply_combiner =
44714             fragment_shading_rate_strict_multiply_combiner.into();
44715         self
44716     }
44717     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44718     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44719     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRatePropertiesKHR44720     pub fn build(self) -> PhysicalDeviceFragmentShadingRatePropertiesKHR {
44721         self.inner
44722     }
44723 }
44724 #[repr(C)]
44725 #[derive(Copy, Clone, Debug)]
44726 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>"]
44727 pub struct PhysicalDeviceFragmentShadingRateKHR {
44728     pub s_type: StructureType,
44729     pub p_next: *mut c_void,
44730     pub sample_counts: SampleCountFlags,
44731     pub fragment_size: Extent2D,
44732 }
44733 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateKHR {
default() -> PhysicalDeviceFragmentShadingRateKHR44734     fn default() -> PhysicalDeviceFragmentShadingRateKHR {
44735         PhysicalDeviceFragmentShadingRateKHR {
44736             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
44737             p_next: ::std::ptr::null_mut(),
44738             sample_counts: SampleCountFlags::default(),
44739             fragment_size: Extent2D::default(),
44740         }
44741     }
44742 }
44743 impl PhysicalDeviceFragmentShadingRateKHR {
builder<'a>() -> PhysicalDeviceFragmentShadingRateKHRBuilder<'a>44744     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
44745         PhysicalDeviceFragmentShadingRateKHRBuilder {
44746             inner: PhysicalDeviceFragmentShadingRateKHR::default(),
44747             marker: ::std::marker::PhantomData,
44748         }
44749     }
44750 }
44751 #[repr(transparent)]
44752 pub struct PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
44753     inner: PhysicalDeviceFragmentShadingRateKHR,
44754     marker: ::std::marker::PhantomData<&'a ()>,
44755 }
44756 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
44757     type Target = PhysicalDeviceFragmentShadingRateKHR;
deref(&self) -> &Self::Target44758     fn deref(&self) -> &Self::Target {
44759         &self.inner
44760     }
44761 }
44762 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44763     fn deref_mut(&mut self) -> &mut Self::Target {
44764         &mut self.inner
44765     }
44766 }
44767 impl<'a> PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
sample_counts(mut self, sample_counts: SampleCountFlags) -> Self44768     pub fn sample_counts(mut self, sample_counts: SampleCountFlags) -> Self {
44769         self.inner.sample_counts = sample_counts;
44770         self
44771     }
fragment_size(mut self, fragment_size: Extent2D) -> Self44772     pub fn fragment_size(mut self, fragment_size: Extent2D) -> Self {
44773         self.inner.fragment_size = fragment_size;
44774         self
44775     }
44776     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44777     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44778     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateKHR44779     pub fn build(self) -> PhysicalDeviceFragmentShadingRateKHR {
44780         self.inner
44781     }
44782 }
44783 #[repr(C)]
44784 #[derive(Copy, Clone, Debug)]
44785 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>"]
44786 pub struct PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
44787     pub s_type: StructureType,
44788     pub p_next: *mut c_void,
44789     pub shader_terminate_invocation: Bool32,
44790 }
44791 impl ::std::default::Default for PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
default() -> PhysicalDeviceShaderTerminateInvocationFeaturesKHR44792     fn default() -> PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
44793         PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
44794             s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR,
44795             p_next: ::std::ptr::null_mut(),
44796             shader_terminate_invocation: Bool32::default(),
44797         }
44798     }
44799 }
44800 impl PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a>44801     pub fn builder<'a>() -> PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
44802         PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder {
44803             inner: PhysicalDeviceShaderTerminateInvocationFeaturesKHR::default(),
44804             marker: ::std::marker::PhantomData,
44805         }
44806     }
44807 }
44808 #[repr(transparent)]
44809 pub struct PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
44810     inner: PhysicalDeviceShaderTerminateInvocationFeaturesKHR,
44811     marker: ::std::marker::PhantomData<&'a ()>,
44812 }
44813 unsafe impl ExtendsPhysicalDeviceFeatures2
44814     for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'_>
44815 {
44816 }
44817 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderTerminateInvocationFeaturesKHR {}
44818 unsafe impl ExtendsDeviceCreateInfo
44819     for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'_>
44820 {
44821 }
44822 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderTerminateInvocationFeaturesKHR {}
44823 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
44824     type Target = PhysicalDeviceShaderTerminateInvocationFeaturesKHR;
deref(&self) -> &Self::Target44825     fn deref(&self) -> &Self::Target {
44826         &self.inner
44827     }
44828 }
44829 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44830     fn deref_mut(&mut self) -> &mut Self::Target {
44831         &mut self.inner
44832     }
44833 }
44834 impl<'a> PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
shader_terminate_invocation(mut self, shader_terminate_invocation: bool) -> Self44835     pub fn shader_terminate_invocation(mut self, shader_terminate_invocation: bool) -> Self {
44836         self.inner.shader_terminate_invocation = shader_terminate_invocation.into();
44837         self
44838     }
44839     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44840     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44841     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderTerminateInvocationFeaturesKHR44842     pub fn build(self) -> PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
44843         self.inner
44844     }
44845 }
44846 #[repr(C)]
44847 #[derive(Copy, Clone, Debug)]
44848 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>"]
44849 pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
44850     pub s_type: StructureType,
44851     pub p_next: *mut c_void,
44852     pub fragment_shading_rate_enums: Bool32,
44853     pub supersample_fragment_shading_rates: Bool32,
44854     pub no_invocation_fragment_shading_rates: Bool32,
44855 }
44856 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
default() -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNV44857     fn default() -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
44858         PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
44859             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
44860             p_next: ::std::ptr::null_mut(),
44861             fragment_shading_rate_enums: Bool32::default(),
44862             supersample_fragment_shading_rates: Bool32::default(),
44863             no_invocation_fragment_shading_rates: Bool32::default(),
44864         }
44865     }
44866 }
44867 impl PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a>44868     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
44869         PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder {
44870             inner: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV::default(),
44871             marker: ::std::marker::PhantomData,
44872         }
44873     }
44874 }
44875 #[repr(transparent)]
44876 pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
44877     inner: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV,
44878     marker: ::std::marker::PhantomData<&'a ()>,
44879 }
44880 unsafe impl ExtendsPhysicalDeviceFeatures2
44881     for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'_>
44882 {
44883 }
44884 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
44885 unsafe impl ExtendsDeviceCreateInfo
44886     for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'_>
44887 {
44888 }
44889 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
44890 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
44891     type Target = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
deref(&self) -> &Self::Target44892     fn deref(&self) -> &Self::Target {
44893         &self.inner
44894     }
44895 }
44896 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44897     fn deref_mut(&mut self) -> &mut Self::Target {
44898         &mut self.inner
44899     }
44900 }
44901 impl<'a> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
fragment_shading_rate_enums(mut self, fragment_shading_rate_enums: bool) -> Self44902     pub fn fragment_shading_rate_enums(mut self, fragment_shading_rate_enums: bool) -> Self {
44903         self.inner.fragment_shading_rate_enums = fragment_shading_rate_enums.into();
44904         self
44905     }
supersample_fragment_shading_rates( mut self, supersample_fragment_shading_rates: bool, ) -> Self44906     pub fn supersample_fragment_shading_rates(
44907         mut self,
44908         supersample_fragment_shading_rates: bool,
44909     ) -> Self {
44910         self.inner.supersample_fragment_shading_rates = supersample_fragment_shading_rates.into();
44911         self
44912     }
no_invocation_fragment_shading_rates( mut self, no_invocation_fragment_shading_rates: bool, ) -> Self44913     pub fn no_invocation_fragment_shading_rates(
44914         mut self,
44915         no_invocation_fragment_shading_rates: bool,
44916     ) -> Self {
44917         self.inner.no_invocation_fragment_shading_rates =
44918             no_invocation_fragment_shading_rates.into();
44919         self
44920     }
44921     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44922     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44923     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNV44924     pub fn build(self) -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
44925         self.inner
44926     }
44927 }
44928 #[repr(C)]
44929 #[derive(Copy, Clone, Debug)]
44930 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>"]
44931 pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
44932     pub s_type: StructureType,
44933     pub p_next: *mut c_void,
44934     pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
44935 }
44936 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
default() -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNV44937     fn default() -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
44938         PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
44939             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
44940             p_next: ::std::ptr::null_mut(),
44941             max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
44942         }
44943     }
44944 }
44945 impl PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a>44946     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
44947         PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder {
44948             inner: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV::default(),
44949             marker: ::std::marker::PhantomData,
44950         }
44951     }
44952 }
44953 #[repr(transparent)]
44954 pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
44955     inner: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV,
44956     marker: ::std::marker::PhantomData<&'a ()>,
44957 }
44958 unsafe impl ExtendsPhysicalDeviceProperties2
44959     for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'_>
44960 {
44961 }
44962 unsafe impl ExtendsPhysicalDeviceProperties2
44963     for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV
44964 {
44965 }
44966 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
44967     type Target = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
deref(&self) -> &Self::Target44968     fn deref(&self) -> &Self::Target {
44969         &self.inner
44970     }
44971 }
44972 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44973     fn deref_mut(&mut self) -> &mut Self::Target {
44974         &mut self.inner
44975     }
44976 }
44977 impl<'a> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
max_fragment_shading_rate_invocation_count( mut self, max_fragment_shading_rate_invocation_count: SampleCountFlags, ) -> Self44978     pub fn max_fragment_shading_rate_invocation_count(
44979         mut self,
44980         max_fragment_shading_rate_invocation_count: SampleCountFlags,
44981     ) -> Self {
44982         self.inner.max_fragment_shading_rate_invocation_count =
44983             max_fragment_shading_rate_invocation_count;
44984         self
44985     }
44986     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44987     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44988     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNV44989     pub fn build(self) -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
44990         self.inner
44991     }
44992 }
44993 #[repr(C)]
44994 #[derive(Copy, Clone, Debug)]
44995 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>"]
44996 pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
44997     pub s_type: StructureType,
44998     pub p_next: *const c_void,
44999     pub shading_rate_type: FragmentShadingRateTypeNV,
45000     pub shading_rate: FragmentShadingRateNV,
45001     pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
45002 }
45003 impl ::std::default::Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
default() -> PipelineFragmentShadingRateEnumStateCreateInfoNV45004     fn default() -> PipelineFragmentShadingRateEnumStateCreateInfoNV {
45005         PipelineFragmentShadingRateEnumStateCreateInfoNV {
45006             s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
45007             p_next: ::std::ptr::null(),
45008             shading_rate_type: FragmentShadingRateTypeNV::default(),
45009             shading_rate: FragmentShadingRateNV::default(),
45010             combiner_ops: unsafe { ::std::mem::zeroed() },
45011         }
45012     }
45013 }
45014 impl PipelineFragmentShadingRateEnumStateCreateInfoNV {
builder<'a>() -> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a>45015     pub fn builder<'a>() -> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
45016         PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder {
45017             inner: PipelineFragmentShadingRateEnumStateCreateInfoNV::default(),
45018             marker: ::std::marker::PhantomData,
45019         }
45020     }
45021 }
45022 #[repr(transparent)]
45023 pub struct PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
45024     inner: PipelineFragmentShadingRateEnumStateCreateInfoNV,
45025     marker: ::std::marker::PhantomData<&'a ()>,
45026 }
45027 unsafe impl ExtendsGraphicsPipelineCreateInfo
45028     for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'_>
45029 {
45030 }
45031 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
45032 impl<'a> ::std::ops::Deref for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
45033     type Target = PipelineFragmentShadingRateEnumStateCreateInfoNV;
deref(&self) -> &Self::Target45034     fn deref(&self) -> &Self::Target {
45035         &self.inner
45036     }
45037 }
45038 impl<'a> ::std::ops::DerefMut for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45039     fn deref_mut(&mut self) -> &mut Self::Target {
45040         &mut self.inner
45041     }
45042 }
45043 impl<'a> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
shading_rate_type(mut self, shading_rate_type: FragmentShadingRateTypeNV) -> Self45044     pub fn shading_rate_type(mut self, shading_rate_type: FragmentShadingRateTypeNV) -> Self {
45045         self.inner.shading_rate_type = shading_rate_type;
45046         self
45047     }
shading_rate(mut self, shading_rate: FragmentShadingRateNV) -> Self45048     pub fn shading_rate(mut self, shading_rate: FragmentShadingRateNV) -> Self {
45049         self.inner.shading_rate = shading_rate;
45050         self
45051     }
combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self45052     pub fn combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self {
45053         self.inner.combiner_ops = combiner_ops;
45054         self
45055     }
45056     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45057     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45058     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineFragmentShadingRateEnumStateCreateInfoNV45059     pub fn build(self) -> PipelineFragmentShadingRateEnumStateCreateInfoNV {
45060         self.inner
45061     }
45062 }
45063 #[repr(C)]
45064 #[derive(Copy, Clone, Debug)]
45065 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildSizesInfoKHR.html>"]
45066 pub struct AccelerationStructureBuildSizesInfoKHR {
45067     pub s_type: StructureType,
45068     pub p_next: *const c_void,
45069     pub acceleration_structure_size: DeviceSize,
45070     pub update_scratch_size: DeviceSize,
45071     pub build_scratch_size: DeviceSize,
45072 }
45073 impl ::std::default::Default for AccelerationStructureBuildSizesInfoKHR {
default() -> AccelerationStructureBuildSizesInfoKHR45074     fn default() -> AccelerationStructureBuildSizesInfoKHR {
45075         AccelerationStructureBuildSizesInfoKHR {
45076             s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR,
45077             p_next: ::std::ptr::null(),
45078             acceleration_structure_size: DeviceSize::default(),
45079             update_scratch_size: DeviceSize::default(),
45080             build_scratch_size: DeviceSize::default(),
45081         }
45082     }
45083 }
45084 impl AccelerationStructureBuildSizesInfoKHR {
builder<'a>() -> AccelerationStructureBuildSizesInfoKHRBuilder<'a>45085     pub fn builder<'a>() -> AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
45086         AccelerationStructureBuildSizesInfoKHRBuilder {
45087             inner: AccelerationStructureBuildSizesInfoKHR::default(),
45088             marker: ::std::marker::PhantomData,
45089         }
45090     }
45091 }
45092 #[repr(transparent)]
45093 pub struct AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
45094     inner: AccelerationStructureBuildSizesInfoKHR,
45095     marker: ::std::marker::PhantomData<&'a ()>,
45096 }
45097 impl<'a> ::std::ops::Deref for AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
45098     type Target = AccelerationStructureBuildSizesInfoKHR;
deref(&self) -> &Self::Target45099     fn deref(&self) -> &Self::Target {
45100         &self.inner
45101     }
45102 }
45103 impl<'a> ::std::ops::DerefMut for AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45104     fn deref_mut(&mut self) -> &mut Self::Target {
45105         &mut self.inner
45106     }
45107 }
45108 impl<'a> AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
acceleration_structure_size(mut self, acceleration_structure_size: DeviceSize) -> Self45109     pub fn acceleration_structure_size(mut self, acceleration_structure_size: DeviceSize) -> Self {
45110         self.inner.acceleration_structure_size = acceleration_structure_size;
45111         self
45112     }
update_scratch_size(mut self, update_scratch_size: DeviceSize) -> Self45113     pub fn update_scratch_size(mut self, update_scratch_size: DeviceSize) -> Self {
45114         self.inner.update_scratch_size = update_scratch_size;
45115         self
45116     }
build_scratch_size(mut self, build_scratch_size: DeviceSize) -> Self45117     pub fn build_scratch_size(mut self, build_scratch_size: DeviceSize) -> Self {
45118         self.inner.build_scratch_size = build_scratch_size;
45119         self
45120     }
45121     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45122     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45123     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureBuildSizesInfoKHR45124     pub fn build(self) -> AccelerationStructureBuildSizesInfoKHR {
45125         self.inner
45126     }
45127 }
45128 #[repr(C)]
45129 #[derive(Copy, Clone, Debug)]
45130 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>"]
45131 pub struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
45132     pub s_type: StructureType,
45133     pub p_next: *mut c_void,
45134     pub mutable_descriptor_type: Bool32,
45135 }
45136 impl ::std::default::Default for PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
default() -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVE45137     fn default() -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
45138         PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
45139             s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE,
45140             p_next: ::std::ptr::null_mut(),
45141             mutable_descriptor_type: Bool32::default(),
45142         }
45143     }
45144 }
45145 impl PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
builder<'a>() -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a>45146     pub fn builder<'a>() -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
45147         PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder {
45148             inner: PhysicalDeviceMutableDescriptorTypeFeaturesVALVE::default(),
45149             marker: ::std::marker::PhantomData,
45150         }
45151     }
45152 }
45153 #[repr(transparent)]
45154 pub struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
45155     inner: PhysicalDeviceMutableDescriptorTypeFeaturesVALVE,
45156     marker: ::std::marker::PhantomData<&'a ()>,
45157 }
45158 unsafe impl ExtendsPhysicalDeviceFeatures2
45159     for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'_>
45160 {
45161 }
45162 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {}
45163 unsafe impl ExtendsDeviceCreateInfo
45164     for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'_>
45165 {
45166 }
45167 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {}
45168 impl<'a> ::std::ops::Deref for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
45169     type Target = PhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
deref(&self) -> &Self::Target45170     fn deref(&self) -> &Self::Target {
45171         &self.inner
45172     }
45173 }
45174 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45175     fn deref_mut(&mut self) -> &mut Self::Target {
45176         &mut self.inner
45177     }
45178 }
45179 impl<'a> PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
mutable_descriptor_type(mut self, mutable_descriptor_type: bool) -> Self45180     pub fn mutable_descriptor_type(mut self, mutable_descriptor_type: bool) -> Self {
45181         self.inner.mutable_descriptor_type = mutable_descriptor_type.into();
45182         self
45183     }
45184     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45185     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45186     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVE45187     pub fn build(self) -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
45188         self.inner
45189     }
45190 }
45191 #[repr(C)]
45192 #[derive(Copy, Clone, Debug)]
45193 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMutableDescriptorTypeListVALVE.html>"]
45194 pub struct MutableDescriptorTypeListVALVE {
45195     pub descriptor_type_count: u32,
45196     pub p_descriptor_types: *const DescriptorType,
45197 }
45198 impl ::std::default::Default for MutableDescriptorTypeListVALVE {
default() -> MutableDescriptorTypeListVALVE45199     fn default() -> MutableDescriptorTypeListVALVE {
45200         MutableDescriptorTypeListVALVE {
45201             descriptor_type_count: u32::default(),
45202             p_descriptor_types: ::std::ptr::null(),
45203         }
45204     }
45205 }
45206 impl MutableDescriptorTypeListVALVE {
builder<'a>() -> MutableDescriptorTypeListVALVEBuilder<'a>45207     pub fn builder<'a>() -> MutableDescriptorTypeListVALVEBuilder<'a> {
45208         MutableDescriptorTypeListVALVEBuilder {
45209             inner: MutableDescriptorTypeListVALVE::default(),
45210             marker: ::std::marker::PhantomData,
45211         }
45212     }
45213 }
45214 #[repr(transparent)]
45215 pub struct MutableDescriptorTypeListVALVEBuilder<'a> {
45216     inner: MutableDescriptorTypeListVALVE,
45217     marker: ::std::marker::PhantomData<&'a ()>,
45218 }
45219 impl<'a> ::std::ops::Deref for MutableDescriptorTypeListVALVEBuilder<'a> {
45220     type Target = MutableDescriptorTypeListVALVE;
deref(&self) -> &Self::Target45221     fn deref(&self) -> &Self::Target {
45222         &self.inner
45223     }
45224 }
45225 impl<'a> ::std::ops::DerefMut for MutableDescriptorTypeListVALVEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45226     fn deref_mut(&mut self) -> &mut Self::Target {
45227         &mut self.inner
45228     }
45229 }
45230 impl<'a> MutableDescriptorTypeListVALVEBuilder<'a> {
descriptor_types(mut self, descriptor_types: &'a [DescriptorType]) -> Self45231     pub fn descriptor_types(mut self, descriptor_types: &'a [DescriptorType]) -> Self {
45232         self.inner.descriptor_type_count = descriptor_types.len() as _;
45233         self.inner.p_descriptor_types = descriptor_types.as_ptr();
45234         self
45235     }
45236     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45237     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45238     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MutableDescriptorTypeListVALVE45239     pub fn build(self) -> MutableDescriptorTypeListVALVE {
45240         self.inner
45241     }
45242 }
45243 #[repr(C)]
45244 #[derive(Copy, Clone, Debug)]
45245 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>"]
45246 pub struct MutableDescriptorTypeCreateInfoVALVE {
45247     pub s_type: StructureType,
45248     pub p_next: *const c_void,
45249     pub mutable_descriptor_type_list_count: u32,
45250     pub p_mutable_descriptor_type_lists: *const MutableDescriptorTypeListVALVE,
45251 }
45252 impl ::std::default::Default for MutableDescriptorTypeCreateInfoVALVE {
default() -> MutableDescriptorTypeCreateInfoVALVE45253     fn default() -> MutableDescriptorTypeCreateInfoVALVE {
45254         MutableDescriptorTypeCreateInfoVALVE {
45255             s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE,
45256             p_next: ::std::ptr::null(),
45257             mutable_descriptor_type_list_count: u32::default(),
45258             p_mutable_descriptor_type_lists: ::std::ptr::null(),
45259         }
45260     }
45261 }
45262 impl MutableDescriptorTypeCreateInfoVALVE {
builder<'a>() -> MutableDescriptorTypeCreateInfoVALVEBuilder<'a>45263     pub fn builder<'a>() -> MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
45264         MutableDescriptorTypeCreateInfoVALVEBuilder {
45265             inner: MutableDescriptorTypeCreateInfoVALVE::default(),
45266             marker: ::std::marker::PhantomData,
45267         }
45268     }
45269 }
45270 #[repr(transparent)]
45271 pub struct MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
45272     inner: MutableDescriptorTypeCreateInfoVALVE,
45273     marker: ::std::marker::PhantomData<&'a ()>,
45274 }
45275 unsafe impl ExtendsDescriptorSetLayoutCreateInfo
45276     for MutableDescriptorTypeCreateInfoVALVEBuilder<'_>
45277 {
45278 }
45279 unsafe impl ExtendsDescriptorSetLayoutCreateInfo for MutableDescriptorTypeCreateInfoVALVE {}
45280 unsafe impl ExtendsDescriptorPoolCreateInfo for MutableDescriptorTypeCreateInfoVALVEBuilder<'_> {}
45281 unsafe impl ExtendsDescriptorPoolCreateInfo for MutableDescriptorTypeCreateInfoVALVE {}
45282 impl<'a> ::std::ops::Deref for MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
45283     type Target = MutableDescriptorTypeCreateInfoVALVE;
deref(&self) -> &Self::Target45284     fn deref(&self) -> &Self::Target {
45285         &self.inner
45286     }
45287 }
45288 impl<'a> ::std::ops::DerefMut for MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45289     fn deref_mut(&mut self) -> &mut Self::Target {
45290         &mut self.inner
45291     }
45292 }
45293 impl<'a> MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
mutable_descriptor_type_lists( mut self, mutable_descriptor_type_lists: &'a [MutableDescriptorTypeListVALVE], ) -> Self45294     pub fn mutable_descriptor_type_lists(
45295         mut self,
45296         mutable_descriptor_type_lists: &'a [MutableDescriptorTypeListVALVE],
45297     ) -> Self {
45298         self.inner.mutable_descriptor_type_list_count = mutable_descriptor_type_lists.len() as _;
45299         self.inner.p_mutable_descriptor_type_lists = mutable_descriptor_type_lists.as_ptr();
45300         self
45301     }
45302     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45303     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45304     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MutableDescriptorTypeCreateInfoVALVE45305     pub fn build(self) -> MutableDescriptorTypeCreateInfoVALVE {
45306         self.inner
45307     }
45308 }
45309 #[repr(C)]
45310 #[derive(Copy, Clone, Debug)]
45311 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>"]
45312 pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
45313     pub s_type: StructureType,
45314     pub p_next: *mut c_void,
45315     pub vertex_input_dynamic_state: Bool32,
45316 }
45317 impl ::std::default::Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
default() -> PhysicalDeviceVertexInputDynamicStateFeaturesEXT45318     fn default() -> PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
45319         PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
45320             s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
45321             p_next: ::std::ptr::null_mut(),
45322             vertex_input_dynamic_state: Bool32::default(),
45323         }
45324     }
45325 }
45326 impl PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
builder<'a>() -> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a>45327     pub fn builder<'a>() -> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
45328         PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder {
45329             inner: PhysicalDeviceVertexInputDynamicStateFeaturesEXT::default(),
45330             marker: ::std::marker::PhantomData,
45331         }
45332     }
45333 }
45334 #[repr(transparent)]
45335 pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
45336     inner: PhysicalDeviceVertexInputDynamicStateFeaturesEXT,
45337     marker: ::std::marker::PhantomData<&'a ()>,
45338 }
45339 unsafe impl ExtendsPhysicalDeviceFeatures2
45340     for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'_>
45341 {
45342 }
45343 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
45344 unsafe impl ExtendsDeviceCreateInfo
45345     for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'_>
45346 {
45347 }
45348 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
45349 impl<'a> ::std::ops::Deref for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
45350     type Target = PhysicalDeviceVertexInputDynamicStateFeaturesEXT;
deref(&self) -> &Self::Target45351     fn deref(&self) -> &Self::Target {
45352         &self.inner
45353     }
45354 }
45355 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45356     fn deref_mut(&mut self) -> &mut Self::Target {
45357         &mut self.inner
45358     }
45359 }
45360 impl<'a> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
vertex_input_dynamic_state(mut self, vertex_input_dynamic_state: bool) -> Self45361     pub fn vertex_input_dynamic_state(mut self, vertex_input_dynamic_state: bool) -> Self {
45362         self.inner.vertex_input_dynamic_state = vertex_input_dynamic_state.into();
45363         self
45364     }
45365     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45366     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45367     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVertexInputDynamicStateFeaturesEXT45368     pub fn build(self) -> PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
45369         self.inner
45370     }
45371 }
45372 #[repr(C)]
45373 #[derive(Copy, Clone, Debug)]
45374 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>"]
45375 pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
45376     pub s_type: StructureType,
45377     pub p_next: *mut c_void,
45378     pub external_memory_rdma: Bool32,
45379 }
45380 impl ::std::default::Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
default() -> PhysicalDeviceExternalMemoryRDMAFeaturesNV45381     fn default() -> PhysicalDeviceExternalMemoryRDMAFeaturesNV {
45382         PhysicalDeviceExternalMemoryRDMAFeaturesNV {
45383             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
45384             p_next: ::std::ptr::null_mut(),
45385             external_memory_rdma: Bool32::default(),
45386         }
45387     }
45388 }
45389 impl PhysicalDeviceExternalMemoryRDMAFeaturesNV {
builder<'a>() -> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a>45390     pub fn builder<'a>() -> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
45391         PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder {
45392             inner: PhysicalDeviceExternalMemoryRDMAFeaturesNV::default(),
45393             marker: ::std::marker::PhantomData,
45394         }
45395     }
45396 }
45397 #[repr(transparent)]
45398 pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
45399     inner: PhysicalDeviceExternalMemoryRDMAFeaturesNV,
45400     marker: ::std::marker::PhantomData<&'a ()>,
45401 }
45402 unsafe impl ExtendsPhysicalDeviceFeatures2
45403     for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'_>
45404 {
45405 }
45406 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
45407 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'_> {}
45408 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
45409 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
45410     type Target = PhysicalDeviceExternalMemoryRDMAFeaturesNV;
deref(&self) -> &Self::Target45411     fn deref(&self) -> &Self::Target {
45412         &self.inner
45413     }
45414 }
45415 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45416     fn deref_mut(&mut self) -> &mut Self::Target {
45417         &mut self.inner
45418     }
45419 }
45420 impl<'a> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
external_memory_rdma(mut self, external_memory_rdma: bool) -> Self45421     pub fn external_memory_rdma(mut self, external_memory_rdma: bool) -> Self {
45422         self.inner.external_memory_rdma = external_memory_rdma.into();
45423         self
45424     }
45425     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45426     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45427     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalMemoryRDMAFeaturesNV45428     pub fn build(self) -> PhysicalDeviceExternalMemoryRDMAFeaturesNV {
45429         self.inner
45430     }
45431 }
45432 #[repr(C)]
45433 #[derive(Copy, Clone, Debug)]
45434 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDescription2EXT.html>"]
45435 pub struct VertexInputBindingDescription2EXT {
45436     pub s_type: StructureType,
45437     pub p_next: *mut c_void,
45438     pub binding: u32,
45439     pub stride: u32,
45440     pub input_rate: VertexInputRate,
45441     pub divisor: u32,
45442 }
45443 impl ::std::default::Default for VertexInputBindingDescription2EXT {
default() -> VertexInputBindingDescription2EXT45444     fn default() -> VertexInputBindingDescription2EXT {
45445         VertexInputBindingDescription2EXT {
45446             s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
45447             p_next: ::std::ptr::null_mut(),
45448             binding: u32::default(),
45449             stride: u32::default(),
45450             input_rate: VertexInputRate::default(),
45451             divisor: u32::default(),
45452         }
45453     }
45454 }
45455 impl VertexInputBindingDescription2EXT {
builder<'a>() -> VertexInputBindingDescription2EXTBuilder<'a>45456     pub fn builder<'a>() -> VertexInputBindingDescription2EXTBuilder<'a> {
45457         VertexInputBindingDescription2EXTBuilder {
45458             inner: VertexInputBindingDescription2EXT::default(),
45459             marker: ::std::marker::PhantomData,
45460         }
45461     }
45462 }
45463 #[repr(transparent)]
45464 pub struct VertexInputBindingDescription2EXTBuilder<'a> {
45465     inner: VertexInputBindingDescription2EXT,
45466     marker: ::std::marker::PhantomData<&'a ()>,
45467 }
45468 impl<'a> ::std::ops::Deref for VertexInputBindingDescription2EXTBuilder<'a> {
45469     type Target = VertexInputBindingDescription2EXT;
deref(&self) -> &Self::Target45470     fn deref(&self) -> &Self::Target {
45471         &self.inner
45472     }
45473 }
45474 impl<'a> ::std::ops::DerefMut for VertexInputBindingDescription2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45475     fn deref_mut(&mut self) -> &mut Self::Target {
45476         &mut self.inner
45477     }
45478 }
45479 impl<'a> VertexInputBindingDescription2EXTBuilder<'a> {
binding(mut self, binding: u32) -> Self45480     pub fn binding(mut self, binding: u32) -> Self {
45481         self.inner.binding = binding;
45482         self
45483     }
stride(mut self, stride: u32) -> Self45484     pub fn stride(mut self, stride: u32) -> Self {
45485         self.inner.stride = stride;
45486         self
45487     }
input_rate(mut self, input_rate: VertexInputRate) -> Self45488     pub fn input_rate(mut self, input_rate: VertexInputRate) -> Self {
45489         self.inner.input_rate = input_rate;
45490         self
45491     }
divisor(mut self, divisor: u32) -> Self45492     pub fn divisor(mut self, divisor: u32) -> Self {
45493         self.inner.divisor = divisor;
45494         self
45495     }
45496     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45497     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45498     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputBindingDescription2EXT45499     pub fn build(self) -> VertexInputBindingDescription2EXT {
45500         self.inner
45501     }
45502 }
45503 #[repr(C)]
45504 #[derive(Copy, Clone, Debug)]
45505 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputAttributeDescription2EXT.html>"]
45506 pub struct VertexInputAttributeDescription2EXT {
45507     pub s_type: StructureType,
45508     pub p_next: *mut c_void,
45509     pub location: u32,
45510     pub binding: u32,
45511     pub format: Format,
45512     pub offset: u32,
45513 }
45514 impl ::std::default::Default for VertexInputAttributeDescription2EXT {
default() -> VertexInputAttributeDescription2EXT45515     fn default() -> VertexInputAttributeDescription2EXT {
45516         VertexInputAttributeDescription2EXT {
45517             s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
45518             p_next: ::std::ptr::null_mut(),
45519             location: u32::default(),
45520             binding: u32::default(),
45521             format: Format::default(),
45522             offset: u32::default(),
45523         }
45524     }
45525 }
45526 impl VertexInputAttributeDescription2EXT {
builder<'a>() -> VertexInputAttributeDescription2EXTBuilder<'a>45527     pub fn builder<'a>() -> VertexInputAttributeDescription2EXTBuilder<'a> {
45528         VertexInputAttributeDescription2EXTBuilder {
45529             inner: VertexInputAttributeDescription2EXT::default(),
45530             marker: ::std::marker::PhantomData,
45531         }
45532     }
45533 }
45534 #[repr(transparent)]
45535 pub struct VertexInputAttributeDescription2EXTBuilder<'a> {
45536     inner: VertexInputAttributeDescription2EXT,
45537     marker: ::std::marker::PhantomData<&'a ()>,
45538 }
45539 impl<'a> ::std::ops::Deref for VertexInputAttributeDescription2EXTBuilder<'a> {
45540     type Target = VertexInputAttributeDescription2EXT;
deref(&self) -> &Self::Target45541     fn deref(&self) -> &Self::Target {
45542         &self.inner
45543     }
45544 }
45545 impl<'a> ::std::ops::DerefMut for VertexInputAttributeDescription2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45546     fn deref_mut(&mut self) -> &mut Self::Target {
45547         &mut self.inner
45548     }
45549 }
45550 impl<'a> VertexInputAttributeDescription2EXTBuilder<'a> {
location(mut self, location: u32) -> Self45551     pub fn location(mut self, location: u32) -> Self {
45552         self.inner.location = location;
45553         self
45554     }
binding(mut self, binding: u32) -> Self45555     pub fn binding(mut self, binding: u32) -> Self {
45556         self.inner.binding = binding;
45557         self
45558     }
format(mut self, format: Format) -> Self45559     pub fn format(mut self, format: Format) -> Self {
45560         self.inner.format = format;
45561         self
45562     }
offset(mut self, offset: u32) -> Self45563     pub fn offset(mut self, offset: u32) -> Self {
45564         self.inner.offset = offset;
45565         self
45566     }
45567     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45568     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45569     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputAttributeDescription2EXT45570     pub fn build(self) -> VertexInputAttributeDescription2EXT {
45571         self.inner
45572     }
45573 }
45574 #[repr(C)]
45575 #[derive(Copy, Clone, Debug)]
45576 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>"]
45577 pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
45578     pub s_type: StructureType,
45579     pub p_next: *mut c_void,
45580     pub color_write_enable: Bool32,
45581 }
45582 impl ::std::default::Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
default() -> PhysicalDeviceColorWriteEnableFeaturesEXT45583     fn default() -> PhysicalDeviceColorWriteEnableFeaturesEXT {
45584         PhysicalDeviceColorWriteEnableFeaturesEXT {
45585             s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
45586             p_next: ::std::ptr::null_mut(),
45587             color_write_enable: Bool32::default(),
45588         }
45589     }
45590 }
45591 impl PhysicalDeviceColorWriteEnableFeaturesEXT {
builder<'a>() -> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a>45592     pub fn builder<'a>() -> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
45593         PhysicalDeviceColorWriteEnableFeaturesEXTBuilder {
45594             inner: PhysicalDeviceColorWriteEnableFeaturesEXT::default(),
45595             marker: ::std::marker::PhantomData,
45596         }
45597     }
45598 }
45599 #[repr(transparent)]
45600 pub struct PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
45601     inner: PhysicalDeviceColorWriteEnableFeaturesEXT,
45602     marker: ::std::marker::PhantomData<&'a ()>,
45603 }
45604 unsafe impl ExtendsPhysicalDeviceFeatures2
45605     for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'_>
45606 {
45607 }
45608 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceColorWriteEnableFeaturesEXT {}
45609 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'_> {}
45610 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceColorWriteEnableFeaturesEXT {}
45611 impl<'a> ::std::ops::Deref for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
45612     type Target = PhysicalDeviceColorWriteEnableFeaturesEXT;
deref(&self) -> &Self::Target45613     fn deref(&self) -> &Self::Target {
45614         &self.inner
45615     }
45616 }
45617 impl<'a> ::std::ops::DerefMut for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45618     fn deref_mut(&mut self) -> &mut Self::Target {
45619         &mut self.inner
45620     }
45621 }
45622 impl<'a> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
color_write_enable(mut self, color_write_enable: bool) -> Self45623     pub fn color_write_enable(mut self, color_write_enable: bool) -> Self {
45624         self.inner.color_write_enable = color_write_enable.into();
45625         self
45626     }
45627     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45628     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45629     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceColorWriteEnableFeaturesEXT45630     pub fn build(self) -> PhysicalDeviceColorWriteEnableFeaturesEXT {
45631         self.inner
45632     }
45633 }
45634 #[repr(C)]
45635 #[derive(Copy, Clone, Debug)]
45636 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorWriteCreateInfoEXT.html>"]
45637 pub struct PipelineColorWriteCreateInfoEXT {
45638     pub s_type: StructureType,
45639     pub p_next: *const c_void,
45640     pub attachment_count: u32,
45641     pub p_color_write_enables: *const Bool32,
45642 }
45643 impl ::std::default::Default for PipelineColorWriteCreateInfoEXT {
default() -> PipelineColorWriteCreateInfoEXT45644     fn default() -> PipelineColorWriteCreateInfoEXT {
45645         PipelineColorWriteCreateInfoEXT {
45646             s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
45647             p_next: ::std::ptr::null(),
45648             attachment_count: u32::default(),
45649             p_color_write_enables: ::std::ptr::null(),
45650         }
45651     }
45652 }
45653 impl PipelineColorWriteCreateInfoEXT {
builder<'a>() -> PipelineColorWriteCreateInfoEXTBuilder<'a>45654     pub fn builder<'a>() -> PipelineColorWriteCreateInfoEXTBuilder<'a> {
45655         PipelineColorWriteCreateInfoEXTBuilder {
45656             inner: PipelineColorWriteCreateInfoEXT::default(),
45657             marker: ::std::marker::PhantomData,
45658         }
45659     }
45660 }
45661 #[repr(transparent)]
45662 pub struct PipelineColorWriteCreateInfoEXTBuilder<'a> {
45663     inner: PipelineColorWriteCreateInfoEXT,
45664     marker: ::std::marker::PhantomData<&'a ()>,
45665 }
45666 unsafe impl ExtendsPipelineColorBlendStateCreateInfo
45667     for PipelineColorWriteCreateInfoEXTBuilder<'_>
45668 {
45669 }
45670 unsafe impl ExtendsPipelineColorBlendStateCreateInfo for PipelineColorWriteCreateInfoEXT {}
45671 impl<'a> ::std::ops::Deref for PipelineColorWriteCreateInfoEXTBuilder<'a> {
45672     type Target = PipelineColorWriteCreateInfoEXT;
deref(&self) -> &Self::Target45673     fn deref(&self) -> &Self::Target {
45674         &self.inner
45675     }
45676 }
45677 impl<'a> ::std::ops::DerefMut for PipelineColorWriteCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45678     fn deref_mut(&mut self) -> &mut Self::Target {
45679         &mut self.inner
45680     }
45681 }
45682 impl<'a> PipelineColorWriteCreateInfoEXTBuilder<'a> {
color_write_enables(mut self, color_write_enables: &'a [Bool32]) -> Self45683     pub fn color_write_enables(mut self, color_write_enables: &'a [Bool32]) -> Self {
45684         self.inner.attachment_count = color_write_enables.len() as _;
45685         self.inner.p_color_write_enables = color_write_enables.as_ptr();
45686         self
45687     }
45688     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45689     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45690     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorWriteCreateInfoEXT45691     pub fn build(self) -> PipelineColorWriteCreateInfoEXT {
45692         self.inner
45693     }
45694 }
45695 #[repr(C)]
45696 #[derive(Copy, Clone, Debug)]
45697 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryBarrier2KHR.html>"]
45698 pub struct MemoryBarrier2KHR {
45699     pub s_type: StructureType,
45700     pub p_next: *const c_void,
45701     pub src_stage_mask: PipelineStageFlags2KHR,
45702     pub src_access_mask: AccessFlags2KHR,
45703     pub dst_stage_mask: PipelineStageFlags2KHR,
45704     pub dst_access_mask: AccessFlags2KHR,
45705 }
45706 impl ::std::default::Default for MemoryBarrier2KHR {
default() -> MemoryBarrier2KHR45707     fn default() -> MemoryBarrier2KHR {
45708         MemoryBarrier2KHR {
45709             s_type: StructureType::MEMORY_BARRIER_2_KHR,
45710             p_next: ::std::ptr::null(),
45711             src_stage_mask: PipelineStageFlags2KHR::default(),
45712             src_access_mask: AccessFlags2KHR::default(),
45713             dst_stage_mask: PipelineStageFlags2KHR::default(),
45714             dst_access_mask: AccessFlags2KHR::default(),
45715         }
45716     }
45717 }
45718 impl MemoryBarrier2KHR {
builder<'a>() -> MemoryBarrier2KHRBuilder<'a>45719     pub fn builder<'a>() -> MemoryBarrier2KHRBuilder<'a> {
45720         MemoryBarrier2KHRBuilder {
45721             inner: MemoryBarrier2KHR::default(),
45722             marker: ::std::marker::PhantomData,
45723         }
45724     }
45725 }
45726 #[repr(transparent)]
45727 pub struct MemoryBarrier2KHRBuilder<'a> {
45728     inner: MemoryBarrier2KHR,
45729     marker: ::std::marker::PhantomData<&'a ()>,
45730 }
45731 unsafe impl ExtendsSubpassDependency2 for MemoryBarrier2KHRBuilder<'_> {}
45732 unsafe impl ExtendsSubpassDependency2 for MemoryBarrier2KHR {}
45733 impl<'a> ::std::ops::Deref for MemoryBarrier2KHRBuilder<'a> {
45734     type Target = MemoryBarrier2KHR;
deref(&self) -> &Self::Target45735     fn deref(&self) -> &Self::Target {
45736         &self.inner
45737     }
45738 }
45739 impl<'a> ::std::ops::DerefMut for MemoryBarrier2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45740     fn deref_mut(&mut self) -> &mut Self::Target {
45741         &mut self.inner
45742     }
45743 }
45744 impl<'a> MemoryBarrier2KHRBuilder<'a> {
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self45745     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self {
45746         self.inner.src_stage_mask = src_stage_mask;
45747         self
45748     }
src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self45749     pub fn src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self {
45750         self.inner.src_access_mask = src_access_mask;
45751         self
45752     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self45753     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self {
45754         self.inner.dst_stage_mask = dst_stage_mask;
45755         self
45756     }
dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self45757     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self {
45758         self.inner.dst_access_mask = dst_access_mask;
45759         self
45760     }
45761     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45762     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45763     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryBarrier2KHR45764     pub fn build(self) -> MemoryBarrier2KHR {
45765         self.inner
45766     }
45767 }
45768 #[repr(C)]
45769 #[derive(Copy, Clone, Debug)]
45770 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryBarrier2KHR.html>"]
45771 pub struct ImageMemoryBarrier2KHR {
45772     pub s_type: StructureType,
45773     pub p_next: *const c_void,
45774     pub src_stage_mask: PipelineStageFlags2KHR,
45775     pub src_access_mask: AccessFlags2KHR,
45776     pub dst_stage_mask: PipelineStageFlags2KHR,
45777     pub dst_access_mask: AccessFlags2KHR,
45778     pub old_layout: ImageLayout,
45779     pub new_layout: ImageLayout,
45780     pub src_queue_family_index: u32,
45781     pub dst_queue_family_index: u32,
45782     pub image: Image,
45783     pub subresource_range: ImageSubresourceRange,
45784 }
45785 impl ::std::default::Default for ImageMemoryBarrier2KHR {
default() -> ImageMemoryBarrier2KHR45786     fn default() -> ImageMemoryBarrier2KHR {
45787         ImageMemoryBarrier2KHR {
45788             s_type: StructureType::IMAGE_MEMORY_BARRIER_2_KHR,
45789             p_next: ::std::ptr::null(),
45790             src_stage_mask: PipelineStageFlags2KHR::default(),
45791             src_access_mask: AccessFlags2KHR::default(),
45792             dst_stage_mask: PipelineStageFlags2KHR::default(),
45793             dst_access_mask: AccessFlags2KHR::default(),
45794             old_layout: ImageLayout::default(),
45795             new_layout: ImageLayout::default(),
45796             src_queue_family_index: u32::default(),
45797             dst_queue_family_index: u32::default(),
45798             image: Image::default(),
45799             subresource_range: ImageSubresourceRange::default(),
45800         }
45801     }
45802 }
45803 impl ImageMemoryBarrier2KHR {
builder<'a>() -> ImageMemoryBarrier2KHRBuilder<'a>45804     pub fn builder<'a>() -> ImageMemoryBarrier2KHRBuilder<'a> {
45805         ImageMemoryBarrier2KHRBuilder {
45806             inner: ImageMemoryBarrier2KHR::default(),
45807             marker: ::std::marker::PhantomData,
45808         }
45809     }
45810 }
45811 #[repr(transparent)]
45812 pub struct ImageMemoryBarrier2KHRBuilder<'a> {
45813     inner: ImageMemoryBarrier2KHR,
45814     marker: ::std::marker::PhantomData<&'a ()>,
45815 }
45816 pub unsafe trait ExtendsImageMemoryBarrier2KHR {}
45817 impl<'a> ::std::ops::Deref for ImageMemoryBarrier2KHRBuilder<'a> {
45818     type Target = ImageMemoryBarrier2KHR;
deref(&self) -> &Self::Target45819     fn deref(&self) -> &Self::Target {
45820         &self.inner
45821     }
45822 }
45823 impl<'a> ::std::ops::DerefMut for ImageMemoryBarrier2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45824     fn deref_mut(&mut self) -> &mut Self::Target {
45825         &mut self.inner
45826     }
45827 }
45828 impl<'a> ImageMemoryBarrier2KHRBuilder<'a> {
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self45829     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self {
45830         self.inner.src_stage_mask = src_stage_mask;
45831         self
45832     }
src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self45833     pub fn src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self {
45834         self.inner.src_access_mask = src_access_mask;
45835         self
45836     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self45837     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self {
45838         self.inner.dst_stage_mask = dst_stage_mask;
45839         self
45840     }
dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self45841     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self {
45842         self.inner.dst_access_mask = dst_access_mask;
45843         self
45844     }
old_layout(mut self, old_layout: ImageLayout) -> Self45845     pub fn old_layout(mut self, old_layout: ImageLayout) -> Self {
45846         self.inner.old_layout = old_layout;
45847         self
45848     }
new_layout(mut self, new_layout: ImageLayout) -> Self45849     pub fn new_layout(mut self, new_layout: ImageLayout) -> Self {
45850         self.inner.new_layout = new_layout;
45851         self
45852     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self45853     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
45854         self.inner.src_queue_family_index = src_queue_family_index;
45855         self
45856     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self45857     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
45858         self.inner.dst_queue_family_index = dst_queue_family_index;
45859         self
45860     }
image(mut self, image: Image) -> Self45861     pub fn image(mut self, image: Image) -> Self {
45862         self.inner.image = image;
45863         self
45864     }
subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self45865     pub fn subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self {
45866         self.inner.subresource_range = subresource_range;
45867         self
45868     }
45869     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
45870     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
45871     #[doc = r" valid extension structs can be pushed into the chain."]
45872     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
45873     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageMemoryBarrier2KHR>(mut self, next: &'a mut T) -> Self45874     pub fn push_next<T: ExtendsImageMemoryBarrier2KHR>(mut self, next: &'a mut T) -> Self {
45875         unsafe {
45876             let next_ptr = next as *mut T as *mut BaseOutStructure;
45877             let last_next = ptr_chain_iter(next).last().unwrap();
45878             (*last_next).p_next = self.inner.p_next as _;
45879             self.inner.p_next = next_ptr as _;
45880         }
45881         self
45882     }
45883     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45884     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45885     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageMemoryBarrier2KHR45886     pub fn build(self) -> ImageMemoryBarrier2KHR {
45887         self.inner
45888     }
45889 }
45890 #[repr(C)]
45891 #[derive(Copy, Clone, Debug)]
45892 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryBarrier2KHR.html>"]
45893 pub struct BufferMemoryBarrier2KHR {
45894     pub s_type: StructureType,
45895     pub p_next: *const c_void,
45896     pub src_stage_mask: PipelineStageFlags2KHR,
45897     pub src_access_mask: AccessFlags2KHR,
45898     pub dst_stage_mask: PipelineStageFlags2KHR,
45899     pub dst_access_mask: AccessFlags2KHR,
45900     pub src_queue_family_index: u32,
45901     pub dst_queue_family_index: u32,
45902     pub buffer: Buffer,
45903     pub offset: DeviceSize,
45904     pub size: DeviceSize,
45905 }
45906 impl ::std::default::Default for BufferMemoryBarrier2KHR {
default() -> BufferMemoryBarrier2KHR45907     fn default() -> BufferMemoryBarrier2KHR {
45908         BufferMemoryBarrier2KHR {
45909             s_type: StructureType::BUFFER_MEMORY_BARRIER_2_KHR,
45910             p_next: ::std::ptr::null(),
45911             src_stage_mask: PipelineStageFlags2KHR::default(),
45912             src_access_mask: AccessFlags2KHR::default(),
45913             dst_stage_mask: PipelineStageFlags2KHR::default(),
45914             dst_access_mask: AccessFlags2KHR::default(),
45915             src_queue_family_index: u32::default(),
45916             dst_queue_family_index: u32::default(),
45917             buffer: Buffer::default(),
45918             offset: DeviceSize::default(),
45919             size: DeviceSize::default(),
45920         }
45921     }
45922 }
45923 impl BufferMemoryBarrier2KHR {
builder<'a>() -> BufferMemoryBarrier2KHRBuilder<'a>45924     pub fn builder<'a>() -> BufferMemoryBarrier2KHRBuilder<'a> {
45925         BufferMemoryBarrier2KHRBuilder {
45926             inner: BufferMemoryBarrier2KHR::default(),
45927             marker: ::std::marker::PhantomData,
45928         }
45929     }
45930 }
45931 #[repr(transparent)]
45932 pub struct BufferMemoryBarrier2KHRBuilder<'a> {
45933     inner: BufferMemoryBarrier2KHR,
45934     marker: ::std::marker::PhantomData<&'a ()>,
45935 }
45936 impl<'a> ::std::ops::Deref for BufferMemoryBarrier2KHRBuilder<'a> {
45937     type Target = BufferMemoryBarrier2KHR;
deref(&self) -> &Self::Target45938     fn deref(&self) -> &Self::Target {
45939         &self.inner
45940     }
45941 }
45942 impl<'a> ::std::ops::DerefMut for BufferMemoryBarrier2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45943     fn deref_mut(&mut self) -> &mut Self::Target {
45944         &mut self.inner
45945     }
45946 }
45947 impl<'a> BufferMemoryBarrier2KHRBuilder<'a> {
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self45948     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self {
45949         self.inner.src_stage_mask = src_stage_mask;
45950         self
45951     }
src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self45952     pub fn src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self {
45953         self.inner.src_access_mask = src_access_mask;
45954         self
45955     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self45956     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self {
45957         self.inner.dst_stage_mask = dst_stage_mask;
45958         self
45959     }
dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self45960     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self {
45961         self.inner.dst_access_mask = dst_access_mask;
45962         self
45963     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self45964     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
45965         self.inner.src_queue_family_index = src_queue_family_index;
45966         self
45967     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self45968     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
45969         self.inner.dst_queue_family_index = dst_queue_family_index;
45970         self
45971     }
buffer(mut self, buffer: Buffer) -> Self45972     pub fn buffer(mut self, buffer: Buffer) -> Self {
45973         self.inner.buffer = buffer;
45974         self
45975     }
offset(mut self, offset: DeviceSize) -> Self45976     pub fn offset(mut self, offset: DeviceSize) -> Self {
45977         self.inner.offset = offset;
45978         self
45979     }
size(mut self, size: DeviceSize) -> Self45980     pub fn size(mut self, size: DeviceSize) -> Self {
45981         self.inner.size = size;
45982         self
45983     }
45984     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45985     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45986     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferMemoryBarrier2KHR45987     pub fn build(self) -> BufferMemoryBarrier2KHR {
45988         self.inner
45989     }
45990 }
45991 #[repr(C)]
45992 #[derive(Copy, Clone, Debug)]
45993 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDependencyInfoKHR.html>"]
45994 pub struct DependencyInfoKHR {
45995     pub s_type: StructureType,
45996     pub p_next: *const c_void,
45997     pub dependency_flags: DependencyFlags,
45998     pub memory_barrier_count: u32,
45999     pub p_memory_barriers: *const MemoryBarrier2KHR,
46000     pub buffer_memory_barrier_count: u32,
46001     pub p_buffer_memory_barriers: *const BufferMemoryBarrier2KHR,
46002     pub image_memory_barrier_count: u32,
46003     pub p_image_memory_barriers: *const ImageMemoryBarrier2KHR,
46004 }
46005 impl ::std::default::Default for DependencyInfoKHR {
default() -> DependencyInfoKHR46006     fn default() -> DependencyInfoKHR {
46007         DependencyInfoKHR {
46008             s_type: StructureType::DEPENDENCY_INFO_KHR,
46009             p_next: ::std::ptr::null(),
46010             dependency_flags: DependencyFlags::default(),
46011             memory_barrier_count: u32::default(),
46012             p_memory_barriers: ::std::ptr::null(),
46013             buffer_memory_barrier_count: u32::default(),
46014             p_buffer_memory_barriers: ::std::ptr::null(),
46015             image_memory_barrier_count: u32::default(),
46016             p_image_memory_barriers: ::std::ptr::null(),
46017         }
46018     }
46019 }
46020 impl DependencyInfoKHR {
builder<'a>() -> DependencyInfoKHRBuilder<'a>46021     pub fn builder<'a>() -> DependencyInfoKHRBuilder<'a> {
46022         DependencyInfoKHRBuilder {
46023             inner: DependencyInfoKHR::default(),
46024             marker: ::std::marker::PhantomData,
46025         }
46026     }
46027 }
46028 #[repr(transparent)]
46029 pub struct DependencyInfoKHRBuilder<'a> {
46030     inner: DependencyInfoKHR,
46031     marker: ::std::marker::PhantomData<&'a ()>,
46032 }
46033 impl<'a> ::std::ops::Deref for DependencyInfoKHRBuilder<'a> {
46034     type Target = DependencyInfoKHR;
deref(&self) -> &Self::Target46035     fn deref(&self) -> &Self::Target {
46036         &self.inner
46037     }
46038 }
46039 impl<'a> ::std::ops::DerefMut for DependencyInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46040     fn deref_mut(&mut self) -> &mut Self::Target {
46041         &mut self.inner
46042     }
46043 }
46044 impl<'a> DependencyInfoKHRBuilder<'a> {
dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self46045     pub fn dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self {
46046         self.inner.dependency_flags = dependency_flags;
46047         self
46048     }
memory_barriers(mut self, memory_barriers: &'a [MemoryBarrier2KHR]) -> Self46049     pub fn memory_barriers(mut self, memory_barriers: &'a [MemoryBarrier2KHR]) -> Self {
46050         self.inner.memory_barrier_count = memory_barriers.len() as _;
46051         self.inner.p_memory_barriers = memory_barriers.as_ptr();
46052         self
46053     }
buffer_memory_barriers( mut self, buffer_memory_barriers: &'a [BufferMemoryBarrier2KHR], ) -> Self46054     pub fn buffer_memory_barriers(
46055         mut self,
46056         buffer_memory_barriers: &'a [BufferMemoryBarrier2KHR],
46057     ) -> Self {
46058         self.inner.buffer_memory_barrier_count = buffer_memory_barriers.len() as _;
46059         self.inner.p_buffer_memory_barriers = buffer_memory_barriers.as_ptr();
46060         self
46061     }
image_memory_barriers( mut self, image_memory_barriers: &'a [ImageMemoryBarrier2KHR], ) -> Self46062     pub fn image_memory_barriers(
46063         mut self,
46064         image_memory_barriers: &'a [ImageMemoryBarrier2KHR],
46065     ) -> Self {
46066         self.inner.image_memory_barrier_count = image_memory_barriers.len() as _;
46067         self.inner.p_image_memory_barriers = image_memory_barriers.as_ptr();
46068         self
46069     }
46070     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46071     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46072     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DependencyInfoKHR46073     pub fn build(self) -> DependencyInfoKHR {
46074         self.inner
46075     }
46076 }
46077 #[repr(C)]
46078 #[derive(Copy, Clone, Debug)]
46079 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreSubmitInfoKHR.html>"]
46080 pub struct SemaphoreSubmitInfoKHR {
46081     pub s_type: StructureType,
46082     pub p_next: *const c_void,
46083     pub semaphore: Semaphore,
46084     pub value: u64,
46085     pub stage_mask: PipelineStageFlags2KHR,
46086     pub device_index: u32,
46087 }
46088 impl ::std::default::Default for SemaphoreSubmitInfoKHR {
default() -> SemaphoreSubmitInfoKHR46089     fn default() -> SemaphoreSubmitInfoKHR {
46090         SemaphoreSubmitInfoKHR {
46091             s_type: StructureType::SEMAPHORE_SUBMIT_INFO_KHR,
46092             p_next: ::std::ptr::null(),
46093             semaphore: Semaphore::default(),
46094             value: u64::default(),
46095             stage_mask: PipelineStageFlags2KHR::default(),
46096             device_index: u32::default(),
46097         }
46098     }
46099 }
46100 impl SemaphoreSubmitInfoKHR {
builder<'a>() -> SemaphoreSubmitInfoKHRBuilder<'a>46101     pub fn builder<'a>() -> SemaphoreSubmitInfoKHRBuilder<'a> {
46102         SemaphoreSubmitInfoKHRBuilder {
46103             inner: SemaphoreSubmitInfoKHR::default(),
46104             marker: ::std::marker::PhantomData,
46105         }
46106     }
46107 }
46108 #[repr(transparent)]
46109 pub struct SemaphoreSubmitInfoKHRBuilder<'a> {
46110     inner: SemaphoreSubmitInfoKHR,
46111     marker: ::std::marker::PhantomData<&'a ()>,
46112 }
46113 impl<'a> ::std::ops::Deref for SemaphoreSubmitInfoKHRBuilder<'a> {
46114     type Target = SemaphoreSubmitInfoKHR;
deref(&self) -> &Self::Target46115     fn deref(&self) -> &Self::Target {
46116         &self.inner
46117     }
46118 }
46119 impl<'a> ::std::ops::DerefMut for SemaphoreSubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46120     fn deref_mut(&mut self) -> &mut Self::Target {
46121         &mut self.inner
46122     }
46123 }
46124 impl<'a> SemaphoreSubmitInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self46125     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
46126         self.inner.semaphore = semaphore;
46127         self
46128     }
value(mut self, value: u64) -> Self46129     pub fn value(mut self, value: u64) -> Self {
46130         self.inner.value = value;
46131         self
46132     }
stage_mask(mut self, stage_mask: PipelineStageFlags2KHR) -> Self46133     pub fn stage_mask(mut self, stage_mask: PipelineStageFlags2KHR) -> Self {
46134         self.inner.stage_mask = stage_mask;
46135         self
46136     }
device_index(mut self, device_index: u32) -> Self46137     pub fn device_index(mut self, device_index: u32) -> Self {
46138         self.inner.device_index = device_index;
46139         self
46140     }
46141     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46142     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46143     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreSubmitInfoKHR46144     pub fn build(self) -> SemaphoreSubmitInfoKHR {
46145         self.inner
46146     }
46147 }
46148 #[repr(C)]
46149 #[derive(Copy, Clone, Debug)]
46150 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferSubmitInfoKHR.html>"]
46151 pub struct CommandBufferSubmitInfoKHR {
46152     pub s_type: StructureType,
46153     pub p_next: *const c_void,
46154     pub command_buffer: CommandBuffer,
46155     pub device_mask: u32,
46156 }
46157 impl ::std::default::Default for CommandBufferSubmitInfoKHR {
default() -> CommandBufferSubmitInfoKHR46158     fn default() -> CommandBufferSubmitInfoKHR {
46159         CommandBufferSubmitInfoKHR {
46160             s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO_KHR,
46161             p_next: ::std::ptr::null(),
46162             command_buffer: CommandBuffer::default(),
46163             device_mask: u32::default(),
46164         }
46165     }
46166 }
46167 impl CommandBufferSubmitInfoKHR {
builder<'a>() -> CommandBufferSubmitInfoKHRBuilder<'a>46168     pub fn builder<'a>() -> CommandBufferSubmitInfoKHRBuilder<'a> {
46169         CommandBufferSubmitInfoKHRBuilder {
46170             inner: CommandBufferSubmitInfoKHR::default(),
46171             marker: ::std::marker::PhantomData,
46172         }
46173     }
46174 }
46175 #[repr(transparent)]
46176 pub struct CommandBufferSubmitInfoKHRBuilder<'a> {
46177     inner: CommandBufferSubmitInfoKHR,
46178     marker: ::std::marker::PhantomData<&'a ()>,
46179 }
46180 impl<'a> ::std::ops::Deref for CommandBufferSubmitInfoKHRBuilder<'a> {
46181     type Target = CommandBufferSubmitInfoKHR;
deref(&self) -> &Self::Target46182     fn deref(&self) -> &Self::Target {
46183         &self.inner
46184     }
46185 }
46186 impl<'a> ::std::ops::DerefMut for CommandBufferSubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46187     fn deref_mut(&mut self) -> &mut Self::Target {
46188         &mut self.inner
46189     }
46190 }
46191 impl<'a> CommandBufferSubmitInfoKHRBuilder<'a> {
command_buffer(mut self, command_buffer: CommandBuffer) -> Self46192     pub fn command_buffer(mut self, command_buffer: CommandBuffer) -> Self {
46193         self.inner.command_buffer = command_buffer;
46194         self
46195     }
device_mask(mut self, device_mask: u32) -> Self46196     pub fn device_mask(mut self, device_mask: u32) -> Self {
46197         self.inner.device_mask = device_mask;
46198         self
46199     }
46200     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46201     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46202     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferSubmitInfoKHR46203     pub fn build(self) -> CommandBufferSubmitInfoKHR {
46204         self.inner
46205     }
46206 }
46207 #[repr(C)]
46208 #[derive(Copy, Clone, Debug)]
46209 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubmitInfo2KHR.html>"]
46210 pub struct SubmitInfo2KHR {
46211     pub s_type: StructureType,
46212     pub p_next: *const c_void,
46213     pub flags: SubmitFlagsKHR,
46214     pub wait_semaphore_info_count: u32,
46215     pub p_wait_semaphore_infos: *const SemaphoreSubmitInfoKHR,
46216     pub command_buffer_info_count: u32,
46217     pub p_command_buffer_infos: *const CommandBufferSubmitInfoKHR,
46218     pub signal_semaphore_info_count: u32,
46219     pub p_signal_semaphore_infos: *const SemaphoreSubmitInfoKHR,
46220 }
46221 impl ::std::default::Default for SubmitInfo2KHR {
default() -> SubmitInfo2KHR46222     fn default() -> SubmitInfo2KHR {
46223         SubmitInfo2KHR {
46224             s_type: StructureType::SUBMIT_INFO_2_KHR,
46225             p_next: ::std::ptr::null(),
46226             flags: SubmitFlagsKHR::default(),
46227             wait_semaphore_info_count: u32::default(),
46228             p_wait_semaphore_infos: ::std::ptr::null(),
46229             command_buffer_info_count: u32::default(),
46230             p_command_buffer_infos: ::std::ptr::null(),
46231             signal_semaphore_info_count: u32::default(),
46232             p_signal_semaphore_infos: ::std::ptr::null(),
46233         }
46234     }
46235 }
46236 impl SubmitInfo2KHR {
builder<'a>() -> SubmitInfo2KHRBuilder<'a>46237     pub fn builder<'a>() -> SubmitInfo2KHRBuilder<'a> {
46238         SubmitInfo2KHRBuilder {
46239             inner: SubmitInfo2KHR::default(),
46240             marker: ::std::marker::PhantomData,
46241         }
46242     }
46243 }
46244 #[repr(transparent)]
46245 pub struct SubmitInfo2KHRBuilder<'a> {
46246     inner: SubmitInfo2KHR,
46247     marker: ::std::marker::PhantomData<&'a ()>,
46248 }
46249 pub unsafe trait ExtendsSubmitInfo2KHR {}
46250 impl<'a> ::std::ops::Deref for SubmitInfo2KHRBuilder<'a> {
46251     type Target = SubmitInfo2KHR;
deref(&self) -> &Self::Target46252     fn deref(&self) -> &Self::Target {
46253         &self.inner
46254     }
46255 }
46256 impl<'a> ::std::ops::DerefMut for SubmitInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46257     fn deref_mut(&mut self) -> &mut Self::Target {
46258         &mut self.inner
46259     }
46260 }
46261 impl<'a> SubmitInfo2KHRBuilder<'a> {
flags(mut self, flags: SubmitFlagsKHR) -> Self46262     pub fn flags(mut self, flags: SubmitFlagsKHR) -> Self {
46263         self.inner.flags = flags;
46264         self
46265     }
wait_semaphore_infos( mut self, wait_semaphore_infos: &'a [SemaphoreSubmitInfoKHR], ) -> Self46266     pub fn wait_semaphore_infos(
46267         mut self,
46268         wait_semaphore_infos: &'a [SemaphoreSubmitInfoKHR],
46269     ) -> Self {
46270         self.inner.wait_semaphore_info_count = wait_semaphore_infos.len() as _;
46271         self.inner.p_wait_semaphore_infos = wait_semaphore_infos.as_ptr();
46272         self
46273     }
command_buffer_infos( mut self, command_buffer_infos: &'a [CommandBufferSubmitInfoKHR], ) -> Self46274     pub fn command_buffer_infos(
46275         mut self,
46276         command_buffer_infos: &'a [CommandBufferSubmitInfoKHR],
46277     ) -> Self {
46278         self.inner.command_buffer_info_count = command_buffer_infos.len() as _;
46279         self.inner.p_command_buffer_infos = command_buffer_infos.as_ptr();
46280         self
46281     }
signal_semaphore_infos( mut self, signal_semaphore_infos: &'a [SemaphoreSubmitInfoKHR], ) -> Self46282     pub fn signal_semaphore_infos(
46283         mut self,
46284         signal_semaphore_infos: &'a [SemaphoreSubmitInfoKHR],
46285     ) -> Self {
46286         self.inner.signal_semaphore_info_count = signal_semaphore_infos.len() as _;
46287         self.inner.p_signal_semaphore_infos = signal_semaphore_infos.as_ptr();
46288         self
46289     }
46290     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
46291     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
46292     #[doc = r" valid extension structs can be pushed into the chain."]
46293     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
46294     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubmitInfo2KHR>(mut self, next: &'a mut T) -> Self46295     pub fn push_next<T: ExtendsSubmitInfo2KHR>(mut self, next: &'a mut T) -> Self {
46296         unsafe {
46297             let next_ptr = next as *mut T as *mut BaseOutStructure;
46298             let last_next = ptr_chain_iter(next).last().unwrap();
46299             (*last_next).p_next = self.inner.p_next as _;
46300             self.inner.p_next = next_ptr as _;
46301         }
46302         self
46303     }
46304     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46305     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46306     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubmitInfo2KHR46307     pub fn build(self) -> SubmitInfo2KHR {
46308         self.inner
46309     }
46310 }
46311 #[repr(C)]
46312 #[derive(Copy, Clone, Debug)]
46313 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyCheckpointProperties2NV.html>"]
46314 pub struct QueueFamilyCheckpointProperties2NV {
46315     pub s_type: StructureType,
46316     pub p_next: *mut c_void,
46317     pub checkpoint_execution_stage_mask: PipelineStageFlags2KHR,
46318 }
46319 impl ::std::default::Default for QueueFamilyCheckpointProperties2NV {
default() -> QueueFamilyCheckpointProperties2NV46320     fn default() -> QueueFamilyCheckpointProperties2NV {
46321         QueueFamilyCheckpointProperties2NV {
46322             s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
46323             p_next: ::std::ptr::null_mut(),
46324             checkpoint_execution_stage_mask: PipelineStageFlags2KHR::default(),
46325         }
46326     }
46327 }
46328 impl QueueFamilyCheckpointProperties2NV {
builder<'a>() -> QueueFamilyCheckpointProperties2NVBuilder<'a>46329     pub fn builder<'a>() -> QueueFamilyCheckpointProperties2NVBuilder<'a> {
46330         QueueFamilyCheckpointProperties2NVBuilder {
46331             inner: QueueFamilyCheckpointProperties2NV::default(),
46332             marker: ::std::marker::PhantomData,
46333         }
46334     }
46335 }
46336 #[repr(transparent)]
46337 pub struct QueueFamilyCheckpointProperties2NVBuilder<'a> {
46338     inner: QueueFamilyCheckpointProperties2NV,
46339     marker: ::std::marker::PhantomData<&'a ()>,
46340 }
46341 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointProperties2NVBuilder<'_> {}
46342 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointProperties2NV {}
46343 impl<'a> ::std::ops::Deref for QueueFamilyCheckpointProperties2NVBuilder<'a> {
46344     type Target = QueueFamilyCheckpointProperties2NV;
deref(&self) -> &Self::Target46345     fn deref(&self) -> &Self::Target {
46346         &self.inner
46347     }
46348 }
46349 impl<'a> ::std::ops::DerefMut for QueueFamilyCheckpointProperties2NVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46350     fn deref_mut(&mut self) -> &mut Self::Target {
46351         &mut self.inner
46352     }
46353 }
46354 impl<'a> QueueFamilyCheckpointProperties2NVBuilder<'a> {
checkpoint_execution_stage_mask( mut self, checkpoint_execution_stage_mask: PipelineStageFlags2KHR, ) -> Self46355     pub fn checkpoint_execution_stage_mask(
46356         mut self,
46357         checkpoint_execution_stage_mask: PipelineStageFlags2KHR,
46358     ) -> Self {
46359         self.inner.checkpoint_execution_stage_mask = checkpoint_execution_stage_mask;
46360         self
46361     }
46362     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46363     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46364     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyCheckpointProperties2NV46365     pub fn build(self) -> QueueFamilyCheckpointProperties2NV {
46366         self.inner
46367     }
46368 }
46369 #[repr(C)]
46370 #[derive(Copy, Clone, Debug)]
46371 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCheckpointData2NV.html>"]
46372 pub struct CheckpointData2NV {
46373     pub s_type: StructureType,
46374     pub p_next: *mut c_void,
46375     pub stage: PipelineStageFlags2KHR,
46376     pub p_checkpoint_marker: *mut c_void,
46377 }
46378 impl ::std::default::Default for CheckpointData2NV {
default() -> CheckpointData2NV46379     fn default() -> CheckpointData2NV {
46380         CheckpointData2NV {
46381             s_type: StructureType::CHECKPOINT_DATA_2_NV,
46382             p_next: ::std::ptr::null_mut(),
46383             stage: PipelineStageFlags2KHR::default(),
46384             p_checkpoint_marker: ::std::ptr::null_mut(),
46385         }
46386     }
46387 }
46388 impl CheckpointData2NV {
builder<'a>() -> CheckpointData2NVBuilder<'a>46389     pub fn builder<'a>() -> CheckpointData2NVBuilder<'a> {
46390         CheckpointData2NVBuilder {
46391             inner: CheckpointData2NV::default(),
46392             marker: ::std::marker::PhantomData,
46393         }
46394     }
46395 }
46396 #[repr(transparent)]
46397 pub struct CheckpointData2NVBuilder<'a> {
46398     inner: CheckpointData2NV,
46399     marker: ::std::marker::PhantomData<&'a ()>,
46400 }
46401 impl<'a> ::std::ops::Deref for CheckpointData2NVBuilder<'a> {
46402     type Target = CheckpointData2NV;
deref(&self) -> &Self::Target46403     fn deref(&self) -> &Self::Target {
46404         &self.inner
46405     }
46406 }
46407 impl<'a> ::std::ops::DerefMut for CheckpointData2NVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46408     fn deref_mut(&mut self) -> &mut Self::Target {
46409         &mut self.inner
46410     }
46411 }
46412 impl<'a> CheckpointData2NVBuilder<'a> {
stage(mut self, stage: PipelineStageFlags2KHR) -> Self46413     pub fn stage(mut self, stage: PipelineStageFlags2KHR) -> Self {
46414         self.inner.stage = stage;
46415         self
46416     }
checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self46417     pub fn checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self {
46418         self.inner.p_checkpoint_marker = checkpoint_marker;
46419         self
46420     }
46421     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46422     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46423     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CheckpointData2NV46424     pub fn build(self) -> CheckpointData2NV {
46425         self.inner
46426     }
46427 }
46428 #[repr(C)]
46429 #[derive(Copy, Clone, Debug)]
46430 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>"]
46431 pub struct PhysicalDeviceSynchronization2FeaturesKHR {
46432     pub s_type: StructureType,
46433     pub p_next: *mut c_void,
46434     pub synchronization2: Bool32,
46435 }
46436 impl ::std::default::Default for PhysicalDeviceSynchronization2FeaturesKHR {
default() -> PhysicalDeviceSynchronization2FeaturesKHR46437     fn default() -> PhysicalDeviceSynchronization2FeaturesKHR {
46438         PhysicalDeviceSynchronization2FeaturesKHR {
46439             s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR,
46440             p_next: ::std::ptr::null_mut(),
46441             synchronization2: Bool32::default(),
46442         }
46443     }
46444 }
46445 impl PhysicalDeviceSynchronization2FeaturesKHR {
builder<'a>() -> PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a>46446     pub fn builder<'a>() -> PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
46447         PhysicalDeviceSynchronization2FeaturesKHRBuilder {
46448             inner: PhysicalDeviceSynchronization2FeaturesKHR::default(),
46449             marker: ::std::marker::PhantomData,
46450         }
46451     }
46452 }
46453 #[repr(transparent)]
46454 pub struct PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
46455     inner: PhysicalDeviceSynchronization2FeaturesKHR,
46456     marker: ::std::marker::PhantomData<&'a ()>,
46457 }
46458 unsafe impl ExtendsPhysicalDeviceFeatures2
46459     for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'_>
46460 {
46461 }
46462 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSynchronization2FeaturesKHR {}
46463 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'_> {}
46464 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSynchronization2FeaturesKHR {}
46465 impl<'a> ::std::ops::Deref for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
46466     type Target = PhysicalDeviceSynchronization2FeaturesKHR;
deref(&self) -> &Self::Target46467     fn deref(&self) -> &Self::Target {
46468         &self.inner
46469     }
46470 }
46471 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46472     fn deref_mut(&mut self) -> &mut Self::Target {
46473         &mut self.inner
46474     }
46475 }
46476 impl<'a> PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
synchronization2(mut self, synchronization2: bool) -> Self46477     pub fn synchronization2(mut self, synchronization2: bool) -> Self {
46478         self.inner.synchronization2 = synchronization2.into();
46479         self
46480     }
46481     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46482     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46483     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSynchronization2FeaturesKHR46484     pub fn build(self) -> PhysicalDeviceSynchronization2FeaturesKHR {
46485         self.inner
46486     }
46487 }
46488 #[repr(C)]
46489 #[derive(Copy, Clone, Debug)]
46490 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoQueueFamilyProperties2KHR.html>"]
46491 pub struct VideoQueueFamilyProperties2KHR {
46492     pub s_type: StructureType,
46493     pub p_next: *mut c_void,
46494     pub video_codec_operations: VideoCodecOperationFlagsKHR,
46495 }
46496 impl ::std::default::Default for VideoQueueFamilyProperties2KHR {
default() -> VideoQueueFamilyProperties2KHR46497     fn default() -> VideoQueueFamilyProperties2KHR {
46498         VideoQueueFamilyProperties2KHR {
46499             s_type: StructureType::VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR,
46500             p_next: ::std::ptr::null_mut(),
46501             video_codec_operations: VideoCodecOperationFlagsKHR::default(),
46502         }
46503     }
46504 }
46505 impl VideoQueueFamilyProperties2KHR {
builder<'a>() -> VideoQueueFamilyProperties2KHRBuilder<'a>46506     pub fn builder<'a>() -> VideoQueueFamilyProperties2KHRBuilder<'a> {
46507         VideoQueueFamilyProperties2KHRBuilder {
46508             inner: VideoQueueFamilyProperties2KHR::default(),
46509             marker: ::std::marker::PhantomData,
46510         }
46511     }
46512 }
46513 #[repr(transparent)]
46514 pub struct VideoQueueFamilyProperties2KHRBuilder<'a> {
46515     inner: VideoQueueFamilyProperties2KHR,
46516     marker: ::std::marker::PhantomData<&'a ()>,
46517 }
46518 unsafe impl ExtendsQueueFamilyProperties2 for VideoQueueFamilyProperties2KHRBuilder<'_> {}
46519 unsafe impl ExtendsQueueFamilyProperties2 for VideoQueueFamilyProperties2KHR {}
46520 impl<'a> ::std::ops::Deref for VideoQueueFamilyProperties2KHRBuilder<'a> {
46521     type Target = VideoQueueFamilyProperties2KHR;
deref(&self) -> &Self::Target46522     fn deref(&self) -> &Self::Target {
46523         &self.inner
46524     }
46525 }
46526 impl<'a> ::std::ops::DerefMut for VideoQueueFamilyProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46527     fn deref_mut(&mut self) -> &mut Self::Target {
46528         &mut self.inner
46529     }
46530 }
46531 impl<'a> VideoQueueFamilyProperties2KHRBuilder<'a> {
video_codec_operations( mut self, video_codec_operations: VideoCodecOperationFlagsKHR, ) -> Self46532     pub fn video_codec_operations(
46533         mut self,
46534         video_codec_operations: VideoCodecOperationFlagsKHR,
46535     ) -> Self {
46536         self.inner.video_codec_operations = video_codec_operations;
46537         self
46538     }
46539     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46540     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46541     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoQueueFamilyProperties2KHR46542     pub fn build(self) -> VideoQueueFamilyProperties2KHR {
46543         self.inner
46544     }
46545 }
46546 #[repr(C)]
46547 #[derive(Copy, Clone, Debug)]
46548 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoProfilesKHR.html>"]
46549 pub struct VideoProfilesKHR {
46550     pub s_type: StructureType,
46551     pub p_next: *mut c_void,
46552     pub profile_count: u32,
46553     pub p_profiles: *const VideoProfileKHR,
46554 }
46555 impl ::std::default::Default for VideoProfilesKHR {
default() -> VideoProfilesKHR46556     fn default() -> VideoProfilesKHR {
46557         VideoProfilesKHR {
46558             s_type: StructureType::VIDEO_PROFILES_KHR,
46559             p_next: ::std::ptr::null_mut(),
46560             profile_count: u32::default(),
46561             p_profiles: ::std::ptr::null(),
46562         }
46563     }
46564 }
46565 impl VideoProfilesKHR {
builder<'a>() -> VideoProfilesKHRBuilder<'a>46566     pub fn builder<'a>() -> VideoProfilesKHRBuilder<'a> {
46567         VideoProfilesKHRBuilder {
46568             inner: VideoProfilesKHR::default(),
46569             marker: ::std::marker::PhantomData,
46570         }
46571     }
46572 }
46573 #[repr(transparent)]
46574 pub struct VideoProfilesKHRBuilder<'a> {
46575     inner: VideoProfilesKHR,
46576     marker: ::std::marker::PhantomData<&'a ()>,
46577 }
46578 unsafe impl ExtendsFormatProperties2 for VideoProfilesKHRBuilder<'_> {}
46579 unsafe impl ExtendsFormatProperties2 for VideoProfilesKHR {}
46580 unsafe impl ExtendsImageCreateInfo for VideoProfilesKHRBuilder<'_> {}
46581 unsafe impl ExtendsImageCreateInfo for VideoProfilesKHR {}
46582 unsafe impl ExtendsImageViewCreateInfo for VideoProfilesKHRBuilder<'_> {}
46583 unsafe impl ExtendsImageViewCreateInfo for VideoProfilesKHR {}
46584 unsafe impl ExtendsBufferCreateInfo for VideoProfilesKHRBuilder<'_> {}
46585 unsafe impl ExtendsBufferCreateInfo for VideoProfilesKHR {}
46586 impl<'a> ::std::ops::Deref for VideoProfilesKHRBuilder<'a> {
46587     type Target = VideoProfilesKHR;
deref(&self) -> &Self::Target46588     fn deref(&self) -> &Self::Target {
46589         &self.inner
46590     }
46591 }
46592 impl<'a> ::std::ops::DerefMut for VideoProfilesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46593     fn deref_mut(&mut self) -> &mut Self::Target {
46594         &mut self.inner
46595     }
46596 }
46597 impl<'a> VideoProfilesKHRBuilder<'a> {
profile_count(mut self, profile_count: u32) -> Self46598     pub fn profile_count(mut self, profile_count: u32) -> Self {
46599         self.inner.profile_count = profile_count;
46600         self
46601     }
profiles(mut self, profiles: &'a VideoProfileKHR) -> Self46602     pub fn profiles(mut self, profiles: &'a VideoProfileKHR) -> Self {
46603         self.inner.p_profiles = profiles;
46604         self
46605     }
46606     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46607     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46608     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoProfilesKHR46609     pub fn build(self) -> VideoProfilesKHR {
46610         self.inner
46611     }
46612 }
46613 #[repr(C)]
46614 #[derive(Copy, Clone, Debug)]
46615 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>"]
46616 pub struct PhysicalDeviceVideoFormatInfoKHR {
46617     pub s_type: StructureType,
46618     pub p_next: *mut c_void,
46619     pub image_usage: ImageUsageFlags,
46620     pub p_video_profiles: *const VideoProfilesKHR,
46621 }
46622 impl ::std::default::Default for PhysicalDeviceVideoFormatInfoKHR {
default() -> PhysicalDeviceVideoFormatInfoKHR46623     fn default() -> PhysicalDeviceVideoFormatInfoKHR {
46624         PhysicalDeviceVideoFormatInfoKHR {
46625             s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
46626             p_next: ::std::ptr::null_mut(),
46627             image_usage: ImageUsageFlags::default(),
46628             p_video_profiles: ::std::ptr::null(),
46629         }
46630     }
46631 }
46632 impl PhysicalDeviceVideoFormatInfoKHR {
builder<'a>() -> PhysicalDeviceVideoFormatInfoKHRBuilder<'a>46633     pub fn builder<'a>() -> PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
46634         PhysicalDeviceVideoFormatInfoKHRBuilder {
46635             inner: PhysicalDeviceVideoFormatInfoKHR::default(),
46636             marker: ::std::marker::PhantomData,
46637         }
46638     }
46639 }
46640 #[repr(transparent)]
46641 pub struct PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
46642     inner: PhysicalDeviceVideoFormatInfoKHR,
46643     marker: ::std::marker::PhantomData<&'a ()>,
46644 }
46645 impl<'a> ::std::ops::Deref for PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
46646     type Target = PhysicalDeviceVideoFormatInfoKHR;
deref(&self) -> &Self::Target46647     fn deref(&self) -> &Self::Target {
46648         &self.inner
46649     }
46650 }
46651 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46652     fn deref_mut(&mut self) -> &mut Self::Target {
46653         &mut self.inner
46654     }
46655 }
46656 impl<'a> PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
image_usage(mut self, image_usage: ImageUsageFlags) -> Self46657     pub fn image_usage(mut self, image_usage: ImageUsageFlags) -> Self {
46658         self.inner.image_usage = image_usage;
46659         self
46660     }
video_profiles(mut self, video_profiles: &'a VideoProfilesKHR) -> Self46661     pub fn video_profiles(mut self, video_profiles: &'a VideoProfilesKHR) -> Self {
46662         self.inner.p_video_profiles = video_profiles;
46663         self
46664     }
46665     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46666     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46667     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVideoFormatInfoKHR46668     pub fn build(self) -> PhysicalDeviceVideoFormatInfoKHR {
46669         self.inner
46670     }
46671 }
46672 #[repr(C)]
46673 #[derive(Copy, Clone, Debug)]
46674 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoFormatPropertiesKHR.html>"]
46675 pub struct VideoFormatPropertiesKHR {
46676     pub s_type: StructureType,
46677     pub p_next: *mut c_void,
46678     pub format: Format,
46679 }
46680 impl ::std::default::Default for VideoFormatPropertiesKHR {
default() -> VideoFormatPropertiesKHR46681     fn default() -> VideoFormatPropertiesKHR {
46682         VideoFormatPropertiesKHR {
46683             s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
46684             p_next: ::std::ptr::null_mut(),
46685             format: Format::default(),
46686         }
46687     }
46688 }
46689 impl VideoFormatPropertiesKHR {
builder<'a>() -> VideoFormatPropertiesKHRBuilder<'a>46690     pub fn builder<'a>() -> VideoFormatPropertiesKHRBuilder<'a> {
46691         VideoFormatPropertiesKHRBuilder {
46692             inner: VideoFormatPropertiesKHR::default(),
46693             marker: ::std::marker::PhantomData,
46694         }
46695     }
46696 }
46697 #[repr(transparent)]
46698 pub struct VideoFormatPropertiesKHRBuilder<'a> {
46699     inner: VideoFormatPropertiesKHR,
46700     marker: ::std::marker::PhantomData<&'a ()>,
46701 }
46702 impl<'a> ::std::ops::Deref for VideoFormatPropertiesKHRBuilder<'a> {
46703     type Target = VideoFormatPropertiesKHR;
deref(&self) -> &Self::Target46704     fn deref(&self) -> &Self::Target {
46705         &self.inner
46706     }
46707 }
46708 impl<'a> ::std::ops::DerefMut for VideoFormatPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46709     fn deref_mut(&mut self) -> &mut Self::Target {
46710         &mut self.inner
46711     }
46712 }
46713 impl<'a> VideoFormatPropertiesKHRBuilder<'a> {
format(mut self, format: Format) -> Self46714     pub fn format(mut self, format: Format) -> Self {
46715         self.inner.format = format;
46716         self
46717     }
46718     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46719     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46720     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoFormatPropertiesKHR46721     pub fn build(self) -> VideoFormatPropertiesKHR {
46722         self.inner
46723     }
46724 }
46725 #[repr(C)]
46726 #[derive(Copy, Clone, Debug)]
46727 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoProfileKHR.html>"]
46728 pub struct VideoProfileKHR {
46729     pub s_type: StructureType,
46730     pub p_next: *mut c_void,
46731     pub video_codec_operation: VideoCodecOperationFlagsKHR,
46732     pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
46733     pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
46734     pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
46735 }
46736 impl ::std::default::Default for VideoProfileKHR {
default() -> VideoProfileKHR46737     fn default() -> VideoProfileKHR {
46738         VideoProfileKHR {
46739             s_type: StructureType::VIDEO_PROFILE_KHR,
46740             p_next: ::std::ptr::null_mut(),
46741             video_codec_operation: VideoCodecOperationFlagsKHR::default(),
46742             chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
46743             luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
46744             chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
46745         }
46746     }
46747 }
46748 impl VideoProfileKHR {
builder<'a>() -> VideoProfileKHRBuilder<'a>46749     pub fn builder<'a>() -> VideoProfileKHRBuilder<'a> {
46750         VideoProfileKHRBuilder {
46751             inner: VideoProfileKHR::default(),
46752             marker: ::std::marker::PhantomData,
46753         }
46754     }
46755 }
46756 #[repr(transparent)]
46757 pub struct VideoProfileKHRBuilder<'a> {
46758     inner: VideoProfileKHR,
46759     marker: ::std::marker::PhantomData<&'a ()>,
46760 }
46761 unsafe impl ExtendsQueryPoolCreateInfo for VideoProfileKHRBuilder<'_> {}
46762 unsafe impl ExtendsQueryPoolCreateInfo for VideoProfileKHR {}
46763 unsafe impl ExtendsFormatProperties2 for VideoProfileKHRBuilder<'_> {}
46764 unsafe impl ExtendsFormatProperties2 for VideoProfileKHR {}
46765 unsafe impl ExtendsImageCreateInfo for VideoProfileKHRBuilder<'_> {}
46766 unsafe impl ExtendsImageCreateInfo for VideoProfileKHR {}
46767 unsafe impl ExtendsImageViewCreateInfo for VideoProfileKHRBuilder<'_> {}
46768 unsafe impl ExtendsImageViewCreateInfo for VideoProfileKHR {}
46769 unsafe impl ExtendsBufferCreateInfo for VideoProfileKHRBuilder<'_> {}
46770 unsafe impl ExtendsBufferCreateInfo for VideoProfileKHR {}
46771 pub unsafe trait ExtendsVideoProfileKHR {}
46772 impl<'a> ::std::ops::Deref for VideoProfileKHRBuilder<'a> {
46773     type Target = VideoProfileKHR;
deref(&self) -> &Self::Target46774     fn deref(&self) -> &Self::Target {
46775         &self.inner
46776     }
46777 }
46778 impl<'a> ::std::ops::DerefMut for VideoProfileKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46779     fn deref_mut(&mut self) -> &mut Self::Target {
46780         &mut self.inner
46781     }
46782 }
46783 impl<'a> VideoProfileKHRBuilder<'a> {
video_codec_operation( mut self, video_codec_operation: VideoCodecOperationFlagsKHR, ) -> Self46784     pub fn video_codec_operation(
46785         mut self,
46786         video_codec_operation: VideoCodecOperationFlagsKHR,
46787     ) -> Self {
46788         self.inner.video_codec_operation = video_codec_operation;
46789         self
46790     }
chroma_subsampling( mut self, chroma_subsampling: VideoChromaSubsamplingFlagsKHR, ) -> Self46791     pub fn chroma_subsampling(
46792         mut self,
46793         chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
46794     ) -> Self {
46795         self.inner.chroma_subsampling = chroma_subsampling;
46796         self
46797     }
luma_bit_depth(mut self, luma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self46798     pub fn luma_bit_depth(mut self, luma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self {
46799         self.inner.luma_bit_depth = luma_bit_depth;
46800         self
46801     }
chroma_bit_depth(mut self, chroma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self46802     pub fn chroma_bit_depth(mut self, chroma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self {
46803         self.inner.chroma_bit_depth = chroma_bit_depth;
46804         self
46805     }
46806     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
46807     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
46808     #[doc = r" valid extension structs can be pushed into the chain."]
46809     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
46810     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoProfileKHR>(mut self, next: &'a mut T) -> Self46811     pub fn push_next<T: ExtendsVideoProfileKHR>(mut self, next: &'a mut T) -> Self {
46812         unsafe {
46813             let next_ptr = next as *mut T as *mut BaseOutStructure;
46814             let last_next = ptr_chain_iter(next).last().unwrap();
46815             (*last_next).p_next = self.inner.p_next as _;
46816             self.inner.p_next = next_ptr as _;
46817         }
46818         self
46819     }
46820     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46821     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46822     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoProfileKHR46823     pub fn build(self) -> VideoProfileKHR {
46824         self.inner
46825     }
46826 }
46827 #[repr(C)]
46828 #[derive(Copy, Clone, Debug)]
46829 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoCapabilitiesKHR.html>"]
46830 pub struct VideoCapabilitiesKHR {
46831     pub s_type: StructureType,
46832     pub p_next: *mut c_void,
46833     pub capability_flags: VideoCapabilityFlagsKHR,
46834     pub min_bitstream_buffer_offset_alignment: DeviceSize,
46835     pub min_bitstream_buffer_size_alignment: DeviceSize,
46836     pub video_picture_extent_granularity: Extent2D,
46837     pub min_extent: Extent2D,
46838     pub max_extent: Extent2D,
46839     pub max_reference_pictures_slots_count: u32,
46840     pub max_reference_pictures_active_count: u32,
46841 }
46842 impl ::std::default::Default for VideoCapabilitiesKHR {
default() -> VideoCapabilitiesKHR46843     fn default() -> VideoCapabilitiesKHR {
46844         VideoCapabilitiesKHR {
46845             s_type: StructureType::VIDEO_CAPABILITIES_KHR,
46846             p_next: ::std::ptr::null_mut(),
46847             capability_flags: VideoCapabilityFlagsKHR::default(),
46848             min_bitstream_buffer_offset_alignment: DeviceSize::default(),
46849             min_bitstream_buffer_size_alignment: DeviceSize::default(),
46850             video_picture_extent_granularity: Extent2D::default(),
46851             min_extent: Extent2D::default(),
46852             max_extent: Extent2D::default(),
46853             max_reference_pictures_slots_count: u32::default(),
46854             max_reference_pictures_active_count: u32::default(),
46855         }
46856     }
46857 }
46858 impl VideoCapabilitiesKHR {
builder<'a>() -> VideoCapabilitiesKHRBuilder<'a>46859     pub fn builder<'a>() -> VideoCapabilitiesKHRBuilder<'a> {
46860         VideoCapabilitiesKHRBuilder {
46861             inner: VideoCapabilitiesKHR::default(),
46862             marker: ::std::marker::PhantomData,
46863         }
46864     }
46865 }
46866 #[repr(transparent)]
46867 pub struct VideoCapabilitiesKHRBuilder<'a> {
46868     inner: VideoCapabilitiesKHR,
46869     marker: ::std::marker::PhantomData<&'a ()>,
46870 }
46871 pub unsafe trait ExtendsVideoCapabilitiesKHR {}
46872 impl<'a> ::std::ops::Deref for VideoCapabilitiesKHRBuilder<'a> {
46873     type Target = VideoCapabilitiesKHR;
deref(&self) -> &Self::Target46874     fn deref(&self) -> &Self::Target {
46875         &self.inner
46876     }
46877 }
46878 impl<'a> ::std::ops::DerefMut for VideoCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46879     fn deref_mut(&mut self) -> &mut Self::Target {
46880         &mut self.inner
46881     }
46882 }
46883 impl<'a> VideoCapabilitiesKHRBuilder<'a> {
capability_flags(mut self, capability_flags: VideoCapabilityFlagsKHR) -> Self46884     pub fn capability_flags(mut self, capability_flags: VideoCapabilityFlagsKHR) -> Self {
46885         self.inner.capability_flags = capability_flags;
46886         self
46887     }
min_bitstream_buffer_offset_alignment( mut self, min_bitstream_buffer_offset_alignment: DeviceSize, ) -> Self46888     pub fn min_bitstream_buffer_offset_alignment(
46889         mut self,
46890         min_bitstream_buffer_offset_alignment: DeviceSize,
46891     ) -> Self {
46892         self.inner.min_bitstream_buffer_offset_alignment = min_bitstream_buffer_offset_alignment;
46893         self
46894     }
min_bitstream_buffer_size_alignment( mut self, min_bitstream_buffer_size_alignment: DeviceSize, ) -> Self46895     pub fn min_bitstream_buffer_size_alignment(
46896         mut self,
46897         min_bitstream_buffer_size_alignment: DeviceSize,
46898     ) -> Self {
46899         self.inner.min_bitstream_buffer_size_alignment = min_bitstream_buffer_size_alignment;
46900         self
46901     }
video_picture_extent_granularity( mut self, video_picture_extent_granularity: Extent2D, ) -> Self46902     pub fn video_picture_extent_granularity(
46903         mut self,
46904         video_picture_extent_granularity: Extent2D,
46905     ) -> Self {
46906         self.inner.video_picture_extent_granularity = video_picture_extent_granularity;
46907         self
46908     }
min_extent(mut self, min_extent: Extent2D) -> Self46909     pub fn min_extent(mut self, min_extent: Extent2D) -> Self {
46910         self.inner.min_extent = min_extent;
46911         self
46912     }
max_extent(mut self, max_extent: Extent2D) -> Self46913     pub fn max_extent(mut self, max_extent: Extent2D) -> Self {
46914         self.inner.max_extent = max_extent;
46915         self
46916     }
max_reference_pictures_slots_count( mut self, max_reference_pictures_slots_count: u32, ) -> Self46917     pub fn max_reference_pictures_slots_count(
46918         mut self,
46919         max_reference_pictures_slots_count: u32,
46920     ) -> Self {
46921         self.inner.max_reference_pictures_slots_count = max_reference_pictures_slots_count;
46922         self
46923     }
max_reference_pictures_active_count( mut self, max_reference_pictures_active_count: u32, ) -> Self46924     pub fn max_reference_pictures_active_count(
46925         mut self,
46926         max_reference_pictures_active_count: u32,
46927     ) -> Self {
46928         self.inner.max_reference_pictures_active_count = max_reference_pictures_active_count;
46929         self
46930     }
46931     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
46932     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
46933     #[doc = r" valid extension structs can be pushed into the chain."]
46934     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
46935     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoCapabilitiesKHR>(mut self, next: &'a mut T) -> Self46936     pub fn push_next<T: ExtendsVideoCapabilitiesKHR>(mut self, next: &'a mut T) -> Self {
46937         unsafe {
46938             let next_ptr = next as *mut T as *mut BaseOutStructure;
46939             let last_next = ptr_chain_iter(next).last().unwrap();
46940             (*last_next).p_next = self.inner.p_next as _;
46941             self.inner.p_next = next_ptr as _;
46942         }
46943         self
46944     }
46945     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46946     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46947     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoCapabilitiesKHR46948     pub fn build(self) -> VideoCapabilitiesKHR {
46949         self.inner
46950     }
46951 }
46952 #[repr(C)]
46953 #[derive(Copy, Clone, Debug)]
46954 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoGetMemoryPropertiesKHR.html>"]
46955 pub struct VideoGetMemoryPropertiesKHR {
46956     pub s_type: StructureType,
46957     pub p_next: *const c_void,
46958     pub memory_bind_index: u32,
46959     pub p_memory_requirements: *mut MemoryRequirements2,
46960 }
46961 impl ::std::default::Default for VideoGetMemoryPropertiesKHR {
default() -> VideoGetMemoryPropertiesKHR46962     fn default() -> VideoGetMemoryPropertiesKHR {
46963         VideoGetMemoryPropertiesKHR {
46964             s_type: StructureType::VIDEO_GET_MEMORY_PROPERTIES_KHR,
46965             p_next: ::std::ptr::null(),
46966             memory_bind_index: u32::default(),
46967             p_memory_requirements: ::std::ptr::null_mut(),
46968         }
46969     }
46970 }
46971 impl VideoGetMemoryPropertiesKHR {
builder<'a>() -> VideoGetMemoryPropertiesKHRBuilder<'a>46972     pub fn builder<'a>() -> VideoGetMemoryPropertiesKHRBuilder<'a> {
46973         VideoGetMemoryPropertiesKHRBuilder {
46974             inner: VideoGetMemoryPropertiesKHR::default(),
46975             marker: ::std::marker::PhantomData,
46976         }
46977     }
46978 }
46979 #[repr(transparent)]
46980 pub struct VideoGetMemoryPropertiesKHRBuilder<'a> {
46981     inner: VideoGetMemoryPropertiesKHR,
46982     marker: ::std::marker::PhantomData<&'a ()>,
46983 }
46984 impl<'a> ::std::ops::Deref for VideoGetMemoryPropertiesKHRBuilder<'a> {
46985     type Target = VideoGetMemoryPropertiesKHR;
deref(&self) -> &Self::Target46986     fn deref(&self) -> &Self::Target {
46987         &self.inner
46988     }
46989 }
46990 impl<'a> ::std::ops::DerefMut for VideoGetMemoryPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46991     fn deref_mut(&mut self) -> &mut Self::Target {
46992         &mut self.inner
46993     }
46994 }
46995 impl<'a> VideoGetMemoryPropertiesKHRBuilder<'a> {
memory_bind_index(mut self, memory_bind_index: u32) -> Self46996     pub fn memory_bind_index(mut self, memory_bind_index: u32) -> Self {
46997         self.inner.memory_bind_index = memory_bind_index;
46998         self
46999     }
memory_requirements(mut self, memory_requirements: &'a mut MemoryRequirements2) -> Self47000     pub fn memory_requirements(mut self, memory_requirements: &'a mut MemoryRequirements2) -> Self {
47001         self.inner.p_memory_requirements = memory_requirements;
47002         self
47003     }
47004     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47005     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47006     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoGetMemoryPropertiesKHR47007     pub fn build(self) -> VideoGetMemoryPropertiesKHR {
47008         self.inner
47009     }
47010 }
47011 #[repr(C)]
47012 #[derive(Copy, Clone, Debug)]
47013 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoBindMemoryKHR.html>"]
47014 pub struct VideoBindMemoryKHR {
47015     pub s_type: StructureType,
47016     pub p_next: *const c_void,
47017     pub memory_bind_index: u32,
47018     pub memory: DeviceMemory,
47019     pub memory_offset: DeviceSize,
47020     pub memory_size: DeviceSize,
47021 }
47022 impl ::std::default::Default for VideoBindMemoryKHR {
default() -> VideoBindMemoryKHR47023     fn default() -> VideoBindMemoryKHR {
47024         VideoBindMemoryKHR {
47025             s_type: StructureType::VIDEO_BIND_MEMORY_KHR,
47026             p_next: ::std::ptr::null(),
47027             memory_bind_index: u32::default(),
47028             memory: DeviceMemory::default(),
47029             memory_offset: DeviceSize::default(),
47030             memory_size: DeviceSize::default(),
47031         }
47032     }
47033 }
47034 impl VideoBindMemoryKHR {
builder<'a>() -> VideoBindMemoryKHRBuilder<'a>47035     pub fn builder<'a>() -> VideoBindMemoryKHRBuilder<'a> {
47036         VideoBindMemoryKHRBuilder {
47037             inner: VideoBindMemoryKHR::default(),
47038             marker: ::std::marker::PhantomData,
47039         }
47040     }
47041 }
47042 #[repr(transparent)]
47043 pub struct VideoBindMemoryKHRBuilder<'a> {
47044     inner: VideoBindMemoryKHR,
47045     marker: ::std::marker::PhantomData<&'a ()>,
47046 }
47047 impl<'a> ::std::ops::Deref for VideoBindMemoryKHRBuilder<'a> {
47048     type Target = VideoBindMemoryKHR;
deref(&self) -> &Self::Target47049     fn deref(&self) -> &Self::Target {
47050         &self.inner
47051     }
47052 }
47053 impl<'a> ::std::ops::DerefMut for VideoBindMemoryKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47054     fn deref_mut(&mut self) -> &mut Self::Target {
47055         &mut self.inner
47056     }
47057 }
47058 impl<'a> VideoBindMemoryKHRBuilder<'a> {
memory_bind_index(mut self, memory_bind_index: u32) -> Self47059     pub fn memory_bind_index(mut self, memory_bind_index: u32) -> Self {
47060         self.inner.memory_bind_index = memory_bind_index;
47061         self
47062     }
memory(mut self, memory: DeviceMemory) -> Self47063     pub fn memory(mut self, memory: DeviceMemory) -> Self {
47064         self.inner.memory = memory;
47065         self
47066     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self47067     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
47068         self.inner.memory_offset = memory_offset;
47069         self
47070     }
memory_size(mut self, memory_size: DeviceSize) -> Self47071     pub fn memory_size(mut self, memory_size: DeviceSize) -> Self {
47072         self.inner.memory_size = memory_size;
47073         self
47074     }
47075     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47076     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47077     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoBindMemoryKHR47078     pub fn build(self) -> VideoBindMemoryKHR {
47079         self.inner
47080     }
47081 }
47082 #[repr(C)]
47083 #[derive(Copy, Clone, Debug)]
47084 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoPictureResourceKHR.html>"]
47085 pub struct VideoPictureResourceKHR {
47086     pub s_type: StructureType,
47087     pub p_next: *const c_void,
47088     pub coded_offset: Offset2D,
47089     pub coded_extent: Extent2D,
47090     pub base_array_layer: u32,
47091     pub image_view_binding: ImageView,
47092 }
47093 impl ::std::default::Default for VideoPictureResourceKHR {
default() -> VideoPictureResourceKHR47094     fn default() -> VideoPictureResourceKHR {
47095         VideoPictureResourceKHR {
47096             s_type: StructureType::VIDEO_PICTURE_RESOURCE_KHR,
47097             p_next: ::std::ptr::null(),
47098             coded_offset: Offset2D::default(),
47099             coded_extent: Extent2D::default(),
47100             base_array_layer: u32::default(),
47101             image_view_binding: ImageView::default(),
47102         }
47103     }
47104 }
47105 impl VideoPictureResourceKHR {
builder<'a>() -> VideoPictureResourceKHRBuilder<'a>47106     pub fn builder<'a>() -> VideoPictureResourceKHRBuilder<'a> {
47107         VideoPictureResourceKHRBuilder {
47108             inner: VideoPictureResourceKHR::default(),
47109             marker: ::std::marker::PhantomData,
47110         }
47111     }
47112 }
47113 #[repr(transparent)]
47114 pub struct VideoPictureResourceKHRBuilder<'a> {
47115     inner: VideoPictureResourceKHR,
47116     marker: ::std::marker::PhantomData<&'a ()>,
47117 }
47118 impl<'a> ::std::ops::Deref for VideoPictureResourceKHRBuilder<'a> {
47119     type Target = VideoPictureResourceKHR;
deref(&self) -> &Self::Target47120     fn deref(&self) -> &Self::Target {
47121         &self.inner
47122     }
47123 }
47124 impl<'a> ::std::ops::DerefMut for VideoPictureResourceKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47125     fn deref_mut(&mut self) -> &mut Self::Target {
47126         &mut self.inner
47127     }
47128 }
47129 impl<'a> VideoPictureResourceKHRBuilder<'a> {
coded_offset(mut self, coded_offset: Offset2D) -> Self47130     pub fn coded_offset(mut self, coded_offset: Offset2D) -> Self {
47131         self.inner.coded_offset = coded_offset;
47132         self
47133     }
coded_extent(mut self, coded_extent: Extent2D) -> Self47134     pub fn coded_extent(mut self, coded_extent: Extent2D) -> Self {
47135         self.inner.coded_extent = coded_extent;
47136         self
47137     }
base_array_layer(mut self, base_array_layer: u32) -> Self47138     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
47139         self.inner.base_array_layer = base_array_layer;
47140         self
47141     }
image_view_binding(mut self, image_view_binding: ImageView) -> Self47142     pub fn image_view_binding(mut self, image_view_binding: ImageView) -> Self {
47143         self.inner.image_view_binding = image_view_binding;
47144         self
47145     }
47146     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47147     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47148     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoPictureResourceKHR47149     pub fn build(self) -> VideoPictureResourceKHR {
47150         self.inner
47151     }
47152 }
47153 #[repr(C)]
47154 #[derive(Copy, Clone, Debug)]
47155 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoReferenceSlotKHR.html>"]
47156 pub struct VideoReferenceSlotKHR {
47157     pub s_type: StructureType,
47158     pub p_next: *const c_void,
47159     pub slot_index: i8,
47160     pub p_picture_resource: *const VideoPictureResourceKHR,
47161 }
47162 impl ::std::default::Default for VideoReferenceSlotKHR {
default() -> VideoReferenceSlotKHR47163     fn default() -> VideoReferenceSlotKHR {
47164         VideoReferenceSlotKHR {
47165             s_type: StructureType::VIDEO_REFERENCE_SLOT_KHR,
47166             p_next: ::std::ptr::null(),
47167             slot_index: i8::default(),
47168             p_picture_resource: ::std::ptr::null(),
47169         }
47170     }
47171 }
47172 impl VideoReferenceSlotKHR {
builder<'a>() -> VideoReferenceSlotKHRBuilder<'a>47173     pub fn builder<'a>() -> VideoReferenceSlotKHRBuilder<'a> {
47174         VideoReferenceSlotKHRBuilder {
47175             inner: VideoReferenceSlotKHR::default(),
47176             marker: ::std::marker::PhantomData,
47177         }
47178     }
47179 }
47180 #[repr(transparent)]
47181 pub struct VideoReferenceSlotKHRBuilder<'a> {
47182     inner: VideoReferenceSlotKHR,
47183     marker: ::std::marker::PhantomData<&'a ()>,
47184 }
47185 pub unsafe trait ExtendsVideoReferenceSlotKHR {}
47186 impl<'a> ::std::ops::Deref for VideoReferenceSlotKHRBuilder<'a> {
47187     type Target = VideoReferenceSlotKHR;
deref(&self) -> &Self::Target47188     fn deref(&self) -> &Self::Target {
47189         &self.inner
47190     }
47191 }
47192 impl<'a> ::std::ops::DerefMut for VideoReferenceSlotKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47193     fn deref_mut(&mut self) -> &mut Self::Target {
47194         &mut self.inner
47195     }
47196 }
47197 impl<'a> VideoReferenceSlotKHRBuilder<'a> {
slot_index(mut self, slot_index: i8) -> Self47198     pub fn slot_index(mut self, slot_index: i8) -> Self {
47199         self.inner.slot_index = slot_index;
47200         self
47201     }
picture_resource(mut self, picture_resource: &'a VideoPictureResourceKHR) -> Self47202     pub fn picture_resource(mut self, picture_resource: &'a VideoPictureResourceKHR) -> Self {
47203         self.inner.p_picture_resource = picture_resource;
47204         self
47205     }
47206     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
47207     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
47208     #[doc = r" valid extension structs can be pushed into the chain."]
47209     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
47210     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoReferenceSlotKHR>(mut self, next: &'a mut T) -> Self47211     pub fn push_next<T: ExtendsVideoReferenceSlotKHR>(mut self, next: &'a mut T) -> Self {
47212         unsafe {
47213             let next_ptr = next as *mut T as *mut BaseOutStructure;
47214             let last_next = ptr_chain_iter(next).last().unwrap();
47215             (*last_next).p_next = self.inner.p_next as _;
47216             self.inner.p_next = next_ptr as _;
47217         }
47218         self
47219     }
47220     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47221     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47222     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoReferenceSlotKHR47223     pub fn build(self) -> VideoReferenceSlotKHR {
47224         self.inner
47225     }
47226 }
47227 #[repr(C)]
47228 #[derive(Copy, Clone, Debug)]
47229 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeInfoKHR.html>"]
47230 pub struct VideoDecodeInfoKHR {
47231     pub s_type: StructureType,
47232     pub p_next: *const c_void,
47233     pub flags: VideoDecodeFlagsKHR,
47234     pub coded_offset: Offset2D,
47235     pub coded_extent: Extent2D,
47236     pub src_buffer: Buffer,
47237     pub src_buffer_offset: DeviceSize,
47238     pub src_buffer_range: DeviceSize,
47239     pub dst_picture_resource: VideoPictureResourceKHR,
47240     pub p_setup_reference_slot: *const VideoReferenceSlotKHR,
47241     pub reference_slot_count: u32,
47242     pub p_reference_slots: *const VideoReferenceSlotKHR,
47243 }
47244 impl ::std::default::Default for VideoDecodeInfoKHR {
default() -> VideoDecodeInfoKHR47245     fn default() -> VideoDecodeInfoKHR {
47246         VideoDecodeInfoKHR {
47247             s_type: StructureType::VIDEO_DECODE_INFO_KHR,
47248             p_next: ::std::ptr::null(),
47249             flags: VideoDecodeFlagsKHR::default(),
47250             coded_offset: Offset2D::default(),
47251             coded_extent: Extent2D::default(),
47252             src_buffer: Buffer::default(),
47253             src_buffer_offset: DeviceSize::default(),
47254             src_buffer_range: DeviceSize::default(),
47255             dst_picture_resource: VideoPictureResourceKHR::default(),
47256             p_setup_reference_slot: ::std::ptr::null(),
47257             reference_slot_count: u32::default(),
47258             p_reference_slots: ::std::ptr::null(),
47259         }
47260     }
47261 }
47262 impl VideoDecodeInfoKHR {
builder<'a>() -> VideoDecodeInfoKHRBuilder<'a>47263     pub fn builder<'a>() -> VideoDecodeInfoKHRBuilder<'a> {
47264         VideoDecodeInfoKHRBuilder {
47265             inner: VideoDecodeInfoKHR::default(),
47266             marker: ::std::marker::PhantomData,
47267         }
47268     }
47269 }
47270 #[repr(transparent)]
47271 pub struct VideoDecodeInfoKHRBuilder<'a> {
47272     inner: VideoDecodeInfoKHR,
47273     marker: ::std::marker::PhantomData<&'a ()>,
47274 }
47275 pub unsafe trait ExtendsVideoDecodeInfoKHR {}
47276 impl<'a> ::std::ops::Deref for VideoDecodeInfoKHRBuilder<'a> {
47277     type Target = VideoDecodeInfoKHR;
deref(&self) -> &Self::Target47278     fn deref(&self) -> &Self::Target {
47279         &self.inner
47280     }
47281 }
47282 impl<'a> ::std::ops::DerefMut for VideoDecodeInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47283     fn deref_mut(&mut self) -> &mut Self::Target {
47284         &mut self.inner
47285     }
47286 }
47287 impl<'a> VideoDecodeInfoKHRBuilder<'a> {
flags(mut self, flags: VideoDecodeFlagsKHR) -> Self47288     pub fn flags(mut self, flags: VideoDecodeFlagsKHR) -> Self {
47289         self.inner.flags = flags;
47290         self
47291     }
coded_offset(mut self, coded_offset: Offset2D) -> Self47292     pub fn coded_offset(mut self, coded_offset: Offset2D) -> Self {
47293         self.inner.coded_offset = coded_offset;
47294         self
47295     }
coded_extent(mut self, coded_extent: Extent2D) -> Self47296     pub fn coded_extent(mut self, coded_extent: Extent2D) -> Self {
47297         self.inner.coded_extent = coded_extent;
47298         self
47299     }
src_buffer(mut self, src_buffer: Buffer) -> Self47300     pub fn src_buffer(mut self, src_buffer: Buffer) -> Self {
47301         self.inner.src_buffer = src_buffer;
47302         self
47303     }
src_buffer_offset(mut self, src_buffer_offset: DeviceSize) -> Self47304     pub fn src_buffer_offset(mut self, src_buffer_offset: DeviceSize) -> Self {
47305         self.inner.src_buffer_offset = src_buffer_offset;
47306         self
47307     }
src_buffer_range(mut self, src_buffer_range: DeviceSize) -> Self47308     pub fn src_buffer_range(mut self, src_buffer_range: DeviceSize) -> Self {
47309         self.inner.src_buffer_range = src_buffer_range;
47310         self
47311     }
dst_picture_resource(mut self, dst_picture_resource: VideoPictureResourceKHR) -> Self47312     pub fn dst_picture_resource(mut self, dst_picture_resource: VideoPictureResourceKHR) -> Self {
47313         self.inner.dst_picture_resource = dst_picture_resource;
47314         self
47315     }
setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self47316     pub fn setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self {
47317         self.inner.p_setup_reference_slot = setup_reference_slot;
47318         self
47319     }
reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self47320     pub fn reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self {
47321         self.inner.reference_slot_count = reference_slots.len() as _;
47322         self.inner.p_reference_slots = reference_slots.as_ptr();
47323         self
47324     }
47325     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
47326     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
47327     #[doc = r" valid extension structs can be pushed into the chain."]
47328     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
47329     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoDecodeInfoKHR>(mut self, next: &'a mut T) -> Self47330     pub fn push_next<T: ExtendsVideoDecodeInfoKHR>(mut self, next: &'a mut T) -> Self {
47331         unsafe {
47332             let next_ptr = next as *mut T as *mut BaseOutStructure;
47333             let last_next = ptr_chain_iter(next).last().unwrap();
47334             (*last_next).p_next = self.inner.p_next as _;
47335             self.inner.p_next = next_ptr as _;
47336         }
47337         self
47338     }
47339     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47340     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47341     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeInfoKHR47342     pub fn build(self) -> VideoDecodeInfoKHR {
47343         self.inner
47344     }
47345 }
47346 #[repr(C)]
47347 #[derive(Copy, Clone, Debug)]
47348 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264ProfileEXT.html>"]
47349 pub struct VideoDecodeH264ProfileEXT {
47350     pub s_type: StructureType,
47351     pub p_next: *const c_void,
47352     pub std_profile_idc: StdVideoH264ProfileIdc,
47353     pub picture_layout: VideoDecodeH264PictureLayoutFlagsEXT,
47354 }
47355 impl ::std::default::Default for VideoDecodeH264ProfileEXT {
default() -> VideoDecodeH264ProfileEXT47356     fn default() -> VideoDecodeH264ProfileEXT {
47357         VideoDecodeH264ProfileEXT {
47358             s_type: StructureType::VIDEO_DECODE_H264_PROFILE_EXT,
47359             p_next: ::std::ptr::null(),
47360             std_profile_idc: StdVideoH264ProfileIdc::default(),
47361             picture_layout: VideoDecodeH264PictureLayoutFlagsEXT::default(),
47362         }
47363     }
47364 }
47365 impl VideoDecodeH264ProfileEXT {
builder<'a>() -> VideoDecodeH264ProfileEXTBuilder<'a>47366     pub fn builder<'a>() -> VideoDecodeH264ProfileEXTBuilder<'a> {
47367         VideoDecodeH264ProfileEXTBuilder {
47368             inner: VideoDecodeH264ProfileEXT::default(),
47369             marker: ::std::marker::PhantomData,
47370         }
47371     }
47372 }
47373 #[repr(transparent)]
47374 pub struct VideoDecodeH264ProfileEXTBuilder<'a> {
47375     inner: VideoDecodeH264ProfileEXT,
47376     marker: ::std::marker::PhantomData<&'a ()>,
47377 }
47378 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH264ProfileEXTBuilder<'_> {}
47379 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH264ProfileEXT {}
47380 impl<'a> ::std::ops::Deref for VideoDecodeH264ProfileEXTBuilder<'a> {
47381     type Target = VideoDecodeH264ProfileEXT;
deref(&self) -> &Self::Target47382     fn deref(&self) -> &Self::Target {
47383         &self.inner
47384     }
47385 }
47386 impl<'a> ::std::ops::DerefMut for VideoDecodeH264ProfileEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47387     fn deref_mut(&mut self) -> &mut Self::Target {
47388         &mut self.inner
47389     }
47390 }
47391 impl<'a> VideoDecodeH264ProfileEXTBuilder<'a> {
std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self47392     pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self {
47393         self.inner.std_profile_idc = std_profile_idc;
47394         self
47395     }
picture_layout(mut self, picture_layout: VideoDecodeH264PictureLayoutFlagsEXT) -> Self47396     pub fn picture_layout(mut self, picture_layout: VideoDecodeH264PictureLayoutFlagsEXT) -> Self {
47397         self.inner.picture_layout = picture_layout;
47398         self
47399     }
47400     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47401     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47402     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264ProfileEXT47403     pub fn build(self) -> VideoDecodeH264ProfileEXT {
47404         self.inner
47405     }
47406 }
47407 #[repr(C)]
47408 #[derive(Copy, Clone, Debug)]
47409 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264CapabilitiesEXT.html>"]
47410 pub struct VideoDecodeH264CapabilitiesEXT {
47411     pub s_type: StructureType,
47412     pub p_next: *mut c_void,
47413     pub max_level: u32,
47414     pub field_offset_granularity: Offset2D,
47415     pub std_extension_version: ExtensionProperties,
47416 }
47417 impl ::std::default::Default for VideoDecodeH264CapabilitiesEXT {
default() -> VideoDecodeH264CapabilitiesEXT47418     fn default() -> VideoDecodeH264CapabilitiesEXT {
47419         VideoDecodeH264CapabilitiesEXT {
47420             s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_EXT,
47421             p_next: ::std::ptr::null_mut(),
47422             max_level: u32::default(),
47423             field_offset_granularity: Offset2D::default(),
47424             std_extension_version: ExtensionProperties::default(),
47425         }
47426     }
47427 }
47428 impl VideoDecodeH264CapabilitiesEXT {
builder<'a>() -> VideoDecodeH264CapabilitiesEXTBuilder<'a>47429     pub fn builder<'a>() -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
47430         VideoDecodeH264CapabilitiesEXTBuilder {
47431             inner: VideoDecodeH264CapabilitiesEXT::default(),
47432             marker: ::std::marker::PhantomData,
47433         }
47434     }
47435 }
47436 #[repr(transparent)]
47437 pub struct VideoDecodeH264CapabilitiesEXTBuilder<'a> {
47438     inner: VideoDecodeH264CapabilitiesEXT,
47439     marker: ::std::marker::PhantomData<&'a ()>,
47440 }
47441 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH264CapabilitiesEXTBuilder<'_> {}
47442 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH264CapabilitiesEXT {}
47443 impl<'a> ::std::ops::Deref for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
47444     type Target = VideoDecodeH264CapabilitiesEXT;
deref(&self) -> &Self::Target47445     fn deref(&self) -> &Self::Target {
47446         &self.inner
47447     }
47448 }
47449 impl<'a> ::std::ops::DerefMut for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47450     fn deref_mut(&mut self) -> &mut Self::Target {
47451         &mut self.inner
47452     }
47453 }
47454 impl<'a> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
max_level(mut self, max_level: u32) -> Self47455     pub fn max_level(mut self, max_level: u32) -> Self {
47456         self.inner.max_level = max_level;
47457         self
47458     }
field_offset_granularity(mut self, field_offset_granularity: Offset2D) -> Self47459     pub fn field_offset_granularity(mut self, field_offset_granularity: Offset2D) -> Self {
47460         self.inner.field_offset_granularity = field_offset_granularity;
47461         self
47462     }
std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self47463     pub fn std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self {
47464         self.inner.std_extension_version = std_extension_version;
47465         self
47466     }
47467     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47468     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47469     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264CapabilitiesEXT47470     pub fn build(self) -> VideoDecodeH264CapabilitiesEXT {
47471         self.inner
47472     }
47473 }
47474 #[repr(C)]
47475 #[derive(Copy, Clone, Debug)]
47476 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264SessionCreateInfoEXT.html>"]
47477 pub struct VideoDecodeH264SessionCreateInfoEXT {
47478     pub s_type: StructureType,
47479     pub p_next: *const c_void,
47480     pub flags: VideoDecodeH264CreateFlagsEXT,
47481     pub p_std_extension_version: *const ExtensionProperties,
47482 }
47483 impl ::std::default::Default for VideoDecodeH264SessionCreateInfoEXT {
default() -> VideoDecodeH264SessionCreateInfoEXT47484     fn default() -> VideoDecodeH264SessionCreateInfoEXT {
47485         VideoDecodeH264SessionCreateInfoEXT {
47486             s_type: StructureType::VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT,
47487             p_next: ::std::ptr::null(),
47488             flags: VideoDecodeH264CreateFlagsEXT::default(),
47489             p_std_extension_version: ::std::ptr::null(),
47490         }
47491     }
47492 }
47493 impl VideoDecodeH264SessionCreateInfoEXT {
builder<'a>() -> VideoDecodeH264SessionCreateInfoEXTBuilder<'a>47494     pub fn builder<'a>() -> VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
47495         VideoDecodeH264SessionCreateInfoEXTBuilder {
47496             inner: VideoDecodeH264SessionCreateInfoEXT::default(),
47497             marker: ::std::marker::PhantomData,
47498         }
47499     }
47500 }
47501 #[repr(transparent)]
47502 pub struct VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
47503     inner: VideoDecodeH264SessionCreateInfoEXT,
47504     marker: ::std::marker::PhantomData<&'a ()>,
47505 }
47506 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH264SessionCreateInfoEXTBuilder<'_> {}
47507 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH264SessionCreateInfoEXT {}
47508 impl<'a> ::std::ops::Deref for VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
47509     type Target = VideoDecodeH264SessionCreateInfoEXT;
deref(&self) -> &Self::Target47510     fn deref(&self) -> &Self::Target {
47511         &self.inner
47512     }
47513 }
47514 impl<'a> ::std::ops::DerefMut for VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47515     fn deref_mut(&mut self) -> &mut Self::Target {
47516         &mut self.inner
47517     }
47518 }
47519 impl<'a> VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
flags(mut self, flags: VideoDecodeH264CreateFlagsEXT) -> Self47520     pub fn flags(mut self, flags: VideoDecodeH264CreateFlagsEXT) -> Self {
47521         self.inner.flags = flags;
47522         self
47523     }
std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self47524     pub fn std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self {
47525         self.inner.p_std_extension_version = std_extension_version;
47526         self
47527     }
47528     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47529     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47530     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264SessionCreateInfoEXT47531     pub fn build(self) -> VideoDecodeH264SessionCreateInfoEXT {
47532         self.inner
47533     }
47534 }
47535 #[repr(C)]
47536 #[derive(Copy, Clone, Debug)]
47537 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264SessionParametersAddInfoEXT.html>"]
47538 pub struct VideoDecodeH264SessionParametersAddInfoEXT {
47539     pub s_type: StructureType,
47540     pub p_next: *const c_void,
47541     pub sps_std_count: u32,
47542     pub p_sps_std: *const StdVideoH264SequenceParameterSet,
47543     pub pps_std_count: u32,
47544     pub p_pps_std: *const StdVideoH264PictureParameterSet,
47545 }
47546 impl ::std::default::Default for VideoDecodeH264SessionParametersAddInfoEXT {
default() -> VideoDecodeH264SessionParametersAddInfoEXT47547     fn default() -> VideoDecodeH264SessionParametersAddInfoEXT {
47548         VideoDecodeH264SessionParametersAddInfoEXT {
47549             s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT,
47550             p_next: ::std::ptr::null(),
47551             sps_std_count: u32::default(),
47552             p_sps_std: ::std::ptr::null(),
47553             pps_std_count: u32::default(),
47554             p_pps_std: ::std::ptr::null(),
47555         }
47556     }
47557 }
47558 impl VideoDecodeH264SessionParametersAddInfoEXT {
builder<'a>() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a>47559     pub fn builder<'a>() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
47560         VideoDecodeH264SessionParametersAddInfoEXTBuilder {
47561             inner: VideoDecodeH264SessionParametersAddInfoEXT::default(),
47562             marker: ::std::marker::PhantomData,
47563         }
47564     }
47565 }
47566 #[repr(transparent)]
47567 pub struct VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
47568     inner: VideoDecodeH264SessionParametersAddInfoEXT,
47569     marker: ::std::marker::PhantomData<&'a ()>,
47570 }
47571 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
47572     for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'_>
47573 {
47574 }
47575 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
47576     for VideoDecodeH264SessionParametersAddInfoEXT
47577 {
47578 }
47579 impl<'a> ::std::ops::Deref for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
47580     type Target = VideoDecodeH264SessionParametersAddInfoEXT;
deref(&self) -> &Self::Target47581     fn deref(&self) -> &Self::Target {
47582         &self.inner
47583     }
47584 }
47585 impl<'a> ::std::ops::DerefMut for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47586     fn deref_mut(&mut self) -> &mut Self::Target {
47587         &mut self.inner
47588     }
47589 }
47590 impl<'a> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self47591     pub fn sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self {
47592         self.inner.sps_std_count = sps_std.len() as _;
47593         self.inner.p_sps_std = sps_std.as_ptr();
47594         self
47595     }
pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self47596     pub fn pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self {
47597         self.inner.pps_std_count = pps_std.len() as _;
47598         self.inner.p_pps_std = pps_std.as_ptr();
47599         self
47600     }
47601     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47602     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47603     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264SessionParametersAddInfoEXT47604     pub fn build(self) -> VideoDecodeH264SessionParametersAddInfoEXT {
47605         self.inner
47606     }
47607 }
47608 #[repr(C)]
47609 #[derive(Copy, Clone, Debug)]
47610 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264SessionParametersCreateInfoEXT.html>"]
47611 pub struct VideoDecodeH264SessionParametersCreateInfoEXT {
47612     pub s_type: StructureType,
47613     pub p_next: *const c_void,
47614     pub max_sps_std_count: u32,
47615     pub max_pps_std_count: u32,
47616     pub p_parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoEXT,
47617 }
47618 impl ::std::default::Default for VideoDecodeH264SessionParametersCreateInfoEXT {
default() -> VideoDecodeH264SessionParametersCreateInfoEXT47619     fn default() -> VideoDecodeH264SessionParametersCreateInfoEXT {
47620         VideoDecodeH264SessionParametersCreateInfoEXT {
47621             s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT,
47622             p_next: ::std::ptr::null(),
47623             max_sps_std_count: u32::default(),
47624             max_pps_std_count: u32::default(),
47625             p_parameters_add_info: ::std::ptr::null(),
47626         }
47627     }
47628 }
47629 impl VideoDecodeH264SessionParametersCreateInfoEXT {
builder<'a>() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a>47630     pub fn builder<'a>() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
47631         VideoDecodeH264SessionParametersCreateInfoEXTBuilder {
47632             inner: VideoDecodeH264SessionParametersCreateInfoEXT::default(),
47633             marker: ::std::marker::PhantomData,
47634         }
47635     }
47636 }
47637 #[repr(transparent)]
47638 pub struct VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
47639     inner: VideoDecodeH264SessionParametersCreateInfoEXT,
47640     marker: ::std::marker::PhantomData<&'a ()>,
47641 }
47642 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
47643     for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'_>
47644 {
47645 }
47646 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
47647     for VideoDecodeH264SessionParametersCreateInfoEXT
47648 {
47649 }
47650 impl<'a> ::std::ops::Deref for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
47651     type Target = VideoDecodeH264SessionParametersCreateInfoEXT;
deref(&self) -> &Self::Target47652     fn deref(&self) -> &Self::Target {
47653         &self.inner
47654     }
47655 }
47656 impl<'a> ::std::ops::DerefMut for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47657     fn deref_mut(&mut self) -> &mut Self::Target {
47658         &mut self.inner
47659     }
47660 }
47661 impl<'a> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
max_sps_std_count(mut self, max_sps_std_count: u32) -> Self47662     pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
47663         self.inner.max_sps_std_count = max_sps_std_count;
47664         self
47665     }
max_pps_std_count(mut self, max_pps_std_count: u32) -> Self47666     pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
47667         self.inner.max_pps_std_count = max_pps_std_count;
47668         self
47669     }
parameters_add_info( mut self, parameters_add_info: &'a VideoDecodeH264SessionParametersAddInfoEXT, ) -> Self47670     pub fn parameters_add_info(
47671         mut self,
47672         parameters_add_info: &'a VideoDecodeH264SessionParametersAddInfoEXT,
47673     ) -> Self {
47674         self.inner.p_parameters_add_info = parameters_add_info;
47675         self
47676     }
47677     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47678     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47679     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264SessionParametersCreateInfoEXT47680     pub fn build(self) -> VideoDecodeH264SessionParametersCreateInfoEXT {
47681         self.inner
47682     }
47683 }
47684 #[repr(C)]
47685 #[derive(Copy, Clone, Debug)]
47686 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264PictureInfoEXT.html>"]
47687 pub struct VideoDecodeH264PictureInfoEXT {
47688     pub s_type: StructureType,
47689     pub p_next: *const c_void,
47690     pub p_std_picture_info: *const StdVideoDecodeH264PictureInfo,
47691     pub slices_count: u32,
47692     pub p_slices_data_offsets: *const u32,
47693 }
47694 impl ::std::default::Default for VideoDecodeH264PictureInfoEXT {
default() -> VideoDecodeH264PictureInfoEXT47695     fn default() -> VideoDecodeH264PictureInfoEXT {
47696         VideoDecodeH264PictureInfoEXT {
47697             s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_EXT,
47698             p_next: ::std::ptr::null(),
47699             p_std_picture_info: ::std::ptr::null(),
47700             slices_count: u32::default(),
47701             p_slices_data_offsets: ::std::ptr::null(),
47702         }
47703     }
47704 }
47705 impl VideoDecodeH264PictureInfoEXT {
builder<'a>() -> VideoDecodeH264PictureInfoEXTBuilder<'a>47706     pub fn builder<'a>() -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
47707         VideoDecodeH264PictureInfoEXTBuilder {
47708             inner: VideoDecodeH264PictureInfoEXT::default(),
47709             marker: ::std::marker::PhantomData,
47710         }
47711     }
47712 }
47713 #[repr(transparent)]
47714 pub struct VideoDecodeH264PictureInfoEXTBuilder<'a> {
47715     inner: VideoDecodeH264PictureInfoEXT,
47716     marker: ::std::marker::PhantomData<&'a ()>,
47717 }
47718 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH264PictureInfoEXTBuilder<'_> {}
47719 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH264PictureInfoEXT {}
47720 pub unsafe trait ExtendsVideoDecodeH264PictureInfoEXT {}
47721 impl<'a> ::std::ops::Deref for VideoDecodeH264PictureInfoEXTBuilder<'a> {
47722     type Target = VideoDecodeH264PictureInfoEXT;
deref(&self) -> &Self::Target47723     fn deref(&self) -> &Self::Target {
47724         &self.inner
47725     }
47726 }
47727 impl<'a> ::std::ops::DerefMut for VideoDecodeH264PictureInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47728     fn deref_mut(&mut self) -> &mut Self::Target {
47729         &mut self.inner
47730     }
47731 }
47732 impl<'a> VideoDecodeH264PictureInfoEXTBuilder<'a> {
std_picture_info(mut self, std_picture_info: &'a StdVideoDecodeH264PictureInfo) -> Self47733     pub fn std_picture_info(mut self, std_picture_info: &'a StdVideoDecodeH264PictureInfo) -> Self {
47734         self.inner.p_std_picture_info = std_picture_info;
47735         self
47736     }
slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self47737     pub fn slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self {
47738         self.inner.slices_count = slices_data_offsets.len() as _;
47739         self.inner.p_slices_data_offsets = slices_data_offsets.as_ptr();
47740         self
47741     }
47742     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
47743     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
47744     #[doc = r" valid extension structs can be pushed into the chain."]
47745     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
47746     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoDecodeH264PictureInfoEXT>(mut self, next: &'a mut T) -> Self47747     pub fn push_next<T: ExtendsVideoDecodeH264PictureInfoEXT>(mut self, next: &'a mut T) -> Self {
47748         unsafe {
47749             let next_ptr = next as *mut T as *mut BaseOutStructure;
47750             let last_next = ptr_chain_iter(next).last().unwrap();
47751             (*last_next).p_next = self.inner.p_next as _;
47752             self.inner.p_next = next_ptr as _;
47753         }
47754         self
47755     }
47756     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47757     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47758     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264PictureInfoEXT47759     pub fn build(self) -> VideoDecodeH264PictureInfoEXT {
47760         self.inner
47761     }
47762 }
47763 #[repr(C)]
47764 #[derive(Copy, Clone, Debug)]
47765 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264DpbSlotInfoEXT.html>"]
47766 pub struct VideoDecodeH264DpbSlotInfoEXT {
47767     pub s_type: StructureType,
47768     pub p_next: *const c_void,
47769     pub p_std_reference_info: *const StdVideoDecodeH264ReferenceInfo,
47770 }
47771 impl ::std::default::Default for VideoDecodeH264DpbSlotInfoEXT {
default() -> VideoDecodeH264DpbSlotInfoEXT47772     fn default() -> VideoDecodeH264DpbSlotInfoEXT {
47773         VideoDecodeH264DpbSlotInfoEXT {
47774             s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT,
47775             p_next: ::std::ptr::null(),
47776             p_std_reference_info: ::std::ptr::null(),
47777         }
47778     }
47779 }
47780 impl VideoDecodeH264DpbSlotInfoEXT {
builder<'a>() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a>47781     pub fn builder<'a>() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
47782         VideoDecodeH264DpbSlotInfoEXTBuilder {
47783             inner: VideoDecodeH264DpbSlotInfoEXT::default(),
47784             marker: ::std::marker::PhantomData,
47785         }
47786     }
47787 }
47788 #[repr(transparent)]
47789 pub struct VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
47790     inner: VideoDecodeH264DpbSlotInfoEXT,
47791     marker: ::std::marker::PhantomData<&'a ()>,
47792 }
47793 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH264DpbSlotInfoEXTBuilder<'_> {}
47794 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH264DpbSlotInfoEXT {}
47795 impl<'a> ::std::ops::Deref for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
47796     type Target = VideoDecodeH264DpbSlotInfoEXT;
deref(&self) -> &Self::Target47797     fn deref(&self) -> &Self::Target {
47798         &self.inner
47799     }
47800 }
47801 impl<'a> ::std::ops::DerefMut for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47802     fn deref_mut(&mut self) -> &mut Self::Target {
47803         &mut self.inner
47804     }
47805 }
47806 impl<'a> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
std_reference_info( mut self, std_reference_info: &'a StdVideoDecodeH264ReferenceInfo, ) -> Self47807     pub fn std_reference_info(
47808         mut self,
47809         std_reference_info: &'a StdVideoDecodeH264ReferenceInfo,
47810     ) -> Self {
47811         self.inner.p_std_reference_info = std_reference_info;
47812         self
47813     }
47814     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47815     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47816     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264DpbSlotInfoEXT47817     pub fn build(self) -> VideoDecodeH264DpbSlotInfoEXT {
47818         self.inner
47819     }
47820 }
47821 #[repr(C)]
47822 #[derive(Copy, Clone, Debug)]
47823 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264MvcEXT.html>"]
47824 pub struct VideoDecodeH264MvcEXT {
47825     pub s_type: StructureType,
47826     pub p_next: *const c_void,
47827     pub p_std_mvc: *const StdVideoDecodeH264Mvc,
47828 }
47829 impl ::std::default::Default for VideoDecodeH264MvcEXT {
default() -> VideoDecodeH264MvcEXT47830     fn default() -> VideoDecodeH264MvcEXT {
47831         VideoDecodeH264MvcEXT {
47832             s_type: StructureType::VIDEO_DECODE_H264_MVC_EXT,
47833             p_next: ::std::ptr::null(),
47834             p_std_mvc: ::std::ptr::null(),
47835         }
47836     }
47837 }
47838 impl VideoDecodeH264MvcEXT {
builder<'a>() -> VideoDecodeH264MvcEXTBuilder<'a>47839     pub fn builder<'a>() -> VideoDecodeH264MvcEXTBuilder<'a> {
47840         VideoDecodeH264MvcEXTBuilder {
47841             inner: VideoDecodeH264MvcEXT::default(),
47842             marker: ::std::marker::PhantomData,
47843         }
47844     }
47845 }
47846 #[repr(transparent)]
47847 pub struct VideoDecodeH264MvcEXTBuilder<'a> {
47848     inner: VideoDecodeH264MvcEXT,
47849     marker: ::std::marker::PhantomData<&'a ()>,
47850 }
47851 unsafe impl ExtendsVideoDecodeH264PictureInfoEXT for VideoDecodeH264MvcEXTBuilder<'_> {}
47852 unsafe impl ExtendsVideoDecodeH264PictureInfoEXT for VideoDecodeH264MvcEXT {}
47853 impl<'a> ::std::ops::Deref for VideoDecodeH264MvcEXTBuilder<'a> {
47854     type Target = VideoDecodeH264MvcEXT;
deref(&self) -> &Self::Target47855     fn deref(&self) -> &Self::Target {
47856         &self.inner
47857     }
47858 }
47859 impl<'a> ::std::ops::DerefMut for VideoDecodeH264MvcEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47860     fn deref_mut(&mut self) -> &mut Self::Target {
47861         &mut self.inner
47862     }
47863 }
47864 impl<'a> VideoDecodeH264MvcEXTBuilder<'a> {
std_mvc(mut self, std_mvc: &'a StdVideoDecodeH264Mvc) -> Self47865     pub fn std_mvc(mut self, std_mvc: &'a StdVideoDecodeH264Mvc) -> Self {
47866         self.inner.p_std_mvc = std_mvc;
47867         self
47868     }
47869     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47870     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47871     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264MvcEXT47872     pub fn build(self) -> VideoDecodeH264MvcEXT {
47873         self.inner
47874     }
47875 }
47876 #[repr(C)]
47877 #[derive(Copy, Clone, Debug)]
47878 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265ProfileEXT.html>"]
47879 pub struct VideoDecodeH265ProfileEXT {
47880     pub s_type: StructureType,
47881     pub p_next: *const c_void,
47882     pub std_profile_idc: StdVideoH265ProfileIdc,
47883 }
47884 impl ::std::default::Default for VideoDecodeH265ProfileEXT {
default() -> VideoDecodeH265ProfileEXT47885     fn default() -> VideoDecodeH265ProfileEXT {
47886         VideoDecodeH265ProfileEXT {
47887             s_type: StructureType::VIDEO_DECODE_H265_PROFILE_EXT,
47888             p_next: ::std::ptr::null(),
47889             std_profile_idc: StdVideoH265ProfileIdc::default(),
47890         }
47891     }
47892 }
47893 impl VideoDecodeH265ProfileEXT {
builder<'a>() -> VideoDecodeH265ProfileEXTBuilder<'a>47894     pub fn builder<'a>() -> VideoDecodeH265ProfileEXTBuilder<'a> {
47895         VideoDecodeH265ProfileEXTBuilder {
47896             inner: VideoDecodeH265ProfileEXT::default(),
47897             marker: ::std::marker::PhantomData,
47898         }
47899     }
47900 }
47901 #[repr(transparent)]
47902 pub struct VideoDecodeH265ProfileEXTBuilder<'a> {
47903     inner: VideoDecodeH265ProfileEXT,
47904     marker: ::std::marker::PhantomData<&'a ()>,
47905 }
47906 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH265ProfileEXTBuilder<'_> {}
47907 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH265ProfileEXT {}
47908 impl<'a> ::std::ops::Deref for VideoDecodeH265ProfileEXTBuilder<'a> {
47909     type Target = VideoDecodeH265ProfileEXT;
deref(&self) -> &Self::Target47910     fn deref(&self) -> &Self::Target {
47911         &self.inner
47912     }
47913 }
47914 impl<'a> ::std::ops::DerefMut for VideoDecodeH265ProfileEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47915     fn deref_mut(&mut self) -> &mut Self::Target {
47916         &mut self.inner
47917     }
47918 }
47919 impl<'a> VideoDecodeH265ProfileEXTBuilder<'a> {
std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self47920     pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self {
47921         self.inner.std_profile_idc = std_profile_idc;
47922         self
47923     }
47924     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47925     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47926     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265ProfileEXT47927     pub fn build(self) -> VideoDecodeH265ProfileEXT {
47928         self.inner
47929     }
47930 }
47931 #[repr(C)]
47932 #[derive(Copy, Clone, Debug)]
47933 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265CapabilitiesEXT.html>"]
47934 pub struct VideoDecodeH265CapabilitiesEXT {
47935     pub s_type: StructureType,
47936     pub p_next: *mut c_void,
47937     pub max_level: u32,
47938     pub std_extension_version: ExtensionProperties,
47939 }
47940 impl ::std::default::Default for VideoDecodeH265CapabilitiesEXT {
default() -> VideoDecodeH265CapabilitiesEXT47941     fn default() -> VideoDecodeH265CapabilitiesEXT {
47942         VideoDecodeH265CapabilitiesEXT {
47943             s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_EXT,
47944             p_next: ::std::ptr::null_mut(),
47945             max_level: u32::default(),
47946             std_extension_version: ExtensionProperties::default(),
47947         }
47948     }
47949 }
47950 impl VideoDecodeH265CapabilitiesEXT {
builder<'a>() -> VideoDecodeH265CapabilitiesEXTBuilder<'a>47951     pub fn builder<'a>() -> VideoDecodeH265CapabilitiesEXTBuilder<'a> {
47952         VideoDecodeH265CapabilitiesEXTBuilder {
47953             inner: VideoDecodeH265CapabilitiesEXT::default(),
47954             marker: ::std::marker::PhantomData,
47955         }
47956     }
47957 }
47958 #[repr(transparent)]
47959 pub struct VideoDecodeH265CapabilitiesEXTBuilder<'a> {
47960     inner: VideoDecodeH265CapabilitiesEXT,
47961     marker: ::std::marker::PhantomData<&'a ()>,
47962 }
47963 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH265CapabilitiesEXTBuilder<'_> {}
47964 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH265CapabilitiesEXT {}
47965 impl<'a> ::std::ops::Deref for VideoDecodeH265CapabilitiesEXTBuilder<'a> {
47966     type Target = VideoDecodeH265CapabilitiesEXT;
deref(&self) -> &Self::Target47967     fn deref(&self) -> &Self::Target {
47968         &self.inner
47969     }
47970 }
47971 impl<'a> ::std::ops::DerefMut for VideoDecodeH265CapabilitiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47972     fn deref_mut(&mut self) -> &mut Self::Target {
47973         &mut self.inner
47974     }
47975 }
47976 impl<'a> VideoDecodeH265CapabilitiesEXTBuilder<'a> {
max_level(mut self, max_level: u32) -> Self47977     pub fn max_level(mut self, max_level: u32) -> Self {
47978         self.inner.max_level = max_level;
47979         self
47980     }
std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self47981     pub fn std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self {
47982         self.inner.std_extension_version = std_extension_version;
47983         self
47984     }
47985     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47986     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47987     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265CapabilitiesEXT47988     pub fn build(self) -> VideoDecodeH265CapabilitiesEXT {
47989         self.inner
47990     }
47991 }
47992 #[repr(C)]
47993 #[derive(Copy, Clone, Debug)]
47994 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265SessionCreateInfoEXT.html>"]
47995 pub struct VideoDecodeH265SessionCreateInfoEXT {
47996     pub s_type: StructureType,
47997     pub p_next: *const c_void,
47998     pub flags: VideoDecodeH265CreateFlagsEXT,
47999     pub p_std_extension_version: *const ExtensionProperties,
48000 }
48001 impl ::std::default::Default for VideoDecodeH265SessionCreateInfoEXT {
default() -> VideoDecodeH265SessionCreateInfoEXT48002     fn default() -> VideoDecodeH265SessionCreateInfoEXT {
48003         VideoDecodeH265SessionCreateInfoEXT {
48004             s_type: StructureType::VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT,
48005             p_next: ::std::ptr::null(),
48006             flags: VideoDecodeH265CreateFlagsEXT::default(),
48007             p_std_extension_version: ::std::ptr::null(),
48008         }
48009     }
48010 }
48011 impl VideoDecodeH265SessionCreateInfoEXT {
builder<'a>() -> VideoDecodeH265SessionCreateInfoEXTBuilder<'a>48012     pub fn builder<'a>() -> VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
48013         VideoDecodeH265SessionCreateInfoEXTBuilder {
48014             inner: VideoDecodeH265SessionCreateInfoEXT::default(),
48015             marker: ::std::marker::PhantomData,
48016         }
48017     }
48018 }
48019 #[repr(transparent)]
48020 pub struct VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
48021     inner: VideoDecodeH265SessionCreateInfoEXT,
48022     marker: ::std::marker::PhantomData<&'a ()>,
48023 }
48024 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH265SessionCreateInfoEXTBuilder<'_> {}
48025 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH265SessionCreateInfoEXT {}
48026 impl<'a> ::std::ops::Deref for VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
48027     type Target = VideoDecodeH265SessionCreateInfoEXT;
deref(&self) -> &Self::Target48028     fn deref(&self) -> &Self::Target {
48029         &self.inner
48030     }
48031 }
48032 impl<'a> ::std::ops::DerefMut for VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48033     fn deref_mut(&mut self) -> &mut Self::Target {
48034         &mut self.inner
48035     }
48036 }
48037 impl<'a> VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
flags(mut self, flags: VideoDecodeH265CreateFlagsEXT) -> Self48038     pub fn flags(mut self, flags: VideoDecodeH265CreateFlagsEXT) -> Self {
48039         self.inner.flags = flags;
48040         self
48041     }
std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self48042     pub fn std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self {
48043         self.inner.p_std_extension_version = std_extension_version;
48044         self
48045     }
48046     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48047     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48048     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265SessionCreateInfoEXT48049     pub fn build(self) -> VideoDecodeH265SessionCreateInfoEXT {
48050         self.inner
48051     }
48052 }
48053 #[repr(C)]
48054 #[derive(Copy, Clone, Debug)]
48055 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265SessionParametersAddInfoEXT.html>"]
48056 pub struct VideoDecodeH265SessionParametersAddInfoEXT {
48057     pub s_type: StructureType,
48058     pub p_next: *const c_void,
48059     pub sps_std_count: u32,
48060     pub p_sps_std: *const StdVideoH265SequenceParameterSet,
48061     pub pps_std_count: u32,
48062     pub p_pps_std: *const StdVideoH265PictureParameterSet,
48063 }
48064 impl ::std::default::Default for VideoDecodeH265SessionParametersAddInfoEXT {
default() -> VideoDecodeH265SessionParametersAddInfoEXT48065     fn default() -> VideoDecodeH265SessionParametersAddInfoEXT {
48066         VideoDecodeH265SessionParametersAddInfoEXT {
48067             s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT,
48068             p_next: ::std::ptr::null(),
48069             sps_std_count: u32::default(),
48070             p_sps_std: ::std::ptr::null(),
48071             pps_std_count: u32::default(),
48072             p_pps_std: ::std::ptr::null(),
48073         }
48074     }
48075 }
48076 impl VideoDecodeH265SessionParametersAddInfoEXT {
builder<'a>() -> VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a>48077     pub fn builder<'a>() -> VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
48078         VideoDecodeH265SessionParametersAddInfoEXTBuilder {
48079             inner: VideoDecodeH265SessionParametersAddInfoEXT::default(),
48080             marker: ::std::marker::PhantomData,
48081         }
48082     }
48083 }
48084 #[repr(transparent)]
48085 pub struct VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
48086     inner: VideoDecodeH265SessionParametersAddInfoEXT,
48087     marker: ::std::marker::PhantomData<&'a ()>,
48088 }
48089 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
48090     for VideoDecodeH265SessionParametersAddInfoEXTBuilder<'_>
48091 {
48092 }
48093 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
48094     for VideoDecodeH265SessionParametersAddInfoEXT
48095 {
48096 }
48097 impl<'a> ::std::ops::Deref for VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
48098     type Target = VideoDecodeH265SessionParametersAddInfoEXT;
deref(&self) -> &Self::Target48099     fn deref(&self) -> &Self::Target {
48100         &self.inner
48101     }
48102 }
48103 impl<'a> ::std::ops::DerefMut for VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48104     fn deref_mut(&mut self) -> &mut Self::Target {
48105         &mut self.inner
48106     }
48107 }
48108 impl<'a> VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
sps_std(mut self, sps_std: &'a [StdVideoH265SequenceParameterSet]) -> Self48109     pub fn sps_std(mut self, sps_std: &'a [StdVideoH265SequenceParameterSet]) -> Self {
48110         self.inner.sps_std_count = sps_std.len() as _;
48111         self.inner.p_sps_std = sps_std.as_ptr();
48112         self
48113     }
pps_std(mut self, pps_std: &'a [StdVideoH265PictureParameterSet]) -> Self48114     pub fn pps_std(mut self, pps_std: &'a [StdVideoH265PictureParameterSet]) -> Self {
48115         self.inner.pps_std_count = pps_std.len() as _;
48116         self.inner.p_pps_std = pps_std.as_ptr();
48117         self
48118     }
48119     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48120     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48121     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265SessionParametersAddInfoEXT48122     pub fn build(self) -> VideoDecodeH265SessionParametersAddInfoEXT {
48123         self.inner
48124     }
48125 }
48126 #[repr(C)]
48127 #[derive(Copy, Clone, Debug)]
48128 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265SessionParametersCreateInfoEXT.html>"]
48129 pub struct VideoDecodeH265SessionParametersCreateInfoEXT {
48130     pub s_type: StructureType,
48131     pub p_next: *const c_void,
48132     pub max_sps_std_count: u32,
48133     pub max_pps_std_count: u32,
48134     pub p_parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoEXT,
48135 }
48136 impl ::std::default::Default for VideoDecodeH265SessionParametersCreateInfoEXT {
default() -> VideoDecodeH265SessionParametersCreateInfoEXT48137     fn default() -> VideoDecodeH265SessionParametersCreateInfoEXT {
48138         VideoDecodeH265SessionParametersCreateInfoEXT {
48139             s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT,
48140             p_next: ::std::ptr::null(),
48141             max_sps_std_count: u32::default(),
48142             max_pps_std_count: u32::default(),
48143             p_parameters_add_info: ::std::ptr::null(),
48144         }
48145     }
48146 }
48147 impl VideoDecodeH265SessionParametersCreateInfoEXT {
builder<'a>() -> VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a>48148     pub fn builder<'a>() -> VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
48149         VideoDecodeH265SessionParametersCreateInfoEXTBuilder {
48150             inner: VideoDecodeH265SessionParametersCreateInfoEXT::default(),
48151             marker: ::std::marker::PhantomData,
48152         }
48153     }
48154 }
48155 #[repr(transparent)]
48156 pub struct VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
48157     inner: VideoDecodeH265SessionParametersCreateInfoEXT,
48158     marker: ::std::marker::PhantomData<&'a ()>,
48159 }
48160 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
48161     for VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'_>
48162 {
48163 }
48164 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
48165     for VideoDecodeH265SessionParametersCreateInfoEXT
48166 {
48167 }
48168 impl<'a> ::std::ops::Deref for VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
48169     type Target = VideoDecodeH265SessionParametersCreateInfoEXT;
deref(&self) -> &Self::Target48170     fn deref(&self) -> &Self::Target {
48171         &self.inner
48172     }
48173 }
48174 impl<'a> ::std::ops::DerefMut for VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48175     fn deref_mut(&mut self) -> &mut Self::Target {
48176         &mut self.inner
48177     }
48178 }
48179 impl<'a> VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
max_sps_std_count(mut self, max_sps_std_count: u32) -> Self48180     pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
48181         self.inner.max_sps_std_count = max_sps_std_count;
48182         self
48183     }
max_pps_std_count(mut self, max_pps_std_count: u32) -> Self48184     pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
48185         self.inner.max_pps_std_count = max_pps_std_count;
48186         self
48187     }
parameters_add_info( mut self, parameters_add_info: &'a VideoDecodeH265SessionParametersAddInfoEXT, ) -> Self48188     pub fn parameters_add_info(
48189         mut self,
48190         parameters_add_info: &'a VideoDecodeH265SessionParametersAddInfoEXT,
48191     ) -> Self {
48192         self.inner.p_parameters_add_info = parameters_add_info;
48193         self
48194     }
48195     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48196     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48197     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265SessionParametersCreateInfoEXT48198     pub fn build(self) -> VideoDecodeH265SessionParametersCreateInfoEXT {
48199         self.inner
48200     }
48201 }
48202 #[repr(C)]
48203 #[derive(Copy, Clone, Debug)]
48204 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265PictureInfoEXT.html>"]
48205 pub struct VideoDecodeH265PictureInfoEXT {
48206     pub s_type: StructureType,
48207     pub p_next: *const c_void,
48208     pub p_std_picture_info: *mut StdVideoDecodeH265PictureInfo,
48209     pub slices_count: u32,
48210     pub p_slices_data_offsets: *const u32,
48211 }
48212 impl ::std::default::Default for VideoDecodeH265PictureInfoEXT {
default() -> VideoDecodeH265PictureInfoEXT48213     fn default() -> VideoDecodeH265PictureInfoEXT {
48214         VideoDecodeH265PictureInfoEXT {
48215             s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_EXT,
48216             p_next: ::std::ptr::null(),
48217             p_std_picture_info: ::std::ptr::null_mut(),
48218             slices_count: u32::default(),
48219             p_slices_data_offsets: ::std::ptr::null(),
48220         }
48221     }
48222 }
48223 impl VideoDecodeH265PictureInfoEXT {
builder<'a>() -> VideoDecodeH265PictureInfoEXTBuilder<'a>48224     pub fn builder<'a>() -> VideoDecodeH265PictureInfoEXTBuilder<'a> {
48225         VideoDecodeH265PictureInfoEXTBuilder {
48226             inner: VideoDecodeH265PictureInfoEXT::default(),
48227             marker: ::std::marker::PhantomData,
48228         }
48229     }
48230 }
48231 #[repr(transparent)]
48232 pub struct VideoDecodeH265PictureInfoEXTBuilder<'a> {
48233     inner: VideoDecodeH265PictureInfoEXT,
48234     marker: ::std::marker::PhantomData<&'a ()>,
48235 }
48236 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH265PictureInfoEXTBuilder<'_> {}
48237 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH265PictureInfoEXT {}
48238 impl<'a> ::std::ops::Deref for VideoDecodeH265PictureInfoEXTBuilder<'a> {
48239     type Target = VideoDecodeH265PictureInfoEXT;
deref(&self) -> &Self::Target48240     fn deref(&self) -> &Self::Target {
48241         &self.inner
48242     }
48243 }
48244 impl<'a> ::std::ops::DerefMut for VideoDecodeH265PictureInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48245     fn deref_mut(&mut self) -> &mut Self::Target {
48246         &mut self.inner
48247     }
48248 }
48249 impl<'a> VideoDecodeH265PictureInfoEXTBuilder<'a> {
std_picture_info( mut self, std_picture_info: &'a mut StdVideoDecodeH265PictureInfo, ) -> Self48250     pub fn std_picture_info(
48251         mut self,
48252         std_picture_info: &'a mut StdVideoDecodeH265PictureInfo,
48253     ) -> Self {
48254         self.inner.p_std_picture_info = std_picture_info;
48255         self
48256     }
slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self48257     pub fn slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self {
48258         self.inner.slices_count = slices_data_offsets.len() as _;
48259         self.inner.p_slices_data_offsets = slices_data_offsets.as_ptr();
48260         self
48261     }
48262     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48263     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48264     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265PictureInfoEXT48265     pub fn build(self) -> VideoDecodeH265PictureInfoEXT {
48266         self.inner
48267     }
48268 }
48269 #[repr(C)]
48270 #[derive(Copy, Clone, Debug)]
48271 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265DpbSlotInfoEXT.html>"]
48272 pub struct VideoDecodeH265DpbSlotInfoEXT {
48273     pub s_type: StructureType,
48274     pub p_next: *const c_void,
48275     pub p_std_reference_info: *const StdVideoDecodeH265ReferenceInfo,
48276 }
48277 impl ::std::default::Default for VideoDecodeH265DpbSlotInfoEXT {
default() -> VideoDecodeH265DpbSlotInfoEXT48278     fn default() -> VideoDecodeH265DpbSlotInfoEXT {
48279         VideoDecodeH265DpbSlotInfoEXT {
48280             s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT,
48281             p_next: ::std::ptr::null(),
48282             p_std_reference_info: ::std::ptr::null(),
48283         }
48284     }
48285 }
48286 impl VideoDecodeH265DpbSlotInfoEXT {
builder<'a>() -> VideoDecodeH265DpbSlotInfoEXTBuilder<'a>48287     pub fn builder<'a>() -> VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
48288         VideoDecodeH265DpbSlotInfoEXTBuilder {
48289             inner: VideoDecodeH265DpbSlotInfoEXT::default(),
48290             marker: ::std::marker::PhantomData,
48291         }
48292     }
48293 }
48294 #[repr(transparent)]
48295 pub struct VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
48296     inner: VideoDecodeH265DpbSlotInfoEXT,
48297     marker: ::std::marker::PhantomData<&'a ()>,
48298 }
48299 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH265DpbSlotInfoEXTBuilder<'_> {}
48300 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH265DpbSlotInfoEXT {}
48301 impl<'a> ::std::ops::Deref for VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
48302     type Target = VideoDecodeH265DpbSlotInfoEXT;
deref(&self) -> &Self::Target48303     fn deref(&self) -> &Self::Target {
48304         &self.inner
48305     }
48306 }
48307 impl<'a> ::std::ops::DerefMut for VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48308     fn deref_mut(&mut self) -> &mut Self::Target {
48309         &mut self.inner
48310     }
48311 }
48312 impl<'a> VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
std_reference_info( mut self, std_reference_info: &'a StdVideoDecodeH265ReferenceInfo, ) -> Self48313     pub fn std_reference_info(
48314         mut self,
48315         std_reference_info: &'a StdVideoDecodeH265ReferenceInfo,
48316     ) -> Self {
48317         self.inner.p_std_reference_info = std_reference_info;
48318         self
48319     }
48320     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48321     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48322     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265DpbSlotInfoEXT48323     pub fn build(self) -> VideoDecodeH265DpbSlotInfoEXT {
48324         self.inner
48325     }
48326 }
48327 #[repr(C)]
48328 #[derive(Copy, Clone, Debug)]
48329 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionCreateInfoKHR.html>"]
48330 pub struct VideoSessionCreateInfoKHR {
48331     pub s_type: StructureType,
48332     pub p_next: *const c_void,
48333     pub queue_family_index: u32,
48334     pub flags: VideoSessionCreateFlagsKHR,
48335     pub p_video_profile: *const VideoProfileKHR,
48336     pub picture_format: Format,
48337     pub max_coded_extent: Extent2D,
48338     pub reference_pictures_format: Format,
48339     pub max_reference_pictures_slots_count: u32,
48340     pub max_reference_pictures_active_count: u32,
48341 }
48342 impl ::std::default::Default for VideoSessionCreateInfoKHR {
default() -> VideoSessionCreateInfoKHR48343     fn default() -> VideoSessionCreateInfoKHR {
48344         VideoSessionCreateInfoKHR {
48345             s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
48346             p_next: ::std::ptr::null(),
48347             queue_family_index: u32::default(),
48348             flags: VideoSessionCreateFlagsKHR::default(),
48349             p_video_profile: ::std::ptr::null(),
48350             picture_format: Format::default(),
48351             max_coded_extent: Extent2D::default(),
48352             reference_pictures_format: Format::default(),
48353             max_reference_pictures_slots_count: u32::default(),
48354             max_reference_pictures_active_count: u32::default(),
48355         }
48356     }
48357 }
48358 impl VideoSessionCreateInfoKHR {
builder<'a>() -> VideoSessionCreateInfoKHRBuilder<'a>48359     pub fn builder<'a>() -> VideoSessionCreateInfoKHRBuilder<'a> {
48360         VideoSessionCreateInfoKHRBuilder {
48361             inner: VideoSessionCreateInfoKHR::default(),
48362             marker: ::std::marker::PhantomData,
48363         }
48364     }
48365 }
48366 #[repr(transparent)]
48367 pub struct VideoSessionCreateInfoKHRBuilder<'a> {
48368     inner: VideoSessionCreateInfoKHR,
48369     marker: ::std::marker::PhantomData<&'a ()>,
48370 }
48371 pub unsafe trait ExtendsVideoSessionCreateInfoKHR {}
48372 impl<'a> ::std::ops::Deref for VideoSessionCreateInfoKHRBuilder<'a> {
48373     type Target = VideoSessionCreateInfoKHR;
deref(&self) -> &Self::Target48374     fn deref(&self) -> &Self::Target {
48375         &self.inner
48376     }
48377 }
48378 impl<'a> ::std::ops::DerefMut for VideoSessionCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48379     fn deref_mut(&mut self) -> &mut Self::Target {
48380         &mut self.inner
48381     }
48382 }
48383 impl<'a> VideoSessionCreateInfoKHRBuilder<'a> {
queue_family_index(mut self, queue_family_index: u32) -> Self48384     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
48385         self.inner.queue_family_index = queue_family_index;
48386         self
48387     }
flags(mut self, flags: VideoSessionCreateFlagsKHR) -> Self48388     pub fn flags(mut self, flags: VideoSessionCreateFlagsKHR) -> Self {
48389         self.inner.flags = flags;
48390         self
48391     }
video_profile(mut self, video_profile: &'a VideoProfileKHR) -> Self48392     pub fn video_profile(mut self, video_profile: &'a VideoProfileKHR) -> Self {
48393         self.inner.p_video_profile = video_profile;
48394         self
48395     }
picture_format(mut self, picture_format: Format) -> Self48396     pub fn picture_format(mut self, picture_format: Format) -> Self {
48397         self.inner.picture_format = picture_format;
48398         self
48399     }
max_coded_extent(mut self, max_coded_extent: Extent2D) -> Self48400     pub fn max_coded_extent(mut self, max_coded_extent: Extent2D) -> Self {
48401         self.inner.max_coded_extent = max_coded_extent;
48402         self
48403     }
reference_pictures_format(mut self, reference_pictures_format: Format) -> Self48404     pub fn reference_pictures_format(mut self, reference_pictures_format: Format) -> Self {
48405         self.inner.reference_pictures_format = reference_pictures_format;
48406         self
48407     }
max_reference_pictures_slots_count( mut self, max_reference_pictures_slots_count: u32, ) -> Self48408     pub fn max_reference_pictures_slots_count(
48409         mut self,
48410         max_reference_pictures_slots_count: u32,
48411     ) -> Self {
48412         self.inner.max_reference_pictures_slots_count = max_reference_pictures_slots_count;
48413         self
48414     }
max_reference_pictures_active_count( mut self, max_reference_pictures_active_count: u32, ) -> Self48415     pub fn max_reference_pictures_active_count(
48416         mut self,
48417         max_reference_pictures_active_count: u32,
48418     ) -> Self {
48419         self.inner.max_reference_pictures_active_count = max_reference_pictures_active_count;
48420         self
48421     }
48422     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48423     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48424     #[doc = r" valid extension structs can be pushed into the chain."]
48425     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48426     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoSessionCreateInfoKHR>(mut self, next: &'a mut T) -> Self48427     pub fn push_next<T: ExtendsVideoSessionCreateInfoKHR>(mut self, next: &'a mut T) -> Self {
48428         unsafe {
48429             let next_ptr = next as *mut T as *mut BaseOutStructure;
48430             let last_next = ptr_chain_iter(next).last().unwrap();
48431             (*last_next).p_next = self.inner.p_next as _;
48432             self.inner.p_next = next_ptr as _;
48433         }
48434         self
48435     }
48436     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48437     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48438     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoSessionCreateInfoKHR48439     pub fn build(self) -> VideoSessionCreateInfoKHR {
48440         self.inner
48441     }
48442 }
48443 #[repr(C)]
48444 #[derive(Copy, Clone, Debug)]
48445 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionParametersCreateInfoKHR.html>"]
48446 pub struct VideoSessionParametersCreateInfoKHR {
48447     pub s_type: StructureType,
48448     pub p_next: *const c_void,
48449     pub video_session_parameters_template: VideoSessionParametersKHR,
48450     pub video_session: VideoSessionKHR,
48451 }
48452 impl ::std::default::Default for VideoSessionParametersCreateInfoKHR {
default() -> VideoSessionParametersCreateInfoKHR48453     fn default() -> VideoSessionParametersCreateInfoKHR {
48454         VideoSessionParametersCreateInfoKHR {
48455             s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
48456             p_next: ::std::ptr::null(),
48457             video_session_parameters_template: VideoSessionParametersKHR::default(),
48458             video_session: VideoSessionKHR::default(),
48459         }
48460     }
48461 }
48462 impl VideoSessionParametersCreateInfoKHR {
builder<'a>() -> VideoSessionParametersCreateInfoKHRBuilder<'a>48463     pub fn builder<'a>() -> VideoSessionParametersCreateInfoKHRBuilder<'a> {
48464         VideoSessionParametersCreateInfoKHRBuilder {
48465             inner: VideoSessionParametersCreateInfoKHR::default(),
48466             marker: ::std::marker::PhantomData,
48467         }
48468     }
48469 }
48470 #[repr(transparent)]
48471 pub struct VideoSessionParametersCreateInfoKHRBuilder<'a> {
48472     inner: VideoSessionParametersCreateInfoKHR,
48473     marker: ::std::marker::PhantomData<&'a ()>,
48474 }
48475 pub unsafe trait ExtendsVideoSessionParametersCreateInfoKHR {}
48476 impl<'a> ::std::ops::Deref for VideoSessionParametersCreateInfoKHRBuilder<'a> {
48477     type Target = VideoSessionParametersCreateInfoKHR;
deref(&self) -> &Self::Target48478     fn deref(&self) -> &Self::Target {
48479         &self.inner
48480     }
48481 }
48482 impl<'a> ::std::ops::DerefMut for VideoSessionParametersCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48483     fn deref_mut(&mut self) -> &mut Self::Target {
48484         &mut self.inner
48485     }
48486 }
48487 impl<'a> VideoSessionParametersCreateInfoKHRBuilder<'a> {
video_session_parameters_template( mut self, video_session_parameters_template: VideoSessionParametersKHR, ) -> Self48488     pub fn video_session_parameters_template(
48489         mut self,
48490         video_session_parameters_template: VideoSessionParametersKHR,
48491     ) -> Self {
48492         self.inner.video_session_parameters_template = video_session_parameters_template;
48493         self
48494     }
video_session(mut self, video_session: VideoSessionKHR) -> Self48495     pub fn video_session(mut self, video_session: VideoSessionKHR) -> Self {
48496         self.inner.video_session = video_session;
48497         self
48498     }
48499     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48500     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48501     #[doc = r" valid extension structs can be pushed into the chain."]
48502     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48503     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoSessionParametersCreateInfoKHR>( mut self, next: &'a mut T, ) -> Self48504     pub fn push_next<T: ExtendsVideoSessionParametersCreateInfoKHR>(
48505         mut self,
48506         next: &'a mut T,
48507     ) -> Self {
48508         unsafe {
48509             let next_ptr = next as *mut T as *mut BaseOutStructure;
48510             let last_next = ptr_chain_iter(next).last().unwrap();
48511             (*last_next).p_next = self.inner.p_next as _;
48512             self.inner.p_next = next_ptr as _;
48513         }
48514         self
48515     }
48516     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48517     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48518     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoSessionParametersCreateInfoKHR48519     pub fn build(self) -> VideoSessionParametersCreateInfoKHR {
48520         self.inner
48521     }
48522 }
48523 #[repr(C)]
48524 #[derive(Copy, Clone, Debug)]
48525 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionParametersUpdateInfoKHR.html>"]
48526 pub struct VideoSessionParametersUpdateInfoKHR {
48527     pub s_type: StructureType,
48528     pub p_next: *const c_void,
48529     pub update_sequence_count: u32,
48530 }
48531 impl ::std::default::Default for VideoSessionParametersUpdateInfoKHR {
default() -> VideoSessionParametersUpdateInfoKHR48532     fn default() -> VideoSessionParametersUpdateInfoKHR {
48533         VideoSessionParametersUpdateInfoKHR {
48534             s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
48535             p_next: ::std::ptr::null(),
48536             update_sequence_count: u32::default(),
48537         }
48538     }
48539 }
48540 impl VideoSessionParametersUpdateInfoKHR {
builder<'a>() -> VideoSessionParametersUpdateInfoKHRBuilder<'a>48541     pub fn builder<'a>() -> VideoSessionParametersUpdateInfoKHRBuilder<'a> {
48542         VideoSessionParametersUpdateInfoKHRBuilder {
48543             inner: VideoSessionParametersUpdateInfoKHR::default(),
48544             marker: ::std::marker::PhantomData,
48545         }
48546     }
48547 }
48548 #[repr(transparent)]
48549 pub struct VideoSessionParametersUpdateInfoKHRBuilder<'a> {
48550     inner: VideoSessionParametersUpdateInfoKHR,
48551     marker: ::std::marker::PhantomData<&'a ()>,
48552 }
48553 pub unsafe trait ExtendsVideoSessionParametersUpdateInfoKHR {}
48554 impl<'a> ::std::ops::Deref for VideoSessionParametersUpdateInfoKHRBuilder<'a> {
48555     type Target = VideoSessionParametersUpdateInfoKHR;
deref(&self) -> &Self::Target48556     fn deref(&self) -> &Self::Target {
48557         &self.inner
48558     }
48559 }
48560 impl<'a> ::std::ops::DerefMut for VideoSessionParametersUpdateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48561     fn deref_mut(&mut self) -> &mut Self::Target {
48562         &mut self.inner
48563     }
48564 }
48565 impl<'a> VideoSessionParametersUpdateInfoKHRBuilder<'a> {
update_sequence_count(mut self, update_sequence_count: u32) -> Self48566     pub fn update_sequence_count(mut self, update_sequence_count: u32) -> Self {
48567         self.inner.update_sequence_count = update_sequence_count;
48568         self
48569     }
48570     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48571     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48572     #[doc = r" valid extension structs can be pushed into the chain."]
48573     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48574     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoSessionParametersUpdateInfoKHR>( mut self, next: &'a mut T, ) -> Self48575     pub fn push_next<T: ExtendsVideoSessionParametersUpdateInfoKHR>(
48576         mut self,
48577         next: &'a mut T,
48578     ) -> Self {
48579         unsafe {
48580             let next_ptr = next as *mut T as *mut BaseOutStructure;
48581             let last_next = ptr_chain_iter(next).last().unwrap();
48582             (*last_next).p_next = self.inner.p_next as _;
48583             self.inner.p_next = next_ptr as _;
48584         }
48585         self
48586     }
48587     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48588     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48589     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoSessionParametersUpdateInfoKHR48590     pub fn build(self) -> VideoSessionParametersUpdateInfoKHR {
48591         self.inner
48592     }
48593 }
48594 #[repr(C)]
48595 #[derive(Copy, Clone, Debug)]
48596 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoBeginCodingInfoKHR.html>"]
48597 pub struct VideoBeginCodingInfoKHR {
48598     pub s_type: StructureType,
48599     pub p_next: *const c_void,
48600     pub flags: VideoBeginCodingFlagsKHR,
48601     pub codec_quality_preset: VideoCodingQualityPresetFlagsKHR,
48602     pub video_session: VideoSessionKHR,
48603     pub video_session_parameters: VideoSessionParametersKHR,
48604     pub reference_slot_count: u32,
48605     pub p_reference_slots: *const VideoReferenceSlotKHR,
48606 }
48607 impl ::std::default::Default for VideoBeginCodingInfoKHR {
default() -> VideoBeginCodingInfoKHR48608     fn default() -> VideoBeginCodingInfoKHR {
48609         VideoBeginCodingInfoKHR {
48610             s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
48611             p_next: ::std::ptr::null(),
48612             flags: VideoBeginCodingFlagsKHR::default(),
48613             codec_quality_preset: VideoCodingQualityPresetFlagsKHR::default(),
48614             video_session: VideoSessionKHR::default(),
48615             video_session_parameters: VideoSessionParametersKHR::default(),
48616             reference_slot_count: u32::default(),
48617             p_reference_slots: ::std::ptr::null(),
48618         }
48619     }
48620 }
48621 impl VideoBeginCodingInfoKHR {
builder<'a>() -> VideoBeginCodingInfoKHRBuilder<'a>48622     pub fn builder<'a>() -> VideoBeginCodingInfoKHRBuilder<'a> {
48623         VideoBeginCodingInfoKHRBuilder {
48624             inner: VideoBeginCodingInfoKHR::default(),
48625             marker: ::std::marker::PhantomData,
48626         }
48627     }
48628 }
48629 #[repr(transparent)]
48630 pub struct VideoBeginCodingInfoKHRBuilder<'a> {
48631     inner: VideoBeginCodingInfoKHR,
48632     marker: ::std::marker::PhantomData<&'a ()>,
48633 }
48634 impl<'a> ::std::ops::Deref for VideoBeginCodingInfoKHRBuilder<'a> {
48635     type Target = VideoBeginCodingInfoKHR;
deref(&self) -> &Self::Target48636     fn deref(&self) -> &Self::Target {
48637         &self.inner
48638     }
48639 }
48640 impl<'a> ::std::ops::DerefMut for VideoBeginCodingInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48641     fn deref_mut(&mut self) -> &mut Self::Target {
48642         &mut self.inner
48643     }
48644 }
48645 impl<'a> VideoBeginCodingInfoKHRBuilder<'a> {
flags(mut self, flags: VideoBeginCodingFlagsKHR) -> Self48646     pub fn flags(mut self, flags: VideoBeginCodingFlagsKHR) -> Self {
48647         self.inner.flags = flags;
48648         self
48649     }
codec_quality_preset( mut self, codec_quality_preset: VideoCodingQualityPresetFlagsKHR, ) -> Self48650     pub fn codec_quality_preset(
48651         mut self,
48652         codec_quality_preset: VideoCodingQualityPresetFlagsKHR,
48653     ) -> Self {
48654         self.inner.codec_quality_preset = codec_quality_preset;
48655         self
48656     }
video_session(mut self, video_session: VideoSessionKHR) -> Self48657     pub fn video_session(mut self, video_session: VideoSessionKHR) -> Self {
48658         self.inner.video_session = video_session;
48659         self
48660     }
video_session_parameters( mut self, video_session_parameters: VideoSessionParametersKHR, ) -> Self48661     pub fn video_session_parameters(
48662         mut self,
48663         video_session_parameters: VideoSessionParametersKHR,
48664     ) -> Self {
48665         self.inner.video_session_parameters = video_session_parameters;
48666         self
48667     }
reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self48668     pub fn reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self {
48669         self.inner.reference_slot_count = reference_slots.len() as _;
48670         self.inner.p_reference_slots = reference_slots.as_ptr();
48671         self
48672     }
48673     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48674     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48675     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoBeginCodingInfoKHR48676     pub fn build(self) -> VideoBeginCodingInfoKHR {
48677         self.inner
48678     }
48679 }
48680 #[repr(C)]
48681 #[derive(Copy, Clone, Debug)]
48682 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEndCodingInfoKHR.html>"]
48683 pub struct VideoEndCodingInfoKHR {
48684     pub s_type: StructureType,
48685     pub p_next: *const c_void,
48686     pub flags: VideoEndCodingFlagsKHR,
48687 }
48688 impl ::std::default::Default for VideoEndCodingInfoKHR {
default() -> VideoEndCodingInfoKHR48689     fn default() -> VideoEndCodingInfoKHR {
48690         VideoEndCodingInfoKHR {
48691             s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
48692             p_next: ::std::ptr::null(),
48693             flags: VideoEndCodingFlagsKHR::default(),
48694         }
48695     }
48696 }
48697 impl VideoEndCodingInfoKHR {
builder<'a>() -> VideoEndCodingInfoKHRBuilder<'a>48698     pub fn builder<'a>() -> VideoEndCodingInfoKHRBuilder<'a> {
48699         VideoEndCodingInfoKHRBuilder {
48700             inner: VideoEndCodingInfoKHR::default(),
48701             marker: ::std::marker::PhantomData,
48702         }
48703     }
48704 }
48705 #[repr(transparent)]
48706 pub struct VideoEndCodingInfoKHRBuilder<'a> {
48707     inner: VideoEndCodingInfoKHR,
48708     marker: ::std::marker::PhantomData<&'a ()>,
48709 }
48710 impl<'a> ::std::ops::Deref for VideoEndCodingInfoKHRBuilder<'a> {
48711     type Target = VideoEndCodingInfoKHR;
deref(&self) -> &Self::Target48712     fn deref(&self) -> &Self::Target {
48713         &self.inner
48714     }
48715 }
48716 impl<'a> ::std::ops::DerefMut for VideoEndCodingInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48717     fn deref_mut(&mut self) -> &mut Self::Target {
48718         &mut self.inner
48719     }
48720 }
48721 impl<'a> VideoEndCodingInfoKHRBuilder<'a> {
flags(mut self, flags: VideoEndCodingFlagsKHR) -> Self48722     pub fn flags(mut self, flags: VideoEndCodingFlagsKHR) -> Self {
48723         self.inner.flags = flags;
48724         self
48725     }
48726     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48727     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48728     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEndCodingInfoKHR48729     pub fn build(self) -> VideoEndCodingInfoKHR {
48730         self.inner
48731     }
48732 }
48733 #[repr(C)]
48734 #[derive(Copy, Clone, Debug)]
48735 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoCodingControlInfoKHR.html>"]
48736 pub struct VideoCodingControlInfoKHR {
48737     pub s_type: StructureType,
48738     pub p_next: *const c_void,
48739     pub flags: VideoCodingControlFlagsKHR,
48740 }
48741 impl ::std::default::Default for VideoCodingControlInfoKHR {
default() -> VideoCodingControlInfoKHR48742     fn default() -> VideoCodingControlInfoKHR {
48743         VideoCodingControlInfoKHR {
48744             s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
48745             p_next: ::std::ptr::null(),
48746             flags: VideoCodingControlFlagsKHR::default(),
48747         }
48748     }
48749 }
48750 impl VideoCodingControlInfoKHR {
builder<'a>() -> VideoCodingControlInfoKHRBuilder<'a>48751     pub fn builder<'a>() -> VideoCodingControlInfoKHRBuilder<'a> {
48752         VideoCodingControlInfoKHRBuilder {
48753             inner: VideoCodingControlInfoKHR::default(),
48754             marker: ::std::marker::PhantomData,
48755         }
48756     }
48757 }
48758 #[repr(transparent)]
48759 pub struct VideoCodingControlInfoKHRBuilder<'a> {
48760     inner: VideoCodingControlInfoKHR,
48761     marker: ::std::marker::PhantomData<&'a ()>,
48762 }
48763 pub unsafe trait ExtendsVideoCodingControlInfoKHR {}
48764 impl<'a> ::std::ops::Deref for VideoCodingControlInfoKHRBuilder<'a> {
48765     type Target = VideoCodingControlInfoKHR;
deref(&self) -> &Self::Target48766     fn deref(&self) -> &Self::Target {
48767         &self.inner
48768     }
48769 }
48770 impl<'a> ::std::ops::DerefMut for VideoCodingControlInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48771     fn deref_mut(&mut self) -> &mut Self::Target {
48772         &mut self.inner
48773     }
48774 }
48775 impl<'a> VideoCodingControlInfoKHRBuilder<'a> {
flags(mut self, flags: VideoCodingControlFlagsKHR) -> Self48776     pub fn flags(mut self, flags: VideoCodingControlFlagsKHR) -> Self {
48777         self.inner.flags = flags;
48778         self
48779     }
48780     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48781     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48782     #[doc = r" valid extension structs can be pushed into the chain."]
48783     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48784     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoCodingControlInfoKHR>(mut self, next: &'a mut T) -> Self48785     pub fn push_next<T: ExtendsVideoCodingControlInfoKHR>(mut self, next: &'a mut T) -> Self {
48786         unsafe {
48787             let next_ptr = next as *mut T as *mut BaseOutStructure;
48788             let last_next = ptr_chain_iter(next).last().unwrap();
48789             (*last_next).p_next = self.inner.p_next as _;
48790             self.inner.p_next = next_ptr as _;
48791         }
48792         self
48793     }
48794     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48795     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48796     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoCodingControlInfoKHR48797     pub fn build(self) -> VideoCodingControlInfoKHR {
48798         self.inner
48799     }
48800 }
48801 #[repr(C)]
48802 #[derive(Copy, Clone, Debug)]
48803 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeInfoKHR.html>"]
48804 pub struct VideoEncodeInfoKHR {
48805     pub s_type: StructureType,
48806     pub p_next: *const c_void,
48807     pub flags: VideoEncodeFlagsKHR,
48808     pub quality_level: u32,
48809     pub coded_extent: Extent2D,
48810     pub dst_bitstream_buffer: Buffer,
48811     pub dst_bitstream_buffer_offset: DeviceSize,
48812     pub dst_bitstream_buffer_max_range: DeviceSize,
48813     pub src_picture_resource: VideoPictureResourceKHR,
48814     pub p_setup_reference_slot: *const VideoReferenceSlotKHR,
48815     pub reference_slot_count: u32,
48816     pub p_reference_slots: *const VideoReferenceSlotKHR,
48817 }
48818 impl ::std::default::Default for VideoEncodeInfoKHR {
default() -> VideoEncodeInfoKHR48819     fn default() -> VideoEncodeInfoKHR {
48820         VideoEncodeInfoKHR {
48821             s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
48822             p_next: ::std::ptr::null(),
48823             flags: VideoEncodeFlagsKHR::default(),
48824             quality_level: u32::default(),
48825             coded_extent: Extent2D::default(),
48826             dst_bitstream_buffer: Buffer::default(),
48827             dst_bitstream_buffer_offset: DeviceSize::default(),
48828             dst_bitstream_buffer_max_range: DeviceSize::default(),
48829             src_picture_resource: VideoPictureResourceKHR::default(),
48830             p_setup_reference_slot: ::std::ptr::null(),
48831             reference_slot_count: u32::default(),
48832             p_reference_slots: ::std::ptr::null(),
48833         }
48834     }
48835 }
48836 impl VideoEncodeInfoKHR {
builder<'a>() -> VideoEncodeInfoKHRBuilder<'a>48837     pub fn builder<'a>() -> VideoEncodeInfoKHRBuilder<'a> {
48838         VideoEncodeInfoKHRBuilder {
48839             inner: VideoEncodeInfoKHR::default(),
48840             marker: ::std::marker::PhantomData,
48841         }
48842     }
48843 }
48844 #[repr(transparent)]
48845 pub struct VideoEncodeInfoKHRBuilder<'a> {
48846     inner: VideoEncodeInfoKHR,
48847     marker: ::std::marker::PhantomData<&'a ()>,
48848 }
48849 pub unsafe trait ExtendsVideoEncodeInfoKHR {}
48850 impl<'a> ::std::ops::Deref for VideoEncodeInfoKHRBuilder<'a> {
48851     type Target = VideoEncodeInfoKHR;
deref(&self) -> &Self::Target48852     fn deref(&self) -> &Self::Target {
48853         &self.inner
48854     }
48855 }
48856 impl<'a> ::std::ops::DerefMut for VideoEncodeInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48857     fn deref_mut(&mut self) -> &mut Self::Target {
48858         &mut self.inner
48859     }
48860 }
48861 impl<'a> VideoEncodeInfoKHRBuilder<'a> {
flags(mut self, flags: VideoEncodeFlagsKHR) -> Self48862     pub fn flags(mut self, flags: VideoEncodeFlagsKHR) -> Self {
48863         self.inner.flags = flags;
48864         self
48865     }
quality_level(mut self, quality_level: u32) -> Self48866     pub fn quality_level(mut self, quality_level: u32) -> Self {
48867         self.inner.quality_level = quality_level;
48868         self
48869     }
coded_extent(mut self, coded_extent: Extent2D) -> Self48870     pub fn coded_extent(mut self, coded_extent: Extent2D) -> Self {
48871         self.inner.coded_extent = coded_extent;
48872         self
48873     }
dst_bitstream_buffer(mut self, dst_bitstream_buffer: Buffer) -> Self48874     pub fn dst_bitstream_buffer(mut self, dst_bitstream_buffer: Buffer) -> Self {
48875         self.inner.dst_bitstream_buffer = dst_bitstream_buffer;
48876         self
48877     }
dst_bitstream_buffer_offset(mut self, dst_bitstream_buffer_offset: DeviceSize) -> Self48878     pub fn dst_bitstream_buffer_offset(mut self, dst_bitstream_buffer_offset: DeviceSize) -> Self {
48879         self.inner.dst_bitstream_buffer_offset = dst_bitstream_buffer_offset;
48880         self
48881     }
dst_bitstream_buffer_max_range( mut self, dst_bitstream_buffer_max_range: DeviceSize, ) -> Self48882     pub fn dst_bitstream_buffer_max_range(
48883         mut self,
48884         dst_bitstream_buffer_max_range: DeviceSize,
48885     ) -> Self {
48886         self.inner.dst_bitstream_buffer_max_range = dst_bitstream_buffer_max_range;
48887         self
48888     }
src_picture_resource(mut self, src_picture_resource: VideoPictureResourceKHR) -> Self48889     pub fn src_picture_resource(mut self, src_picture_resource: VideoPictureResourceKHR) -> Self {
48890         self.inner.src_picture_resource = src_picture_resource;
48891         self
48892     }
setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self48893     pub fn setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self {
48894         self.inner.p_setup_reference_slot = setup_reference_slot;
48895         self
48896     }
reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self48897     pub fn reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self {
48898         self.inner.reference_slot_count = reference_slots.len() as _;
48899         self.inner.p_reference_slots = reference_slots.as_ptr();
48900         self
48901     }
48902     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48903     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48904     #[doc = r" valid extension structs can be pushed into the chain."]
48905     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48906     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoEncodeInfoKHR>(mut self, next: &'a mut T) -> Self48907     pub fn push_next<T: ExtendsVideoEncodeInfoKHR>(mut self, next: &'a mut T) -> Self {
48908         unsafe {
48909             let next_ptr = next as *mut T as *mut BaseOutStructure;
48910             let last_next = ptr_chain_iter(next).last().unwrap();
48911             (*last_next).p_next = self.inner.p_next as _;
48912             self.inner.p_next = next_ptr as _;
48913         }
48914         self
48915     }
48916     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48917     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48918     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeInfoKHR48919     pub fn build(self) -> VideoEncodeInfoKHR {
48920         self.inner
48921     }
48922 }
48923 #[repr(C)]
48924 #[derive(Copy, Clone, Debug)]
48925 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeRateControlInfoKHR.html>"]
48926 pub struct VideoEncodeRateControlInfoKHR {
48927     pub s_type: StructureType,
48928     pub p_next: *const c_void,
48929     pub flags: VideoEncodeRateControlFlagsKHR,
48930     pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
48931     pub average_bitrate: u32,
48932     pub peak_to_average_bitrate_ratio: u16,
48933     pub frame_rate_numerator: u16,
48934     pub frame_rate_denominator: u16,
48935     pub virtual_buffer_size_in_ms: u32,
48936 }
48937 impl ::std::default::Default for VideoEncodeRateControlInfoKHR {
default() -> VideoEncodeRateControlInfoKHR48938     fn default() -> VideoEncodeRateControlInfoKHR {
48939         VideoEncodeRateControlInfoKHR {
48940             s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
48941             p_next: ::std::ptr::null(),
48942             flags: VideoEncodeRateControlFlagsKHR::default(),
48943             rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
48944             average_bitrate: u32::default(),
48945             peak_to_average_bitrate_ratio: u16::default(),
48946             frame_rate_numerator: u16::default(),
48947             frame_rate_denominator: u16::default(),
48948             virtual_buffer_size_in_ms: u32::default(),
48949         }
48950     }
48951 }
48952 impl VideoEncodeRateControlInfoKHR {
builder<'a>() -> VideoEncodeRateControlInfoKHRBuilder<'a>48953     pub fn builder<'a>() -> VideoEncodeRateControlInfoKHRBuilder<'a> {
48954         VideoEncodeRateControlInfoKHRBuilder {
48955             inner: VideoEncodeRateControlInfoKHR::default(),
48956             marker: ::std::marker::PhantomData,
48957         }
48958     }
48959 }
48960 #[repr(transparent)]
48961 pub struct VideoEncodeRateControlInfoKHRBuilder<'a> {
48962     inner: VideoEncodeRateControlInfoKHR,
48963     marker: ::std::marker::PhantomData<&'a ()>,
48964 }
48965 unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeRateControlInfoKHRBuilder<'_> {}
48966 unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeRateControlInfoKHR {}
48967 impl<'a> ::std::ops::Deref for VideoEncodeRateControlInfoKHRBuilder<'a> {
48968     type Target = VideoEncodeRateControlInfoKHR;
deref(&self) -> &Self::Target48969     fn deref(&self) -> &Self::Target {
48970         &self.inner
48971     }
48972 }
48973 impl<'a> ::std::ops::DerefMut for VideoEncodeRateControlInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48974     fn deref_mut(&mut self) -> &mut Self::Target {
48975         &mut self.inner
48976     }
48977 }
48978 impl<'a> VideoEncodeRateControlInfoKHRBuilder<'a> {
flags(mut self, flags: VideoEncodeRateControlFlagsKHR) -> Self48979     pub fn flags(mut self, flags: VideoEncodeRateControlFlagsKHR) -> Self {
48980         self.inner.flags = flags;
48981         self
48982     }
rate_control_mode( mut self, rate_control_mode: VideoEncodeRateControlModeFlagsKHR, ) -> Self48983     pub fn rate_control_mode(
48984         mut self,
48985         rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
48986     ) -> Self {
48987         self.inner.rate_control_mode = rate_control_mode;
48988         self
48989     }
average_bitrate(mut self, average_bitrate: u32) -> Self48990     pub fn average_bitrate(mut self, average_bitrate: u32) -> Self {
48991         self.inner.average_bitrate = average_bitrate;
48992         self
48993     }
peak_to_average_bitrate_ratio(mut self, peak_to_average_bitrate_ratio: u16) -> Self48994     pub fn peak_to_average_bitrate_ratio(mut self, peak_to_average_bitrate_ratio: u16) -> Self {
48995         self.inner.peak_to_average_bitrate_ratio = peak_to_average_bitrate_ratio;
48996         self
48997     }
frame_rate_numerator(mut self, frame_rate_numerator: u16) -> Self48998     pub fn frame_rate_numerator(mut self, frame_rate_numerator: u16) -> Self {
48999         self.inner.frame_rate_numerator = frame_rate_numerator;
49000         self
49001     }
frame_rate_denominator(mut self, frame_rate_denominator: u16) -> Self49002     pub fn frame_rate_denominator(mut self, frame_rate_denominator: u16) -> Self {
49003         self.inner.frame_rate_denominator = frame_rate_denominator;
49004         self
49005     }
virtual_buffer_size_in_ms(mut self, virtual_buffer_size_in_ms: u32) -> Self49006     pub fn virtual_buffer_size_in_ms(mut self, virtual_buffer_size_in_ms: u32) -> Self {
49007         self.inner.virtual_buffer_size_in_ms = virtual_buffer_size_in_ms;
49008         self
49009     }
49010     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49011     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49012     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeRateControlInfoKHR49013     pub fn build(self) -> VideoEncodeRateControlInfoKHR {
49014         self.inner
49015     }
49016 }
49017 #[repr(C)]
49018 #[derive(Copy, Clone, Debug)]
49019 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264CapabilitiesEXT.html>"]
49020 pub struct VideoEncodeH264CapabilitiesEXT {
49021     pub s_type: StructureType,
49022     pub p_next: *const c_void,
49023     pub flags: VideoEncodeH264CapabilityFlagsEXT,
49024     pub input_mode_flags: VideoEncodeH264InputModeFlagsEXT,
49025     pub output_mode_flags: VideoEncodeH264OutputModeFlagsEXT,
49026     pub min_picture_size_in_mbs: Extent2D,
49027     pub max_picture_size_in_mbs: Extent2D,
49028     pub input_image_data_alignment: Extent2D,
49029     pub max_num_l0_reference_for_p: u8,
49030     pub max_num_l0_reference_for_b: u8,
49031     pub max_num_l1_reference: u8,
49032     pub quality_level_count: u8,
49033     pub std_extension_version: ExtensionProperties,
49034 }
49035 impl ::std::default::Default for VideoEncodeH264CapabilitiesEXT {
default() -> VideoEncodeH264CapabilitiesEXT49036     fn default() -> VideoEncodeH264CapabilitiesEXT {
49037         VideoEncodeH264CapabilitiesEXT {
49038             s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_EXT,
49039             p_next: ::std::ptr::null(),
49040             flags: VideoEncodeH264CapabilityFlagsEXT::default(),
49041             input_mode_flags: VideoEncodeH264InputModeFlagsEXT::default(),
49042             output_mode_flags: VideoEncodeH264OutputModeFlagsEXT::default(),
49043             min_picture_size_in_mbs: Extent2D::default(),
49044             max_picture_size_in_mbs: Extent2D::default(),
49045             input_image_data_alignment: Extent2D::default(),
49046             max_num_l0_reference_for_p: u8::default(),
49047             max_num_l0_reference_for_b: u8::default(),
49048             max_num_l1_reference: u8::default(),
49049             quality_level_count: u8::default(),
49050             std_extension_version: ExtensionProperties::default(),
49051         }
49052     }
49053 }
49054 impl VideoEncodeH264CapabilitiesEXT {
builder<'a>() -> VideoEncodeH264CapabilitiesEXTBuilder<'a>49055     pub fn builder<'a>() -> VideoEncodeH264CapabilitiesEXTBuilder<'a> {
49056         VideoEncodeH264CapabilitiesEXTBuilder {
49057             inner: VideoEncodeH264CapabilitiesEXT::default(),
49058             marker: ::std::marker::PhantomData,
49059         }
49060     }
49061 }
49062 #[repr(transparent)]
49063 pub struct VideoEncodeH264CapabilitiesEXTBuilder<'a> {
49064     inner: VideoEncodeH264CapabilitiesEXT,
49065     marker: ::std::marker::PhantomData<&'a ()>,
49066 }
49067 unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH264CapabilitiesEXTBuilder<'_> {}
49068 unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH264CapabilitiesEXT {}
49069 impl<'a> ::std::ops::Deref for VideoEncodeH264CapabilitiesEXTBuilder<'a> {
49070     type Target = VideoEncodeH264CapabilitiesEXT;
deref(&self) -> &Self::Target49071     fn deref(&self) -> &Self::Target {
49072         &self.inner
49073     }
49074 }
49075 impl<'a> ::std::ops::DerefMut for VideoEncodeH264CapabilitiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49076     fn deref_mut(&mut self) -> &mut Self::Target {
49077         &mut self.inner
49078     }
49079 }
49080 impl<'a> VideoEncodeH264CapabilitiesEXTBuilder<'a> {
flags(mut self, flags: VideoEncodeH264CapabilityFlagsEXT) -> Self49081     pub fn flags(mut self, flags: VideoEncodeH264CapabilityFlagsEXT) -> Self {
49082         self.inner.flags = flags;
49083         self
49084     }
input_mode_flags(mut self, input_mode_flags: VideoEncodeH264InputModeFlagsEXT) -> Self49085     pub fn input_mode_flags(mut self, input_mode_flags: VideoEncodeH264InputModeFlagsEXT) -> Self {
49086         self.inner.input_mode_flags = input_mode_flags;
49087         self
49088     }
output_mode_flags( mut self, output_mode_flags: VideoEncodeH264OutputModeFlagsEXT, ) -> Self49089     pub fn output_mode_flags(
49090         mut self,
49091         output_mode_flags: VideoEncodeH264OutputModeFlagsEXT,
49092     ) -> Self {
49093         self.inner.output_mode_flags = output_mode_flags;
49094         self
49095     }
min_picture_size_in_mbs(mut self, min_picture_size_in_mbs: Extent2D) -> Self49096     pub fn min_picture_size_in_mbs(mut self, min_picture_size_in_mbs: Extent2D) -> Self {
49097         self.inner.min_picture_size_in_mbs = min_picture_size_in_mbs;
49098         self
49099     }
max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self49100     pub fn max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self {
49101         self.inner.max_picture_size_in_mbs = max_picture_size_in_mbs;
49102         self
49103     }
input_image_data_alignment(mut self, input_image_data_alignment: Extent2D) -> Self49104     pub fn input_image_data_alignment(mut self, input_image_data_alignment: Extent2D) -> Self {
49105         self.inner.input_image_data_alignment = input_image_data_alignment;
49106         self
49107     }
max_num_l0_reference_for_p(mut self, max_num_l0_reference_for_p: u8) -> Self49108     pub fn max_num_l0_reference_for_p(mut self, max_num_l0_reference_for_p: u8) -> Self {
49109         self.inner.max_num_l0_reference_for_p = max_num_l0_reference_for_p;
49110         self
49111     }
max_num_l0_reference_for_b(mut self, max_num_l0_reference_for_b: u8) -> Self49112     pub fn max_num_l0_reference_for_b(mut self, max_num_l0_reference_for_b: u8) -> Self {
49113         self.inner.max_num_l0_reference_for_b = max_num_l0_reference_for_b;
49114         self
49115     }
max_num_l1_reference(mut self, max_num_l1_reference: u8) -> Self49116     pub fn max_num_l1_reference(mut self, max_num_l1_reference: u8) -> Self {
49117         self.inner.max_num_l1_reference = max_num_l1_reference;
49118         self
49119     }
quality_level_count(mut self, quality_level_count: u8) -> Self49120     pub fn quality_level_count(mut self, quality_level_count: u8) -> Self {
49121         self.inner.quality_level_count = quality_level_count;
49122         self
49123     }
std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self49124     pub fn std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self {
49125         self.inner.std_extension_version = std_extension_version;
49126         self
49127     }
49128     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49129     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49130     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264CapabilitiesEXT49131     pub fn build(self) -> VideoEncodeH264CapabilitiesEXT {
49132         self.inner
49133     }
49134 }
49135 #[repr(C)]
49136 #[derive(Copy, Clone, Debug)]
49137 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264SessionCreateInfoEXT.html>"]
49138 pub struct VideoEncodeH264SessionCreateInfoEXT {
49139     pub s_type: StructureType,
49140     pub p_next: *const c_void,
49141     pub flags: VideoEncodeH264CreateFlagsEXT,
49142     pub max_picture_size_in_mbs: Extent2D,
49143     pub p_std_extension_version: *const ExtensionProperties,
49144 }
49145 impl ::std::default::Default for VideoEncodeH264SessionCreateInfoEXT {
default() -> VideoEncodeH264SessionCreateInfoEXT49146     fn default() -> VideoEncodeH264SessionCreateInfoEXT {
49147         VideoEncodeH264SessionCreateInfoEXT {
49148             s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT,
49149             p_next: ::std::ptr::null(),
49150             flags: VideoEncodeH264CreateFlagsEXT::default(),
49151             max_picture_size_in_mbs: Extent2D::default(),
49152             p_std_extension_version: ::std::ptr::null(),
49153         }
49154     }
49155 }
49156 impl VideoEncodeH264SessionCreateInfoEXT {
builder<'a>() -> VideoEncodeH264SessionCreateInfoEXTBuilder<'a>49157     pub fn builder<'a>() -> VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
49158         VideoEncodeH264SessionCreateInfoEXTBuilder {
49159             inner: VideoEncodeH264SessionCreateInfoEXT::default(),
49160             marker: ::std::marker::PhantomData,
49161         }
49162     }
49163 }
49164 #[repr(transparent)]
49165 pub struct VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
49166     inner: VideoEncodeH264SessionCreateInfoEXT,
49167     marker: ::std::marker::PhantomData<&'a ()>,
49168 }
49169 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH264SessionCreateInfoEXTBuilder<'_> {}
49170 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH264SessionCreateInfoEXT {}
49171 impl<'a> ::std::ops::Deref for VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
49172     type Target = VideoEncodeH264SessionCreateInfoEXT;
deref(&self) -> &Self::Target49173     fn deref(&self) -> &Self::Target {
49174         &self.inner
49175     }
49176 }
49177 impl<'a> ::std::ops::DerefMut for VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49178     fn deref_mut(&mut self) -> &mut Self::Target {
49179         &mut self.inner
49180     }
49181 }
49182 impl<'a> VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
flags(mut self, flags: VideoEncodeH264CreateFlagsEXT) -> Self49183     pub fn flags(mut self, flags: VideoEncodeH264CreateFlagsEXT) -> Self {
49184         self.inner.flags = flags;
49185         self
49186     }
max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self49187     pub fn max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self {
49188         self.inner.max_picture_size_in_mbs = max_picture_size_in_mbs;
49189         self
49190     }
std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self49191     pub fn std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self {
49192         self.inner.p_std_extension_version = std_extension_version;
49193         self
49194     }
49195     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49196     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49197     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264SessionCreateInfoEXT49198     pub fn build(self) -> VideoEncodeH264SessionCreateInfoEXT {
49199         self.inner
49200     }
49201 }
49202 #[repr(C)]
49203 #[derive(Copy, Clone, Debug)]
49204 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264SessionParametersAddInfoEXT.html>"]
49205 pub struct VideoEncodeH264SessionParametersAddInfoEXT {
49206     pub s_type: StructureType,
49207     pub p_next: *const c_void,
49208     pub sps_std_count: u32,
49209     pub p_sps_std: *const StdVideoH264SequenceParameterSet,
49210     pub pps_std_count: u32,
49211     pub p_pps_std: *const StdVideoH264PictureParameterSet,
49212 }
49213 impl ::std::default::Default for VideoEncodeH264SessionParametersAddInfoEXT {
default() -> VideoEncodeH264SessionParametersAddInfoEXT49214     fn default() -> VideoEncodeH264SessionParametersAddInfoEXT {
49215         VideoEncodeH264SessionParametersAddInfoEXT {
49216             s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT,
49217             p_next: ::std::ptr::null(),
49218             sps_std_count: u32::default(),
49219             p_sps_std: ::std::ptr::null(),
49220             pps_std_count: u32::default(),
49221             p_pps_std: ::std::ptr::null(),
49222         }
49223     }
49224 }
49225 impl VideoEncodeH264SessionParametersAddInfoEXT {
builder<'a>() -> VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a>49226     pub fn builder<'a>() -> VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
49227         VideoEncodeH264SessionParametersAddInfoEXTBuilder {
49228             inner: VideoEncodeH264SessionParametersAddInfoEXT::default(),
49229             marker: ::std::marker::PhantomData,
49230         }
49231     }
49232 }
49233 #[repr(transparent)]
49234 pub struct VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
49235     inner: VideoEncodeH264SessionParametersAddInfoEXT,
49236     marker: ::std::marker::PhantomData<&'a ()>,
49237 }
49238 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
49239     for VideoEncodeH264SessionParametersAddInfoEXTBuilder<'_>
49240 {
49241 }
49242 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
49243     for VideoEncodeH264SessionParametersAddInfoEXT
49244 {
49245 }
49246 impl<'a> ::std::ops::Deref for VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
49247     type Target = VideoEncodeH264SessionParametersAddInfoEXT;
deref(&self) -> &Self::Target49248     fn deref(&self) -> &Self::Target {
49249         &self.inner
49250     }
49251 }
49252 impl<'a> ::std::ops::DerefMut for VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49253     fn deref_mut(&mut self) -> &mut Self::Target {
49254         &mut self.inner
49255     }
49256 }
49257 impl<'a> VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self49258     pub fn sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self {
49259         self.inner.sps_std_count = sps_std.len() as _;
49260         self.inner.p_sps_std = sps_std.as_ptr();
49261         self
49262     }
pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self49263     pub fn pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self {
49264         self.inner.pps_std_count = pps_std.len() as _;
49265         self.inner.p_pps_std = pps_std.as_ptr();
49266         self
49267     }
49268     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49269     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49270     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264SessionParametersAddInfoEXT49271     pub fn build(self) -> VideoEncodeH264SessionParametersAddInfoEXT {
49272         self.inner
49273     }
49274 }
49275 #[repr(C)]
49276 #[derive(Copy, Clone, Debug)]
49277 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264SessionParametersCreateInfoEXT.html>"]
49278 pub struct VideoEncodeH264SessionParametersCreateInfoEXT {
49279     pub s_type: StructureType,
49280     pub p_next: *const c_void,
49281     pub max_sps_std_count: u32,
49282     pub max_pps_std_count: u32,
49283     pub p_parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoEXT,
49284 }
49285 impl ::std::default::Default for VideoEncodeH264SessionParametersCreateInfoEXT {
default() -> VideoEncodeH264SessionParametersCreateInfoEXT49286     fn default() -> VideoEncodeH264SessionParametersCreateInfoEXT {
49287         VideoEncodeH264SessionParametersCreateInfoEXT {
49288             s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT,
49289             p_next: ::std::ptr::null(),
49290             max_sps_std_count: u32::default(),
49291             max_pps_std_count: u32::default(),
49292             p_parameters_add_info: ::std::ptr::null(),
49293         }
49294     }
49295 }
49296 impl VideoEncodeH264SessionParametersCreateInfoEXT {
builder<'a>() -> VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a>49297     pub fn builder<'a>() -> VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
49298         VideoEncodeH264SessionParametersCreateInfoEXTBuilder {
49299             inner: VideoEncodeH264SessionParametersCreateInfoEXT::default(),
49300             marker: ::std::marker::PhantomData,
49301         }
49302     }
49303 }
49304 #[repr(transparent)]
49305 pub struct VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
49306     inner: VideoEncodeH264SessionParametersCreateInfoEXT,
49307     marker: ::std::marker::PhantomData<&'a ()>,
49308 }
49309 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
49310     for VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'_>
49311 {
49312 }
49313 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
49314     for VideoEncodeH264SessionParametersCreateInfoEXT
49315 {
49316 }
49317 impl<'a> ::std::ops::Deref for VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
49318     type Target = VideoEncodeH264SessionParametersCreateInfoEXT;
deref(&self) -> &Self::Target49319     fn deref(&self) -> &Self::Target {
49320         &self.inner
49321     }
49322 }
49323 impl<'a> ::std::ops::DerefMut for VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49324     fn deref_mut(&mut self) -> &mut Self::Target {
49325         &mut self.inner
49326     }
49327 }
49328 impl<'a> VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
max_sps_std_count(mut self, max_sps_std_count: u32) -> Self49329     pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
49330         self.inner.max_sps_std_count = max_sps_std_count;
49331         self
49332     }
max_pps_std_count(mut self, max_pps_std_count: u32) -> Self49333     pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
49334         self.inner.max_pps_std_count = max_pps_std_count;
49335         self
49336     }
parameters_add_info( mut self, parameters_add_info: &'a VideoEncodeH264SessionParametersAddInfoEXT, ) -> Self49337     pub fn parameters_add_info(
49338         mut self,
49339         parameters_add_info: &'a VideoEncodeH264SessionParametersAddInfoEXT,
49340     ) -> Self {
49341         self.inner.p_parameters_add_info = parameters_add_info;
49342         self
49343     }
49344     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49345     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49346     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264SessionParametersCreateInfoEXT49347     pub fn build(self) -> VideoEncodeH264SessionParametersCreateInfoEXT {
49348         self.inner
49349     }
49350 }
49351 #[repr(C)]
49352 #[derive(Copy, Clone, Debug)]
49353 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264DpbSlotInfoEXT.html>"]
49354 pub struct VideoEncodeH264DpbSlotInfoEXT {
49355     pub s_type: StructureType,
49356     pub p_next: *const c_void,
49357     pub slot_index: i8,
49358     pub p_std_picture_info: *const StdVideoEncodeH264PictureInfo,
49359 }
49360 impl ::std::default::Default for VideoEncodeH264DpbSlotInfoEXT {
default() -> VideoEncodeH264DpbSlotInfoEXT49361     fn default() -> VideoEncodeH264DpbSlotInfoEXT {
49362         VideoEncodeH264DpbSlotInfoEXT {
49363             s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT,
49364             p_next: ::std::ptr::null(),
49365             slot_index: i8::default(),
49366             p_std_picture_info: ::std::ptr::null(),
49367         }
49368     }
49369 }
49370 impl VideoEncodeH264DpbSlotInfoEXT {
builder<'a>() -> VideoEncodeH264DpbSlotInfoEXTBuilder<'a>49371     pub fn builder<'a>() -> VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
49372         VideoEncodeH264DpbSlotInfoEXTBuilder {
49373             inner: VideoEncodeH264DpbSlotInfoEXT::default(),
49374             marker: ::std::marker::PhantomData,
49375         }
49376     }
49377 }
49378 #[repr(transparent)]
49379 pub struct VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
49380     inner: VideoEncodeH264DpbSlotInfoEXT,
49381     marker: ::std::marker::PhantomData<&'a ()>,
49382 }
49383 impl<'a> ::std::ops::Deref for VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
49384     type Target = VideoEncodeH264DpbSlotInfoEXT;
deref(&self) -> &Self::Target49385     fn deref(&self) -> &Self::Target {
49386         &self.inner
49387     }
49388 }
49389 impl<'a> ::std::ops::DerefMut for VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49390     fn deref_mut(&mut self) -> &mut Self::Target {
49391         &mut self.inner
49392     }
49393 }
49394 impl<'a> VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
slot_index(mut self, slot_index: i8) -> Self49395     pub fn slot_index(mut self, slot_index: i8) -> Self {
49396         self.inner.slot_index = slot_index;
49397         self
49398     }
std_picture_info(mut self, std_picture_info: &'a StdVideoEncodeH264PictureInfo) -> Self49399     pub fn std_picture_info(mut self, std_picture_info: &'a StdVideoEncodeH264PictureInfo) -> Self {
49400         self.inner.p_std_picture_info = std_picture_info;
49401         self
49402     }
49403     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49404     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49405     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264DpbSlotInfoEXT49406     pub fn build(self) -> VideoEncodeH264DpbSlotInfoEXT {
49407         self.inner
49408     }
49409 }
49410 #[repr(C)]
49411 #[derive(Copy, Clone, Debug)]
49412 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264VclFrameInfoEXT.html>"]
49413 pub struct VideoEncodeH264VclFrameInfoEXT {
49414     pub s_type: StructureType,
49415     pub p_next: *const c_void,
49416     pub ref_default_final_list0_entry_count: u8,
49417     pub p_ref_default_final_list0_entries: *const VideoEncodeH264DpbSlotInfoEXT,
49418     pub ref_default_final_list1_entry_count: u8,
49419     pub p_ref_default_final_list1_entries: *const VideoEncodeH264DpbSlotInfoEXT,
49420     pub nalu_slice_entry_count: u32,
49421     pub p_nalu_slice_entries: *const VideoEncodeH264NaluSliceEXT,
49422     pub p_current_picture_info: *const VideoEncodeH264DpbSlotInfoEXT,
49423 }
49424 impl ::std::default::Default for VideoEncodeH264VclFrameInfoEXT {
default() -> VideoEncodeH264VclFrameInfoEXT49425     fn default() -> VideoEncodeH264VclFrameInfoEXT {
49426         VideoEncodeH264VclFrameInfoEXT {
49427             s_type: StructureType::VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT,
49428             p_next: ::std::ptr::null(),
49429             ref_default_final_list0_entry_count: u8::default(),
49430             p_ref_default_final_list0_entries: ::std::ptr::null(),
49431             ref_default_final_list1_entry_count: u8::default(),
49432             p_ref_default_final_list1_entries: ::std::ptr::null(),
49433             nalu_slice_entry_count: u32::default(),
49434             p_nalu_slice_entries: ::std::ptr::null(),
49435             p_current_picture_info: ::std::ptr::null(),
49436         }
49437     }
49438 }
49439 impl VideoEncodeH264VclFrameInfoEXT {
builder<'a>() -> VideoEncodeH264VclFrameInfoEXTBuilder<'a>49440     pub fn builder<'a>() -> VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
49441         VideoEncodeH264VclFrameInfoEXTBuilder {
49442             inner: VideoEncodeH264VclFrameInfoEXT::default(),
49443             marker: ::std::marker::PhantomData,
49444         }
49445     }
49446 }
49447 #[repr(transparent)]
49448 pub struct VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
49449     inner: VideoEncodeH264VclFrameInfoEXT,
49450     marker: ::std::marker::PhantomData<&'a ()>,
49451 }
49452 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264VclFrameInfoEXTBuilder<'_> {}
49453 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264VclFrameInfoEXT {}
49454 impl<'a> ::std::ops::Deref for VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
49455     type Target = VideoEncodeH264VclFrameInfoEXT;
deref(&self) -> &Self::Target49456     fn deref(&self) -> &Self::Target {
49457         &self.inner
49458     }
49459 }
49460 impl<'a> ::std::ops::DerefMut for VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49461     fn deref_mut(&mut self) -> &mut Self::Target {
49462         &mut self.inner
49463     }
49464 }
49465 impl<'a> VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
ref_default_final_list0_entries( mut self, ref_default_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self49466     pub fn ref_default_final_list0_entries(
49467         mut self,
49468         ref_default_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
49469     ) -> Self {
49470         self.inner.ref_default_final_list0_entry_count = ref_default_final_list0_entries.len() as _;
49471         self.inner.p_ref_default_final_list0_entries = ref_default_final_list0_entries.as_ptr();
49472         self
49473     }
ref_default_final_list1_entries( mut self, ref_default_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self49474     pub fn ref_default_final_list1_entries(
49475         mut self,
49476         ref_default_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
49477     ) -> Self {
49478         self.inner.ref_default_final_list1_entry_count = ref_default_final_list1_entries.len() as _;
49479         self.inner.p_ref_default_final_list1_entries = ref_default_final_list1_entries.as_ptr();
49480         self
49481     }
nalu_slice_entries( mut self, nalu_slice_entries: &'a [VideoEncodeH264NaluSliceEXT], ) -> Self49482     pub fn nalu_slice_entries(
49483         mut self,
49484         nalu_slice_entries: &'a [VideoEncodeH264NaluSliceEXT],
49485     ) -> Self {
49486         self.inner.nalu_slice_entry_count = nalu_slice_entries.len() as _;
49487         self.inner.p_nalu_slice_entries = nalu_slice_entries.as_ptr();
49488         self
49489     }
current_picture_info( mut self, current_picture_info: &'a VideoEncodeH264DpbSlotInfoEXT, ) -> Self49490     pub fn current_picture_info(
49491         mut self,
49492         current_picture_info: &'a VideoEncodeH264DpbSlotInfoEXT,
49493     ) -> Self {
49494         self.inner.p_current_picture_info = current_picture_info;
49495         self
49496     }
49497     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49498     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49499     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264VclFrameInfoEXT49500     pub fn build(self) -> VideoEncodeH264VclFrameInfoEXT {
49501         self.inner
49502     }
49503 }
49504 #[repr(C)]
49505 #[derive(Copy, Clone, Debug)]
49506 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264EmitPictureParametersEXT.html>"]
49507 pub struct VideoEncodeH264EmitPictureParametersEXT {
49508     pub s_type: StructureType,
49509     pub p_next: *const c_void,
49510     pub sps_id: u8,
49511     pub emit_sps_enable: Bool32,
49512     pub pps_id_entry_count: u32,
49513     pub pps_id_entries: *const u8,
49514 }
49515 impl ::std::default::Default for VideoEncodeH264EmitPictureParametersEXT {
default() -> VideoEncodeH264EmitPictureParametersEXT49516     fn default() -> VideoEncodeH264EmitPictureParametersEXT {
49517         VideoEncodeH264EmitPictureParametersEXT {
49518             s_type: StructureType::VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT,
49519             p_next: ::std::ptr::null(),
49520             sps_id: u8::default(),
49521             emit_sps_enable: Bool32::default(),
49522             pps_id_entry_count: u32::default(),
49523             pps_id_entries: ::std::ptr::null(),
49524         }
49525     }
49526 }
49527 impl VideoEncodeH264EmitPictureParametersEXT {
builder<'a>() -> VideoEncodeH264EmitPictureParametersEXTBuilder<'a>49528     pub fn builder<'a>() -> VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
49529         VideoEncodeH264EmitPictureParametersEXTBuilder {
49530             inner: VideoEncodeH264EmitPictureParametersEXT::default(),
49531             marker: ::std::marker::PhantomData,
49532         }
49533     }
49534 }
49535 #[repr(transparent)]
49536 pub struct VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
49537     inner: VideoEncodeH264EmitPictureParametersEXT,
49538     marker: ::std::marker::PhantomData<&'a ()>,
49539 }
49540 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264EmitPictureParametersEXTBuilder<'_> {}
49541 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264EmitPictureParametersEXT {}
49542 impl<'a> ::std::ops::Deref for VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
49543     type Target = VideoEncodeH264EmitPictureParametersEXT;
deref(&self) -> &Self::Target49544     fn deref(&self) -> &Self::Target {
49545         &self.inner
49546     }
49547 }
49548 impl<'a> ::std::ops::DerefMut for VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49549     fn deref_mut(&mut self) -> &mut Self::Target {
49550         &mut self.inner
49551     }
49552 }
49553 impl<'a> VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
sps_id(mut self, sps_id: u8) -> Self49554     pub fn sps_id(mut self, sps_id: u8) -> Self {
49555         self.inner.sps_id = sps_id;
49556         self
49557     }
emit_sps_enable(mut self, emit_sps_enable: bool) -> Self49558     pub fn emit_sps_enable(mut self, emit_sps_enable: bool) -> Self {
49559         self.inner.emit_sps_enable = emit_sps_enable.into();
49560         self
49561     }
pps_id_entries(mut self, pps_id_entries: &'a [u8]) -> Self49562     pub fn pps_id_entries(mut self, pps_id_entries: &'a [u8]) -> Self {
49563         self.inner.pps_id_entry_count = pps_id_entries.len() as _;
49564         self.inner.pps_id_entries = pps_id_entries.as_ptr();
49565         self
49566     }
49567     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49568     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49569     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264EmitPictureParametersEXT49570     pub fn build(self) -> VideoEncodeH264EmitPictureParametersEXT {
49571         self.inner
49572     }
49573 }
49574 #[repr(C)]
49575 #[derive(Copy, Clone, Debug)]
49576 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264ProfileEXT.html>"]
49577 pub struct VideoEncodeH264ProfileEXT {
49578     pub s_type: StructureType,
49579     pub p_next: *const c_void,
49580     pub std_profile_idc: StdVideoH264ProfileIdc,
49581 }
49582 impl ::std::default::Default for VideoEncodeH264ProfileEXT {
default() -> VideoEncodeH264ProfileEXT49583     fn default() -> VideoEncodeH264ProfileEXT {
49584         VideoEncodeH264ProfileEXT {
49585             s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_EXT,
49586             p_next: ::std::ptr::null(),
49587             std_profile_idc: StdVideoH264ProfileIdc::default(),
49588         }
49589     }
49590 }
49591 impl VideoEncodeH264ProfileEXT {
builder<'a>() -> VideoEncodeH264ProfileEXTBuilder<'a>49592     pub fn builder<'a>() -> VideoEncodeH264ProfileEXTBuilder<'a> {
49593         VideoEncodeH264ProfileEXTBuilder {
49594             inner: VideoEncodeH264ProfileEXT::default(),
49595             marker: ::std::marker::PhantomData,
49596         }
49597     }
49598 }
49599 #[repr(transparent)]
49600 pub struct VideoEncodeH264ProfileEXTBuilder<'a> {
49601     inner: VideoEncodeH264ProfileEXT,
49602     marker: ::std::marker::PhantomData<&'a ()>,
49603 }
49604 unsafe impl ExtendsVideoProfileKHR for VideoEncodeH264ProfileEXTBuilder<'_> {}
49605 unsafe impl ExtendsVideoProfileKHR for VideoEncodeH264ProfileEXT {}
49606 impl<'a> ::std::ops::Deref for VideoEncodeH264ProfileEXTBuilder<'a> {
49607     type Target = VideoEncodeH264ProfileEXT;
deref(&self) -> &Self::Target49608     fn deref(&self) -> &Self::Target {
49609         &self.inner
49610     }
49611 }
49612 impl<'a> ::std::ops::DerefMut for VideoEncodeH264ProfileEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49613     fn deref_mut(&mut self) -> &mut Self::Target {
49614         &mut self.inner
49615     }
49616 }
49617 impl<'a> VideoEncodeH264ProfileEXTBuilder<'a> {
std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self49618     pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self {
49619         self.inner.std_profile_idc = std_profile_idc;
49620         self
49621     }
49622     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49623     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49624     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264ProfileEXT49625     pub fn build(self) -> VideoEncodeH264ProfileEXT {
49626         self.inner
49627     }
49628 }
49629 #[repr(C)]
49630 #[derive(Copy, Clone, Debug)]
49631 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264NaluSliceEXT.html>"]
49632 pub struct VideoEncodeH264NaluSliceEXT {
49633     pub s_type: StructureType,
49634     pub p_next: *const c_void,
49635     pub p_slice_header_std: *const StdVideoEncodeH264SliceHeader,
49636     pub mb_count: u32,
49637     pub ref_final_list0_entry_count: u8,
49638     pub p_ref_final_list0_entries: *const VideoEncodeH264DpbSlotInfoEXT,
49639     pub ref_final_list1_entry_count: u8,
49640     pub p_ref_final_list1_entries: *const VideoEncodeH264DpbSlotInfoEXT,
49641     pub preceding_nalu_bytes: u32,
49642     pub min_qp: u8,
49643     pub max_qp: u8,
49644 }
49645 impl ::std::default::Default for VideoEncodeH264NaluSliceEXT {
default() -> VideoEncodeH264NaluSliceEXT49646     fn default() -> VideoEncodeH264NaluSliceEXT {
49647         VideoEncodeH264NaluSliceEXT {
49648             s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_EXT,
49649             p_next: ::std::ptr::null(),
49650             p_slice_header_std: ::std::ptr::null(),
49651             mb_count: u32::default(),
49652             ref_final_list0_entry_count: u8::default(),
49653             p_ref_final_list0_entries: ::std::ptr::null(),
49654             ref_final_list1_entry_count: u8::default(),
49655             p_ref_final_list1_entries: ::std::ptr::null(),
49656             preceding_nalu_bytes: u32::default(),
49657             min_qp: u8::default(),
49658             max_qp: u8::default(),
49659         }
49660     }
49661 }
49662 impl VideoEncodeH264NaluSliceEXT {
builder<'a>() -> VideoEncodeH264NaluSliceEXTBuilder<'a>49663     pub fn builder<'a>() -> VideoEncodeH264NaluSliceEXTBuilder<'a> {
49664         VideoEncodeH264NaluSliceEXTBuilder {
49665             inner: VideoEncodeH264NaluSliceEXT::default(),
49666             marker: ::std::marker::PhantomData,
49667         }
49668     }
49669 }
49670 #[repr(transparent)]
49671 pub struct VideoEncodeH264NaluSliceEXTBuilder<'a> {
49672     inner: VideoEncodeH264NaluSliceEXT,
49673     marker: ::std::marker::PhantomData<&'a ()>,
49674 }
49675 impl<'a> ::std::ops::Deref for VideoEncodeH264NaluSliceEXTBuilder<'a> {
49676     type Target = VideoEncodeH264NaluSliceEXT;
deref(&self) -> &Self::Target49677     fn deref(&self) -> &Self::Target {
49678         &self.inner
49679     }
49680 }
49681 impl<'a> ::std::ops::DerefMut for VideoEncodeH264NaluSliceEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49682     fn deref_mut(&mut self) -> &mut Self::Target {
49683         &mut self.inner
49684     }
49685 }
49686 impl<'a> VideoEncodeH264NaluSliceEXTBuilder<'a> {
slice_header_std(mut self, slice_header_std: &'a StdVideoEncodeH264SliceHeader) -> Self49687     pub fn slice_header_std(mut self, slice_header_std: &'a StdVideoEncodeH264SliceHeader) -> Self {
49688         self.inner.p_slice_header_std = slice_header_std;
49689         self
49690     }
mb_count(mut self, mb_count: u32) -> Self49691     pub fn mb_count(mut self, mb_count: u32) -> Self {
49692         self.inner.mb_count = mb_count;
49693         self
49694     }
ref_final_list0_entries( mut self, ref_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self49695     pub fn ref_final_list0_entries(
49696         mut self,
49697         ref_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
49698     ) -> Self {
49699         self.inner.ref_final_list0_entry_count = ref_final_list0_entries.len() as _;
49700         self.inner.p_ref_final_list0_entries = ref_final_list0_entries.as_ptr();
49701         self
49702     }
ref_final_list1_entries( mut self, ref_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self49703     pub fn ref_final_list1_entries(
49704         mut self,
49705         ref_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
49706     ) -> Self {
49707         self.inner.ref_final_list1_entry_count = ref_final_list1_entries.len() as _;
49708         self.inner.p_ref_final_list1_entries = ref_final_list1_entries.as_ptr();
49709         self
49710     }
preceding_nalu_bytes(mut self, preceding_nalu_bytes: u32) -> Self49711     pub fn preceding_nalu_bytes(mut self, preceding_nalu_bytes: u32) -> Self {
49712         self.inner.preceding_nalu_bytes = preceding_nalu_bytes;
49713         self
49714     }
min_qp(mut self, min_qp: u8) -> Self49715     pub fn min_qp(mut self, min_qp: u8) -> Self {
49716         self.inner.min_qp = min_qp;
49717         self
49718     }
max_qp(mut self, max_qp: u8) -> Self49719     pub fn max_qp(mut self, max_qp: u8) -> Self {
49720         self.inner.max_qp = max_qp;
49721         self
49722     }
49723     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49724     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49725     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264NaluSliceEXT49726     pub fn build(self) -> VideoEncodeH264NaluSliceEXT {
49727         self.inner
49728     }
49729 }
49730 #[repr(C)]
49731 #[derive(Copy, Clone, Debug)]
49732 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>"]
49733 pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
49734     pub s_type: StructureType,
49735     pub p_next: *mut c_void,
49736     pub inherited_viewport_scissor2_d: Bool32,
49737 }
49738 impl ::std::default::Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
default() -> PhysicalDeviceInheritedViewportScissorFeaturesNV49739     fn default() -> PhysicalDeviceInheritedViewportScissorFeaturesNV {
49740         PhysicalDeviceInheritedViewportScissorFeaturesNV {
49741             s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
49742             p_next: ::std::ptr::null_mut(),
49743             inherited_viewport_scissor2_d: Bool32::default(),
49744         }
49745     }
49746 }
49747 impl PhysicalDeviceInheritedViewportScissorFeaturesNV {
builder<'a>() -> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a>49748     pub fn builder<'a>() -> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
49749         PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder {
49750             inner: PhysicalDeviceInheritedViewportScissorFeaturesNV::default(),
49751             marker: ::std::marker::PhantomData,
49752         }
49753     }
49754 }
49755 #[repr(transparent)]
49756 pub struct PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
49757     inner: PhysicalDeviceInheritedViewportScissorFeaturesNV,
49758     marker: ::std::marker::PhantomData<&'a ()>,
49759 }
49760 unsafe impl ExtendsPhysicalDeviceFeatures2
49761     for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'_>
49762 {
49763 }
49764 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
49765 unsafe impl ExtendsDeviceCreateInfo
49766     for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'_>
49767 {
49768 }
49769 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
49770 impl<'a> ::std::ops::Deref for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
49771     type Target = PhysicalDeviceInheritedViewportScissorFeaturesNV;
deref(&self) -> &Self::Target49772     fn deref(&self) -> &Self::Target {
49773         &self.inner
49774     }
49775 }
49776 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49777     fn deref_mut(&mut self) -> &mut Self::Target {
49778         &mut self.inner
49779     }
49780 }
49781 impl<'a> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
inherited_viewport_scissor2_d(mut self, inherited_viewport_scissor2_d: bool) -> Self49782     pub fn inherited_viewport_scissor2_d(mut self, inherited_viewport_scissor2_d: bool) -> Self {
49783         self.inner.inherited_viewport_scissor2_d = inherited_viewport_scissor2_d.into();
49784         self
49785     }
49786     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49787     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49788     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInheritedViewportScissorFeaturesNV49789     pub fn build(self) -> PhysicalDeviceInheritedViewportScissorFeaturesNV {
49790         self.inner
49791     }
49792 }
49793 #[repr(C)]
49794 #[derive(Copy, Clone, Debug)]
49795 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>"]
49796 pub struct CommandBufferInheritanceViewportScissorInfoNV {
49797     pub s_type: StructureType,
49798     pub p_next: *const c_void,
49799     pub viewport_scissor2_d: Bool32,
49800     pub viewport_depth_count: u32,
49801     pub p_viewport_depths: *const Viewport,
49802 }
49803 impl ::std::default::Default for CommandBufferInheritanceViewportScissorInfoNV {
default() -> CommandBufferInheritanceViewportScissorInfoNV49804     fn default() -> CommandBufferInheritanceViewportScissorInfoNV {
49805         CommandBufferInheritanceViewportScissorInfoNV {
49806             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
49807             p_next: ::std::ptr::null(),
49808             viewport_scissor2_d: Bool32::default(),
49809             viewport_depth_count: u32::default(),
49810             p_viewport_depths: ::std::ptr::null(),
49811         }
49812     }
49813 }
49814 impl CommandBufferInheritanceViewportScissorInfoNV {
builder<'a>() -> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a>49815     pub fn builder<'a>() -> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
49816         CommandBufferInheritanceViewportScissorInfoNVBuilder {
49817             inner: CommandBufferInheritanceViewportScissorInfoNV::default(),
49818             marker: ::std::marker::PhantomData,
49819         }
49820     }
49821 }
49822 #[repr(transparent)]
49823 pub struct CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
49824     inner: CommandBufferInheritanceViewportScissorInfoNV,
49825     marker: ::std::marker::PhantomData<&'a ()>,
49826 }
49827 unsafe impl ExtendsCommandBufferInheritanceInfo
49828     for CommandBufferInheritanceViewportScissorInfoNVBuilder<'_>
49829 {
49830 }
49831 unsafe impl ExtendsCommandBufferInheritanceInfo for CommandBufferInheritanceViewportScissorInfoNV {}
49832 impl<'a> ::std::ops::Deref for CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
49833     type Target = CommandBufferInheritanceViewportScissorInfoNV;
deref(&self) -> &Self::Target49834     fn deref(&self) -> &Self::Target {
49835         &self.inner
49836     }
49837 }
49838 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49839     fn deref_mut(&mut self) -> &mut Self::Target {
49840         &mut self.inner
49841     }
49842 }
49843 impl<'a> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
viewport_scissor2_d(mut self, viewport_scissor2_d: bool) -> Self49844     pub fn viewport_scissor2_d(mut self, viewport_scissor2_d: bool) -> Self {
49845         self.inner.viewport_scissor2_d = viewport_scissor2_d.into();
49846         self
49847     }
viewport_depth_count(mut self, viewport_depth_count: u32) -> Self49848     pub fn viewport_depth_count(mut self, viewport_depth_count: u32) -> Self {
49849         self.inner.viewport_depth_count = viewport_depth_count;
49850         self
49851     }
viewport_depths(mut self, viewport_depths: &'a Viewport) -> Self49852     pub fn viewport_depths(mut self, viewport_depths: &'a Viewport) -> Self {
49853         self.inner.p_viewport_depths = viewport_depths;
49854         self
49855     }
49856     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49857     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49858     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceViewportScissorInfoNV49859     pub fn build(self) -> CommandBufferInheritanceViewportScissorInfoNV {
49860         self.inner
49861     }
49862 }
49863 #[repr(C)]
49864 #[derive(Copy, Clone, Debug)]
49865 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>"]
49866 pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
49867     pub s_type: StructureType,
49868     pub p_next: *mut c_void,
49869     pub ycbcr2plane444_formats: Bool32,
49870 }
49871 impl ::std::default::Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
default() -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT49872     fn default() -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
49873         PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
49874             s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
49875             p_next: ::std::ptr::null_mut(),
49876             ycbcr2plane444_formats: Bool32::default(),
49877         }
49878     }
49879 }
49880 impl PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
builder<'a>() -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a>49881     pub fn builder<'a>() -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
49882         PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder {
49883             inner: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT::default(),
49884             marker: ::std::marker::PhantomData,
49885         }
49886     }
49887 }
49888 #[repr(transparent)]
49889 pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
49890     inner: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT,
49891     marker: ::std::marker::PhantomData<&'a ()>,
49892 }
49893 unsafe impl ExtendsPhysicalDeviceFeatures2
49894     for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'_>
49895 {
49896 }
49897 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
49898 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'_> {}
49899 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
49900 impl<'a> ::std::ops::Deref for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
49901     type Target = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
deref(&self) -> &Self::Target49902     fn deref(&self) -> &Self::Target {
49903         &self.inner
49904     }
49905 }
49906 impl<'a> ::std::ops::DerefMut for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49907     fn deref_mut(&mut self) -> &mut Self::Target {
49908         &mut self.inner
49909     }
49910 }
49911 impl<'a> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
ycbcr2plane444_formats(mut self, ycbcr2plane444_formats: bool) -> Self49912     pub fn ycbcr2plane444_formats(mut self, ycbcr2plane444_formats: bool) -> Self {
49913         self.inner.ycbcr2plane444_formats = ycbcr2plane444_formats.into();
49914         self
49915     }
49916     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49917     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49918     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT49919     pub fn build(self) -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
49920         self.inner
49921     }
49922 }
49923 #[repr(C)]
49924 #[derive(Copy, Clone, Debug)]
49925 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>"]
49926 pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
49927     pub s_type: StructureType,
49928     pub p_next: *mut c_void,
49929     pub provoking_vertex_last: Bool32,
49930     pub transform_feedback_preserves_provoking_vertex: Bool32,
49931 }
49932 impl ::std::default::Default for PhysicalDeviceProvokingVertexFeaturesEXT {
default() -> PhysicalDeviceProvokingVertexFeaturesEXT49933     fn default() -> PhysicalDeviceProvokingVertexFeaturesEXT {
49934         PhysicalDeviceProvokingVertexFeaturesEXT {
49935             s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
49936             p_next: ::std::ptr::null_mut(),
49937             provoking_vertex_last: Bool32::default(),
49938             transform_feedback_preserves_provoking_vertex: Bool32::default(),
49939         }
49940     }
49941 }
49942 impl PhysicalDeviceProvokingVertexFeaturesEXT {
builder<'a>() -> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a>49943     pub fn builder<'a>() -> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
49944         PhysicalDeviceProvokingVertexFeaturesEXTBuilder {
49945             inner: PhysicalDeviceProvokingVertexFeaturesEXT::default(),
49946             marker: ::std::marker::PhantomData,
49947         }
49948     }
49949 }
49950 #[repr(transparent)]
49951 pub struct PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
49952     inner: PhysicalDeviceProvokingVertexFeaturesEXT,
49953     marker: ::std::marker::PhantomData<&'a ()>,
49954 }
49955 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'_> {}
49956 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProvokingVertexFeaturesEXT {}
49957 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'_> {}
49958 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProvokingVertexFeaturesEXT {}
49959 impl<'a> ::std::ops::Deref for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
49960     type Target = PhysicalDeviceProvokingVertexFeaturesEXT;
deref(&self) -> &Self::Target49961     fn deref(&self) -> &Self::Target {
49962         &self.inner
49963     }
49964 }
49965 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49966     fn deref_mut(&mut self) -> &mut Self::Target {
49967         &mut self.inner
49968     }
49969 }
49970 impl<'a> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
provoking_vertex_last(mut self, provoking_vertex_last: bool) -> Self49971     pub fn provoking_vertex_last(mut self, provoking_vertex_last: bool) -> Self {
49972         self.inner.provoking_vertex_last = provoking_vertex_last.into();
49973         self
49974     }
transform_feedback_preserves_provoking_vertex( mut self, transform_feedback_preserves_provoking_vertex: bool, ) -> Self49975     pub fn transform_feedback_preserves_provoking_vertex(
49976         mut self,
49977         transform_feedback_preserves_provoking_vertex: bool,
49978     ) -> Self {
49979         self.inner.transform_feedback_preserves_provoking_vertex =
49980             transform_feedback_preserves_provoking_vertex.into();
49981         self
49982     }
49983     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49984     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49985     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProvokingVertexFeaturesEXT49986     pub fn build(self) -> PhysicalDeviceProvokingVertexFeaturesEXT {
49987         self.inner
49988     }
49989 }
49990 #[repr(C)]
49991 #[derive(Copy, Clone, Debug)]
49992 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>"]
49993 pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
49994     pub s_type: StructureType,
49995     pub p_next: *mut c_void,
49996     pub provoking_vertex_mode_per_pipeline: Bool32,
49997     pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
49998 }
49999 impl ::std::default::Default for PhysicalDeviceProvokingVertexPropertiesEXT {
default() -> PhysicalDeviceProvokingVertexPropertiesEXT50000     fn default() -> PhysicalDeviceProvokingVertexPropertiesEXT {
50001         PhysicalDeviceProvokingVertexPropertiesEXT {
50002             s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
50003             p_next: ::std::ptr::null_mut(),
50004             provoking_vertex_mode_per_pipeline: Bool32::default(),
50005             transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
50006         }
50007     }
50008 }
50009 impl PhysicalDeviceProvokingVertexPropertiesEXT {
builder<'a>() -> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a>50010     pub fn builder<'a>() -> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
50011         PhysicalDeviceProvokingVertexPropertiesEXTBuilder {
50012             inner: PhysicalDeviceProvokingVertexPropertiesEXT::default(),
50013             marker: ::std::marker::PhantomData,
50014         }
50015     }
50016 }
50017 #[repr(transparent)]
50018 pub struct PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
50019     inner: PhysicalDeviceProvokingVertexPropertiesEXT,
50020     marker: ::std::marker::PhantomData<&'a ()>,
50021 }
50022 unsafe impl ExtendsPhysicalDeviceProperties2
50023     for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'_>
50024 {
50025 }
50026 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceProvokingVertexPropertiesEXT {}
50027 impl<'a> ::std::ops::Deref for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
50028     type Target = PhysicalDeviceProvokingVertexPropertiesEXT;
deref(&self) -> &Self::Target50029     fn deref(&self) -> &Self::Target {
50030         &self.inner
50031     }
50032 }
50033 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50034     fn deref_mut(&mut self) -> &mut Self::Target {
50035         &mut self.inner
50036     }
50037 }
50038 impl<'a> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
provoking_vertex_mode_per_pipeline( mut self, provoking_vertex_mode_per_pipeline: bool, ) -> Self50039     pub fn provoking_vertex_mode_per_pipeline(
50040         mut self,
50041         provoking_vertex_mode_per_pipeline: bool,
50042     ) -> Self {
50043         self.inner.provoking_vertex_mode_per_pipeline = provoking_vertex_mode_per_pipeline.into();
50044         self
50045     }
transform_feedback_preserves_triangle_fan_provoking_vertex( mut self, transform_feedback_preserves_triangle_fan_provoking_vertex: bool, ) -> Self50046     pub fn transform_feedback_preserves_triangle_fan_provoking_vertex(
50047         mut self,
50048         transform_feedback_preserves_triangle_fan_provoking_vertex: bool,
50049     ) -> Self {
50050         self.inner
50051             .transform_feedback_preserves_triangle_fan_provoking_vertex =
50052             transform_feedback_preserves_triangle_fan_provoking_vertex.into();
50053         self
50054     }
50055     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50056     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50057     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProvokingVertexPropertiesEXT50058     pub fn build(self) -> PhysicalDeviceProvokingVertexPropertiesEXT {
50059         self.inner
50060     }
50061 }
50062 #[repr(C)]
50063 #[derive(Copy, Clone, Debug)]
50064 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>"]
50065 pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
50066     pub s_type: StructureType,
50067     pub p_next: *const c_void,
50068     pub provoking_vertex_mode: ProvokingVertexModeEXT,
50069 }
50070 impl ::std::default::Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
default() -> PipelineRasterizationProvokingVertexStateCreateInfoEXT50071     fn default() -> PipelineRasterizationProvokingVertexStateCreateInfoEXT {
50072         PipelineRasterizationProvokingVertexStateCreateInfoEXT {
50073             s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
50074             p_next: ::std::ptr::null(),
50075             provoking_vertex_mode: ProvokingVertexModeEXT::default(),
50076         }
50077     }
50078 }
50079 impl PipelineRasterizationProvokingVertexStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a>50080     pub fn builder<'a>() -> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
50081         PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder {
50082             inner: PipelineRasterizationProvokingVertexStateCreateInfoEXT::default(),
50083             marker: ::std::marker::PhantomData,
50084         }
50085     }
50086 }
50087 #[repr(transparent)]
50088 pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
50089     inner: PipelineRasterizationProvokingVertexStateCreateInfoEXT,
50090     marker: ::std::marker::PhantomData<&'a ()>,
50091 }
50092 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
50093     for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'_>
50094 {
50095 }
50096 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
50097     for PipelineRasterizationProvokingVertexStateCreateInfoEXT
50098 {
50099 }
50100 impl<'a> ::std::ops::Deref for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
50101     type Target = PipelineRasterizationProvokingVertexStateCreateInfoEXT;
deref(&self) -> &Self::Target50102     fn deref(&self) -> &Self::Target {
50103         &self.inner
50104     }
50105 }
50106 impl<'a> ::std::ops::DerefMut
50107     for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a>
50108 {
deref_mut(&mut self) -> &mut Self::Target50109     fn deref_mut(&mut self) -> &mut Self::Target {
50110         &mut self.inner
50111     }
50112 }
50113 impl<'a> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
provoking_vertex_mode(mut self, provoking_vertex_mode: ProvokingVertexModeEXT) -> Self50114     pub fn provoking_vertex_mode(mut self, provoking_vertex_mode: ProvokingVertexModeEXT) -> Self {
50115         self.inner.provoking_vertex_mode = provoking_vertex_mode;
50116         self
50117     }
50118     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50119     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50120     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationProvokingVertexStateCreateInfoEXT50121     pub fn build(self) -> PipelineRasterizationProvokingVertexStateCreateInfoEXT {
50122         self.inner
50123     }
50124 }
50125 #[repr(C)]
50126 #[derive(Copy, Clone, Debug)]
50127 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuModuleCreateInfoNVX.html>"]
50128 pub struct CuModuleCreateInfoNVX {
50129     pub s_type: StructureType,
50130     pub p_next: *const c_void,
50131     pub data_size: usize,
50132     pub p_data: *const c_void,
50133 }
50134 impl ::std::default::Default for CuModuleCreateInfoNVX {
default() -> CuModuleCreateInfoNVX50135     fn default() -> CuModuleCreateInfoNVX {
50136         CuModuleCreateInfoNVX {
50137             s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
50138             p_next: ::std::ptr::null(),
50139             data_size: usize::default(),
50140             p_data: ::std::ptr::null(),
50141         }
50142     }
50143 }
50144 impl CuModuleCreateInfoNVX {
builder<'a>() -> CuModuleCreateInfoNVXBuilder<'a>50145     pub fn builder<'a>() -> CuModuleCreateInfoNVXBuilder<'a> {
50146         CuModuleCreateInfoNVXBuilder {
50147             inner: CuModuleCreateInfoNVX::default(),
50148             marker: ::std::marker::PhantomData,
50149         }
50150     }
50151 }
50152 #[repr(transparent)]
50153 pub struct CuModuleCreateInfoNVXBuilder<'a> {
50154     inner: CuModuleCreateInfoNVX,
50155     marker: ::std::marker::PhantomData<&'a ()>,
50156 }
50157 impl<'a> ::std::ops::Deref for CuModuleCreateInfoNVXBuilder<'a> {
50158     type Target = CuModuleCreateInfoNVX;
deref(&self) -> &Self::Target50159     fn deref(&self) -> &Self::Target {
50160         &self.inner
50161     }
50162 }
50163 impl<'a> ::std::ops::DerefMut for CuModuleCreateInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50164     fn deref_mut(&mut self) -> &mut Self::Target {
50165         &mut self.inner
50166     }
50167 }
50168 impl<'a> CuModuleCreateInfoNVXBuilder<'a> {
data_size(mut self, data_size: usize) -> Self50169     pub fn data_size(mut self, data_size: usize) -> Self {
50170         self.inner.data_size = data_size;
50171         self
50172     }
data(mut self, data: *const c_void) -> Self50173     pub fn data(mut self, data: *const c_void) -> Self {
50174         self.inner.p_data = data;
50175         self
50176     }
50177     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50178     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50179     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CuModuleCreateInfoNVX50180     pub fn build(self) -> CuModuleCreateInfoNVX {
50181         self.inner
50182     }
50183 }
50184 #[repr(C)]
50185 #[derive(Copy, Clone, Debug)]
50186 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuFunctionCreateInfoNVX.html>"]
50187 pub struct CuFunctionCreateInfoNVX {
50188     pub s_type: StructureType,
50189     pub p_next: *const c_void,
50190     pub module: CuModuleNVX,
50191     pub p_name: *const c_char,
50192 }
50193 impl ::std::default::Default for CuFunctionCreateInfoNVX {
default() -> CuFunctionCreateInfoNVX50194     fn default() -> CuFunctionCreateInfoNVX {
50195         CuFunctionCreateInfoNVX {
50196             s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
50197             p_next: ::std::ptr::null(),
50198             module: CuModuleNVX::default(),
50199             p_name: ::std::ptr::null(),
50200         }
50201     }
50202 }
50203 impl CuFunctionCreateInfoNVX {
builder<'a>() -> CuFunctionCreateInfoNVXBuilder<'a>50204     pub fn builder<'a>() -> CuFunctionCreateInfoNVXBuilder<'a> {
50205         CuFunctionCreateInfoNVXBuilder {
50206             inner: CuFunctionCreateInfoNVX::default(),
50207             marker: ::std::marker::PhantomData,
50208         }
50209     }
50210 }
50211 #[repr(transparent)]
50212 pub struct CuFunctionCreateInfoNVXBuilder<'a> {
50213     inner: CuFunctionCreateInfoNVX,
50214     marker: ::std::marker::PhantomData<&'a ()>,
50215 }
50216 impl<'a> ::std::ops::Deref for CuFunctionCreateInfoNVXBuilder<'a> {
50217     type Target = CuFunctionCreateInfoNVX;
deref(&self) -> &Self::Target50218     fn deref(&self) -> &Self::Target {
50219         &self.inner
50220     }
50221 }
50222 impl<'a> ::std::ops::DerefMut for CuFunctionCreateInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50223     fn deref_mut(&mut self) -> &mut Self::Target {
50224         &mut self.inner
50225     }
50226 }
50227 impl<'a> CuFunctionCreateInfoNVXBuilder<'a> {
module(mut self, module: CuModuleNVX) -> Self50228     pub fn module(mut self, module: CuModuleNVX) -> Self {
50229         self.inner.module = module;
50230         self
50231     }
name(mut self, name: &'a ::std::ffi::CStr) -> Self50232     pub fn name(mut self, name: &'a ::std::ffi::CStr) -> Self {
50233         self.inner.p_name = name.as_ptr();
50234         self
50235     }
50236     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50237     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50238     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CuFunctionCreateInfoNVX50239     pub fn build(self) -> CuFunctionCreateInfoNVX {
50240         self.inner
50241     }
50242 }
50243 #[repr(C)]
50244 #[derive(Copy, Clone, Debug)]
50245 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuLaunchInfoNVX.html>"]
50246 pub struct CuLaunchInfoNVX {
50247     pub s_type: StructureType,
50248     pub p_next: *const c_void,
50249     pub function: CuFunctionNVX,
50250     pub grid_dim_x: u32,
50251     pub grid_dim_y: u32,
50252     pub grid_dim_z: u32,
50253     pub block_dim_x: u32,
50254     pub block_dim_y: u32,
50255     pub block_dim_z: u32,
50256     pub shared_mem_bytes: u32,
50257     pub param_count: usize,
50258     pub p_params: *const *const c_void,
50259     pub extra_count: usize,
50260     pub p_extras: *const *const c_void,
50261 }
50262 impl ::std::default::Default for CuLaunchInfoNVX {
default() -> CuLaunchInfoNVX50263     fn default() -> CuLaunchInfoNVX {
50264         CuLaunchInfoNVX {
50265             s_type: StructureType::CU_LAUNCH_INFO_NVX,
50266             p_next: ::std::ptr::null(),
50267             function: CuFunctionNVX::default(),
50268             grid_dim_x: u32::default(),
50269             grid_dim_y: u32::default(),
50270             grid_dim_z: u32::default(),
50271             block_dim_x: u32::default(),
50272             block_dim_y: u32::default(),
50273             block_dim_z: u32::default(),
50274             shared_mem_bytes: u32::default(),
50275             param_count: usize::default(),
50276             p_params: ::std::ptr::null(),
50277             extra_count: usize::default(),
50278             p_extras: ::std::ptr::null(),
50279         }
50280     }
50281 }
50282 impl CuLaunchInfoNVX {
builder<'a>() -> CuLaunchInfoNVXBuilder<'a>50283     pub fn builder<'a>() -> CuLaunchInfoNVXBuilder<'a> {
50284         CuLaunchInfoNVXBuilder {
50285             inner: CuLaunchInfoNVX::default(),
50286             marker: ::std::marker::PhantomData,
50287         }
50288     }
50289 }
50290 #[repr(transparent)]
50291 pub struct CuLaunchInfoNVXBuilder<'a> {
50292     inner: CuLaunchInfoNVX,
50293     marker: ::std::marker::PhantomData<&'a ()>,
50294 }
50295 impl<'a> ::std::ops::Deref for CuLaunchInfoNVXBuilder<'a> {
50296     type Target = CuLaunchInfoNVX;
deref(&self) -> &Self::Target50297     fn deref(&self) -> &Self::Target {
50298         &self.inner
50299     }
50300 }
50301 impl<'a> ::std::ops::DerefMut for CuLaunchInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50302     fn deref_mut(&mut self) -> &mut Self::Target {
50303         &mut self.inner
50304     }
50305 }
50306 impl<'a> CuLaunchInfoNVXBuilder<'a> {
function(mut self, function: CuFunctionNVX) -> Self50307     pub fn function(mut self, function: CuFunctionNVX) -> Self {
50308         self.inner.function = function;
50309         self
50310     }
grid_dim_x(mut self, grid_dim_x: u32) -> Self50311     pub fn grid_dim_x(mut self, grid_dim_x: u32) -> Self {
50312         self.inner.grid_dim_x = grid_dim_x;
50313         self
50314     }
grid_dim_y(mut self, grid_dim_y: u32) -> Self50315     pub fn grid_dim_y(mut self, grid_dim_y: u32) -> Self {
50316         self.inner.grid_dim_y = grid_dim_y;
50317         self
50318     }
grid_dim_z(mut self, grid_dim_z: u32) -> Self50319     pub fn grid_dim_z(mut self, grid_dim_z: u32) -> Self {
50320         self.inner.grid_dim_z = grid_dim_z;
50321         self
50322     }
block_dim_x(mut self, block_dim_x: u32) -> Self50323     pub fn block_dim_x(mut self, block_dim_x: u32) -> Self {
50324         self.inner.block_dim_x = block_dim_x;
50325         self
50326     }
block_dim_y(mut self, block_dim_y: u32) -> Self50327     pub fn block_dim_y(mut self, block_dim_y: u32) -> Self {
50328         self.inner.block_dim_y = block_dim_y;
50329         self
50330     }
block_dim_z(mut self, block_dim_z: u32) -> Self50331     pub fn block_dim_z(mut self, block_dim_z: u32) -> Self {
50332         self.inner.block_dim_z = block_dim_z;
50333         self
50334     }
shared_mem_bytes(mut self, shared_mem_bytes: u32) -> Self50335     pub fn shared_mem_bytes(mut self, shared_mem_bytes: u32) -> Self {
50336         self.inner.shared_mem_bytes = shared_mem_bytes;
50337         self
50338     }
params(mut self, params: &'a [*const c_void]) -> Self50339     pub fn params(mut self, params: &'a [*const c_void]) -> Self {
50340         self.inner.param_count = params.len() as _;
50341         self.inner.p_params = params.as_ptr();
50342         self
50343     }
extras(mut self, extras: &'a [*const c_void]) -> Self50344     pub fn extras(mut self, extras: &'a [*const c_void]) -> Self {
50345         self.inner.extra_count = extras.len() as _;
50346         self.inner.p_extras = extras.as_ptr();
50347         self
50348     }
50349     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50350     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50351     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CuLaunchInfoNVX50352     pub fn build(self) -> CuLaunchInfoNVX {
50353         self.inner
50354     }
50355 }
50356 #[repr(C)]
50357 #[derive(Copy, Clone, Debug)]
50358 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>"]
50359 pub struct PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
50360     pub s_type: StructureType,
50361     pub p_next: *mut c_void,
50362     pub shader_integer_dot_product: Bool32,
50363 }
50364 impl ::std::default::Default for PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
default() -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR50365     fn default() -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
50366         PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
50367             s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR,
50368             p_next: ::std::ptr::null_mut(),
50369             shader_integer_dot_product: Bool32::default(),
50370         }
50371     }
50372 }
50373 impl PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a>50374     pub fn builder<'a>() -> PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
50375         PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder {
50376             inner: PhysicalDeviceShaderIntegerDotProductFeaturesKHR::default(),
50377             marker: ::std::marker::PhantomData,
50378         }
50379     }
50380 }
50381 #[repr(transparent)]
50382 pub struct PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
50383     inner: PhysicalDeviceShaderIntegerDotProductFeaturesKHR,
50384     marker: ::std::marker::PhantomData<&'a ()>,
50385 }
50386 unsafe impl ExtendsPhysicalDeviceFeatures2
50387     for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'_>
50388 {
50389 }
50390 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderIntegerDotProductFeaturesKHR {}
50391 unsafe impl ExtendsDeviceCreateInfo
50392     for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'_>
50393 {
50394 }
50395 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderIntegerDotProductFeaturesKHR {}
50396 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
50397     type Target = PhysicalDeviceShaderIntegerDotProductFeaturesKHR;
deref(&self) -> &Self::Target50398     fn deref(&self) -> &Self::Target {
50399         &self.inner
50400     }
50401 }
50402 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50403     fn deref_mut(&mut self) -> &mut Self::Target {
50404         &mut self.inner
50405     }
50406 }
50407 impl<'a> PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
shader_integer_dot_product(mut self, shader_integer_dot_product: bool) -> Self50408     pub fn shader_integer_dot_product(mut self, shader_integer_dot_product: bool) -> Self {
50409         self.inner.shader_integer_dot_product = shader_integer_dot_product.into();
50410         self
50411     }
50412     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50413     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50414     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR50415     pub fn build(self) -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
50416         self.inner
50417     }
50418 }
50419 #[repr(C)]
50420 #[derive(Copy, Clone, Debug)]
50421 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>"]
50422 pub struct PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
50423     pub s_type: StructureType,
50424     pub p_next: *mut c_void,
50425     pub integer_dot_product8_bit_unsigned_accelerated: Bool32,
50426     pub integer_dot_product8_bit_signed_accelerated: Bool32,
50427     pub integer_dot_product8_bit_mixed_signedness_accelerated: Bool32,
50428     pub integer_dot_product4x8_bit_packed_unsigned_accelerated: Bool32,
50429     pub integer_dot_product4x8_bit_packed_signed_accelerated: Bool32,
50430     pub integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: Bool32,
50431     pub integer_dot_product16_bit_unsigned_accelerated: Bool32,
50432     pub integer_dot_product16_bit_signed_accelerated: Bool32,
50433     pub integer_dot_product16_bit_mixed_signedness_accelerated: Bool32,
50434     pub integer_dot_product32_bit_unsigned_accelerated: Bool32,
50435     pub integer_dot_product32_bit_signed_accelerated: Bool32,
50436     pub integer_dot_product32_bit_mixed_signedness_accelerated: Bool32,
50437     pub integer_dot_product64_bit_unsigned_accelerated: Bool32,
50438     pub integer_dot_product64_bit_signed_accelerated: Bool32,
50439     pub integer_dot_product64_bit_mixed_signedness_accelerated: Bool32,
50440     pub integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: Bool32,
50441     pub integer_dot_product_accumulating_saturating8_bit_signed_accelerated: Bool32,
50442     pub integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: Bool32,
50443     pub integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: Bool32,
50444     pub integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: Bool32,
50445     pub integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated:
50446         Bool32,
50447     pub integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: Bool32,
50448     pub integer_dot_product_accumulating_saturating16_bit_signed_accelerated: Bool32,
50449     pub integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: Bool32,
50450     pub integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: Bool32,
50451     pub integer_dot_product_accumulating_saturating32_bit_signed_accelerated: Bool32,
50452     pub integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: Bool32,
50453     pub integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: Bool32,
50454     pub integer_dot_product_accumulating_saturating64_bit_signed_accelerated: Bool32,
50455     pub integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: Bool32,
50456 }
50457 impl ::std::default::Default for PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
default() -> PhysicalDeviceShaderIntegerDotProductPropertiesKHR50458     fn default() -> PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
50459         PhysicalDeviceShaderIntegerDotProductPropertiesKHR { s_type : StructureType :: PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR , p_next : :: std :: ptr :: null_mut () , integer_dot_product8_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product8_bit_signed_accelerated : Bool32 :: default () , integer_dot_product8_bit_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product4x8_bit_packed_unsigned_accelerated : Bool32 :: default () , integer_dot_product4x8_bit_packed_signed_accelerated : Bool32 :: default () , integer_dot_product4x8_bit_packed_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product16_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product16_bit_signed_accelerated : Bool32 :: default () , integer_dot_product16_bit_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product32_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product32_bit_signed_accelerated : Bool32 :: default () , integer_dot_product32_bit_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product64_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product64_bit_signed_accelerated : Bool32 :: default () , integer_dot_product64_bit_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating8_bit_signed_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating16_bit_signed_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating32_bit_signed_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating64_bit_signed_accelerated : Bool32 :: default () , integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated : Bool32 :: default () }
50460     }
50461 }
50462 impl PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
builder<'a>() -> PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a>50463     pub fn builder<'a>() -> PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
50464         PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder {
50465             inner: PhysicalDeviceShaderIntegerDotProductPropertiesKHR::default(),
50466             marker: ::std::marker::PhantomData,
50467         }
50468     }
50469 }
50470 #[repr(transparent)]
50471 pub struct PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
50472     inner: PhysicalDeviceShaderIntegerDotProductPropertiesKHR,
50473     marker: ::std::marker::PhantomData<&'a ()>,
50474 }
50475 unsafe impl ExtendsPhysicalDeviceProperties2
50476     for PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'_>
50477 {
50478 }
50479 unsafe impl ExtendsPhysicalDeviceProperties2
50480     for PhysicalDeviceShaderIntegerDotProductPropertiesKHR
50481 {
50482 }
50483 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
50484     type Target = PhysicalDeviceShaderIntegerDotProductPropertiesKHR;
deref(&self) -> &Self::Target50485     fn deref(&self) -> &Self::Target {
50486         &self.inner
50487     }
50488 }
50489 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50490     fn deref_mut(&mut self) -> &mut Self::Target {
50491         &mut self.inner
50492     }
50493 }
50494 impl<'a> PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
integer_dot_product8_bit_unsigned_accelerated( mut self, integer_dot_product8_bit_unsigned_accelerated: bool, ) -> Self50495     pub fn integer_dot_product8_bit_unsigned_accelerated(
50496         mut self,
50497         integer_dot_product8_bit_unsigned_accelerated: bool,
50498     ) -> Self {
50499         self.inner.integer_dot_product8_bit_unsigned_accelerated =
50500             integer_dot_product8_bit_unsigned_accelerated.into();
50501         self
50502     }
integer_dot_product8_bit_signed_accelerated( mut self, integer_dot_product8_bit_signed_accelerated: bool, ) -> Self50503     pub fn integer_dot_product8_bit_signed_accelerated(
50504         mut self,
50505         integer_dot_product8_bit_signed_accelerated: bool,
50506     ) -> Self {
50507         self.inner.integer_dot_product8_bit_signed_accelerated =
50508             integer_dot_product8_bit_signed_accelerated.into();
50509         self
50510     }
integer_dot_product8_bit_mixed_signedness_accelerated( mut self, integer_dot_product8_bit_mixed_signedness_accelerated: bool, ) -> Self50511     pub fn integer_dot_product8_bit_mixed_signedness_accelerated(
50512         mut self,
50513         integer_dot_product8_bit_mixed_signedness_accelerated: bool,
50514     ) -> Self {
50515         self.inner
50516             .integer_dot_product8_bit_mixed_signedness_accelerated =
50517             integer_dot_product8_bit_mixed_signedness_accelerated.into();
50518         self
50519     }
integer_dot_product4x8_bit_packed_unsigned_accelerated( mut self, integer_dot_product4x8_bit_packed_unsigned_accelerated: bool, ) -> Self50520     pub fn integer_dot_product4x8_bit_packed_unsigned_accelerated(
50521         mut self,
50522         integer_dot_product4x8_bit_packed_unsigned_accelerated: bool,
50523     ) -> Self {
50524         self.inner
50525             .integer_dot_product4x8_bit_packed_unsigned_accelerated =
50526             integer_dot_product4x8_bit_packed_unsigned_accelerated.into();
50527         self
50528     }
integer_dot_product4x8_bit_packed_signed_accelerated( mut self, integer_dot_product4x8_bit_packed_signed_accelerated: bool, ) -> Self50529     pub fn integer_dot_product4x8_bit_packed_signed_accelerated(
50530         mut self,
50531         integer_dot_product4x8_bit_packed_signed_accelerated: bool,
50532     ) -> Self {
50533         self.inner
50534             .integer_dot_product4x8_bit_packed_signed_accelerated =
50535             integer_dot_product4x8_bit_packed_signed_accelerated.into();
50536         self
50537     }
integer_dot_product4x8_bit_packed_mixed_signedness_accelerated( mut self, integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: bool, ) -> Self50538     pub fn integer_dot_product4x8_bit_packed_mixed_signedness_accelerated(
50539         mut self,
50540         integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: bool,
50541     ) -> Self {
50542         self.inner
50543             .integer_dot_product4x8_bit_packed_mixed_signedness_accelerated =
50544             integer_dot_product4x8_bit_packed_mixed_signedness_accelerated.into();
50545         self
50546     }
integer_dot_product16_bit_unsigned_accelerated( mut self, integer_dot_product16_bit_unsigned_accelerated: bool, ) -> Self50547     pub fn integer_dot_product16_bit_unsigned_accelerated(
50548         mut self,
50549         integer_dot_product16_bit_unsigned_accelerated: bool,
50550     ) -> Self {
50551         self.inner.integer_dot_product16_bit_unsigned_accelerated =
50552             integer_dot_product16_bit_unsigned_accelerated.into();
50553         self
50554     }
integer_dot_product16_bit_signed_accelerated( mut self, integer_dot_product16_bit_signed_accelerated: bool, ) -> Self50555     pub fn integer_dot_product16_bit_signed_accelerated(
50556         mut self,
50557         integer_dot_product16_bit_signed_accelerated: bool,
50558     ) -> Self {
50559         self.inner.integer_dot_product16_bit_signed_accelerated =
50560             integer_dot_product16_bit_signed_accelerated.into();
50561         self
50562     }
integer_dot_product16_bit_mixed_signedness_accelerated( mut self, integer_dot_product16_bit_mixed_signedness_accelerated: bool, ) -> Self50563     pub fn integer_dot_product16_bit_mixed_signedness_accelerated(
50564         mut self,
50565         integer_dot_product16_bit_mixed_signedness_accelerated: bool,
50566     ) -> Self {
50567         self.inner
50568             .integer_dot_product16_bit_mixed_signedness_accelerated =
50569             integer_dot_product16_bit_mixed_signedness_accelerated.into();
50570         self
50571     }
integer_dot_product32_bit_unsigned_accelerated( mut self, integer_dot_product32_bit_unsigned_accelerated: bool, ) -> Self50572     pub fn integer_dot_product32_bit_unsigned_accelerated(
50573         mut self,
50574         integer_dot_product32_bit_unsigned_accelerated: bool,
50575     ) -> Self {
50576         self.inner.integer_dot_product32_bit_unsigned_accelerated =
50577             integer_dot_product32_bit_unsigned_accelerated.into();
50578         self
50579     }
integer_dot_product32_bit_signed_accelerated( mut self, integer_dot_product32_bit_signed_accelerated: bool, ) -> Self50580     pub fn integer_dot_product32_bit_signed_accelerated(
50581         mut self,
50582         integer_dot_product32_bit_signed_accelerated: bool,
50583     ) -> Self {
50584         self.inner.integer_dot_product32_bit_signed_accelerated =
50585             integer_dot_product32_bit_signed_accelerated.into();
50586         self
50587     }
integer_dot_product32_bit_mixed_signedness_accelerated( mut self, integer_dot_product32_bit_mixed_signedness_accelerated: bool, ) -> Self50588     pub fn integer_dot_product32_bit_mixed_signedness_accelerated(
50589         mut self,
50590         integer_dot_product32_bit_mixed_signedness_accelerated: bool,
50591     ) -> Self {
50592         self.inner
50593             .integer_dot_product32_bit_mixed_signedness_accelerated =
50594             integer_dot_product32_bit_mixed_signedness_accelerated.into();
50595         self
50596     }
integer_dot_product64_bit_unsigned_accelerated( mut self, integer_dot_product64_bit_unsigned_accelerated: bool, ) -> Self50597     pub fn integer_dot_product64_bit_unsigned_accelerated(
50598         mut self,
50599         integer_dot_product64_bit_unsigned_accelerated: bool,
50600     ) -> Self {
50601         self.inner.integer_dot_product64_bit_unsigned_accelerated =
50602             integer_dot_product64_bit_unsigned_accelerated.into();
50603         self
50604     }
integer_dot_product64_bit_signed_accelerated( mut self, integer_dot_product64_bit_signed_accelerated: bool, ) -> Self50605     pub fn integer_dot_product64_bit_signed_accelerated(
50606         mut self,
50607         integer_dot_product64_bit_signed_accelerated: bool,
50608     ) -> Self {
50609         self.inner.integer_dot_product64_bit_signed_accelerated =
50610             integer_dot_product64_bit_signed_accelerated.into();
50611         self
50612     }
integer_dot_product64_bit_mixed_signedness_accelerated( mut self, integer_dot_product64_bit_mixed_signedness_accelerated: bool, ) -> Self50613     pub fn integer_dot_product64_bit_mixed_signedness_accelerated(
50614         mut self,
50615         integer_dot_product64_bit_mixed_signedness_accelerated: bool,
50616     ) -> Self {
50617         self.inner
50618             .integer_dot_product64_bit_mixed_signedness_accelerated =
50619             integer_dot_product64_bit_mixed_signedness_accelerated.into();
50620         self
50621     }
integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: bool, ) -> Self50622     pub fn integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated(
50623         mut self,
50624         integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: bool,
50625     ) -> Self {
50626         self.inner
50627             .integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated =
50628             integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated.into();
50629         self
50630     }
integer_dot_product_accumulating_saturating8_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating8_bit_signed_accelerated: bool, ) -> Self50631     pub fn integer_dot_product_accumulating_saturating8_bit_signed_accelerated(
50632         mut self,
50633         integer_dot_product_accumulating_saturating8_bit_signed_accelerated: bool,
50634     ) -> Self {
50635         self.inner
50636             .integer_dot_product_accumulating_saturating8_bit_signed_accelerated =
50637             integer_dot_product_accumulating_saturating8_bit_signed_accelerated.into();
50638         self
50639     }
integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: bool, ) -> Self50640     pub fn integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated(
50641         mut self,
50642         integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: bool,
50643     ) -> Self {
50644         self.inner
50645             .integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated =
50646             integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated.into();
50647         self
50648     }
integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: bool, ) -> Self50649     pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated(
50650         mut self,
50651         integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: bool,
50652     ) -> Self {
50653         self.inner
50654             .integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated =
50655             integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated.into();
50656         self
50657     }
integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated( mut self, integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: bool, ) -> Self50658     pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated(
50659         mut self,
50660         integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: bool,
50661     ) -> Self {
50662         self.inner
50663             .integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated =
50664             integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated.into();
50665         self
50666     }
integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated : bool, ) -> Self50667     pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated(
50668         mut self,
50669         integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated : bool,
50670     ) -> Self {
50671         self . inner . integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated = integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated . into () ;
50672         self
50673     }
integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: bool, ) -> Self50674     pub fn integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated(
50675         mut self,
50676         integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: bool,
50677     ) -> Self {
50678         self.inner
50679             .integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated =
50680             integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated.into();
50681         self
50682     }
integer_dot_product_accumulating_saturating16_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating16_bit_signed_accelerated: bool, ) -> Self50683     pub fn integer_dot_product_accumulating_saturating16_bit_signed_accelerated(
50684         mut self,
50685         integer_dot_product_accumulating_saturating16_bit_signed_accelerated: bool,
50686     ) -> Self {
50687         self.inner
50688             .integer_dot_product_accumulating_saturating16_bit_signed_accelerated =
50689             integer_dot_product_accumulating_saturating16_bit_signed_accelerated.into();
50690         self
50691     }
integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: bool, ) -> Self50692     pub fn integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated(
50693         mut self,
50694         integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: bool,
50695     ) -> Self {
50696         self.inner
50697             .integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated =
50698             integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated.into();
50699         self
50700     }
integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: bool, ) -> Self50701     pub fn integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated(
50702         mut self,
50703         integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: bool,
50704     ) -> Self {
50705         self.inner
50706             .integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated =
50707             integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated.into();
50708         self
50709     }
integer_dot_product_accumulating_saturating32_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating32_bit_signed_accelerated: bool, ) -> Self50710     pub fn integer_dot_product_accumulating_saturating32_bit_signed_accelerated(
50711         mut self,
50712         integer_dot_product_accumulating_saturating32_bit_signed_accelerated: bool,
50713     ) -> Self {
50714         self.inner
50715             .integer_dot_product_accumulating_saturating32_bit_signed_accelerated =
50716             integer_dot_product_accumulating_saturating32_bit_signed_accelerated.into();
50717         self
50718     }
integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: bool, ) -> Self50719     pub fn integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated(
50720         mut self,
50721         integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: bool,
50722     ) -> Self {
50723         self.inner
50724             .integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated =
50725             integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated.into();
50726         self
50727     }
integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: bool, ) -> Self50728     pub fn integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated(
50729         mut self,
50730         integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: bool,
50731     ) -> Self {
50732         self.inner
50733             .integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated =
50734             integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated.into();
50735         self
50736     }
integer_dot_product_accumulating_saturating64_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating64_bit_signed_accelerated: bool, ) -> Self50737     pub fn integer_dot_product_accumulating_saturating64_bit_signed_accelerated(
50738         mut self,
50739         integer_dot_product_accumulating_saturating64_bit_signed_accelerated: bool,
50740     ) -> Self {
50741         self.inner
50742             .integer_dot_product_accumulating_saturating64_bit_signed_accelerated =
50743             integer_dot_product_accumulating_saturating64_bit_signed_accelerated.into();
50744         self
50745     }
integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: bool, ) -> Self50746     pub fn integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated(
50747         mut self,
50748         integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: bool,
50749     ) -> Self {
50750         self.inner
50751             .integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated =
50752             integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated.into();
50753         self
50754     }
50755     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50756     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50757     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderIntegerDotProductPropertiesKHR50758     pub fn build(self) -> PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
50759         self.inner
50760     }
50761 }
50762 #[repr(C)]
50763 #[derive(Copy, Clone, Debug)]
50764 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>"]
50765 pub struct PhysicalDeviceDrmPropertiesEXT {
50766     pub s_type: StructureType,
50767     pub p_next: *mut c_void,
50768     pub has_primary: Bool32,
50769     pub has_render: Bool32,
50770     pub primary_major: i64,
50771     pub primary_minor: i64,
50772     pub render_major: i64,
50773     pub render_minor: i64,
50774 }
50775 impl ::std::default::Default for PhysicalDeviceDrmPropertiesEXT {
default() -> PhysicalDeviceDrmPropertiesEXT50776     fn default() -> PhysicalDeviceDrmPropertiesEXT {
50777         PhysicalDeviceDrmPropertiesEXT {
50778             s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
50779             p_next: ::std::ptr::null_mut(),
50780             has_primary: Bool32::default(),
50781             has_render: Bool32::default(),
50782             primary_major: i64::default(),
50783             primary_minor: i64::default(),
50784             render_major: i64::default(),
50785             render_minor: i64::default(),
50786         }
50787     }
50788 }
50789 impl PhysicalDeviceDrmPropertiesEXT {
builder<'a>() -> PhysicalDeviceDrmPropertiesEXTBuilder<'a>50790     pub fn builder<'a>() -> PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
50791         PhysicalDeviceDrmPropertiesEXTBuilder {
50792             inner: PhysicalDeviceDrmPropertiesEXT::default(),
50793             marker: ::std::marker::PhantomData,
50794         }
50795     }
50796 }
50797 #[repr(transparent)]
50798 pub struct PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
50799     inner: PhysicalDeviceDrmPropertiesEXT,
50800     marker: ::std::marker::PhantomData<&'a ()>,
50801 }
50802 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDrmPropertiesEXTBuilder<'_> {}
50803 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDrmPropertiesEXT {}
50804 impl<'a> ::std::ops::Deref for PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
50805     type Target = PhysicalDeviceDrmPropertiesEXT;
deref(&self) -> &Self::Target50806     fn deref(&self) -> &Self::Target {
50807         &self.inner
50808     }
50809 }
50810 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50811     fn deref_mut(&mut self) -> &mut Self::Target {
50812         &mut self.inner
50813     }
50814 }
50815 impl<'a> PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
has_primary(mut self, has_primary: bool) -> Self50816     pub fn has_primary(mut self, has_primary: bool) -> Self {
50817         self.inner.has_primary = has_primary.into();
50818         self
50819     }
has_render(mut self, has_render: bool) -> Self50820     pub fn has_render(mut self, has_render: bool) -> Self {
50821         self.inner.has_render = has_render.into();
50822         self
50823     }
primary_major(mut self, primary_major: i64) -> Self50824     pub fn primary_major(mut self, primary_major: i64) -> Self {
50825         self.inner.primary_major = primary_major;
50826         self
50827     }
primary_minor(mut self, primary_minor: i64) -> Self50828     pub fn primary_minor(mut self, primary_minor: i64) -> Self {
50829         self.inner.primary_minor = primary_minor;
50830         self
50831     }
render_major(mut self, render_major: i64) -> Self50832     pub fn render_major(mut self, render_major: i64) -> Self {
50833         self.inner.render_major = render_major;
50834         self
50835     }
render_minor(mut self, render_minor: i64) -> Self50836     pub fn render_minor(mut self, render_minor: i64) -> Self {
50837         self.inner.render_minor = render_minor;
50838         self
50839     }
50840     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50841     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50842     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDrmPropertiesEXT50843     pub fn build(self) -> PhysicalDeviceDrmPropertiesEXT {
50844         self.inner
50845     }
50846 }
50847 #[repr(C)]
50848 #[derive(Copy, Clone, Debug)]
50849 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>"]
50850 pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
50851     pub s_type: StructureType,
50852     pub p_next: *mut c_void,
50853     pub ray_tracing_motion_blur: Bool32,
50854     pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
50855 }
50856 impl ::std::default::Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
default() -> PhysicalDeviceRayTracingMotionBlurFeaturesNV50857     fn default() -> PhysicalDeviceRayTracingMotionBlurFeaturesNV {
50858         PhysicalDeviceRayTracingMotionBlurFeaturesNV {
50859             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
50860             p_next: ::std::ptr::null_mut(),
50861             ray_tracing_motion_blur: Bool32::default(),
50862             ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
50863         }
50864     }
50865 }
50866 impl PhysicalDeviceRayTracingMotionBlurFeaturesNV {
builder<'a>() -> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a>50867     pub fn builder<'a>() -> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
50868         PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder {
50869             inner: PhysicalDeviceRayTracingMotionBlurFeaturesNV::default(),
50870             marker: ::std::marker::PhantomData,
50871         }
50872     }
50873 }
50874 #[repr(transparent)]
50875 pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
50876     inner: PhysicalDeviceRayTracingMotionBlurFeaturesNV,
50877     marker: ::std::marker::PhantomData<&'a ()>,
50878 }
50879 unsafe impl ExtendsPhysicalDeviceFeatures2
50880     for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'_>
50881 {
50882 }
50883 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
50884 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'_> {}
50885 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
50886 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
50887     type Target = PhysicalDeviceRayTracingMotionBlurFeaturesNV;
deref(&self) -> &Self::Target50888     fn deref(&self) -> &Self::Target {
50889         &self.inner
50890     }
50891 }
50892 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50893     fn deref_mut(&mut self) -> &mut Self::Target {
50894         &mut self.inner
50895     }
50896 }
50897 impl<'a> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
ray_tracing_motion_blur(mut self, ray_tracing_motion_blur: bool) -> Self50898     pub fn ray_tracing_motion_blur(mut self, ray_tracing_motion_blur: bool) -> Self {
50899         self.inner.ray_tracing_motion_blur = ray_tracing_motion_blur.into();
50900         self
50901     }
ray_tracing_motion_blur_pipeline_trace_rays_indirect( mut self, ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool, ) -> Self50902     pub fn ray_tracing_motion_blur_pipeline_trace_rays_indirect(
50903         mut self,
50904         ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool,
50905     ) -> Self {
50906         self.inner
50907             .ray_tracing_motion_blur_pipeline_trace_rays_indirect =
50908             ray_tracing_motion_blur_pipeline_trace_rays_indirect.into();
50909         self
50910     }
50911     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50912     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50913     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRayTracingMotionBlurFeaturesNV50914     pub fn build(self) -> PhysicalDeviceRayTracingMotionBlurFeaturesNV {
50915         self.inner
50916     }
50917 }
50918 #[repr(C)]
50919 #[derive(Copy, Clone)]
50920 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryMotionTrianglesDataNV.html>"]
50921 pub struct AccelerationStructureGeometryMotionTrianglesDataNV {
50922     pub s_type: StructureType,
50923     pub p_next: *const c_void,
50924     pub vertex_data: DeviceOrHostAddressConstKHR,
50925 }
50926 impl fmt::Debug for AccelerationStructureGeometryMotionTrianglesDataNV {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result50927     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
50928         fmt.debug_struct("AccelerationStructureGeometryMotionTrianglesDataNV")
50929             .field("s_type", &self.s_type)
50930             .field("p_next", &self.p_next)
50931             .field("vertex_data", &"union")
50932             .finish()
50933     }
50934 }
50935 impl ::std::default::Default for AccelerationStructureGeometryMotionTrianglesDataNV {
default() -> AccelerationStructureGeometryMotionTrianglesDataNV50936     fn default() -> AccelerationStructureGeometryMotionTrianglesDataNV {
50937         AccelerationStructureGeometryMotionTrianglesDataNV {
50938             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV,
50939             p_next: ::std::ptr::null(),
50940             vertex_data: DeviceOrHostAddressConstKHR::default(),
50941         }
50942     }
50943 }
50944 impl AccelerationStructureGeometryMotionTrianglesDataNV {
builder<'a>() -> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a>50945     pub fn builder<'a>() -> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
50946         AccelerationStructureGeometryMotionTrianglesDataNVBuilder {
50947             inner: AccelerationStructureGeometryMotionTrianglesDataNV::default(),
50948             marker: ::std::marker::PhantomData,
50949         }
50950     }
50951 }
50952 #[repr(transparent)]
50953 pub struct AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
50954     inner: AccelerationStructureGeometryMotionTrianglesDataNV,
50955     marker: ::std::marker::PhantomData<&'a ()>,
50956 }
50957 unsafe impl ExtendsAccelerationStructureGeometryTrianglesDataKHR
50958     for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'_>
50959 {
50960 }
50961 unsafe impl ExtendsAccelerationStructureGeometryTrianglesDataKHR
50962     for AccelerationStructureGeometryMotionTrianglesDataNV
50963 {
50964 }
50965 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
50966     type Target = AccelerationStructureGeometryMotionTrianglesDataNV;
deref(&self) -> &Self::Target50967     fn deref(&self) -> &Self::Target {
50968         &self.inner
50969     }
50970 }
50971 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50972     fn deref_mut(&mut self) -> &mut Self::Target {
50973         &mut self.inner
50974     }
50975 }
50976 impl<'a> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self50977     pub fn vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self {
50978         self.inner.vertex_data = vertex_data;
50979         self
50980     }
50981     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50982     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50983     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryMotionTrianglesDataNV50984     pub fn build(self) -> AccelerationStructureGeometryMotionTrianglesDataNV {
50985         self.inner
50986     }
50987 }
50988 #[repr(C)]
50989 #[derive(Copy, Clone, Debug)]
50990 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInfoNV.html>"]
50991 pub struct AccelerationStructureMotionInfoNV {
50992     pub s_type: StructureType,
50993     pub p_next: *const c_void,
50994     pub max_instances: u32,
50995     pub flags: AccelerationStructureMotionInfoFlagsNV,
50996 }
50997 impl ::std::default::Default for AccelerationStructureMotionInfoNV {
default() -> AccelerationStructureMotionInfoNV50998     fn default() -> AccelerationStructureMotionInfoNV {
50999         AccelerationStructureMotionInfoNV {
51000             s_type: StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV,
51001             p_next: ::std::ptr::null(),
51002             max_instances: u32::default(),
51003             flags: AccelerationStructureMotionInfoFlagsNV::default(),
51004         }
51005     }
51006 }
51007 impl AccelerationStructureMotionInfoNV {
builder<'a>() -> AccelerationStructureMotionInfoNVBuilder<'a>51008     pub fn builder<'a>() -> AccelerationStructureMotionInfoNVBuilder<'a> {
51009         AccelerationStructureMotionInfoNVBuilder {
51010             inner: AccelerationStructureMotionInfoNV::default(),
51011             marker: ::std::marker::PhantomData,
51012         }
51013     }
51014 }
51015 #[repr(transparent)]
51016 pub struct AccelerationStructureMotionInfoNVBuilder<'a> {
51017     inner: AccelerationStructureMotionInfoNV,
51018     marker: ::std::marker::PhantomData<&'a ()>,
51019 }
51020 unsafe impl ExtendsAccelerationStructureCreateInfoKHR
51021     for AccelerationStructureMotionInfoNVBuilder<'_>
51022 {
51023 }
51024 unsafe impl ExtendsAccelerationStructureCreateInfoKHR for AccelerationStructureMotionInfoNV {}
51025 impl<'a> ::std::ops::Deref for AccelerationStructureMotionInfoNVBuilder<'a> {
51026     type Target = AccelerationStructureMotionInfoNV;
deref(&self) -> &Self::Target51027     fn deref(&self) -> &Self::Target {
51028         &self.inner
51029     }
51030 }
51031 impl<'a> ::std::ops::DerefMut for AccelerationStructureMotionInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51032     fn deref_mut(&mut self) -> &mut Self::Target {
51033         &mut self.inner
51034     }
51035 }
51036 impl<'a> AccelerationStructureMotionInfoNVBuilder<'a> {
max_instances(mut self, max_instances: u32) -> Self51037     pub fn max_instances(mut self, max_instances: u32) -> Self {
51038         self.inner.max_instances = max_instances;
51039         self
51040     }
flags(mut self, flags: AccelerationStructureMotionInfoFlagsNV) -> Self51041     pub fn flags(mut self, flags: AccelerationStructureMotionInfoFlagsNV) -> Self {
51042         self.inner.flags = flags;
51043         self
51044     }
51045     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51046     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51047     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureMotionInfoNV51048     pub fn build(self) -> AccelerationStructureMotionInfoNV {
51049         self.inner
51050     }
51051 }
51052 #[repr(C)]
51053 #[derive(Copy, Clone, Default, Debug)]
51054 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSRTDataNV.html>"]
51055 pub struct SRTDataNV {
51056     pub sx: f32,
51057     pub a: f32,
51058     pub b: f32,
51059     pub pvx: f32,
51060     pub sy: f32,
51061     pub c: f32,
51062     pub pvy: f32,
51063     pub sz: f32,
51064     pub pvz: f32,
51065     pub qx: f32,
51066     pub qy: f32,
51067     pub qz: f32,
51068     pub qw: f32,
51069     pub tx: f32,
51070     pub ty: f32,
51071     pub tz: f32,
51072 }
51073 impl SRTDataNV {
builder<'a>() -> SRTDataNVBuilder<'a>51074     pub fn builder<'a>() -> SRTDataNVBuilder<'a> {
51075         SRTDataNVBuilder {
51076             inner: SRTDataNV::default(),
51077             marker: ::std::marker::PhantomData,
51078         }
51079     }
51080 }
51081 #[repr(transparent)]
51082 pub struct SRTDataNVBuilder<'a> {
51083     inner: SRTDataNV,
51084     marker: ::std::marker::PhantomData<&'a ()>,
51085 }
51086 impl<'a> ::std::ops::Deref for SRTDataNVBuilder<'a> {
51087     type Target = SRTDataNV;
deref(&self) -> &Self::Target51088     fn deref(&self) -> &Self::Target {
51089         &self.inner
51090     }
51091 }
51092 impl<'a> ::std::ops::DerefMut for SRTDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51093     fn deref_mut(&mut self) -> &mut Self::Target {
51094         &mut self.inner
51095     }
51096 }
51097 impl<'a> SRTDataNVBuilder<'a> {
sx(mut self, sx: f32) -> Self51098     pub fn sx(mut self, sx: f32) -> Self {
51099         self.inner.sx = sx;
51100         self
51101     }
a(mut self, a: f32) -> Self51102     pub fn a(mut self, a: f32) -> Self {
51103         self.inner.a = a;
51104         self
51105     }
b(mut self, b: f32) -> Self51106     pub fn b(mut self, b: f32) -> Self {
51107         self.inner.b = b;
51108         self
51109     }
pvx(mut self, pvx: f32) -> Self51110     pub fn pvx(mut self, pvx: f32) -> Self {
51111         self.inner.pvx = pvx;
51112         self
51113     }
sy(mut self, sy: f32) -> Self51114     pub fn sy(mut self, sy: f32) -> Self {
51115         self.inner.sy = sy;
51116         self
51117     }
c(mut self, c: f32) -> Self51118     pub fn c(mut self, c: f32) -> Self {
51119         self.inner.c = c;
51120         self
51121     }
pvy(mut self, pvy: f32) -> Self51122     pub fn pvy(mut self, pvy: f32) -> Self {
51123         self.inner.pvy = pvy;
51124         self
51125     }
sz(mut self, sz: f32) -> Self51126     pub fn sz(mut self, sz: f32) -> Self {
51127         self.inner.sz = sz;
51128         self
51129     }
pvz(mut self, pvz: f32) -> Self51130     pub fn pvz(mut self, pvz: f32) -> Self {
51131         self.inner.pvz = pvz;
51132         self
51133     }
qx(mut self, qx: f32) -> Self51134     pub fn qx(mut self, qx: f32) -> Self {
51135         self.inner.qx = qx;
51136         self
51137     }
qy(mut self, qy: f32) -> Self51138     pub fn qy(mut self, qy: f32) -> Self {
51139         self.inner.qy = qy;
51140         self
51141     }
qz(mut self, qz: f32) -> Self51142     pub fn qz(mut self, qz: f32) -> Self {
51143         self.inner.qz = qz;
51144         self
51145     }
qw(mut self, qw: f32) -> Self51146     pub fn qw(mut self, qw: f32) -> Self {
51147         self.inner.qw = qw;
51148         self
51149     }
tx(mut self, tx: f32) -> Self51150     pub fn tx(mut self, tx: f32) -> Self {
51151         self.inner.tx = tx;
51152         self
51153     }
ty(mut self, ty: f32) -> Self51154     pub fn ty(mut self, ty: f32) -> Self {
51155         self.inner.ty = ty;
51156         self
51157     }
tz(mut self, tz: f32) -> Self51158     pub fn tz(mut self, tz: f32) -> Self {
51159         self.inner.tz = tz;
51160         self
51161     }
51162     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51163     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51164     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SRTDataNV51165     pub fn build(self) -> SRTDataNV {
51166         self.inner
51167     }
51168 }
51169 #[repr(C)]
51170 #[derive(Copy, Clone)]
51171 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureSRTMotionInstanceNV.html>"]
51172 pub struct AccelerationStructureSRTMotionInstanceNV {
51173     pub transform_t0: SRTDataNV,
51174     pub transform_t1: SRTDataNV,
51175     pub instance_custom_index_and_mask: u32,
51176     pub instance_shader_binding_table_record_offset_and_flags: u32,
51177     pub acceleration_structure_reference: AccelerationStructureReferenceKHR,
51178 }
51179 #[repr(C)]
51180 #[derive(Copy, Clone)]
51181 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/AccelerationStructureMatrixMotionInstanceNV.html>"]
51182 pub struct AccelerationStructureMatrixMotionInstanceNV {
51183     pub transform_t0: TransformMatrixKHR,
51184     pub transform_t1: TransformMatrixKHR,
51185     pub instance_custom_index_and_mask: u32,
51186     pub instance_shader_binding_table_record_offset_and_flags: u32,
51187     pub acceleration_structure_reference: AccelerationStructureReferenceKHR,
51188 }
51189 #[repr(C)]
51190 #[derive(Copy, Clone)]
51191 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInstanceDataNV.html>"]
51192 pub union AccelerationStructureMotionInstanceDataNV {
51193     pub static_instance: AccelerationStructureInstanceKHR,
51194     pub matrix_motion_instance: AccelerationStructureMatrixMotionInstanceNV,
51195     pub srt_motion_instance: AccelerationStructureSRTMotionInstanceNV,
51196 }
51197 impl ::std::default::Default for AccelerationStructureMotionInstanceDataNV {
default() -> AccelerationStructureMotionInstanceDataNV51198     fn default() -> AccelerationStructureMotionInstanceDataNV {
51199         unsafe { ::std::mem::zeroed() }
51200     }
51201 }
51202 #[repr(C)]
51203 #[derive(Copy, Clone, Default)]
51204 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInstanceNV.html>"]
51205 pub struct AccelerationStructureMotionInstanceNV {
51206     pub ty: AccelerationStructureMotionInstanceTypeNV,
51207     pub flags: AccelerationStructureMotionInstanceFlagsNV,
51208     pub data: AccelerationStructureMotionInstanceDataNV,
51209 }
51210 impl fmt::Debug for AccelerationStructureMotionInstanceNV {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result51211     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
51212         fmt.debug_struct("AccelerationStructureMotionInstanceNV")
51213             .field("ty", &self.ty)
51214             .field("flags", &self.flags)
51215             .field("data", &"union")
51216             .finish()
51217     }
51218 }
51219 impl AccelerationStructureMotionInstanceNV {
builder<'a>() -> AccelerationStructureMotionInstanceNVBuilder<'a>51220     pub fn builder<'a>() -> AccelerationStructureMotionInstanceNVBuilder<'a> {
51221         AccelerationStructureMotionInstanceNVBuilder {
51222             inner: AccelerationStructureMotionInstanceNV::default(),
51223             marker: ::std::marker::PhantomData,
51224         }
51225     }
51226 }
51227 #[repr(transparent)]
51228 pub struct AccelerationStructureMotionInstanceNVBuilder<'a> {
51229     inner: AccelerationStructureMotionInstanceNV,
51230     marker: ::std::marker::PhantomData<&'a ()>,
51231 }
51232 impl<'a> ::std::ops::Deref for AccelerationStructureMotionInstanceNVBuilder<'a> {
51233     type Target = AccelerationStructureMotionInstanceNV;
deref(&self) -> &Self::Target51234     fn deref(&self) -> &Self::Target {
51235         &self.inner
51236     }
51237 }
51238 impl<'a> ::std::ops::DerefMut for AccelerationStructureMotionInstanceNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51239     fn deref_mut(&mut self) -> &mut Self::Target {
51240         &mut self.inner
51241     }
51242 }
51243 impl<'a> AccelerationStructureMotionInstanceNVBuilder<'a> {
ty(mut self, ty: AccelerationStructureMotionInstanceTypeNV) -> Self51244     pub fn ty(mut self, ty: AccelerationStructureMotionInstanceTypeNV) -> Self {
51245         self.inner.ty = ty;
51246         self
51247     }
flags(mut self, flags: AccelerationStructureMotionInstanceFlagsNV) -> Self51248     pub fn flags(mut self, flags: AccelerationStructureMotionInstanceFlagsNV) -> Self {
51249         self.inner.flags = flags;
51250         self
51251     }
data(mut self, data: AccelerationStructureMotionInstanceDataNV) -> Self51252     pub fn data(mut self, data: AccelerationStructureMotionInstanceDataNV) -> Self {
51253         self.inner.data = data;
51254         self
51255     }
51256     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51257     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51258     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureMotionInstanceNV51259     pub fn build(self) -> AccelerationStructureMotionInstanceNV {
51260         self.inner
51261     }
51262 }
51263 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRemoteAddressNV.html>"]
51264 pub type RemoteAddressNV = c_void;
51265 #[repr(C)]
51266 #[derive(Copy, Clone, Debug)]
51267 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetRemoteAddressInfoNV.html>"]
51268 pub struct MemoryGetRemoteAddressInfoNV {
51269     pub s_type: StructureType,
51270     pub p_next: *const c_void,
51271     pub memory: DeviceMemory,
51272     pub handle_type: ExternalMemoryHandleTypeFlags,
51273 }
51274 impl ::std::default::Default for MemoryGetRemoteAddressInfoNV {
default() -> MemoryGetRemoteAddressInfoNV51275     fn default() -> MemoryGetRemoteAddressInfoNV {
51276         MemoryGetRemoteAddressInfoNV {
51277             s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
51278             p_next: ::std::ptr::null(),
51279             memory: DeviceMemory::default(),
51280             handle_type: ExternalMemoryHandleTypeFlags::default(),
51281         }
51282     }
51283 }
51284 impl MemoryGetRemoteAddressInfoNV {
builder<'a>() -> MemoryGetRemoteAddressInfoNVBuilder<'a>51285     pub fn builder<'a>() -> MemoryGetRemoteAddressInfoNVBuilder<'a> {
51286         MemoryGetRemoteAddressInfoNVBuilder {
51287             inner: MemoryGetRemoteAddressInfoNV::default(),
51288             marker: ::std::marker::PhantomData,
51289         }
51290     }
51291 }
51292 #[repr(transparent)]
51293 pub struct MemoryGetRemoteAddressInfoNVBuilder<'a> {
51294     inner: MemoryGetRemoteAddressInfoNV,
51295     marker: ::std::marker::PhantomData<&'a ()>,
51296 }
51297 impl<'a> ::std::ops::Deref for MemoryGetRemoteAddressInfoNVBuilder<'a> {
51298     type Target = MemoryGetRemoteAddressInfoNV;
deref(&self) -> &Self::Target51299     fn deref(&self) -> &Self::Target {
51300         &self.inner
51301     }
51302 }
51303 impl<'a> ::std::ops::DerefMut for MemoryGetRemoteAddressInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51304     fn deref_mut(&mut self) -> &mut Self::Target {
51305         &mut self.inner
51306     }
51307 }
51308 impl<'a> MemoryGetRemoteAddressInfoNVBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self51309     pub fn memory(mut self, memory: DeviceMemory) -> Self {
51310         self.inner.memory = memory;
51311         self
51312     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self51313     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
51314         self.inner.handle_type = handle_type;
51315         self
51316     }
51317     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51318     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51319     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetRemoteAddressInfoNV51320     pub fn build(self) -> MemoryGetRemoteAddressInfoNV {
51321         self.inner
51322     }
51323 }
51324