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::prelude::*;
8 use crate::vk::{ptr_chain_iter, Handle};
9 use std::fmt;
10 use std::os::raw::*;
11 #[deprecated = "This define is deprecated. VK_MAKE_API_VERSION should be used instead."]
12 #[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) -> u3213 pub const fn make_version(major: u32, minor: u32, patch: u32) -> u32 {
14     ((major) << 22) | ((minor) << 12) | (patch)
15 }
16 #[deprecated = "This define is deprecated. VK_API_VERSION_MAJOR should be used instead."]
17 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_VERSION_MAJOR.html>"]
version_major(version: u32) -> u3218 pub const fn version_major(version: u32) -> u32 {
19     (version) >> 22
20 }
21 #[deprecated = "This define is deprecated. VK_API_VERSION_MINOR should be used instead."]
22 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_VERSION_MINOR.html>"]
version_minor(version: u32) -> u3223 pub const fn version_minor(version: u32) -> u32 {
24     ((version) >> 12) & 0x3ffu32
25 }
26 #[deprecated = "This define is deprecated. VK_API_VERSION_PATCH should be used instead."]
27 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_VERSION_PATCH.html>"]
version_patch(version: u32) -> u3228 pub const fn version_patch(version: u32) -> u32 {
29     (version) & 0xfffu32
30 }
31 #[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) -> u3232 pub const fn make_api_version(variant: u32, major: u32, minor: u32, patch: u32) -> u32 {
33     ((variant) << 29) | ((major) << 22) | ((minor) << 12) | (patch)
34 }
35 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_VARIANT.html>"]
api_version_variant(version: u32) -> u3236 pub const fn api_version_variant(version: u32) -> u32 {
37     (version) >> 29
38 }
39 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_MAJOR.html>"]
api_version_major(version: u32) -> u3240 pub const fn api_version_major(version: u32) -> u32 {
41     ((version) >> 22) & 0x7fu32
42 }
43 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_MINOR.html>"]
api_version_minor(version: u32) -> u3244 pub const fn api_version_minor(version: u32) -> u32 {
45     ((version) >> 12) & 0x3ffu32
46 }
47 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_PATCH.html>"]
api_version_patch(version: u32) -> u3248 pub const fn api_version_patch(version: u32) -> u32 {
49     (version) & 0xfffu32
50 }
51 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_1_0.html>"]
52 pub const API_VERSION_1_0: u32 = make_api_version(0, 1, 0, 0);
53 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_1_1.html>"]
54 pub const API_VERSION_1_1: u32 = make_api_version(0, 1, 1, 0);
55 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_API_VERSION_1_2.html>"]
56 pub const API_VERSION_1_2: u32 = make_api_version(0, 1, 2, 0);
57 pub const HEADER_VERSION: u32 = 203u32;
58 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_HEADER_VERSION_COMPLETE.html>"]
59 pub const HEADER_VERSION_COMPLETE: u32 = make_api_version(0, 1, 2, HEADER_VERSION);
60 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleMask.html>"]
61 pub type SampleMask = u32;
62 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBool32.html>"]
63 pub type Bool32 = u32;
64 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFlags.html>"]
65 pub type Flags = u32;
66 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFlags64.html>"]
67 pub type Flags64 = u64;
68 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceSize.html>"]
69 pub type DeviceSize = u64;
70 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceAddress.html>"]
71 pub type DeviceAddress = u64;
72 #[repr(transparent)]
73 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
74 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolCreateFlags.html>"]
75 pub struct QueryPoolCreateFlags(pub(crate) Flags);
76 vk_bitflags_wrapped!(QueryPoolCreateFlags, Flags);
77 #[repr(transparent)]
78 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
79 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDynamicStateCreateFlags.html>"]
80 pub struct PipelineDynamicStateCreateFlags(pub(crate) Flags);
81 vk_bitflags_wrapped!(PipelineDynamicStateCreateFlags, Flags);
82 #[repr(transparent)]
83 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
84 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateFlags.html>"]
85 pub struct PipelineMultisampleStateCreateFlags(pub(crate) Flags);
86 vk_bitflags_wrapped!(PipelineMultisampleStateCreateFlags, Flags);
87 #[repr(transparent)]
88 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
89 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateCreateFlags.html>"]
90 pub struct PipelineRasterizationStateCreateFlags(pub(crate) Flags);
91 vk_bitflags_wrapped!(PipelineRasterizationStateCreateFlags, Flags);
92 #[repr(transparent)]
93 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
94 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportStateCreateFlags.html>"]
95 pub struct PipelineViewportStateCreateFlags(pub(crate) Flags);
96 vk_bitflags_wrapped!(PipelineViewportStateCreateFlags, Flags);
97 #[repr(transparent)]
98 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
99 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationStateCreateFlags.html>"]
100 pub struct PipelineTessellationStateCreateFlags(pub(crate) Flags);
101 vk_bitflags_wrapped!(PipelineTessellationStateCreateFlags, Flags);
102 #[repr(transparent)]
103 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
104 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInputAssemblyStateCreateFlags.html>"]
105 pub struct PipelineInputAssemblyStateCreateFlags(pub(crate) Flags);
106 vk_bitflags_wrapped!(PipelineInputAssemblyStateCreateFlags, Flags);
107 #[repr(transparent)]
108 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
109 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputStateCreateFlags.html>"]
110 pub struct PipelineVertexInputStateCreateFlags(pub(crate) Flags);
111 vk_bitflags_wrapped!(PipelineVertexInputStateCreateFlags, Flags);
112 #[repr(transparent)]
113 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
114 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferViewCreateFlags.html>"]
115 pub struct BufferViewCreateFlags(pub(crate) Flags);
116 vk_bitflags_wrapped!(BufferViewCreateFlags, Flags);
117 #[repr(transparent)]
118 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
119 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstanceCreateFlags.html>"]
120 pub struct InstanceCreateFlags(pub(crate) Flags);
121 vk_bitflags_wrapped!(InstanceCreateFlags, Flags);
122 #[repr(transparent)]
123 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
124 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceCreateFlags.html>"]
125 pub struct DeviceCreateFlags(pub(crate) Flags);
126 vk_bitflags_wrapped!(DeviceCreateFlags, Flags);
127 #[repr(transparent)]
128 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
129 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryMapFlags.html>"]
130 pub struct MemoryMapFlags(pub(crate) Flags);
131 vk_bitflags_wrapped!(MemoryMapFlags, Flags);
132 #[repr(transparent)]
133 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
134 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolResetFlags.html>"]
135 pub struct DescriptorPoolResetFlags(pub(crate) Flags);
136 vk_bitflags_wrapped!(DescriptorPoolResetFlags, Flags);
137 #[repr(transparent)]
138 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
139 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateCreateFlags.html>"]
140 pub struct DescriptorUpdateTemplateCreateFlags(pub(crate) Flags);
141 vk_bitflags_wrapped!(DescriptorUpdateTemplateCreateFlags, Flags);
142 #[repr(transparent)]
143 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
144 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInfoFlagsNV.html>"]
145 pub struct AccelerationStructureMotionInfoFlagsNV(pub(crate) Flags);
146 vk_bitflags_wrapped!(AccelerationStructureMotionInfoFlagsNV, Flags);
147 #[repr(transparent)]
148 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
149 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInstanceFlagsNV.html>"]
150 pub struct AccelerationStructureMotionInstanceFlagsNV(pub(crate) Flags);
151 vk_bitflags_wrapped!(AccelerationStructureMotionInstanceFlagsNV, Flags);
152 #[repr(transparent)]
153 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
154 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeCreateFlagsKHR.html>"]
155 pub struct DisplayModeCreateFlagsKHR(pub(crate) Flags);
156 vk_bitflags_wrapped!(DisplayModeCreateFlagsKHR, Flags);
157 #[repr(transparent)]
158 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
159 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplaySurfaceCreateFlagsKHR.html>"]
160 pub struct DisplaySurfaceCreateFlagsKHR(pub(crate) Flags);
161 vk_bitflags_wrapped!(DisplaySurfaceCreateFlagsKHR, Flags);
162 #[repr(transparent)]
163 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
164 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidSurfaceCreateFlagsKHR.html>"]
165 pub struct AndroidSurfaceCreateFlagsKHR(pub(crate) Flags);
166 vk_bitflags_wrapped!(AndroidSurfaceCreateFlagsKHR, Flags);
167 #[repr(transparent)]
168 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
169 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViSurfaceCreateFlagsNN.html>"]
170 pub struct ViSurfaceCreateFlagsNN(pub(crate) Flags);
171 vk_bitflags_wrapped!(ViSurfaceCreateFlagsNN, Flags);
172 #[repr(transparent)]
173 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
174 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWaylandSurfaceCreateFlagsKHR.html>"]
175 pub struct WaylandSurfaceCreateFlagsKHR(pub(crate) Flags);
176 vk_bitflags_wrapped!(WaylandSurfaceCreateFlagsKHR, Flags);
177 #[repr(transparent)]
178 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
179 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32SurfaceCreateFlagsKHR.html>"]
180 pub struct Win32SurfaceCreateFlagsKHR(pub(crate) Flags);
181 vk_bitflags_wrapped!(Win32SurfaceCreateFlagsKHR, Flags);
182 #[repr(transparent)]
183 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
184 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXlibSurfaceCreateFlagsKHR.html>"]
185 pub struct XlibSurfaceCreateFlagsKHR(pub(crate) Flags);
186 vk_bitflags_wrapped!(XlibSurfaceCreateFlagsKHR, Flags);
187 #[repr(transparent)]
188 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
189 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXcbSurfaceCreateFlagsKHR.html>"]
190 pub struct XcbSurfaceCreateFlagsKHR(pub(crate) Flags);
191 vk_bitflags_wrapped!(XcbSurfaceCreateFlagsKHR, Flags);
192 #[repr(transparent)]
193 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
194 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDirectFBSurfaceCreateFlagsEXT.html>"]
195 pub struct DirectFBSurfaceCreateFlagsEXT(pub(crate) Flags);
196 vk_bitflags_wrapped!(DirectFBSurfaceCreateFlagsEXT, Flags);
197 #[repr(transparent)]
198 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
199 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIOSSurfaceCreateFlagsMVK.html>"]
200 pub struct IOSSurfaceCreateFlagsMVK(pub(crate) Flags);
201 vk_bitflags_wrapped!(IOSSurfaceCreateFlagsMVK, Flags);
202 #[repr(transparent)]
203 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
204 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMacOSSurfaceCreateFlagsMVK.html>"]
205 pub struct MacOSSurfaceCreateFlagsMVK(pub(crate) Flags);
206 vk_bitflags_wrapped!(MacOSSurfaceCreateFlagsMVK, Flags);
207 #[repr(transparent)]
208 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
209 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMetalSurfaceCreateFlagsEXT.html>"]
210 pub struct MetalSurfaceCreateFlagsEXT(pub(crate) Flags);
211 vk_bitflags_wrapped!(MetalSurfaceCreateFlagsEXT, Flags);
212 #[repr(transparent)]
213 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
214 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImagePipeSurfaceCreateFlagsFUCHSIA.html>"]
215 pub struct ImagePipeSurfaceCreateFlagsFUCHSIA(pub(crate) Flags);
216 vk_bitflags_wrapped!(ImagePipeSurfaceCreateFlagsFUCHSIA, Flags);
217 #[repr(transparent)]
218 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
219 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStreamDescriptorSurfaceCreateFlagsGGP.html>"]
220 pub struct StreamDescriptorSurfaceCreateFlagsGGP(pub(crate) Flags);
221 vk_bitflags_wrapped!(StreamDescriptorSurfaceCreateFlagsGGP, Flags);
222 #[repr(transparent)]
223 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
224 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkHeadlessSurfaceCreateFlagsEXT.html>"]
225 pub struct HeadlessSurfaceCreateFlagsEXT(pub(crate) Flags);
226 vk_bitflags_wrapped!(HeadlessSurfaceCreateFlagsEXT, Flags);
227 #[repr(transparent)]
228 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
229 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkScreenSurfaceCreateFlagsQNX.html>"]
230 pub struct ScreenSurfaceCreateFlagsQNX(pub(crate) Flags);
231 vk_bitflags_wrapped!(ScreenSurfaceCreateFlagsQNX, Flags);
232 #[repr(transparent)]
233 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
234 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolTrimFlags.html>"]
235 pub struct CommandPoolTrimFlags(pub(crate) Flags);
236 vk_bitflags_wrapped!(CommandPoolTrimFlags, Flags);
237 #[repr(transparent)]
238 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
239 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportSwizzleStateCreateFlagsNV.html>"]
240 pub struct PipelineViewportSwizzleStateCreateFlagsNV(pub(crate) Flags);
241 vk_bitflags_wrapped!(PipelineViewportSwizzleStateCreateFlagsNV, Flags);
242 #[repr(transparent)]
243 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
244 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDiscardRectangleStateCreateFlagsEXT.html>"]
245 pub struct PipelineDiscardRectangleStateCreateFlagsEXT(pub(crate) Flags);
246 vk_bitflags_wrapped!(PipelineDiscardRectangleStateCreateFlagsEXT, Flags);
247 #[repr(transparent)]
248 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
249 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageToColorStateCreateFlagsNV.html>"]
250 pub struct PipelineCoverageToColorStateCreateFlagsNV(pub(crate) Flags);
251 vk_bitflags_wrapped!(PipelineCoverageToColorStateCreateFlagsNV, Flags);
252 #[repr(transparent)]
253 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
254 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageModulationStateCreateFlagsNV.html>"]
255 pub struct PipelineCoverageModulationStateCreateFlagsNV(pub(crate) Flags);
256 vk_bitflags_wrapped!(PipelineCoverageModulationStateCreateFlagsNV, Flags);
257 #[repr(transparent)]
258 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
259 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageReductionStateCreateFlagsNV.html>"]
260 pub struct PipelineCoverageReductionStateCreateFlagsNV(pub(crate) Flags);
261 vk_bitflags_wrapped!(PipelineCoverageReductionStateCreateFlagsNV, Flags);
262 #[repr(transparent)]
263 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
264 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheCreateFlagsEXT.html>"]
265 pub struct ValidationCacheCreateFlagsEXT(pub(crate) Flags);
266 vk_bitflags_wrapped!(ValidationCacheCreateFlagsEXT, Flags);
267 #[repr(transparent)]
268 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
269 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCreateFlagsEXT.html>"]
270 pub struct DebugUtilsMessengerCreateFlagsEXT(pub(crate) Flags);
271 vk_bitflags_wrapped!(DebugUtilsMessengerCreateFlagsEXT, Flags);
272 #[repr(transparent)]
273 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
274 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCallbackDataFlagsEXT.html>"]
275 pub struct DebugUtilsMessengerCallbackDataFlagsEXT(pub(crate) Flags);
276 vk_bitflags_wrapped!(DebugUtilsMessengerCallbackDataFlagsEXT, Flags);
277 #[repr(transparent)]
278 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
279 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryReportFlagsEXT.html>"]
280 pub struct DeviceMemoryReportFlagsEXT(pub(crate) Flags);
281 vk_bitflags_wrapped!(DeviceMemoryReportFlagsEXT, Flags);
282 #[repr(transparent)]
283 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
284 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationConservativeStateCreateFlagsEXT.html>"]
285 pub struct PipelineRasterizationConservativeStateCreateFlagsEXT(pub(crate) Flags);
286 vk_bitflags_wrapped!(PipelineRasterizationConservativeStateCreateFlagsEXT, Flags);
287 #[repr(transparent)]
288 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
289 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateStreamCreateFlagsEXT.html>"]
290 pub struct PipelineRasterizationStateStreamCreateFlagsEXT(pub(crate) Flags);
291 vk_bitflags_wrapped!(PipelineRasterizationStateStreamCreateFlagsEXT, Flags);
292 #[repr(transparent)]
293 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
294 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationDepthClipStateCreateFlagsEXT.html>"]
295 pub struct PipelineRasterizationDepthClipStateCreateFlagsEXT(pub(crate) Flags);
296 vk_bitflags_wrapped!(PipelineRasterizationDepthClipStateCreateFlagsEXT, Flags);
297 #[repr(transparent)]
298 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
299 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoBeginCodingFlagsKHR.html>"]
300 pub struct VideoBeginCodingFlagsKHR(pub(crate) Flags);
301 vk_bitflags_wrapped!(VideoBeginCodingFlagsKHR, Flags);
302 #[repr(transparent)]
303 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
304 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEndCodingFlagsKHR.html>"]
305 pub struct VideoEndCodingFlagsKHR(pub(crate) Flags);
306 vk_bitflags_wrapped!(VideoEndCodingFlagsKHR, Flags);
307 #[repr(transparent)]
308 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
309 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264CreateFlagsEXT.html>"]
310 pub struct VideoDecodeH264CreateFlagsEXT(pub(crate) Flags);
311 vk_bitflags_wrapped!(VideoDecodeH264CreateFlagsEXT, Flags);
312 #[repr(transparent)]
313 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
314 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265CreateFlagsEXT.html>"]
315 pub struct VideoDecodeH265CreateFlagsEXT(pub(crate) Flags);
316 vk_bitflags_wrapped!(VideoDecodeH265CreateFlagsEXT, Flags);
317 #[repr(transparent)]
318 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
319 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265CapabilityFlagsEXT.html>"]
320 pub struct VideoEncodeH265CapabilityFlagsEXT(pub(crate) Flags);
321 vk_bitflags_wrapped!(VideoEncodeH265CapabilityFlagsEXT, Flags);
322 #[repr(transparent)]
323 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
324 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265CreateFlagsEXT.html>"]
325 pub struct VideoEncodeH265CreateFlagsEXT(pub(crate) Flags);
326 vk_bitflags_wrapped!(VideoEncodeH265CreateFlagsEXT, Flags);
327 define_handle!(
328     Instance,
329     INSTANCE,
330     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstance.html>"
331 );
332 define_handle ! (PhysicalDevice , PHYSICAL_DEVICE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice.html>") ;
333 define_handle!(
334     Device,
335     DEVICE,
336     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDevice.html>"
337 );
338 define_handle!(
339     Queue,
340     QUEUE,
341     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueue.html>"
342 );
343 define_handle ! (CommandBuffer , COMMAND_BUFFER , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBuffer.html>") ;
344 handle_nondispatchable ! (DeviceMemory , DEVICE_MEMORY , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemory.html>") ;
345 handle_nondispatchable ! (CommandPool , COMMAND_POOL , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPool.html>") ;
346 handle_nondispatchable!(
347     Buffer,
348     BUFFER,
349     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBuffer.html>"
350 );
351 handle_nondispatchable!(
352     BufferView,
353     BUFFER_VIEW,
354     doc =
355         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferView.html>"
356 );
357 handle_nondispatchable!(
358     Image,
359     IMAGE,
360     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImage.html>"
361 );
362 handle_nondispatchable!(
363     ImageView,
364     IMAGE_VIEW,
365     doc =
366         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageView.html>"
367 );
368 handle_nondispatchable ! (ShaderModule , SHADER_MODULE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModule.html>") ;
369 handle_nondispatchable!(
370     Pipeline,
371     PIPELINE,
372     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipeline.html>"
373 );
374 handle_nondispatchable ! (PipelineLayout , PIPELINE_LAYOUT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayout.html>") ;
375 handle_nondispatchable!(
376     Sampler,
377     SAMPLER,
378     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampler.html>"
379 );
380 handle_nondispatchable ! (DescriptorSet , DESCRIPTOR_SET , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSet.html>") ;
381 handle_nondispatchable ! (DescriptorSetLayout , DESCRIPTOR_SET_LAYOUT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayout.html>") ;
382 handle_nondispatchable ! (DescriptorPool , DESCRIPTOR_POOL , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPool.html>") ;
383 handle_nondispatchable!(
384     Fence,
385     FENCE,
386     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFence.html>"
387 );
388 handle_nondispatchable!(
389     Semaphore,
390     SEMAPHORE,
391     doc =
392         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphore.html>"
393 );
394 handle_nondispatchable!(
395     Event,
396     EVENT,
397     doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEvent.html>"
398 );
399 handle_nondispatchable!(
400     QueryPool,
401     QUERY_POOL,
402     doc =
403         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPool.html>"
404 );
405 handle_nondispatchable ! (Framebuffer , FRAMEBUFFER , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebuffer.html>") ;
406 handle_nondispatchable!(
407     RenderPass,
408     RENDER_PASS,
409     doc =
410         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPass.html>"
411 );
412 handle_nondispatchable ! (PipelineCache , PIPELINE_CACHE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCache.html>") ;
413 handle_nondispatchable ! (IndirectCommandsLayoutNV , INDIRECT_COMMANDS_LAYOUT_NV , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsLayoutNV.html>") ;
414 handle_nondispatchable ! (DescriptorUpdateTemplate , DESCRIPTOR_UPDATE_TEMPLATE , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplate.html>") ;
415 handle_nondispatchable ! (SamplerYcbcrConversion , SAMPLER_YCBCR_CONVERSION , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversion.html>") ;
416 handle_nondispatchable ! (ValidationCacheEXT , VALIDATION_CACHE_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheEXT.html>") ;
417 handle_nondispatchable ! (AccelerationStructureKHR , ACCELERATION_STRUCTURE_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureKHR.html>") ;
418 handle_nondispatchable ! (AccelerationStructureNV , ACCELERATION_STRUCTURE_NV , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureNV.html>") ;
419 handle_nondispatchable ! (PerformanceConfigurationINTEL , PERFORMANCE_CONFIGURATION_INTEL , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceConfigurationINTEL.html>") ;
420 handle_nondispatchable ! (BufferCollectionFUCHSIA , BUFFER_COLLECTION_FUCHSIA , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCollectionFUCHSIA.html>") ;
421 handle_nondispatchable ! (DeferredOperationKHR , DEFERRED_OPERATION_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeferredOperationKHR.html>") ;
422 handle_nondispatchable ! (PrivateDataSlotEXT , PRIVATE_DATA_SLOT_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPrivateDataSlotEXT.html>") ;
423 handle_nondispatchable ! (CuModuleNVX , CU_MODULE_NVX , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuModuleNVX.html>") ;
424 handle_nondispatchable ! (CuFunctionNVX , CU_FUNCTION_NVX , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuFunctionNVX.html>") ;
425 handle_nondispatchable!(
426     DisplayKHR,
427     DISPLAY_KHR,
428     doc =
429         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayKHR.html>"
430 );
431 handle_nondispatchable ! (DisplayModeKHR , DISPLAY_MODE_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeKHR.html>") ;
432 handle_nondispatchable!(
433     SurfaceKHR,
434     SURFACE_KHR,
435     doc =
436         "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceKHR.html>"
437 );
438 handle_nondispatchable ! (SwapchainKHR , SWAPCHAIN_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainKHR.html>") ;
439 handle_nondispatchable ! (DebugReportCallbackEXT , DEBUG_REPORT_CALLBACK_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugReportCallbackEXT.html>") ;
440 handle_nondispatchable ! (DebugUtilsMessengerEXT , DEBUG_UTILS_MESSENGER_EXT , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerEXT.html>") ;
441 handle_nondispatchable ! (VideoSessionKHR , VIDEO_SESSION_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionKHR.html>") ;
442 handle_nondispatchable ! (VideoSessionParametersKHR , VIDEO_SESSION_PARAMETERS_KHR , doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionParametersKHR.html>") ;
443 #[allow(non_camel_case_types)]
444 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkInternalAllocationNotification.html>"]
445 pub type PFN_vkInternalAllocationNotification = Option<
446     unsafe extern "system" fn(
447         p_user_data: *mut c_void,
448         size: usize,
449         allocation_type: InternalAllocationType,
450         allocation_scope: SystemAllocationScope,
451     ),
452 >;
453 #[allow(non_camel_case_types)]
454 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkInternalFreeNotification.html>"]
455 pub type PFN_vkInternalFreeNotification = Option<
456     unsafe extern "system" fn(
457         p_user_data: *mut c_void,
458         size: usize,
459         allocation_type: InternalAllocationType,
460         allocation_scope: SystemAllocationScope,
461     ),
462 >;
463 #[allow(non_camel_case_types)]
464 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkReallocationFunction.html>"]
465 pub type PFN_vkReallocationFunction = Option<
466     unsafe extern "system" fn(
467         p_user_data: *mut c_void,
468         p_original: *mut c_void,
469         size: usize,
470         alignment: usize,
471         allocation_scope: SystemAllocationScope,
472     ) -> *mut c_void,
473 >;
474 #[allow(non_camel_case_types)]
475 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkAllocationFunction.html>"]
476 pub type PFN_vkAllocationFunction = Option<
477     unsafe extern "system" fn(
478         p_user_data: *mut c_void,
479         size: usize,
480         alignment: usize,
481         allocation_scope: SystemAllocationScope,
482     ) -> *mut c_void,
483 >;
484 #[allow(non_camel_case_types)]
485 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkFreeFunction.html>"]
486 pub type PFN_vkFreeFunction =
487     Option<unsafe extern "system" fn(p_user_data: *mut c_void, p_memory: *mut c_void)>;
488 #[allow(non_camel_case_types)]
489 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkVoidFunction.html>"]
490 pub type PFN_vkVoidFunction = Option<unsafe extern "system" fn()>;
491 #[allow(non_camel_case_types)]
492 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkDebugReportCallbackEXT.html>"]
493 pub type PFN_vkDebugReportCallbackEXT = Option<
494     unsafe extern "system" fn(
495         flags: DebugReportFlagsEXT,
496         object_type: DebugReportObjectTypeEXT,
497         object: u64,
498         location: usize,
499         message_code: i32,
500         p_layer_prefix: *const c_char,
501         p_message: *const c_char,
502         p_user_data: *mut c_void,
503     ) -> Bool32,
504 >;
505 #[allow(non_camel_case_types)]
506 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkDebugUtilsMessengerCallbackEXT.html>"]
507 pub type PFN_vkDebugUtilsMessengerCallbackEXT = Option<
508     unsafe extern "system" fn(
509         message_severity: DebugUtilsMessageSeverityFlagsEXT,
510         message_types: DebugUtilsMessageTypeFlagsEXT,
511         p_callback_data: *const DebugUtilsMessengerCallbackDataEXT,
512         p_user_data: *mut c_void,
513     ) -> Bool32,
514 >;
515 #[allow(non_camel_case_types)]
516 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkDeviceMemoryReportCallbackEXT.html>"]
517 pub type PFN_vkDeviceMemoryReportCallbackEXT = Option<
518     unsafe extern "system" fn(
519         p_callback_data: *const DeviceMemoryReportCallbackDataEXT,
520         p_user_data: *mut c_void,
521     ),
522 >;
523 #[repr(C)]
524 #[cfg_attr(feature = "debug", derive(Debug))]
525 #[derive(Copy, Clone)]
526 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseOutStructure.html>"]
527 pub struct BaseOutStructure {
528     pub s_type: StructureType,
529     pub p_next: *mut Self,
530 }
531 impl ::std::default::Default for BaseOutStructure {
default() -> Self532     fn default() -> Self {
533         Self {
534             s_type: unsafe { ::std::mem::zeroed() },
535             p_next: ::std::ptr::null_mut(),
536         }
537     }
538 }
539 #[repr(C)]
540 #[cfg_attr(feature = "debug", derive(Debug))]
541 #[derive(Copy, Clone)]
542 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseInStructure.html>"]
543 pub struct BaseInStructure {
544     pub s_type: StructureType,
545     pub p_next: *const Self,
546 }
547 impl ::std::default::Default for BaseInStructure {
default() -> Self548     fn default() -> Self {
549         Self {
550             s_type: unsafe { ::std::mem::zeroed() },
551             p_next: ::std::ptr::null(),
552         }
553     }
554 }
555 #[repr(C)]
556 #[cfg_attr(feature = "debug", derive(Debug))]
557 #[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
558 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset2D.html>"]
559 pub struct Offset2D {
560     pub x: i32,
561     pub y: i32,
562 }
563 impl Offset2D {
builder<'a>() -> Offset2DBuilder<'a>564     pub fn builder<'a>() -> Offset2DBuilder<'a> {
565         Offset2DBuilder {
566             inner: Self::default(),
567             marker: ::std::marker::PhantomData,
568         }
569     }
570 }
571 #[repr(transparent)]
572 pub struct Offset2DBuilder<'a> {
573     inner: Offset2D,
574     marker: ::std::marker::PhantomData<&'a ()>,
575 }
576 impl<'a> ::std::ops::Deref for Offset2DBuilder<'a> {
577     type Target = Offset2D;
deref(&self) -> &Self::Target578     fn deref(&self) -> &Self::Target {
579         &self.inner
580     }
581 }
582 impl<'a> ::std::ops::DerefMut for Offset2DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target583     fn deref_mut(&mut self) -> &mut Self::Target {
584         &mut self.inner
585     }
586 }
587 impl<'a> Offset2DBuilder<'a> {
x(mut self, x: i32) -> Self588     pub fn x(mut self, x: i32) -> Self {
589         self.inner.x = x;
590         self
591     }
y(mut self, y: i32) -> Self592     pub fn y(mut self, y: i32) -> Self {
593         self.inner.y = y;
594         self
595     }
596     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
597     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
598     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Offset2D599     pub fn build(self) -> Offset2D {
600         self.inner
601     }
602 }
603 #[repr(C)]
604 #[cfg_attr(feature = "debug", derive(Debug))]
605 #[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
606 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset3D.html>"]
607 pub struct Offset3D {
608     pub x: i32,
609     pub y: i32,
610     pub z: i32,
611 }
612 impl Offset3D {
builder<'a>() -> Offset3DBuilder<'a>613     pub fn builder<'a>() -> Offset3DBuilder<'a> {
614         Offset3DBuilder {
615             inner: Self::default(),
616             marker: ::std::marker::PhantomData,
617         }
618     }
619 }
620 #[repr(transparent)]
621 pub struct Offset3DBuilder<'a> {
622     inner: Offset3D,
623     marker: ::std::marker::PhantomData<&'a ()>,
624 }
625 impl<'a> ::std::ops::Deref for Offset3DBuilder<'a> {
626     type Target = Offset3D;
deref(&self) -> &Self::Target627     fn deref(&self) -> &Self::Target {
628         &self.inner
629     }
630 }
631 impl<'a> ::std::ops::DerefMut for Offset3DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target632     fn deref_mut(&mut self) -> &mut Self::Target {
633         &mut self.inner
634     }
635 }
636 impl<'a> Offset3DBuilder<'a> {
x(mut self, x: i32) -> Self637     pub fn x(mut self, x: i32) -> Self {
638         self.inner.x = x;
639         self
640     }
y(mut self, y: i32) -> Self641     pub fn y(mut self, y: i32) -> Self {
642         self.inner.y = y;
643         self
644     }
z(mut self, z: i32) -> Self645     pub fn z(mut self, z: i32) -> Self {
646         self.inner.z = z;
647         self
648     }
649     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
650     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
651     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Offset3D652     pub fn build(self) -> Offset3D {
653         self.inner
654     }
655 }
656 #[repr(C)]
657 #[cfg_attr(feature = "debug", derive(Debug))]
658 #[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
659 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtent2D.html>"]
660 pub struct Extent2D {
661     pub width: u32,
662     pub height: u32,
663 }
664 impl Extent2D {
builder<'a>() -> Extent2DBuilder<'a>665     pub fn builder<'a>() -> Extent2DBuilder<'a> {
666         Extent2DBuilder {
667             inner: Self::default(),
668             marker: ::std::marker::PhantomData,
669         }
670     }
671 }
672 #[repr(transparent)]
673 pub struct Extent2DBuilder<'a> {
674     inner: Extent2D,
675     marker: ::std::marker::PhantomData<&'a ()>,
676 }
677 impl<'a> ::std::ops::Deref for Extent2DBuilder<'a> {
678     type Target = Extent2D;
deref(&self) -> &Self::Target679     fn deref(&self) -> &Self::Target {
680         &self.inner
681     }
682 }
683 impl<'a> ::std::ops::DerefMut for Extent2DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target684     fn deref_mut(&mut self) -> &mut Self::Target {
685         &mut self.inner
686     }
687 }
688 impl<'a> Extent2DBuilder<'a> {
width(mut self, width: u32) -> Self689     pub fn width(mut self, width: u32) -> Self {
690         self.inner.width = width;
691         self
692     }
height(mut self, height: u32) -> Self693     pub fn height(mut self, height: u32) -> Self {
694         self.inner.height = height;
695         self
696     }
697     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
698     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
699     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Extent2D700     pub fn build(self) -> Extent2D {
701         self.inner
702     }
703 }
704 #[repr(C)]
705 #[cfg_attr(feature = "debug", derive(Debug))]
706 #[derive(Copy, Clone, Default, 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: Self::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 #[cfg_attr(feature = "debug", derive(Debug))]
759 #[derive(Copy, Clone, Default)]
760 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewport.html>"]
761 pub struct Viewport {
762     pub x: f32,
763     pub y: f32,
764     pub width: f32,
765     pub height: f32,
766     pub min_depth: f32,
767     pub max_depth: f32,
768 }
769 impl Viewport {
builder<'a>() -> ViewportBuilder<'a>770     pub fn builder<'a>() -> ViewportBuilder<'a> {
771         ViewportBuilder {
772             inner: Self::default(),
773             marker: ::std::marker::PhantomData,
774         }
775     }
776 }
777 #[repr(transparent)]
778 pub struct ViewportBuilder<'a> {
779     inner: Viewport,
780     marker: ::std::marker::PhantomData<&'a ()>,
781 }
782 impl<'a> ::std::ops::Deref for ViewportBuilder<'a> {
783     type Target = Viewport;
deref(&self) -> &Self::Target784     fn deref(&self) -> &Self::Target {
785         &self.inner
786     }
787 }
788 impl<'a> ::std::ops::DerefMut for ViewportBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target789     fn deref_mut(&mut self) -> &mut Self::Target {
790         &mut self.inner
791     }
792 }
793 impl<'a> ViewportBuilder<'a> {
x(mut self, x: f32) -> Self794     pub fn x(mut self, x: f32) -> Self {
795         self.inner.x = x;
796         self
797     }
y(mut self, y: f32) -> Self798     pub fn y(mut self, y: f32) -> Self {
799         self.inner.y = y;
800         self
801     }
width(mut self, width: f32) -> Self802     pub fn width(mut self, width: f32) -> Self {
803         self.inner.width = width;
804         self
805     }
height(mut self, height: f32) -> Self806     pub fn height(mut self, height: f32) -> Self {
807         self.inner.height = height;
808         self
809     }
min_depth(mut self, min_depth: f32) -> Self810     pub fn min_depth(mut self, min_depth: f32) -> Self {
811         self.inner.min_depth = min_depth;
812         self
813     }
max_depth(mut self, max_depth: f32) -> Self814     pub fn max_depth(mut self, max_depth: f32) -> Self {
815         self.inner.max_depth = max_depth;
816         self
817     }
818     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
819     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
820     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Viewport821     pub fn build(self) -> Viewport {
822         self.inner
823     }
824 }
825 #[repr(C)]
826 #[cfg_attr(feature = "debug", derive(Debug))]
827 #[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
828 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRect2D.html>"]
829 pub struct Rect2D {
830     pub offset: Offset2D,
831     pub extent: Extent2D,
832 }
833 impl Rect2D {
builder<'a>() -> Rect2DBuilder<'a>834     pub fn builder<'a>() -> Rect2DBuilder<'a> {
835         Rect2DBuilder {
836             inner: Self::default(),
837             marker: ::std::marker::PhantomData,
838         }
839     }
840 }
841 #[repr(transparent)]
842 pub struct Rect2DBuilder<'a> {
843     inner: Rect2D,
844     marker: ::std::marker::PhantomData<&'a ()>,
845 }
846 impl<'a> ::std::ops::Deref for Rect2DBuilder<'a> {
847     type Target = Rect2D;
deref(&self) -> &Self::Target848     fn deref(&self) -> &Self::Target {
849         &self.inner
850     }
851 }
852 impl<'a> ::std::ops::DerefMut for Rect2DBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target853     fn deref_mut(&mut self) -> &mut Self::Target {
854         &mut self.inner
855     }
856 }
857 impl<'a> Rect2DBuilder<'a> {
offset(mut self, offset: Offset2D) -> Self858     pub fn offset(mut self, offset: Offset2D) -> Self {
859         self.inner.offset = offset;
860         self
861     }
extent(mut self, extent: Extent2D) -> Self862     pub fn extent(mut self, extent: Extent2D) -> Self {
863         self.inner.extent = extent;
864         self
865     }
866     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
867     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
868     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Rect2D869     pub fn build(self) -> Rect2D {
870         self.inner
871     }
872 }
873 #[repr(C)]
874 #[cfg_attr(feature = "debug", derive(Debug))]
875 #[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
876 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearRect.html>"]
877 pub struct ClearRect {
878     pub rect: Rect2D,
879     pub base_array_layer: u32,
880     pub layer_count: u32,
881 }
882 impl ClearRect {
builder<'a>() -> ClearRectBuilder<'a>883     pub fn builder<'a>() -> ClearRectBuilder<'a> {
884         ClearRectBuilder {
885             inner: Self::default(),
886             marker: ::std::marker::PhantomData,
887         }
888     }
889 }
890 #[repr(transparent)]
891 pub struct ClearRectBuilder<'a> {
892     inner: ClearRect,
893     marker: ::std::marker::PhantomData<&'a ()>,
894 }
895 impl<'a> ::std::ops::Deref for ClearRectBuilder<'a> {
896     type Target = ClearRect;
deref(&self) -> &Self::Target897     fn deref(&self) -> &Self::Target {
898         &self.inner
899     }
900 }
901 impl<'a> ::std::ops::DerefMut for ClearRectBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target902     fn deref_mut(&mut self) -> &mut Self::Target {
903         &mut self.inner
904     }
905 }
906 impl<'a> ClearRectBuilder<'a> {
rect(mut self, rect: Rect2D) -> Self907     pub fn rect(mut self, rect: Rect2D) -> Self {
908         self.inner.rect = rect;
909         self
910     }
base_array_layer(mut self, base_array_layer: u32) -> Self911     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
912         self.inner.base_array_layer = base_array_layer;
913         self
914     }
layer_count(mut self, layer_count: u32) -> Self915     pub fn layer_count(mut self, layer_count: u32) -> Self {
916         self.inner.layer_count = layer_count;
917         self
918     }
919     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
920     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
921     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ClearRect922     pub fn build(self) -> ClearRect {
923         self.inner
924     }
925 }
926 #[repr(C)]
927 #[cfg_attr(feature = "debug", derive(Debug))]
928 #[derive(Copy, Clone, Default)]
929 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentMapping.html>"]
930 pub struct ComponentMapping {
931     pub r: ComponentSwizzle,
932     pub g: ComponentSwizzle,
933     pub b: ComponentSwizzle,
934     pub a: ComponentSwizzle,
935 }
936 impl ComponentMapping {
builder<'a>() -> ComponentMappingBuilder<'a>937     pub fn builder<'a>() -> ComponentMappingBuilder<'a> {
938         ComponentMappingBuilder {
939             inner: Self::default(),
940             marker: ::std::marker::PhantomData,
941         }
942     }
943 }
944 #[repr(transparent)]
945 pub struct ComponentMappingBuilder<'a> {
946     inner: ComponentMapping,
947     marker: ::std::marker::PhantomData<&'a ()>,
948 }
949 impl<'a> ::std::ops::Deref for ComponentMappingBuilder<'a> {
950     type Target = ComponentMapping;
deref(&self) -> &Self::Target951     fn deref(&self) -> &Self::Target {
952         &self.inner
953     }
954 }
955 impl<'a> ::std::ops::DerefMut for ComponentMappingBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target956     fn deref_mut(&mut self) -> &mut Self::Target {
957         &mut self.inner
958     }
959 }
960 impl<'a> ComponentMappingBuilder<'a> {
r(mut self, r: ComponentSwizzle) -> Self961     pub fn r(mut self, r: ComponentSwizzle) -> Self {
962         self.inner.r = r;
963         self
964     }
g(mut self, g: ComponentSwizzle) -> Self965     pub fn g(mut self, g: ComponentSwizzle) -> Self {
966         self.inner.g = g;
967         self
968     }
b(mut self, b: ComponentSwizzle) -> Self969     pub fn b(mut self, b: ComponentSwizzle) -> Self {
970         self.inner.b = b;
971         self
972     }
a(mut self, a: ComponentSwizzle) -> Self973     pub fn a(mut self, a: ComponentSwizzle) -> Self {
974         self.inner.a = a;
975         self
976     }
977     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
978     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
979     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ComponentMapping980     pub fn build(self) -> ComponentMapping {
981         self.inner
982     }
983 }
984 #[repr(C)]
985 #[derive(Copy, Clone)]
986 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProperties.html>"]
987 pub struct PhysicalDeviceProperties {
988     pub api_version: u32,
989     pub driver_version: u32,
990     pub vendor_id: u32,
991     pub device_id: u32,
992     pub device_type: PhysicalDeviceType,
993     pub device_name: [c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE],
994     pub pipeline_cache_uuid: [u8; UUID_SIZE],
995     pub limits: PhysicalDeviceLimits,
996     pub sparse_properties: PhysicalDeviceSparseProperties,
997 }
998 #[cfg(feature = "debug")]
999 impl fmt::Debug for PhysicalDeviceProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result1000     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
1001         fmt.debug_struct("PhysicalDeviceProperties")
1002             .field("api_version", &self.api_version)
1003             .field("driver_version", &self.driver_version)
1004             .field("vendor_id", &self.vendor_id)
1005             .field("device_id", &self.device_id)
1006             .field("device_type", &self.device_type)
1007             .field("device_name", &unsafe {
1008                 ::std::ffi::CStr::from_ptr(self.device_name.as_ptr() as *const c_char)
1009             })
1010             .field("pipeline_cache_uuid", &self.pipeline_cache_uuid)
1011             .field("limits", &self.limits)
1012             .field("sparse_properties", &self.sparse_properties)
1013             .finish()
1014     }
1015 }
1016 impl ::std::default::Default for PhysicalDeviceProperties {
default() -> Self1017     fn default() -> Self {
1018         Self {
1019             api_version: u32::default(),
1020             driver_version: u32::default(),
1021             vendor_id: u32::default(),
1022             device_id: u32::default(),
1023             device_type: PhysicalDeviceType::default(),
1024             device_name: unsafe { ::std::mem::zeroed() },
1025             pipeline_cache_uuid: unsafe { ::std::mem::zeroed() },
1026             limits: PhysicalDeviceLimits::default(),
1027             sparse_properties: PhysicalDeviceSparseProperties::default(),
1028         }
1029     }
1030 }
1031 impl PhysicalDeviceProperties {
builder<'a>() -> PhysicalDevicePropertiesBuilder<'a>1032     pub fn builder<'a>() -> PhysicalDevicePropertiesBuilder<'a> {
1033         PhysicalDevicePropertiesBuilder {
1034             inner: Self::default(),
1035             marker: ::std::marker::PhantomData,
1036         }
1037     }
1038 }
1039 #[repr(transparent)]
1040 pub struct PhysicalDevicePropertiesBuilder<'a> {
1041     inner: PhysicalDeviceProperties,
1042     marker: ::std::marker::PhantomData<&'a ()>,
1043 }
1044 impl<'a> ::std::ops::Deref for PhysicalDevicePropertiesBuilder<'a> {
1045     type Target = PhysicalDeviceProperties;
deref(&self) -> &Self::Target1046     fn deref(&self) -> &Self::Target {
1047         &self.inner
1048     }
1049 }
1050 impl<'a> ::std::ops::DerefMut for PhysicalDevicePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1051     fn deref_mut(&mut self) -> &mut Self::Target {
1052         &mut self.inner
1053     }
1054 }
1055 impl<'a> PhysicalDevicePropertiesBuilder<'a> {
api_version(mut self, api_version: u32) -> Self1056     pub fn api_version(mut self, api_version: u32) -> Self {
1057         self.inner.api_version = api_version;
1058         self
1059     }
driver_version(mut self, driver_version: u32) -> Self1060     pub fn driver_version(mut self, driver_version: u32) -> Self {
1061         self.inner.driver_version = driver_version;
1062         self
1063     }
vendor_id(mut self, vendor_id: u32) -> Self1064     pub fn vendor_id(mut self, vendor_id: u32) -> Self {
1065         self.inner.vendor_id = vendor_id;
1066         self
1067     }
device_id(mut self, device_id: u32) -> Self1068     pub fn device_id(mut self, device_id: u32) -> Self {
1069         self.inner.device_id = device_id;
1070         self
1071     }
device_type(mut self, device_type: PhysicalDeviceType) -> Self1072     pub fn device_type(mut self, device_type: PhysicalDeviceType) -> Self {
1073         self.inner.device_type = device_type;
1074         self
1075     }
device_name(mut self, device_name: [c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE]) -> Self1076     pub fn device_name(mut self, device_name: [c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE]) -> Self {
1077         self.inner.device_name = device_name;
1078         self
1079     }
pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self1080     pub fn pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self {
1081         self.inner.pipeline_cache_uuid = pipeline_cache_uuid;
1082         self
1083     }
limits(mut self, limits: PhysicalDeviceLimits) -> Self1084     pub fn limits(mut self, limits: PhysicalDeviceLimits) -> Self {
1085         self.inner.limits = limits;
1086         self
1087     }
sparse_properties(mut self, sparse_properties: PhysicalDeviceSparseProperties) -> Self1088     pub fn sparse_properties(mut self, sparse_properties: PhysicalDeviceSparseProperties) -> Self {
1089         self.inner.sparse_properties = sparse_properties;
1090         self
1091     }
1092     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1093     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1094     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProperties1095     pub fn build(self) -> PhysicalDeviceProperties {
1096         self.inner
1097     }
1098 }
1099 #[repr(C)]
1100 #[derive(Copy, Clone)]
1101 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtensionProperties.html>"]
1102 pub struct ExtensionProperties {
1103     pub extension_name: [c_char; MAX_EXTENSION_NAME_SIZE],
1104     pub spec_version: u32,
1105 }
1106 #[cfg(feature = "debug")]
1107 impl fmt::Debug for ExtensionProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result1108     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
1109         fmt.debug_struct("ExtensionProperties")
1110             .field("extension_name", &unsafe {
1111                 ::std::ffi::CStr::from_ptr(self.extension_name.as_ptr() as *const c_char)
1112             })
1113             .field("spec_version", &self.spec_version)
1114             .finish()
1115     }
1116 }
1117 impl ::std::default::Default for ExtensionProperties {
default() -> Self1118     fn default() -> Self {
1119         Self {
1120             extension_name: unsafe { ::std::mem::zeroed() },
1121             spec_version: u32::default(),
1122         }
1123     }
1124 }
1125 impl ExtensionProperties {
builder<'a>() -> ExtensionPropertiesBuilder<'a>1126     pub fn builder<'a>() -> ExtensionPropertiesBuilder<'a> {
1127         ExtensionPropertiesBuilder {
1128             inner: Self::default(),
1129             marker: ::std::marker::PhantomData,
1130         }
1131     }
1132 }
1133 #[repr(transparent)]
1134 pub struct ExtensionPropertiesBuilder<'a> {
1135     inner: ExtensionProperties,
1136     marker: ::std::marker::PhantomData<&'a ()>,
1137 }
1138 impl<'a> ::std::ops::Deref for ExtensionPropertiesBuilder<'a> {
1139     type Target = ExtensionProperties;
deref(&self) -> &Self::Target1140     fn deref(&self) -> &Self::Target {
1141         &self.inner
1142     }
1143 }
1144 impl<'a> ::std::ops::DerefMut for ExtensionPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1145     fn deref_mut(&mut self) -> &mut Self::Target {
1146         &mut self.inner
1147     }
1148 }
1149 impl<'a> ExtensionPropertiesBuilder<'a> {
extension_name(mut self, extension_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self1150     pub fn extension_name(mut self, extension_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
1151         self.inner.extension_name = extension_name;
1152         self
1153     }
spec_version(mut self, spec_version: u32) -> Self1154     pub fn spec_version(mut self, spec_version: u32) -> Self {
1155         self.inner.spec_version = spec_version;
1156         self
1157     }
1158     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1159     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1160     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExtensionProperties1161     pub fn build(self) -> ExtensionProperties {
1162         self.inner
1163     }
1164 }
1165 #[repr(C)]
1166 #[derive(Copy, Clone)]
1167 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLayerProperties.html>"]
1168 pub struct LayerProperties {
1169     pub layer_name: [c_char; MAX_EXTENSION_NAME_SIZE],
1170     pub spec_version: u32,
1171     pub implementation_version: u32,
1172     pub description: [c_char; MAX_DESCRIPTION_SIZE],
1173 }
1174 #[cfg(feature = "debug")]
1175 impl fmt::Debug for LayerProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result1176     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
1177         fmt.debug_struct("LayerProperties")
1178             .field("layer_name", &unsafe {
1179                 ::std::ffi::CStr::from_ptr(self.layer_name.as_ptr() as *const c_char)
1180             })
1181             .field("spec_version", &self.spec_version)
1182             .field("implementation_version", &self.implementation_version)
1183             .field("description", &unsafe {
1184                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
1185             })
1186             .finish()
1187     }
1188 }
1189 impl ::std::default::Default for LayerProperties {
default() -> Self1190     fn default() -> Self {
1191         Self {
1192             layer_name: unsafe { ::std::mem::zeroed() },
1193             spec_version: u32::default(),
1194             implementation_version: u32::default(),
1195             description: unsafe { ::std::mem::zeroed() },
1196         }
1197     }
1198 }
1199 impl LayerProperties {
builder<'a>() -> LayerPropertiesBuilder<'a>1200     pub fn builder<'a>() -> LayerPropertiesBuilder<'a> {
1201         LayerPropertiesBuilder {
1202             inner: Self::default(),
1203             marker: ::std::marker::PhantomData,
1204         }
1205     }
1206 }
1207 #[repr(transparent)]
1208 pub struct LayerPropertiesBuilder<'a> {
1209     inner: LayerProperties,
1210     marker: ::std::marker::PhantomData<&'a ()>,
1211 }
1212 impl<'a> ::std::ops::Deref for LayerPropertiesBuilder<'a> {
1213     type Target = LayerProperties;
deref(&self) -> &Self::Target1214     fn deref(&self) -> &Self::Target {
1215         &self.inner
1216     }
1217 }
1218 impl<'a> ::std::ops::DerefMut for LayerPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1219     fn deref_mut(&mut self) -> &mut Self::Target {
1220         &mut self.inner
1221     }
1222 }
1223 impl<'a> LayerPropertiesBuilder<'a> {
layer_name(mut self, layer_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self1224     pub fn layer_name(mut self, layer_name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
1225         self.inner.layer_name = layer_name;
1226         self
1227     }
spec_version(mut self, spec_version: u32) -> Self1228     pub fn spec_version(mut self, spec_version: u32) -> Self {
1229         self.inner.spec_version = spec_version;
1230         self
1231     }
implementation_version(mut self, implementation_version: u32) -> Self1232     pub fn implementation_version(mut self, implementation_version: u32) -> Self {
1233         self.inner.implementation_version = implementation_version;
1234         self
1235     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self1236     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
1237         self.inner.description = description;
1238         self
1239     }
1240     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1241     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1242     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> LayerProperties1243     pub fn build(self) -> LayerProperties {
1244         self.inner
1245     }
1246 }
1247 #[repr(C)]
1248 #[cfg_attr(feature = "debug", derive(Debug))]
1249 #[derive(Copy, Clone)]
1250 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkApplicationInfo.html>"]
1251 pub struct ApplicationInfo {
1252     pub s_type: StructureType,
1253     pub p_next: *const c_void,
1254     pub p_application_name: *const c_char,
1255     pub application_version: u32,
1256     pub p_engine_name: *const c_char,
1257     pub engine_version: u32,
1258     pub api_version: u32,
1259 }
1260 impl ::std::default::Default for ApplicationInfo {
default() -> Self1261     fn default() -> Self {
1262         Self {
1263             s_type: StructureType::APPLICATION_INFO,
1264             p_next: ::std::ptr::null(),
1265             p_application_name: ::std::ptr::null(),
1266             application_version: u32::default(),
1267             p_engine_name: ::std::ptr::null(),
1268             engine_version: u32::default(),
1269             api_version: u32::default(),
1270         }
1271     }
1272 }
1273 impl ApplicationInfo {
builder<'a>() -> ApplicationInfoBuilder<'a>1274     pub fn builder<'a>() -> ApplicationInfoBuilder<'a> {
1275         ApplicationInfoBuilder {
1276             inner: Self::default(),
1277             marker: ::std::marker::PhantomData,
1278         }
1279     }
1280 }
1281 #[repr(transparent)]
1282 pub struct ApplicationInfoBuilder<'a> {
1283     inner: ApplicationInfo,
1284     marker: ::std::marker::PhantomData<&'a ()>,
1285 }
1286 impl<'a> ::std::ops::Deref for ApplicationInfoBuilder<'a> {
1287     type Target = ApplicationInfo;
deref(&self) -> &Self::Target1288     fn deref(&self) -> &Self::Target {
1289         &self.inner
1290     }
1291 }
1292 impl<'a> ::std::ops::DerefMut for ApplicationInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1293     fn deref_mut(&mut self) -> &mut Self::Target {
1294         &mut self.inner
1295     }
1296 }
1297 impl<'a> ApplicationInfoBuilder<'a> {
application_name(mut self, application_name: &'a ::std::ffi::CStr) -> Self1298     pub fn application_name(mut self, application_name: &'a ::std::ffi::CStr) -> Self {
1299         self.inner.p_application_name = application_name.as_ptr();
1300         self
1301     }
application_version(mut self, application_version: u32) -> Self1302     pub fn application_version(mut self, application_version: u32) -> Self {
1303         self.inner.application_version = application_version;
1304         self
1305     }
engine_name(mut self, engine_name: &'a ::std::ffi::CStr) -> Self1306     pub fn engine_name(mut self, engine_name: &'a ::std::ffi::CStr) -> Self {
1307         self.inner.p_engine_name = engine_name.as_ptr();
1308         self
1309     }
engine_version(mut self, engine_version: u32) -> Self1310     pub fn engine_version(mut self, engine_version: u32) -> Self {
1311         self.inner.engine_version = engine_version;
1312         self
1313     }
api_version(mut self, api_version: u32) -> Self1314     pub fn api_version(mut self, api_version: u32) -> Self {
1315         self.inner.api_version = api_version;
1316         self
1317     }
1318     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1319     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1320     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ApplicationInfo1321     pub fn build(self) -> ApplicationInfo {
1322         self.inner
1323     }
1324 }
1325 #[repr(C)]
1326 #[derive(Copy, Clone)]
1327 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAllocationCallbacks.html>"]
1328 pub struct AllocationCallbacks {
1329     pub p_user_data: *mut c_void,
1330     pub pfn_allocation: PFN_vkAllocationFunction,
1331     pub pfn_reallocation: PFN_vkReallocationFunction,
1332     pub pfn_free: PFN_vkFreeFunction,
1333     pub pfn_internal_allocation: PFN_vkInternalAllocationNotification,
1334     pub pfn_internal_free: PFN_vkInternalFreeNotification,
1335 }
1336 #[cfg(feature = "debug")]
1337 impl fmt::Debug for AllocationCallbacks {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result1338     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
1339         fmt.debug_struct("AllocationCallbacks")
1340             .field("p_user_data", &self.p_user_data)
1341             .field(
1342                 "pfn_allocation",
1343                 &(self.pfn_allocation.map(|x| x as *const ())),
1344             )
1345             .field(
1346                 "pfn_reallocation",
1347                 &(self.pfn_reallocation.map(|x| x as *const ())),
1348             )
1349             .field("pfn_free", &(self.pfn_free.map(|x| x as *const ())))
1350             .field(
1351                 "pfn_internal_allocation",
1352                 &(self.pfn_internal_allocation.map(|x| x as *const ())),
1353             )
1354             .field(
1355                 "pfn_internal_free",
1356                 &(self.pfn_internal_free.map(|x| x as *const ())),
1357             )
1358             .finish()
1359     }
1360 }
1361 impl ::std::default::Default for AllocationCallbacks {
default() -> Self1362     fn default() -> Self {
1363         Self {
1364             p_user_data: ::std::ptr::null_mut(),
1365             pfn_allocation: PFN_vkAllocationFunction::default(),
1366             pfn_reallocation: PFN_vkReallocationFunction::default(),
1367             pfn_free: PFN_vkFreeFunction::default(),
1368             pfn_internal_allocation: PFN_vkInternalAllocationNotification::default(),
1369             pfn_internal_free: PFN_vkInternalFreeNotification::default(),
1370         }
1371     }
1372 }
1373 impl AllocationCallbacks {
builder<'a>() -> AllocationCallbacksBuilder<'a>1374     pub fn builder<'a>() -> AllocationCallbacksBuilder<'a> {
1375         AllocationCallbacksBuilder {
1376             inner: Self::default(),
1377             marker: ::std::marker::PhantomData,
1378         }
1379     }
1380 }
1381 #[repr(transparent)]
1382 pub struct AllocationCallbacksBuilder<'a> {
1383     inner: AllocationCallbacks,
1384     marker: ::std::marker::PhantomData<&'a ()>,
1385 }
1386 impl<'a> ::std::ops::Deref for AllocationCallbacksBuilder<'a> {
1387     type Target = AllocationCallbacks;
deref(&self) -> &Self::Target1388     fn deref(&self) -> &Self::Target {
1389         &self.inner
1390     }
1391 }
1392 impl<'a> ::std::ops::DerefMut for AllocationCallbacksBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1393     fn deref_mut(&mut self) -> &mut Self::Target {
1394         &mut self.inner
1395     }
1396 }
1397 impl<'a> AllocationCallbacksBuilder<'a> {
user_data(mut self, user_data: *mut c_void) -> Self1398     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
1399         self.inner.p_user_data = user_data;
1400         self
1401     }
pfn_allocation(mut self, pfn_allocation: PFN_vkAllocationFunction) -> Self1402     pub fn pfn_allocation(mut self, pfn_allocation: PFN_vkAllocationFunction) -> Self {
1403         self.inner.pfn_allocation = pfn_allocation;
1404         self
1405     }
pfn_reallocation(mut self, pfn_reallocation: PFN_vkReallocationFunction) -> Self1406     pub fn pfn_reallocation(mut self, pfn_reallocation: PFN_vkReallocationFunction) -> Self {
1407         self.inner.pfn_reallocation = pfn_reallocation;
1408         self
1409     }
pfn_free(mut self, pfn_free: PFN_vkFreeFunction) -> Self1410     pub fn pfn_free(mut self, pfn_free: PFN_vkFreeFunction) -> Self {
1411         self.inner.pfn_free = pfn_free;
1412         self
1413     }
pfn_internal_allocation( mut self, pfn_internal_allocation: PFN_vkInternalAllocationNotification, ) -> Self1414     pub fn pfn_internal_allocation(
1415         mut self,
1416         pfn_internal_allocation: PFN_vkInternalAllocationNotification,
1417     ) -> Self {
1418         self.inner.pfn_internal_allocation = pfn_internal_allocation;
1419         self
1420     }
pfn_internal_free(mut self, pfn_internal_free: PFN_vkInternalFreeNotification) -> Self1421     pub fn pfn_internal_free(mut self, pfn_internal_free: PFN_vkInternalFreeNotification) -> Self {
1422         self.inner.pfn_internal_free = pfn_internal_free;
1423         self
1424     }
1425     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1426     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1427     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AllocationCallbacks1428     pub fn build(self) -> AllocationCallbacks {
1429         self.inner
1430     }
1431 }
1432 #[repr(C)]
1433 #[cfg_attr(feature = "debug", derive(Debug))]
1434 #[derive(Copy, Clone)]
1435 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueCreateInfo.html>"]
1436 pub struct DeviceQueueCreateInfo {
1437     pub s_type: StructureType,
1438     pub p_next: *const c_void,
1439     pub flags: DeviceQueueCreateFlags,
1440     pub queue_family_index: u32,
1441     pub queue_count: u32,
1442     pub p_queue_priorities: *const f32,
1443 }
1444 impl ::std::default::Default for DeviceQueueCreateInfo {
default() -> Self1445     fn default() -> Self {
1446         Self {
1447             s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
1448             p_next: ::std::ptr::null(),
1449             flags: DeviceQueueCreateFlags::default(),
1450             queue_family_index: u32::default(),
1451             queue_count: u32::default(),
1452             p_queue_priorities: ::std::ptr::null(),
1453         }
1454     }
1455 }
1456 impl DeviceQueueCreateInfo {
builder<'a>() -> DeviceQueueCreateInfoBuilder<'a>1457     pub fn builder<'a>() -> DeviceQueueCreateInfoBuilder<'a> {
1458         DeviceQueueCreateInfoBuilder {
1459             inner: Self::default(),
1460             marker: ::std::marker::PhantomData,
1461         }
1462     }
1463 }
1464 #[repr(transparent)]
1465 pub struct DeviceQueueCreateInfoBuilder<'a> {
1466     inner: DeviceQueueCreateInfo,
1467     marker: ::std::marker::PhantomData<&'a ()>,
1468 }
1469 pub unsafe trait ExtendsDeviceQueueCreateInfo {}
1470 impl<'a> ::std::ops::Deref for DeviceQueueCreateInfoBuilder<'a> {
1471     type Target = DeviceQueueCreateInfo;
deref(&self) -> &Self::Target1472     fn deref(&self) -> &Self::Target {
1473         &self.inner
1474     }
1475 }
1476 impl<'a> ::std::ops::DerefMut for DeviceQueueCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1477     fn deref_mut(&mut self) -> &mut Self::Target {
1478         &mut self.inner
1479     }
1480 }
1481 impl<'a> DeviceQueueCreateInfoBuilder<'a> {
flags(mut self, flags: DeviceQueueCreateFlags) -> Self1482     pub fn flags(mut self, flags: DeviceQueueCreateFlags) -> Self {
1483         self.inner.flags = flags;
1484         self
1485     }
queue_family_index(mut self, queue_family_index: u32) -> Self1486     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
1487         self.inner.queue_family_index = queue_family_index;
1488         self
1489     }
queue_priorities(mut self, queue_priorities: &'a [f32]) -> Self1490     pub fn queue_priorities(mut self, queue_priorities: &'a [f32]) -> Self {
1491         self.inner.queue_count = queue_priorities.len() as _;
1492         self.inner.p_queue_priorities = queue_priorities.as_ptr();
1493         self
1494     }
1495     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1496     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1497     #[doc = r" valid extension structs can be pushed into the chain."]
1498     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1499     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDeviceQueueCreateInfo>(mut self, next: &'a mut T) -> Self1500     pub fn push_next<T: ExtendsDeviceQueueCreateInfo>(mut self, next: &'a mut T) -> Self {
1501         unsafe {
1502             let next_ptr = next as *mut T as *mut BaseOutStructure;
1503             let last_next = ptr_chain_iter(next).last().unwrap();
1504             (*last_next).p_next = self.inner.p_next as _;
1505             self.inner.p_next = next_ptr as _;
1506         }
1507         self
1508     }
1509     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1510     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1511     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceQueueCreateInfo1512     pub fn build(self) -> DeviceQueueCreateInfo {
1513         self.inner
1514     }
1515 }
1516 #[repr(C)]
1517 #[cfg_attr(feature = "debug", derive(Debug))]
1518 #[derive(Copy, Clone)]
1519 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceCreateInfo.html>"]
1520 pub struct DeviceCreateInfo {
1521     pub s_type: StructureType,
1522     pub p_next: *const c_void,
1523     pub flags: DeviceCreateFlags,
1524     pub queue_create_info_count: u32,
1525     pub p_queue_create_infos: *const DeviceQueueCreateInfo,
1526     pub enabled_layer_count: u32,
1527     pub pp_enabled_layer_names: *const *const c_char,
1528     pub enabled_extension_count: u32,
1529     pub pp_enabled_extension_names: *const *const c_char,
1530     pub p_enabled_features: *const PhysicalDeviceFeatures,
1531 }
1532 impl ::std::default::Default for DeviceCreateInfo {
default() -> Self1533     fn default() -> Self {
1534         Self {
1535             s_type: StructureType::DEVICE_CREATE_INFO,
1536             p_next: ::std::ptr::null(),
1537             flags: DeviceCreateFlags::default(),
1538             queue_create_info_count: u32::default(),
1539             p_queue_create_infos: ::std::ptr::null(),
1540             enabled_layer_count: u32::default(),
1541             pp_enabled_layer_names: ::std::ptr::null(),
1542             enabled_extension_count: u32::default(),
1543             pp_enabled_extension_names: ::std::ptr::null(),
1544             p_enabled_features: ::std::ptr::null(),
1545         }
1546     }
1547 }
1548 impl DeviceCreateInfo {
builder<'a>() -> DeviceCreateInfoBuilder<'a>1549     pub fn builder<'a>() -> DeviceCreateInfoBuilder<'a> {
1550         DeviceCreateInfoBuilder {
1551             inner: Self::default(),
1552             marker: ::std::marker::PhantomData,
1553         }
1554     }
1555 }
1556 #[repr(transparent)]
1557 pub struct DeviceCreateInfoBuilder<'a> {
1558     inner: DeviceCreateInfo,
1559     marker: ::std::marker::PhantomData<&'a ()>,
1560 }
1561 pub unsafe trait ExtendsDeviceCreateInfo {}
1562 impl<'a> ::std::ops::Deref for DeviceCreateInfoBuilder<'a> {
1563     type Target = DeviceCreateInfo;
deref(&self) -> &Self::Target1564     fn deref(&self) -> &Self::Target {
1565         &self.inner
1566     }
1567 }
1568 impl<'a> ::std::ops::DerefMut for DeviceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1569     fn deref_mut(&mut self) -> &mut Self::Target {
1570         &mut self.inner
1571     }
1572 }
1573 impl<'a> DeviceCreateInfoBuilder<'a> {
flags(mut self, flags: DeviceCreateFlags) -> Self1574     pub fn flags(mut self, flags: DeviceCreateFlags) -> Self {
1575         self.inner.flags = flags;
1576         self
1577     }
queue_create_infos(mut self, queue_create_infos: &'a [DeviceQueueCreateInfo]) -> Self1578     pub fn queue_create_infos(mut self, queue_create_infos: &'a [DeviceQueueCreateInfo]) -> Self {
1579         self.inner.queue_create_info_count = queue_create_infos.len() as _;
1580         self.inner.p_queue_create_infos = queue_create_infos.as_ptr();
1581         self
1582     }
enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self1583     pub fn enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self {
1584         self.inner.enabled_layer_count = enabled_layer_names.len() as _;
1585         self.inner.pp_enabled_layer_names = enabled_layer_names.as_ptr();
1586         self
1587     }
enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self1588     pub fn enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self {
1589         self.inner.enabled_extension_count = enabled_extension_names.len() as _;
1590         self.inner.pp_enabled_extension_names = enabled_extension_names.as_ptr();
1591         self
1592     }
enabled_features(mut self, enabled_features: &'a PhysicalDeviceFeatures) -> Self1593     pub fn enabled_features(mut self, enabled_features: &'a PhysicalDeviceFeatures) -> Self {
1594         self.inner.p_enabled_features = enabled_features;
1595         self
1596     }
1597     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1598     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1599     #[doc = r" valid extension structs can be pushed into the chain."]
1600     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1601     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDeviceCreateInfo>(mut self, next: &'a mut T) -> Self1602     pub fn push_next<T: ExtendsDeviceCreateInfo>(mut self, next: &'a mut T) -> Self {
1603         unsafe {
1604             let next_ptr = next as *mut T as *mut BaseOutStructure;
1605             let last_next = ptr_chain_iter(next).last().unwrap();
1606             (*last_next).p_next = self.inner.p_next as _;
1607             self.inner.p_next = next_ptr as _;
1608         }
1609         self
1610     }
1611     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1612     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1613     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceCreateInfo1614     pub fn build(self) -> DeviceCreateInfo {
1615         self.inner
1616     }
1617 }
1618 #[repr(C)]
1619 #[cfg_attr(feature = "debug", derive(Debug))]
1620 #[derive(Copy, Clone)]
1621 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstanceCreateInfo.html>"]
1622 pub struct InstanceCreateInfo {
1623     pub s_type: StructureType,
1624     pub p_next: *const c_void,
1625     pub flags: InstanceCreateFlags,
1626     pub p_application_info: *const ApplicationInfo,
1627     pub enabled_layer_count: u32,
1628     pub pp_enabled_layer_names: *const *const c_char,
1629     pub enabled_extension_count: u32,
1630     pub pp_enabled_extension_names: *const *const c_char,
1631 }
1632 impl ::std::default::Default for InstanceCreateInfo {
default() -> Self1633     fn default() -> Self {
1634         Self {
1635             s_type: StructureType::INSTANCE_CREATE_INFO,
1636             p_next: ::std::ptr::null(),
1637             flags: InstanceCreateFlags::default(),
1638             p_application_info: ::std::ptr::null(),
1639             enabled_layer_count: u32::default(),
1640             pp_enabled_layer_names: ::std::ptr::null(),
1641             enabled_extension_count: u32::default(),
1642             pp_enabled_extension_names: ::std::ptr::null(),
1643         }
1644     }
1645 }
1646 impl InstanceCreateInfo {
builder<'a>() -> InstanceCreateInfoBuilder<'a>1647     pub fn builder<'a>() -> InstanceCreateInfoBuilder<'a> {
1648         InstanceCreateInfoBuilder {
1649             inner: Self::default(),
1650             marker: ::std::marker::PhantomData,
1651         }
1652     }
1653 }
1654 #[repr(transparent)]
1655 pub struct InstanceCreateInfoBuilder<'a> {
1656     inner: InstanceCreateInfo,
1657     marker: ::std::marker::PhantomData<&'a ()>,
1658 }
1659 pub unsafe trait ExtendsInstanceCreateInfo {}
1660 impl<'a> ::std::ops::Deref for InstanceCreateInfoBuilder<'a> {
1661     type Target = InstanceCreateInfo;
deref(&self) -> &Self::Target1662     fn deref(&self) -> &Self::Target {
1663         &self.inner
1664     }
1665 }
1666 impl<'a> ::std::ops::DerefMut for InstanceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1667     fn deref_mut(&mut self) -> &mut Self::Target {
1668         &mut self.inner
1669     }
1670 }
1671 impl<'a> InstanceCreateInfoBuilder<'a> {
flags(mut self, flags: InstanceCreateFlags) -> Self1672     pub fn flags(mut self, flags: InstanceCreateFlags) -> Self {
1673         self.inner.flags = flags;
1674         self
1675     }
application_info(mut self, application_info: &'a ApplicationInfo) -> Self1676     pub fn application_info(mut self, application_info: &'a ApplicationInfo) -> Self {
1677         self.inner.p_application_info = application_info;
1678         self
1679     }
enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self1680     pub fn enabled_layer_names(mut self, enabled_layer_names: &'a [*const c_char]) -> Self {
1681         self.inner.enabled_layer_count = enabled_layer_names.len() as _;
1682         self.inner.pp_enabled_layer_names = enabled_layer_names.as_ptr();
1683         self
1684     }
enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self1685     pub fn enabled_extension_names(mut self, enabled_extension_names: &'a [*const c_char]) -> Self {
1686         self.inner.enabled_extension_count = enabled_extension_names.len() as _;
1687         self.inner.pp_enabled_extension_names = enabled_extension_names.as_ptr();
1688         self
1689     }
1690     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1691     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1692     #[doc = r" valid extension structs can be pushed into the chain."]
1693     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1694     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsInstanceCreateInfo>(mut self, next: &'a mut T) -> Self1695     pub fn push_next<T: ExtendsInstanceCreateInfo>(mut self, next: &'a mut T) -> Self {
1696         unsafe {
1697             let next_ptr = next as *mut T as *mut BaseOutStructure;
1698             let last_next = ptr_chain_iter(next).last().unwrap();
1699             (*last_next).p_next = self.inner.p_next as _;
1700             self.inner.p_next = next_ptr as _;
1701         }
1702         self
1703     }
1704     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1705     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1706     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> InstanceCreateInfo1707     pub fn build(self) -> InstanceCreateInfo {
1708         self.inner
1709     }
1710 }
1711 #[repr(C)]
1712 #[cfg_attr(feature = "debug", derive(Debug))]
1713 #[derive(Copy, Clone, Default)]
1714 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyProperties.html>"]
1715 pub struct QueueFamilyProperties {
1716     pub queue_flags: QueueFlags,
1717     pub queue_count: u32,
1718     pub timestamp_valid_bits: u32,
1719     pub min_image_transfer_granularity: Extent3D,
1720 }
1721 impl QueueFamilyProperties {
builder<'a>() -> QueueFamilyPropertiesBuilder<'a>1722     pub fn builder<'a>() -> QueueFamilyPropertiesBuilder<'a> {
1723         QueueFamilyPropertiesBuilder {
1724             inner: Self::default(),
1725             marker: ::std::marker::PhantomData,
1726         }
1727     }
1728 }
1729 #[repr(transparent)]
1730 pub struct QueueFamilyPropertiesBuilder<'a> {
1731     inner: QueueFamilyProperties,
1732     marker: ::std::marker::PhantomData<&'a ()>,
1733 }
1734 impl<'a> ::std::ops::Deref for QueueFamilyPropertiesBuilder<'a> {
1735     type Target = QueueFamilyProperties;
deref(&self) -> &Self::Target1736     fn deref(&self) -> &Self::Target {
1737         &self.inner
1738     }
1739 }
1740 impl<'a> ::std::ops::DerefMut for QueueFamilyPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1741     fn deref_mut(&mut self) -> &mut Self::Target {
1742         &mut self.inner
1743     }
1744 }
1745 impl<'a> QueueFamilyPropertiesBuilder<'a> {
queue_flags(mut self, queue_flags: QueueFlags) -> Self1746     pub fn queue_flags(mut self, queue_flags: QueueFlags) -> Self {
1747         self.inner.queue_flags = queue_flags;
1748         self
1749     }
queue_count(mut self, queue_count: u32) -> Self1750     pub fn queue_count(mut self, queue_count: u32) -> Self {
1751         self.inner.queue_count = queue_count;
1752         self
1753     }
timestamp_valid_bits(mut self, timestamp_valid_bits: u32) -> Self1754     pub fn timestamp_valid_bits(mut self, timestamp_valid_bits: u32) -> Self {
1755         self.inner.timestamp_valid_bits = timestamp_valid_bits;
1756         self
1757     }
min_image_transfer_granularity( mut self, min_image_transfer_granularity: Extent3D, ) -> Self1758     pub fn min_image_transfer_granularity(
1759         mut self,
1760         min_image_transfer_granularity: Extent3D,
1761     ) -> Self {
1762         self.inner.min_image_transfer_granularity = min_image_transfer_granularity;
1763         self
1764     }
1765     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1766     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1767     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyProperties1768     pub fn build(self) -> QueueFamilyProperties {
1769         self.inner
1770     }
1771 }
1772 #[repr(C)]
1773 #[cfg_attr(feature = "debug", derive(Debug))]
1774 #[derive(Copy, Clone)]
1775 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryProperties.html>"]
1776 pub struct PhysicalDeviceMemoryProperties {
1777     pub memory_type_count: u32,
1778     pub memory_types: [MemoryType; MAX_MEMORY_TYPES],
1779     pub memory_heap_count: u32,
1780     pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS],
1781 }
1782 impl ::std::default::Default for PhysicalDeviceMemoryProperties {
default() -> Self1783     fn default() -> Self {
1784         Self {
1785             memory_type_count: u32::default(),
1786             memory_types: unsafe { ::std::mem::zeroed() },
1787             memory_heap_count: u32::default(),
1788             memory_heaps: unsafe { ::std::mem::zeroed() },
1789         }
1790     }
1791 }
1792 impl PhysicalDeviceMemoryProperties {
builder<'a>() -> PhysicalDeviceMemoryPropertiesBuilder<'a>1793     pub fn builder<'a>() -> PhysicalDeviceMemoryPropertiesBuilder<'a> {
1794         PhysicalDeviceMemoryPropertiesBuilder {
1795             inner: Self::default(),
1796             marker: ::std::marker::PhantomData,
1797         }
1798     }
1799 }
1800 #[repr(transparent)]
1801 pub struct PhysicalDeviceMemoryPropertiesBuilder<'a> {
1802     inner: PhysicalDeviceMemoryProperties,
1803     marker: ::std::marker::PhantomData<&'a ()>,
1804 }
1805 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryPropertiesBuilder<'a> {
1806     type Target = PhysicalDeviceMemoryProperties;
deref(&self) -> &Self::Target1807     fn deref(&self) -> &Self::Target {
1808         &self.inner
1809     }
1810 }
1811 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1812     fn deref_mut(&mut self) -> &mut Self::Target {
1813         &mut self.inner
1814     }
1815 }
1816 impl<'a> PhysicalDeviceMemoryPropertiesBuilder<'a> {
memory_type_count(mut self, memory_type_count: u32) -> Self1817     pub fn memory_type_count(mut self, memory_type_count: u32) -> Self {
1818         self.inner.memory_type_count = memory_type_count;
1819         self
1820     }
memory_types(mut self, memory_types: [MemoryType; MAX_MEMORY_TYPES]) -> Self1821     pub fn memory_types(mut self, memory_types: [MemoryType; MAX_MEMORY_TYPES]) -> Self {
1822         self.inner.memory_types = memory_types;
1823         self
1824     }
memory_heap_count(mut self, memory_heap_count: u32) -> Self1825     pub fn memory_heap_count(mut self, memory_heap_count: u32) -> Self {
1826         self.inner.memory_heap_count = memory_heap_count;
1827         self
1828     }
memory_heaps(mut self, memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS]) -> Self1829     pub fn memory_heaps(mut self, memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS]) -> Self {
1830         self.inner.memory_heaps = memory_heaps;
1831         self
1832     }
1833     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1834     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1835     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryProperties1836     pub fn build(self) -> PhysicalDeviceMemoryProperties {
1837         self.inner
1838     }
1839 }
1840 #[repr(C)]
1841 #[cfg_attr(feature = "debug", derive(Debug))]
1842 #[derive(Copy, Clone)]
1843 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryAllocateInfo.html>"]
1844 pub struct MemoryAllocateInfo {
1845     pub s_type: StructureType,
1846     pub p_next: *const c_void,
1847     pub allocation_size: DeviceSize,
1848     pub memory_type_index: u32,
1849 }
1850 impl ::std::default::Default for MemoryAllocateInfo {
default() -> Self1851     fn default() -> Self {
1852         Self {
1853             s_type: StructureType::MEMORY_ALLOCATE_INFO,
1854             p_next: ::std::ptr::null(),
1855             allocation_size: DeviceSize::default(),
1856             memory_type_index: u32::default(),
1857         }
1858     }
1859 }
1860 impl MemoryAllocateInfo {
builder<'a>() -> MemoryAllocateInfoBuilder<'a>1861     pub fn builder<'a>() -> MemoryAllocateInfoBuilder<'a> {
1862         MemoryAllocateInfoBuilder {
1863             inner: Self::default(),
1864             marker: ::std::marker::PhantomData,
1865         }
1866     }
1867 }
1868 #[repr(transparent)]
1869 pub struct MemoryAllocateInfoBuilder<'a> {
1870     inner: MemoryAllocateInfo,
1871     marker: ::std::marker::PhantomData<&'a ()>,
1872 }
1873 pub unsafe trait ExtendsMemoryAllocateInfo {}
1874 impl<'a> ::std::ops::Deref for MemoryAllocateInfoBuilder<'a> {
1875     type Target = MemoryAllocateInfo;
deref(&self) -> &Self::Target1876     fn deref(&self) -> &Self::Target {
1877         &self.inner
1878     }
1879 }
1880 impl<'a> ::std::ops::DerefMut for MemoryAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1881     fn deref_mut(&mut self) -> &mut Self::Target {
1882         &mut self.inner
1883     }
1884 }
1885 impl<'a> MemoryAllocateInfoBuilder<'a> {
allocation_size(mut self, allocation_size: DeviceSize) -> Self1886     pub fn allocation_size(mut self, allocation_size: DeviceSize) -> Self {
1887         self.inner.allocation_size = allocation_size;
1888         self
1889     }
memory_type_index(mut self, memory_type_index: u32) -> Self1890     pub fn memory_type_index(mut self, memory_type_index: u32) -> Self {
1891         self.inner.memory_type_index = memory_type_index;
1892         self
1893     }
1894     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
1895     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
1896     #[doc = r" valid extension structs can be pushed into the chain."]
1897     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
1898     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsMemoryAllocateInfo>(mut self, next: &'a mut T) -> Self1899     pub fn push_next<T: ExtendsMemoryAllocateInfo>(mut self, next: &'a mut T) -> Self {
1900         unsafe {
1901             let next_ptr = next as *mut T as *mut BaseOutStructure;
1902             let last_next = ptr_chain_iter(next).last().unwrap();
1903             (*last_next).p_next = self.inner.p_next as _;
1904             self.inner.p_next = next_ptr as _;
1905         }
1906         self
1907     }
1908     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1909     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1910     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryAllocateInfo1911     pub fn build(self) -> MemoryAllocateInfo {
1912         self.inner
1913     }
1914 }
1915 #[repr(C)]
1916 #[cfg_attr(feature = "debug", derive(Debug))]
1917 #[derive(Copy, Clone, Default)]
1918 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryRequirements.html>"]
1919 pub struct MemoryRequirements {
1920     pub size: DeviceSize,
1921     pub alignment: DeviceSize,
1922     pub memory_type_bits: u32,
1923 }
1924 impl MemoryRequirements {
builder<'a>() -> MemoryRequirementsBuilder<'a>1925     pub fn builder<'a>() -> MemoryRequirementsBuilder<'a> {
1926         MemoryRequirementsBuilder {
1927             inner: Self::default(),
1928             marker: ::std::marker::PhantomData,
1929         }
1930     }
1931 }
1932 #[repr(transparent)]
1933 pub struct MemoryRequirementsBuilder<'a> {
1934     inner: MemoryRequirements,
1935     marker: ::std::marker::PhantomData<&'a ()>,
1936 }
1937 impl<'a> ::std::ops::Deref for MemoryRequirementsBuilder<'a> {
1938     type Target = MemoryRequirements;
deref(&self) -> &Self::Target1939     fn deref(&self) -> &Self::Target {
1940         &self.inner
1941     }
1942 }
1943 impl<'a> ::std::ops::DerefMut for MemoryRequirementsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1944     fn deref_mut(&mut self) -> &mut Self::Target {
1945         &mut self.inner
1946     }
1947 }
1948 impl<'a> MemoryRequirementsBuilder<'a> {
size(mut self, size: DeviceSize) -> Self1949     pub fn size(mut self, size: DeviceSize) -> Self {
1950         self.inner.size = size;
1951         self
1952     }
alignment(mut self, alignment: DeviceSize) -> Self1953     pub fn alignment(mut self, alignment: DeviceSize) -> Self {
1954         self.inner.alignment = alignment;
1955         self
1956     }
memory_type_bits(mut self, memory_type_bits: u32) -> Self1957     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
1958         self.inner.memory_type_bits = memory_type_bits;
1959         self
1960     }
1961     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
1962     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
1963     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryRequirements1964     pub fn build(self) -> MemoryRequirements {
1965         self.inner
1966     }
1967 }
1968 #[repr(C)]
1969 #[cfg_attr(feature = "debug", derive(Debug))]
1970 #[derive(Copy, Clone, Default)]
1971 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatProperties.html>"]
1972 pub struct SparseImageFormatProperties {
1973     pub aspect_mask: ImageAspectFlags,
1974     pub image_granularity: Extent3D,
1975     pub flags: SparseImageFormatFlags,
1976 }
1977 impl SparseImageFormatProperties {
builder<'a>() -> SparseImageFormatPropertiesBuilder<'a>1978     pub fn builder<'a>() -> SparseImageFormatPropertiesBuilder<'a> {
1979         SparseImageFormatPropertiesBuilder {
1980             inner: Self::default(),
1981             marker: ::std::marker::PhantomData,
1982         }
1983     }
1984 }
1985 #[repr(transparent)]
1986 pub struct SparseImageFormatPropertiesBuilder<'a> {
1987     inner: SparseImageFormatProperties,
1988     marker: ::std::marker::PhantomData<&'a ()>,
1989 }
1990 impl<'a> ::std::ops::Deref for SparseImageFormatPropertiesBuilder<'a> {
1991     type Target = SparseImageFormatProperties;
deref(&self) -> &Self::Target1992     fn deref(&self) -> &Self::Target {
1993         &self.inner
1994     }
1995 }
1996 impl<'a> ::std::ops::DerefMut for SparseImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target1997     fn deref_mut(&mut self) -> &mut Self::Target {
1998         &mut self.inner
1999     }
2000 }
2001 impl<'a> SparseImageFormatPropertiesBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self2002     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
2003         self.inner.aspect_mask = aspect_mask;
2004         self
2005     }
image_granularity(mut self, image_granularity: Extent3D) -> Self2006     pub fn image_granularity(mut self, image_granularity: Extent3D) -> Self {
2007         self.inner.image_granularity = image_granularity;
2008         self
2009     }
flags(mut self, flags: SparseImageFormatFlags) -> Self2010     pub fn flags(mut self, flags: SparseImageFormatFlags) -> Self {
2011         self.inner.flags = flags;
2012         self
2013     }
2014     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2015     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2016     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageFormatProperties2017     pub fn build(self) -> SparseImageFormatProperties {
2018         self.inner
2019     }
2020 }
2021 #[repr(C)]
2022 #[cfg_attr(feature = "debug", derive(Debug))]
2023 #[derive(Copy, Clone, Default)]
2024 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryRequirements.html>"]
2025 pub struct SparseImageMemoryRequirements {
2026     pub format_properties: SparseImageFormatProperties,
2027     pub image_mip_tail_first_lod: u32,
2028     pub image_mip_tail_size: DeviceSize,
2029     pub image_mip_tail_offset: DeviceSize,
2030     pub image_mip_tail_stride: DeviceSize,
2031 }
2032 impl SparseImageMemoryRequirements {
builder<'a>() -> SparseImageMemoryRequirementsBuilder<'a>2033     pub fn builder<'a>() -> SparseImageMemoryRequirementsBuilder<'a> {
2034         SparseImageMemoryRequirementsBuilder {
2035             inner: Self::default(),
2036             marker: ::std::marker::PhantomData,
2037         }
2038     }
2039 }
2040 #[repr(transparent)]
2041 pub struct SparseImageMemoryRequirementsBuilder<'a> {
2042     inner: SparseImageMemoryRequirements,
2043     marker: ::std::marker::PhantomData<&'a ()>,
2044 }
2045 impl<'a> ::std::ops::Deref for SparseImageMemoryRequirementsBuilder<'a> {
2046     type Target = SparseImageMemoryRequirements;
deref(&self) -> &Self::Target2047     fn deref(&self) -> &Self::Target {
2048         &self.inner
2049     }
2050 }
2051 impl<'a> ::std::ops::DerefMut for SparseImageMemoryRequirementsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2052     fn deref_mut(&mut self) -> &mut Self::Target {
2053         &mut self.inner
2054     }
2055 }
2056 impl<'a> SparseImageMemoryRequirementsBuilder<'a> {
format_properties(mut self, format_properties: SparseImageFormatProperties) -> Self2057     pub fn format_properties(mut self, format_properties: SparseImageFormatProperties) -> Self {
2058         self.inner.format_properties = format_properties;
2059         self
2060     }
image_mip_tail_first_lod(mut self, image_mip_tail_first_lod: u32) -> Self2061     pub fn image_mip_tail_first_lod(mut self, image_mip_tail_first_lod: u32) -> Self {
2062         self.inner.image_mip_tail_first_lod = image_mip_tail_first_lod;
2063         self
2064     }
image_mip_tail_size(mut self, image_mip_tail_size: DeviceSize) -> Self2065     pub fn image_mip_tail_size(mut self, image_mip_tail_size: DeviceSize) -> Self {
2066         self.inner.image_mip_tail_size = image_mip_tail_size;
2067         self
2068     }
image_mip_tail_offset(mut self, image_mip_tail_offset: DeviceSize) -> Self2069     pub fn image_mip_tail_offset(mut self, image_mip_tail_offset: DeviceSize) -> Self {
2070         self.inner.image_mip_tail_offset = image_mip_tail_offset;
2071         self
2072     }
image_mip_tail_stride(mut self, image_mip_tail_stride: DeviceSize) -> Self2073     pub fn image_mip_tail_stride(mut self, image_mip_tail_stride: DeviceSize) -> Self {
2074         self.inner.image_mip_tail_stride = image_mip_tail_stride;
2075         self
2076     }
2077     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2078     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2079     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryRequirements2080     pub fn build(self) -> SparseImageMemoryRequirements {
2081         self.inner
2082     }
2083 }
2084 #[repr(C)]
2085 #[cfg_attr(feature = "debug", derive(Debug))]
2086 #[derive(Copy, Clone, Default)]
2087 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryType.html>"]
2088 pub struct MemoryType {
2089     pub property_flags: MemoryPropertyFlags,
2090     pub heap_index: u32,
2091 }
2092 impl MemoryType {
builder<'a>() -> MemoryTypeBuilder<'a>2093     pub fn builder<'a>() -> MemoryTypeBuilder<'a> {
2094         MemoryTypeBuilder {
2095             inner: Self::default(),
2096             marker: ::std::marker::PhantomData,
2097         }
2098     }
2099 }
2100 #[repr(transparent)]
2101 pub struct MemoryTypeBuilder<'a> {
2102     inner: MemoryType,
2103     marker: ::std::marker::PhantomData<&'a ()>,
2104 }
2105 impl<'a> ::std::ops::Deref for MemoryTypeBuilder<'a> {
2106     type Target = MemoryType;
deref(&self) -> &Self::Target2107     fn deref(&self) -> &Self::Target {
2108         &self.inner
2109     }
2110 }
2111 impl<'a> ::std::ops::DerefMut for MemoryTypeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2112     fn deref_mut(&mut self) -> &mut Self::Target {
2113         &mut self.inner
2114     }
2115 }
2116 impl<'a> MemoryTypeBuilder<'a> {
property_flags(mut self, property_flags: MemoryPropertyFlags) -> Self2117     pub fn property_flags(mut self, property_flags: MemoryPropertyFlags) -> Self {
2118         self.inner.property_flags = property_flags;
2119         self
2120     }
heap_index(mut self, heap_index: u32) -> Self2121     pub fn heap_index(mut self, heap_index: u32) -> Self {
2122         self.inner.heap_index = heap_index;
2123         self
2124     }
2125     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2126     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2127     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryType2128     pub fn build(self) -> MemoryType {
2129         self.inner
2130     }
2131 }
2132 #[repr(C)]
2133 #[cfg_attr(feature = "debug", derive(Debug))]
2134 #[derive(Copy, Clone, Default)]
2135 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHeap.html>"]
2136 pub struct MemoryHeap {
2137     pub size: DeviceSize,
2138     pub flags: MemoryHeapFlags,
2139 }
2140 impl MemoryHeap {
builder<'a>() -> MemoryHeapBuilder<'a>2141     pub fn builder<'a>() -> MemoryHeapBuilder<'a> {
2142         MemoryHeapBuilder {
2143             inner: Self::default(),
2144             marker: ::std::marker::PhantomData,
2145         }
2146     }
2147 }
2148 #[repr(transparent)]
2149 pub struct MemoryHeapBuilder<'a> {
2150     inner: MemoryHeap,
2151     marker: ::std::marker::PhantomData<&'a ()>,
2152 }
2153 impl<'a> ::std::ops::Deref for MemoryHeapBuilder<'a> {
2154     type Target = MemoryHeap;
deref(&self) -> &Self::Target2155     fn deref(&self) -> &Self::Target {
2156         &self.inner
2157     }
2158 }
2159 impl<'a> ::std::ops::DerefMut for MemoryHeapBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2160     fn deref_mut(&mut self) -> &mut Self::Target {
2161         &mut self.inner
2162     }
2163 }
2164 impl<'a> MemoryHeapBuilder<'a> {
size(mut self, size: DeviceSize) -> Self2165     pub fn size(mut self, size: DeviceSize) -> Self {
2166         self.inner.size = size;
2167         self
2168     }
flags(mut self, flags: MemoryHeapFlags) -> Self2169     pub fn flags(mut self, flags: MemoryHeapFlags) -> Self {
2170         self.inner.flags = flags;
2171         self
2172     }
2173     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2174     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2175     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryHeap2176     pub fn build(self) -> MemoryHeap {
2177         self.inner
2178     }
2179 }
2180 #[repr(C)]
2181 #[cfg_attr(feature = "debug", derive(Debug))]
2182 #[derive(Copy, Clone)]
2183 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMappedMemoryRange.html>"]
2184 pub struct MappedMemoryRange {
2185     pub s_type: StructureType,
2186     pub p_next: *const c_void,
2187     pub memory: DeviceMemory,
2188     pub offset: DeviceSize,
2189     pub size: DeviceSize,
2190 }
2191 impl ::std::default::Default for MappedMemoryRange {
default() -> Self2192     fn default() -> Self {
2193         Self {
2194             s_type: StructureType::MAPPED_MEMORY_RANGE,
2195             p_next: ::std::ptr::null(),
2196             memory: DeviceMemory::default(),
2197             offset: DeviceSize::default(),
2198             size: DeviceSize::default(),
2199         }
2200     }
2201 }
2202 impl MappedMemoryRange {
builder<'a>() -> MappedMemoryRangeBuilder<'a>2203     pub fn builder<'a>() -> MappedMemoryRangeBuilder<'a> {
2204         MappedMemoryRangeBuilder {
2205             inner: Self::default(),
2206             marker: ::std::marker::PhantomData,
2207         }
2208     }
2209 }
2210 #[repr(transparent)]
2211 pub struct MappedMemoryRangeBuilder<'a> {
2212     inner: MappedMemoryRange,
2213     marker: ::std::marker::PhantomData<&'a ()>,
2214 }
2215 impl<'a> ::std::ops::Deref for MappedMemoryRangeBuilder<'a> {
2216     type Target = MappedMemoryRange;
deref(&self) -> &Self::Target2217     fn deref(&self) -> &Self::Target {
2218         &self.inner
2219     }
2220 }
2221 impl<'a> ::std::ops::DerefMut for MappedMemoryRangeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2222     fn deref_mut(&mut self) -> &mut Self::Target {
2223         &mut self.inner
2224     }
2225 }
2226 impl<'a> MappedMemoryRangeBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self2227     pub fn memory(mut self, memory: DeviceMemory) -> Self {
2228         self.inner.memory = memory;
2229         self
2230     }
offset(mut self, offset: DeviceSize) -> Self2231     pub fn offset(mut self, offset: DeviceSize) -> Self {
2232         self.inner.offset = offset;
2233         self
2234     }
size(mut self, size: DeviceSize) -> Self2235     pub fn size(mut self, size: DeviceSize) -> Self {
2236         self.inner.size = size;
2237         self
2238     }
2239     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2240     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2241     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MappedMemoryRange2242     pub fn build(self) -> MappedMemoryRange {
2243         self.inner
2244     }
2245 }
2246 #[repr(C)]
2247 #[cfg_attr(feature = "debug", derive(Debug))]
2248 #[derive(Copy, Clone, Default)]
2249 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatProperties.html>"]
2250 pub struct FormatProperties {
2251     pub linear_tiling_features: FormatFeatureFlags,
2252     pub optimal_tiling_features: FormatFeatureFlags,
2253     pub buffer_features: FormatFeatureFlags,
2254 }
2255 impl FormatProperties {
builder<'a>() -> FormatPropertiesBuilder<'a>2256     pub fn builder<'a>() -> FormatPropertiesBuilder<'a> {
2257         FormatPropertiesBuilder {
2258             inner: Self::default(),
2259             marker: ::std::marker::PhantomData,
2260         }
2261     }
2262 }
2263 #[repr(transparent)]
2264 pub struct FormatPropertiesBuilder<'a> {
2265     inner: FormatProperties,
2266     marker: ::std::marker::PhantomData<&'a ()>,
2267 }
2268 impl<'a> ::std::ops::Deref for FormatPropertiesBuilder<'a> {
2269     type Target = FormatProperties;
deref(&self) -> &Self::Target2270     fn deref(&self) -> &Self::Target {
2271         &self.inner
2272     }
2273 }
2274 impl<'a> ::std::ops::DerefMut for FormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2275     fn deref_mut(&mut self) -> &mut Self::Target {
2276         &mut self.inner
2277     }
2278 }
2279 impl<'a> FormatPropertiesBuilder<'a> {
linear_tiling_features(mut self, linear_tiling_features: FormatFeatureFlags) -> Self2280     pub fn linear_tiling_features(mut self, linear_tiling_features: FormatFeatureFlags) -> Self {
2281         self.inner.linear_tiling_features = linear_tiling_features;
2282         self
2283     }
optimal_tiling_features(mut self, optimal_tiling_features: FormatFeatureFlags) -> Self2284     pub fn optimal_tiling_features(mut self, optimal_tiling_features: FormatFeatureFlags) -> Self {
2285         self.inner.optimal_tiling_features = optimal_tiling_features;
2286         self
2287     }
buffer_features(mut self, buffer_features: FormatFeatureFlags) -> Self2288     pub fn buffer_features(mut self, buffer_features: FormatFeatureFlags) -> Self {
2289         self.inner.buffer_features = buffer_features;
2290         self
2291     }
2292     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2293     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2294     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FormatProperties2295     pub fn build(self) -> FormatProperties {
2296         self.inner
2297     }
2298 }
2299 #[repr(C)]
2300 #[cfg_attr(feature = "debug", derive(Debug))]
2301 #[derive(Copy, Clone, Default)]
2302 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatProperties.html>"]
2303 pub struct ImageFormatProperties {
2304     pub max_extent: Extent3D,
2305     pub max_mip_levels: u32,
2306     pub max_array_layers: u32,
2307     pub sample_counts: SampleCountFlags,
2308     pub max_resource_size: DeviceSize,
2309 }
2310 impl ImageFormatProperties {
builder<'a>() -> ImageFormatPropertiesBuilder<'a>2311     pub fn builder<'a>() -> ImageFormatPropertiesBuilder<'a> {
2312         ImageFormatPropertiesBuilder {
2313             inner: Self::default(),
2314             marker: ::std::marker::PhantomData,
2315         }
2316     }
2317 }
2318 #[repr(transparent)]
2319 pub struct ImageFormatPropertiesBuilder<'a> {
2320     inner: ImageFormatProperties,
2321     marker: ::std::marker::PhantomData<&'a ()>,
2322 }
2323 impl<'a> ::std::ops::Deref for ImageFormatPropertiesBuilder<'a> {
2324     type Target = ImageFormatProperties;
deref(&self) -> &Self::Target2325     fn deref(&self) -> &Self::Target {
2326         &self.inner
2327     }
2328 }
2329 impl<'a> ::std::ops::DerefMut for ImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2330     fn deref_mut(&mut self) -> &mut Self::Target {
2331         &mut self.inner
2332     }
2333 }
2334 impl<'a> ImageFormatPropertiesBuilder<'a> {
max_extent(mut self, max_extent: Extent3D) -> Self2335     pub fn max_extent(mut self, max_extent: Extent3D) -> Self {
2336         self.inner.max_extent = max_extent;
2337         self
2338     }
max_mip_levels(mut self, max_mip_levels: u32) -> Self2339     pub fn max_mip_levels(mut self, max_mip_levels: u32) -> Self {
2340         self.inner.max_mip_levels = max_mip_levels;
2341         self
2342     }
max_array_layers(mut self, max_array_layers: u32) -> Self2343     pub fn max_array_layers(mut self, max_array_layers: u32) -> Self {
2344         self.inner.max_array_layers = max_array_layers;
2345         self
2346     }
sample_counts(mut self, sample_counts: SampleCountFlags) -> Self2347     pub fn sample_counts(mut self, sample_counts: SampleCountFlags) -> Self {
2348         self.inner.sample_counts = sample_counts;
2349         self
2350     }
max_resource_size(mut self, max_resource_size: DeviceSize) -> Self2351     pub fn max_resource_size(mut self, max_resource_size: DeviceSize) -> Self {
2352         self.inner.max_resource_size = max_resource_size;
2353         self
2354     }
2355     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2356     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2357     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageFormatProperties2358     pub fn build(self) -> ImageFormatProperties {
2359         self.inner
2360     }
2361 }
2362 #[repr(C)]
2363 #[cfg_attr(feature = "debug", derive(Debug))]
2364 #[derive(Copy, Clone, Default)]
2365 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorBufferInfo.html>"]
2366 pub struct DescriptorBufferInfo {
2367     pub buffer: Buffer,
2368     pub offset: DeviceSize,
2369     pub range: DeviceSize,
2370 }
2371 impl DescriptorBufferInfo {
builder<'a>() -> DescriptorBufferInfoBuilder<'a>2372     pub fn builder<'a>() -> DescriptorBufferInfoBuilder<'a> {
2373         DescriptorBufferInfoBuilder {
2374             inner: Self::default(),
2375             marker: ::std::marker::PhantomData,
2376         }
2377     }
2378 }
2379 #[repr(transparent)]
2380 pub struct DescriptorBufferInfoBuilder<'a> {
2381     inner: DescriptorBufferInfo,
2382     marker: ::std::marker::PhantomData<&'a ()>,
2383 }
2384 impl<'a> ::std::ops::Deref for DescriptorBufferInfoBuilder<'a> {
2385     type Target = DescriptorBufferInfo;
deref(&self) -> &Self::Target2386     fn deref(&self) -> &Self::Target {
2387         &self.inner
2388     }
2389 }
2390 impl<'a> ::std::ops::DerefMut for DescriptorBufferInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2391     fn deref_mut(&mut self) -> &mut Self::Target {
2392         &mut self.inner
2393     }
2394 }
2395 impl<'a> DescriptorBufferInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self2396     pub fn buffer(mut self, buffer: Buffer) -> Self {
2397         self.inner.buffer = buffer;
2398         self
2399     }
offset(mut self, offset: DeviceSize) -> Self2400     pub fn offset(mut self, offset: DeviceSize) -> Self {
2401         self.inner.offset = offset;
2402         self
2403     }
range(mut self, range: DeviceSize) -> Self2404     pub fn range(mut self, range: DeviceSize) -> Self {
2405         self.inner.range = range;
2406         self
2407     }
2408     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2409     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2410     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorBufferInfo2411     pub fn build(self) -> DescriptorBufferInfo {
2412         self.inner
2413     }
2414 }
2415 #[repr(C)]
2416 #[cfg_attr(feature = "debug", derive(Debug))]
2417 #[derive(Copy, Clone, Default)]
2418 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorImageInfo.html>"]
2419 pub struct DescriptorImageInfo {
2420     pub sampler: Sampler,
2421     pub image_view: ImageView,
2422     pub image_layout: ImageLayout,
2423 }
2424 impl DescriptorImageInfo {
builder<'a>() -> DescriptorImageInfoBuilder<'a>2425     pub fn builder<'a>() -> DescriptorImageInfoBuilder<'a> {
2426         DescriptorImageInfoBuilder {
2427             inner: Self::default(),
2428             marker: ::std::marker::PhantomData,
2429         }
2430     }
2431 }
2432 #[repr(transparent)]
2433 pub struct DescriptorImageInfoBuilder<'a> {
2434     inner: DescriptorImageInfo,
2435     marker: ::std::marker::PhantomData<&'a ()>,
2436 }
2437 impl<'a> ::std::ops::Deref for DescriptorImageInfoBuilder<'a> {
2438     type Target = DescriptorImageInfo;
deref(&self) -> &Self::Target2439     fn deref(&self) -> &Self::Target {
2440         &self.inner
2441     }
2442 }
2443 impl<'a> ::std::ops::DerefMut for DescriptorImageInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2444     fn deref_mut(&mut self) -> &mut Self::Target {
2445         &mut self.inner
2446     }
2447 }
2448 impl<'a> DescriptorImageInfoBuilder<'a> {
sampler(mut self, sampler: Sampler) -> Self2449     pub fn sampler(mut self, sampler: Sampler) -> Self {
2450         self.inner.sampler = sampler;
2451         self
2452     }
image_view(mut self, image_view: ImageView) -> Self2453     pub fn image_view(mut self, image_view: ImageView) -> Self {
2454         self.inner.image_view = image_view;
2455         self
2456     }
image_layout(mut self, image_layout: ImageLayout) -> Self2457     pub fn image_layout(mut self, image_layout: ImageLayout) -> Self {
2458         self.inner.image_layout = image_layout;
2459         self
2460     }
2461     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2462     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2463     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorImageInfo2464     pub fn build(self) -> DescriptorImageInfo {
2465         self.inner
2466     }
2467 }
2468 #[repr(C)]
2469 #[cfg_attr(feature = "debug", derive(Debug))]
2470 #[derive(Copy, Clone)]
2471 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSet.html>"]
2472 pub struct WriteDescriptorSet {
2473     pub s_type: StructureType,
2474     pub p_next: *const c_void,
2475     pub dst_set: DescriptorSet,
2476     pub dst_binding: u32,
2477     pub dst_array_element: u32,
2478     pub descriptor_count: u32,
2479     pub descriptor_type: DescriptorType,
2480     pub p_image_info: *const DescriptorImageInfo,
2481     pub p_buffer_info: *const DescriptorBufferInfo,
2482     pub p_texel_buffer_view: *const BufferView,
2483 }
2484 impl ::std::default::Default for WriteDescriptorSet {
default() -> Self2485     fn default() -> Self {
2486         Self {
2487             s_type: StructureType::WRITE_DESCRIPTOR_SET,
2488             p_next: ::std::ptr::null(),
2489             dst_set: DescriptorSet::default(),
2490             dst_binding: u32::default(),
2491             dst_array_element: u32::default(),
2492             descriptor_count: u32::default(),
2493             descriptor_type: DescriptorType::default(),
2494             p_image_info: ::std::ptr::null(),
2495             p_buffer_info: ::std::ptr::null(),
2496             p_texel_buffer_view: ::std::ptr::null(),
2497         }
2498     }
2499 }
2500 impl WriteDescriptorSet {
builder<'a>() -> WriteDescriptorSetBuilder<'a>2501     pub fn builder<'a>() -> WriteDescriptorSetBuilder<'a> {
2502         WriteDescriptorSetBuilder {
2503             inner: Self::default(),
2504             marker: ::std::marker::PhantomData,
2505         }
2506     }
2507 }
2508 #[repr(transparent)]
2509 pub struct WriteDescriptorSetBuilder<'a> {
2510     inner: WriteDescriptorSet,
2511     marker: ::std::marker::PhantomData<&'a ()>,
2512 }
2513 pub unsafe trait ExtendsWriteDescriptorSet {}
2514 impl<'a> ::std::ops::Deref for WriteDescriptorSetBuilder<'a> {
2515     type Target = WriteDescriptorSet;
deref(&self) -> &Self::Target2516     fn deref(&self) -> &Self::Target {
2517         &self.inner
2518     }
2519 }
2520 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2521     fn deref_mut(&mut self) -> &mut Self::Target {
2522         &mut self.inner
2523     }
2524 }
2525 impl<'a> WriteDescriptorSetBuilder<'a> {
dst_set(mut self, dst_set: DescriptorSet) -> Self2526     pub fn dst_set(mut self, dst_set: DescriptorSet) -> Self {
2527         self.inner.dst_set = dst_set;
2528         self
2529     }
dst_binding(mut self, dst_binding: u32) -> Self2530     pub fn dst_binding(mut self, dst_binding: u32) -> Self {
2531         self.inner.dst_binding = dst_binding;
2532         self
2533     }
dst_array_element(mut self, dst_array_element: u32) -> Self2534     pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
2535         self.inner.dst_array_element = dst_array_element;
2536         self
2537     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self2538     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
2539         self.inner.descriptor_type = descriptor_type;
2540         self
2541     }
image_info(mut self, image_info: &'a [DescriptorImageInfo]) -> Self2542     pub fn image_info(mut self, image_info: &'a [DescriptorImageInfo]) -> Self {
2543         self.inner.descriptor_count = image_info.len() as _;
2544         self.inner.p_image_info = image_info.as_ptr();
2545         self
2546     }
buffer_info(mut self, buffer_info: &'a [DescriptorBufferInfo]) -> Self2547     pub fn buffer_info(mut self, buffer_info: &'a [DescriptorBufferInfo]) -> Self {
2548         self.inner.descriptor_count = buffer_info.len() as _;
2549         self.inner.p_buffer_info = buffer_info.as_ptr();
2550         self
2551     }
texel_buffer_view(mut self, texel_buffer_view: &'a [BufferView]) -> Self2552     pub fn texel_buffer_view(mut self, texel_buffer_view: &'a [BufferView]) -> Self {
2553         self.inner.descriptor_count = texel_buffer_view.len() as _;
2554         self.inner.p_texel_buffer_view = texel_buffer_view.as_ptr();
2555         self
2556     }
2557     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
2558     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
2559     #[doc = r" valid extension structs can be pushed into the chain."]
2560     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
2561     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsWriteDescriptorSet>(mut self, next: &'a mut T) -> Self2562     pub fn push_next<T: ExtendsWriteDescriptorSet>(mut self, next: &'a mut T) -> Self {
2563         unsafe {
2564             let next_ptr = next as *mut T as *mut BaseOutStructure;
2565             let last_next = ptr_chain_iter(next).last().unwrap();
2566             (*last_next).p_next = self.inner.p_next as _;
2567             self.inner.p_next = next_ptr as _;
2568         }
2569         self
2570     }
2571     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2572     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2573     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSet2574     pub fn build(self) -> WriteDescriptorSet {
2575         self.inner
2576     }
2577 }
2578 #[repr(C)]
2579 #[cfg_attr(feature = "debug", derive(Debug))]
2580 #[derive(Copy, Clone)]
2581 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyDescriptorSet.html>"]
2582 pub struct CopyDescriptorSet {
2583     pub s_type: StructureType,
2584     pub p_next: *const c_void,
2585     pub src_set: DescriptorSet,
2586     pub src_binding: u32,
2587     pub src_array_element: u32,
2588     pub dst_set: DescriptorSet,
2589     pub dst_binding: u32,
2590     pub dst_array_element: u32,
2591     pub descriptor_count: u32,
2592 }
2593 impl ::std::default::Default for CopyDescriptorSet {
default() -> Self2594     fn default() -> Self {
2595         Self {
2596             s_type: StructureType::COPY_DESCRIPTOR_SET,
2597             p_next: ::std::ptr::null(),
2598             src_set: DescriptorSet::default(),
2599             src_binding: u32::default(),
2600             src_array_element: u32::default(),
2601             dst_set: DescriptorSet::default(),
2602             dst_binding: u32::default(),
2603             dst_array_element: u32::default(),
2604             descriptor_count: u32::default(),
2605         }
2606     }
2607 }
2608 impl CopyDescriptorSet {
builder<'a>() -> CopyDescriptorSetBuilder<'a>2609     pub fn builder<'a>() -> CopyDescriptorSetBuilder<'a> {
2610         CopyDescriptorSetBuilder {
2611             inner: Self::default(),
2612             marker: ::std::marker::PhantomData,
2613         }
2614     }
2615 }
2616 #[repr(transparent)]
2617 pub struct CopyDescriptorSetBuilder<'a> {
2618     inner: CopyDescriptorSet,
2619     marker: ::std::marker::PhantomData<&'a ()>,
2620 }
2621 impl<'a> ::std::ops::Deref for CopyDescriptorSetBuilder<'a> {
2622     type Target = CopyDescriptorSet;
deref(&self) -> &Self::Target2623     fn deref(&self) -> &Self::Target {
2624         &self.inner
2625     }
2626 }
2627 impl<'a> ::std::ops::DerefMut for CopyDescriptorSetBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2628     fn deref_mut(&mut self) -> &mut Self::Target {
2629         &mut self.inner
2630     }
2631 }
2632 impl<'a> CopyDescriptorSetBuilder<'a> {
src_set(mut self, src_set: DescriptorSet) -> Self2633     pub fn src_set(mut self, src_set: DescriptorSet) -> Self {
2634         self.inner.src_set = src_set;
2635         self
2636     }
src_binding(mut self, src_binding: u32) -> Self2637     pub fn src_binding(mut self, src_binding: u32) -> Self {
2638         self.inner.src_binding = src_binding;
2639         self
2640     }
src_array_element(mut self, src_array_element: u32) -> Self2641     pub fn src_array_element(mut self, src_array_element: u32) -> Self {
2642         self.inner.src_array_element = src_array_element;
2643         self
2644     }
dst_set(mut self, dst_set: DescriptorSet) -> Self2645     pub fn dst_set(mut self, dst_set: DescriptorSet) -> Self {
2646         self.inner.dst_set = dst_set;
2647         self
2648     }
dst_binding(mut self, dst_binding: u32) -> Self2649     pub fn dst_binding(mut self, dst_binding: u32) -> Self {
2650         self.inner.dst_binding = dst_binding;
2651         self
2652     }
dst_array_element(mut self, dst_array_element: u32) -> Self2653     pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
2654         self.inner.dst_array_element = dst_array_element;
2655         self
2656     }
descriptor_count(mut self, descriptor_count: u32) -> Self2657     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
2658         self.inner.descriptor_count = descriptor_count;
2659         self
2660     }
2661     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2662     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2663     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyDescriptorSet2664     pub fn build(self) -> CopyDescriptorSet {
2665         self.inner
2666     }
2667 }
2668 #[repr(C)]
2669 #[cfg_attr(feature = "debug", derive(Debug))]
2670 #[derive(Copy, Clone)]
2671 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCreateInfo.html>"]
2672 pub struct BufferCreateInfo {
2673     pub s_type: StructureType,
2674     pub p_next: *const c_void,
2675     pub flags: BufferCreateFlags,
2676     pub size: DeviceSize,
2677     pub usage: BufferUsageFlags,
2678     pub sharing_mode: SharingMode,
2679     pub queue_family_index_count: u32,
2680     pub p_queue_family_indices: *const u32,
2681 }
2682 impl ::std::default::Default for BufferCreateInfo {
default() -> Self2683     fn default() -> Self {
2684         Self {
2685             s_type: StructureType::BUFFER_CREATE_INFO,
2686             p_next: ::std::ptr::null(),
2687             flags: BufferCreateFlags::default(),
2688             size: DeviceSize::default(),
2689             usage: BufferUsageFlags::default(),
2690             sharing_mode: SharingMode::default(),
2691             queue_family_index_count: u32::default(),
2692             p_queue_family_indices: ::std::ptr::null(),
2693         }
2694     }
2695 }
2696 impl BufferCreateInfo {
builder<'a>() -> BufferCreateInfoBuilder<'a>2697     pub fn builder<'a>() -> BufferCreateInfoBuilder<'a> {
2698         BufferCreateInfoBuilder {
2699             inner: Self::default(),
2700             marker: ::std::marker::PhantomData,
2701         }
2702     }
2703 }
2704 #[repr(transparent)]
2705 pub struct BufferCreateInfoBuilder<'a> {
2706     inner: BufferCreateInfo,
2707     marker: ::std::marker::PhantomData<&'a ()>,
2708 }
2709 pub unsafe trait ExtendsBufferCreateInfo {}
2710 impl<'a> ::std::ops::Deref for BufferCreateInfoBuilder<'a> {
2711     type Target = BufferCreateInfo;
deref(&self) -> &Self::Target2712     fn deref(&self) -> &Self::Target {
2713         &self.inner
2714     }
2715 }
2716 impl<'a> ::std::ops::DerefMut for BufferCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2717     fn deref_mut(&mut self) -> &mut Self::Target {
2718         &mut self.inner
2719     }
2720 }
2721 impl<'a> BufferCreateInfoBuilder<'a> {
flags(mut self, flags: BufferCreateFlags) -> Self2722     pub fn flags(mut self, flags: BufferCreateFlags) -> Self {
2723         self.inner.flags = flags;
2724         self
2725     }
size(mut self, size: DeviceSize) -> Self2726     pub fn size(mut self, size: DeviceSize) -> Self {
2727         self.inner.size = size;
2728         self
2729     }
usage(mut self, usage: BufferUsageFlags) -> Self2730     pub fn usage(mut self, usage: BufferUsageFlags) -> Self {
2731         self.inner.usage = usage;
2732         self
2733     }
sharing_mode(mut self, sharing_mode: SharingMode) -> Self2734     pub fn sharing_mode(mut self, sharing_mode: SharingMode) -> Self {
2735         self.inner.sharing_mode = sharing_mode;
2736         self
2737     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self2738     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
2739         self.inner.queue_family_index_count = queue_family_indices.len() as _;
2740         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
2741         self
2742     }
2743     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
2744     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
2745     #[doc = r" valid extension structs can be pushed into the chain."]
2746     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
2747     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBufferCreateInfo>(mut self, next: &'a mut T) -> Self2748     pub fn push_next<T: ExtendsBufferCreateInfo>(mut self, next: &'a mut T) -> Self {
2749         unsafe {
2750             let next_ptr = next as *mut T as *mut BaseOutStructure;
2751             let last_next = ptr_chain_iter(next).last().unwrap();
2752             (*last_next).p_next = self.inner.p_next as _;
2753             self.inner.p_next = next_ptr as _;
2754         }
2755         self
2756     }
2757     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2758     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2759     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCreateInfo2760     pub fn build(self) -> BufferCreateInfo {
2761         self.inner
2762     }
2763 }
2764 #[repr(C)]
2765 #[cfg_attr(feature = "debug", derive(Debug))]
2766 #[derive(Copy, Clone)]
2767 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferViewCreateInfo.html>"]
2768 pub struct BufferViewCreateInfo {
2769     pub s_type: StructureType,
2770     pub p_next: *const c_void,
2771     pub flags: BufferViewCreateFlags,
2772     pub buffer: Buffer,
2773     pub format: Format,
2774     pub offset: DeviceSize,
2775     pub range: DeviceSize,
2776 }
2777 impl ::std::default::Default for BufferViewCreateInfo {
default() -> Self2778     fn default() -> Self {
2779         Self {
2780             s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2781             p_next: ::std::ptr::null(),
2782             flags: BufferViewCreateFlags::default(),
2783             buffer: Buffer::default(),
2784             format: Format::default(),
2785             offset: DeviceSize::default(),
2786             range: DeviceSize::default(),
2787         }
2788     }
2789 }
2790 impl BufferViewCreateInfo {
builder<'a>() -> BufferViewCreateInfoBuilder<'a>2791     pub fn builder<'a>() -> BufferViewCreateInfoBuilder<'a> {
2792         BufferViewCreateInfoBuilder {
2793             inner: Self::default(),
2794             marker: ::std::marker::PhantomData,
2795         }
2796     }
2797 }
2798 #[repr(transparent)]
2799 pub struct BufferViewCreateInfoBuilder<'a> {
2800     inner: BufferViewCreateInfo,
2801     marker: ::std::marker::PhantomData<&'a ()>,
2802 }
2803 impl<'a> ::std::ops::Deref for BufferViewCreateInfoBuilder<'a> {
2804     type Target = BufferViewCreateInfo;
deref(&self) -> &Self::Target2805     fn deref(&self) -> &Self::Target {
2806         &self.inner
2807     }
2808 }
2809 impl<'a> ::std::ops::DerefMut for BufferViewCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2810     fn deref_mut(&mut self) -> &mut Self::Target {
2811         &mut self.inner
2812     }
2813 }
2814 impl<'a> BufferViewCreateInfoBuilder<'a> {
flags(mut self, flags: BufferViewCreateFlags) -> Self2815     pub fn flags(mut self, flags: BufferViewCreateFlags) -> Self {
2816         self.inner.flags = flags;
2817         self
2818     }
buffer(mut self, buffer: Buffer) -> Self2819     pub fn buffer(mut self, buffer: Buffer) -> Self {
2820         self.inner.buffer = buffer;
2821         self
2822     }
format(mut self, format: Format) -> Self2823     pub fn format(mut self, format: Format) -> Self {
2824         self.inner.format = format;
2825         self
2826     }
offset(mut self, offset: DeviceSize) -> Self2827     pub fn offset(mut self, offset: DeviceSize) -> Self {
2828         self.inner.offset = offset;
2829         self
2830     }
range(mut self, range: DeviceSize) -> Self2831     pub fn range(mut self, range: DeviceSize) -> Self {
2832         self.inner.range = range;
2833         self
2834     }
2835     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2836     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2837     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferViewCreateInfo2838     pub fn build(self) -> BufferViewCreateInfo {
2839         self.inner
2840     }
2841 }
2842 #[repr(C)]
2843 #[cfg_attr(feature = "debug", derive(Debug))]
2844 #[derive(Copy, Clone, Default)]
2845 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresource.html>"]
2846 pub struct ImageSubresource {
2847     pub aspect_mask: ImageAspectFlags,
2848     pub mip_level: u32,
2849     pub array_layer: u32,
2850 }
2851 impl ImageSubresource {
builder<'a>() -> ImageSubresourceBuilder<'a>2852     pub fn builder<'a>() -> ImageSubresourceBuilder<'a> {
2853         ImageSubresourceBuilder {
2854             inner: Self::default(),
2855             marker: ::std::marker::PhantomData,
2856         }
2857     }
2858 }
2859 #[repr(transparent)]
2860 pub struct ImageSubresourceBuilder<'a> {
2861     inner: ImageSubresource,
2862     marker: ::std::marker::PhantomData<&'a ()>,
2863 }
2864 impl<'a> ::std::ops::Deref for ImageSubresourceBuilder<'a> {
2865     type Target = ImageSubresource;
deref(&self) -> &Self::Target2866     fn deref(&self) -> &Self::Target {
2867         &self.inner
2868     }
2869 }
2870 impl<'a> ::std::ops::DerefMut for ImageSubresourceBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2871     fn deref_mut(&mut self) -> &mut Self::Target {
2872         &mut self.inner
2873     }
2874 }
2875 impl<'a> ImageSubresourceBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self2876     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
2877         self.inner.aspect_mask = aspect_mask;
2878         self
2879     }
mip_level(mut self, mip_level: u32) -> Self2880     pub fn mip_level(mut self, mip_level: u32) -> Self {
2881         self.inner.mip_level = mip_level;
2882         self
2883     }
array_layer(mut self, array_layer: u32) -> Self2884     pub fn array_layer(mut self, array_layer: u32) -> Self {
2885         self.inner.array_layer = array_layer;
2886         self
2887     }
2888     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2889     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2890     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSubresource2891     pub fn build(self) -> ImageSubresource {
2892         self.inner
2893     }
2894 }
2895 #[repr(C)]
2896 #[cfg_attr(feature = "debug", derive(Debug))]
2897 #[derive(Copy, Clone, Default)]
2898 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceLayers.html>"]
2899 pub struct ImageSubresourceLayers {
2900     pub aspect_mask: ImageAspectFlags,
2901     pub mip_level: u32,
2902     pub base_array_layer: u32,
2903     pub layer_count: u32,
2904 }
2905 impl ImageSubresourceLayers {
builder<'a>() -> ImageSubresourceLayersBuilder<'a>2906     pub fn builder<'a>() -> ImageSubresourceLayersBuilder<'a> {
2907         ImageSubresourceLayersBuilder {
2908             inner: Self::default(),
2909             marker: ::std::marker::PhantomData,
2910         }
2911     }
2912 }
2913 #[repr(transparent)]
2914 pub struct ImageSubresourceLayersBuilder<'a> {
2915     inner: ImageSubresourceLayers,
2916     marker: ::std::marker::PhantomData<&'a ()>,
2917 }
2918 impl<'a> ::std::ops::Deref for ImageSubresourceLayersBuilder<'a> {
2919     type Target = ImageSubresourceLayers;
deref(&self) -> &Self::Target2920     fn deref(&self) -> &Self::Target {
2921         &self.inner
2922     }
2923 }
2924 impl<'a> ::std::ops::DerefMut for ImageSubresourceLayersBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2925     fn deref_mut(&mut self) -> &mut Self::Target {
2926         &mut self.inner
2927     }
2928 }
2929 impl<'a> ImageSubresourceLayersBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self2930     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
2931         self.inner.aspect_mask = aspect_mask;
2932         self
2933     }
mip_level(mut self, mip_level: u32) -> Self2934     pub fn mip_level(mut self, mip_level: u32) -> Self {
2935         self.inner.mip_level = mip_level;
2936         self
2937     }
base_array_layer(mut self, base_array_layer: u32) -> Self2938     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
2939         self.inner.base_array_layer = base_array_layer;
2940         self
2941     }
layer_count(mut self, layer_count: u32) -> Self2942     pub fn layer_count(mut self, layer_count: u32) -> Self {
2943         self.inner.layer_count = layer_count;
2944         self
2945     }
2946     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
2947     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
2948     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSubresourceLayers2949     pub fn build(self) -> ImageSubresourceLayers {
2950         self.inner
2951     }
2952 }
2953 #[repr(C)]
2954 #[cfg_attr(feature = "debug", derive(Debug))]
2955 #[derive(Copy, Clone, Default)]
2956 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceRange.html>"]
2957 pub struct ImageSubresourceRange {
2958     pub aspect_mask: ImageAspectFlags,
2959     pub base_mip_level: u32,
2960     pub level_count: u32,
2961     pub base_array_layer: u32,
2962     pub layer_count: u32,
2963 }
2964 impl ImageSubresourceRange {
builder<'a>() -> ImageSubresourceRangeBuilder<'a>2965     pub fn builder<'a>() -> ImageSubresourceRangeBuilder<'a> {
2966         ImageSubresourceRangeBuilder {
2967             inner: Self::default(),
2968             marker: ::std::marker::PhantomData,
2969         }
2970     }
2971 }
2972 #[repr(transparent)]
2973 pub struct ImageSubresourceRangeBuilder<'a> {
2974     inner: ImageSubresourceRange,
2975     marker: ::std::marker::PhantomData<&'a ()>,
2976 }
2977 impl<'a> ::std::ops::Deref for ImageSubresourceRangeBuilder<'a> {
2978     type Target = ImageSubresourceRange;
deref(&self) -> &Self::Target2979     fn deref(&self) -> &Self::Target {
2980         &self.inner
2981     }
2982 }
2983 impl<'a> ::std::ops::DerefMut for ImageSubresourceRangeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target2984     fn deref_mut(&mut self) -> &mut Self::Target {
2985         &mut self.inner
2986     }
2987 }
2988 impl<'a> ImageSubresourceRangeBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self2989     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
2990         self.inner.aspect_mask = aspect_mask;
2991         self
2992     }
base_mip_level(mut self, base_mip_level: u32) -> Self2993     pub fn base_mip_level(mut self, base_mip_level: u32) -> Self {
2994         self.inner.base_mip_level = base_mip_level;
2995         self
2996     }
level_count(mut self, level_count: u32) -> Self2997     pub fn level_count(mut self, level_count: u32) -> Self {
2998         self.inner.level_count = level_count;
2999         self
3000     }
base_array_layer(mut self, base_array_layer: u32) -> Self3001     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
3002         self.inner.base_array_layer = base_array_layer;
3003         self
3004     }
layer_count(mut self, layer_count: u32) -> Self3005     pub fn layer_count(mut self, layer_count: u32) -> Self {
3006         self.inner.layer_count = layer_count;
3007         self
3008     }
3009     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3010     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3011     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSubresourceRange3012     pub fn build(self) -> ImageSubresourceRange {
3013         self.inner
3014     }
3015 }
3016 #[repr(C)]
3017 #[cfg_attr(feature = "debug", derive(Debug))]
3018 #[derive(Copy, Clone)]
3019 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryBarrier.html>"]
3020 pub struct MemoryBarrier {
3021     pub s_type: StructureType,
3022     pub p_next: *const c_void,
3023     pub src_access_mask: AccessFlags,
3024     pub dst_access_mask: AccessFlags,
3025 }
3026 impl ::std::default::Default for MemoryBarrier {
default() -> Self3027     fn default() -> Self {
3028         Self {
3029             s_type: StructureType::MEMORY_BARRIER,
3030             p_next: ::std::ptr::null(),
3031             src_access_mask: AccessFlags::default(),
3032             dst_access_mask: AccessFlags::default(),
3033         }
3034     }
3035 }
3036 impl MemoryBarrier {
builder<'a>() -> MemoryBarrierBuilder<'a>3037     pub fn builder<'a>() -> MemoryBarrierBuilder<'a> {
3038         MemoryBarrierBuilder {
3039             inner: Self::default(),
3040             marker: ::std::marker::PhantomData,
3041         }
3042     }
3043 }
3044 #[repr(transparent)]
3045 pub struct MemoryBarrierBuilder<'a> {
3046     inner: MemoryBarrier,
3047     marker: ::std::marker::PhantomData<&'a ()>,
3048 }
3049 impl<'a> ::std::ops::Deref for MemoryBarrierBuilder<'a> {
3050     type Target = MemoryBarrier;
deref(&self) -> &Self::Target3051     fn deref(&self) -> &Self::Target {
3052         &self.inner
3053     }
3054 }
3055 impl<'a> ::std::ops::DerefMut for MemoryBarrierBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3056     fn deref_mut(&mut self) -> &mut Self::Target {
3057         &mut self.inner
3058     }
3059 }
3060 impl<'a> MemoryBarrierBuilder<'a> {
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self3061     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
3062         self.inner.src_access_mask = src_access_mask;
3063         self
3064     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self3065     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
3066         self.inner.dst_access_mask = dst_access_mask;
3067         self
3068     }
3069     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3070     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3071     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryBarrier3072     pub fn build(self) -> MemoryBarrier {
3073         self.inner
3074     }
3075 }
3076 #[repr(C)]
3077 #[cfg_attr(feature = "debug", derive(Debug))]
3078 #[derive(Copy, Clone)]
3079 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryBarrier.html>"]
3080 pub struct BufferMemoryBarrier {
3081     pub s_type: StructureType,
3082     pub p_next: *const c_void,
3083     pub src_access_mask: AccessFlags,
3084     pub dst_access_mask: AccessFlags,
3085     pub src_queue_family_index: u32,
3086     pub dst_queue_family_index: u32,
3087     pub buffer: Buffer,
3088     pub offset: DeviceSize,
3089     pub size: DeviceSize,
3090 }
3091 impl ::std::default::Default for BufferMemoryBarrier {
default() -> Self3092     fn default() -> Self {
3093         Self {
3094             s_type: StructureType::BUFFER_MEMORY_BARRIER,
3095             p_next: ::std::ptr::null(),
3096             src_access_mask: AccessFlags::default(),
3097             dst_access_mask: AccessFlags::default(),
3098             src_queue_family_index: u32::default(),
3099             dst_queue_family_index: u32::default(),
3100             buffer: Buffer::default(),
3101             offset: DeviceSize::default(),
3102             size: DeviceSize::default(),
3103         }
3104     }
3105 }
3106 impl BufferMemoryBarrier {
builder<'a>() -> BufferMemoryBarrierBuilder<'a>3107     pub fn builder<'a>() -> BufferMemoryBarrierBuilder<'a> {
3108         BufferMemoryBarrierBuilder {
3109             inner: Self::default(),
3110             marker: ::std::marker::PhantomData,
3111         }
3112     }
3113 }
3114 #[repr(transparent)]
3115 pub struct BufferMemoryBarrierBuilder<'a> {
3116     inner: BufferMemoryBarrier,
3117     marker: ::std::marker::PhantomData<&'a ()>,
3118 }
3119 impl<'a> ::std::ops::Deref for BufferMemoryBarrierBuilder<'a> {
3120     type Target = BufferMemoryBarrier;
deref(&self) -> &Self::Target3121     fn deref(&self) -> &Self::Target {
3122         &self.inner
3123     }
3124 }
3125 impl<'a> ::std::ops::DerefMut for BufferMemoryBarrierBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3126     fn deref_mut(&mut self) -> &mut Self::Target {
3127         &mut self.inner
3128     }
3129 }
3130 impl<'a> BufferMemoryBarrierBuilder<'a> {
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self3131     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
3132         self.inner.src_access_mask = src_access_mask;
3133         self
3134     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self3135     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
3136         self.inner.dst_access_mask = dst_access_mask;
3137         self
3138     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self3139     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
3140         self.inner.src_queue_family_index = src_queue_family_index;
3141         self
3142     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self3143     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
3144         self.inner.dst_queue_family_index = dst_queue_family_index;
3145         self
3146     }
buffer(mut self, buffer: Buffer) -> Self3147     pub fn buffer(mut self, buffer: Buffer) -> Self {
3148         self.inner.buffer = buffer;
3149         self
3150     }
offset(mut self, offset: DeviceSize) -> Self3151     pub fn offset(mut self, offset: DeviceSize) -> Self {
3152         self.inner.offset = offset;
3153         self
3154     }
size(mut self, size: DeviceSize) -> Self3155     pub fn size(mut self, size: DeviceSize) -> Self {
3156         self.inner.size = size;
3157         self
3158     }
3159     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3160     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3161     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferMemoryBarrier3162     pub fn build(self) -> BufferMemoryBarrier {
3163         self.inner
3164     }
3165 }
3166 #[repr(C)]
3167 #[cfg_attr(feature = "debug", derive(Debug))]
3168 #[derive(Copy, Clone)]
3169 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryBarrier.html>"]
3170 pub struct ImageMemoryBarrier {
3171     pub s_type: StructureType,
3172     pub p_next: *const c_void,
3173     pub src_access_mask: AccessFlags,
3174     pub dst_access_mask: AccessFlags,
3175     pub old_layout: ImageLayout,
3176     pub new_layout: ImageLayout,
3177     pub src_queue_family_index: u32,
3178     pub dst_queue_family_index: u32,
3179     pub image: Image,
3180     pub subresource_range: ImageSubresourceRange,
3181 }
3182 impl ::std::default::Default for ImageMemoryBarrier {
default() -> Self3183     fn default() -> Self {
3184         Self {
3185             s_type: StructureType::IMAGE_MEMORY_BARRIER,
3186             p_next: ::std::ptr::null(),
3187             src_access_mask: AccessFlags::default(),
3188             dst_access_mask: AccessFlags::default(),
3189             old_layout: ImageLayout::default(),
3190             new_layout: ImageLayout::default(),
3191             src_queue_family_index: u32::default(),
3192             dst_queue_family_index: u32::default(),
3193             image: Image::default(),
3194             subresource_range: ImageSubresourceRange::default(),
3195         }
3196     }
3197 }
3198 impl ImageMemoryBarrier {
builder<'a>() -> ImageMemoryBarrierBuilder<'a>3199     pub fn builder<'a>() -> ImageMemoryBarrierBuilder<'a> {
3200         ImageMemoryBarrierBuilder {
3201             inner: Self::default(),
3202             marker: ::std::marker::PhantomData,
3203         }
3204     }
3205 }
3206 #[repr(transparent)]
3207 pub struct ImageMemoryBarrierBuilder<'a> {
3208     inner: ImageMemoryBarrier,
3209     marker: ::std::marker::PhantomData<&'a ()>,
3210 }
3211 pub unsafe trait ExtendsImageMemoryBarrier {}
3212 impl<'a> ::std::ops::Deref for ImageMemoryBarrierBuilder<'a> {
3213     type Target = ImageMemoryBarrier;
deref(&self) -> &Self::Target3214     fn deref(&self) -> &Self::Target {
3215         &self.inner
3216     }
3217 }
3218 impl<'a> ::std::ops::DerefMut for ImageMemoryBarrierBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3219     fn deref_mut(&mut self) -> &mut Self::Target {
3220         &mut self.inner
3221     }
3222 }
3223 impl<'a> ImageMemoryBarrierBuilder<'a> {
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self3224     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
3225         self.inner.src_access_mask = src_access_mask;
3226         self
3227     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self3228     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
3229         self.inner.dst_access_mask = dst_access_mask;
3230         self
3231     }
old_layout(mut self, old_layout: ImageLayout) -> Self3232     pub fn old_layout(mut self, old_layout: ImageLayout) -> Self {
3233         self.inner.old_layout = old_layout;
3234         self
3235     }
new_layout(mut self, new_layout: ImageLayout) -> Self3236     pub fn new_layout(mut self, new_layout: ImageLayout) -> Self {
3237         self.inner.new_layout = new_layout;
3238         self
3239     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self3240     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
3241         self.inner.src_queue_family_index = src_queue_family_index;
3242         self
3243     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self3244     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
3245         self.inner.dst_queue_family_index = dst_queue_family_index;
3246         self
3247     }
image(mut self, image: Image) -> Self3248     pub fn image(mut self, image: Image) -> Self {
3249         self.inner.image = image;
3250         self
3251     }
subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self3252     pub fn subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self {
3253         self.inner.subresource_range = subresource_range;
3254         self
3255     }
3256     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
3257     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
3258     #[doc = r" valid extension structs can be pushed into the chain."]
3259     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
3260     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageMemoryBarrier>(mut self, next: &'a mut T) -> Self3261     pub fn push_next<T: ExtendsImageMemoryBarrier>(mut self, next: &'a mut T) -> Self {
3262         unsafe {
3263             let next_ptr = next as *mut T as *mut BaseOutStructure;
3264             let last_next = ptr_chain_iter(next).last().unwrap();
3265             (*last_next).p_next = self.inner.p_next as _;
3266             self.inner.p_next = next_ptr as _;
3267         }
3268         self
3269     }
3270     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3271     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3272     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageMemoryBarrier3273     pub fn build(self) -> ImageMemoryBarrier {
3274         self.inner
3275     }
3276 }
3277 #[repr(C)]
3278 #[cfg_attr(feature = "debug", derive(Debug))]
3279 #[derive(Copy, Clone)]
3280 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCreateInfo.html>"]
3281 pub struct ImageCreateInfo {
3282     pub s_type: StructureType,
3283     pub p_next: *const c_void,
3284     pub flags: ImageCreateFlags,
3285     pub image_type: ImageType,
3286     pub format: Format,
3287     pub extent: Extent3D,
3288     pub mip_levels: u32,
3289     pub array_layers: u32,
3290     pub samples: SampleCountFlags,
3291     pub tiling: ImageTiling,
3292     pub usage: ImageUsageFlags,
3293     pub sharing_mode: SharingMode,
3294     pub queue_family_index_count: u32,
3295     pub p_queue_family_indices: *const u32,
3296     pub initial_layout: ImageLayout,
3297 }
3298 impl ::std::default::Default for ImageCreateInfo {
default() -> Self3299     fn default() -> Self {
3300         Self {
3301             s_type: StructureType::IMAGE_CREATE_INFO,
3302             p_next: ::std::ptr::null(),
3303             flags: ImageCreateFlags::default(),
3304             image_type: ImageType::default(),
3305             format: Format::default(),
3306             extent: Extent3D::default(),
3307             mip_levels: u32::default(),
3308             array_layers: u32::default(),
3309             samples: SampleCountFlags::default(),
3310             tiling: ImageTiling::default(),
3311             usage: ImageUsageFlags::default(),
3312             sharing_mode: SharingMode::default(),
3313             queue_family_index_count: u32::default(),
3314             p_queue_family_indices: ::std::ptr::null(),
3315             initial_layout: ImageLayout::default(),
3316         }
3317     }
3318 }
3319 impl ImageCreateInfo {
builder<'a>() -> ImageCreateInfoBuilder<'a>3320     pub fn builder<'a>() -> ImageCreateInfoBuilder<'a> {
3321         ImageCreateInfoBuilder {
3322             inner: Self::default(),
3323             marker: ::std::marker::PhantomData,
3324         }
3325     }
3326 }
3327 #[repr(transparent)]
3328 pub struct ImageCreateInfoBuilder<'a> {
3329     inner: ImageCreateInfo,
3330     marker: ::std::marker::PhantomData<&'a ()>,
3331 }
3332 pub unsafe trait ExtendsImageCreateInfo {}
3333 impl<'a> ::std::ops::Deref for ImageCreateInfoBuilder<'a> {
3334     type Target = ImageCreateInfo;
deref(&self) -> &Self::Target3335     fn deref(&self) -> &Self::Target {
3336         &self.inner
3337     }
3338 }
3339 impl<'a> ::std::ops::DerefMut for ImageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3340     fn deref_mut(&mut self) -> &mut Self::Target {
3341         &mut self.inner
3342     }
3343 }
3344 impl<'a> ImageCreateInfoBuilder<'a> {
flags(mut self, flags: ImageCreateFlags) -> Self3345     pub fn flags(mut self, flags: ImageCreateFlags) -> Self {
3346         self.inner.flags = flags;
3347         self
3348     }
image_type(mut self, image_type: ImageType) -> Self3349     pub fn image_type(mut self, image_type: ImageType) -> Self {
3350         self.inner.image_type = image_type;
3351         self
3352     }
format(mut self, format: Format) -> Self3353     pub fn format(mut self, format: Format) -> Self {
3354         self.inner.format = format;
3355         self
3356     }
extent(mut self, extent: Extent3D) -> Self3357     pub fn extent(mut self, extent: Extent3D) -> Self {
3358         self.inner.extent = extent;
3359         self
3360     }
mip_levels(mut self, mip_levels: u32) -> Self3361     pub fn mip_levels(mut self, mip_levels: u32) -> Self {
3362         self.inner.mip_levels = mip_levels;
3363         self
3364     }
array_layers(mut self, array_layers: u32) -> Self3365     pub fn array_layers(mut self, array_layers: u32) -> Self {
3366         self.inner.array_layers = array_layers;
3367         self
3368     }
samples(mut self, samples: SampleCountFlags) -> Self3369     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
3370         self.inner.samples = samples;
3371         self
3372     }
tiling(mut self, tiling: ImageTiling) -> Self3373     pub fn tiling(mut self, tiling: ImageTiling) -> Self {
3374         self.inner.tiling = tiling;
3375         self
3376     }
usage(mut self, usage: ImageUsageFlags) -> Self3377     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
3378         self.inner.usage = usage;
3379         self
3380     }
sharing_mode(mut self, sharing_mode: SharingMode) -> Self3381     pub fn sharing_mode(mut self, sharing_mode: SharingMode) -> Self {
3382         self.inner.sharing_mode = sharing_mode;
3383         self
3384     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self3385     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
3386         self.inner.queue_family_index_count = queue_family_indices.len() as _;
3387         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
3388         self
3389     }
initial_layout(mut self, initial_layout: ImageLayout) -> Self3390     pub fn initial_layout(mut self, initial_layout: ImageLayout) -> Self {
3391         self.inner.initial_layout = initial_layout;
3392         self
3393     }
3394     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
3395     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
3396     #[doc = r" valid extension structs can be pushed into the chain."]
3397     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
3398     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageCreateInfo>(mut self, next: &'a mut T) -> Self3399     pub fn push_next<T: ExtendsImageCreateInfo>(mut self, next: &'a mut T) -> Self {
3400         unsafe {
3401             let next_ptr = next as *mut T as *mut BaseOutStructure;
3402             let last_next = ptr_chain_iter(next).last().unwrap();
3403             (*last_next).p_next = self.inner.p_next as _;
3404             self.inner.p_next = next_ptr as _;
3405         }
3406         self
3407     }
3408     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3409     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3410     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageCreateInfo3411     pub fn build(self) -> ImageCreateInfo {
3412         self.inner
3413     }
3414 }
3415 #[repr(C)]
3416 #[cfg_attr(feature = "debug", derive(Debug))]
3417 #[derive(Copy, Clone, Default)]
3418 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubresourceLayout.html>"]
3419 pub struct SubresourceLayout {
3420     pub offset: DeviceSize,
3421     pub size: DeviceSize,
3422     pub row_pitch: DeviceSize,
3423     pub array_pitch: DeviceSize,
3424     pub depth_pitch: DeviceSize,
3425 }
3426 impl SubresourceLayout {
builder<'a>() -> SubresourceLayoutBuilder<'a>3427     pub fn builder<'a>() -> SubresourceLayoutBuilder<'a> {
3428         SubresourceLayoutBuilder {
3429             inner: Self::default(),
3430             marker: ::std::marker::PhantomData,
3431         }
3432     }
3433 }
3434 #[repr(transparent)]
3435 pub struct SubresourceLayoutBuilder<'a> {
3436     inner: SubresourceLayout,
3437     marker: ::std::marker::PhantomData<&'a ()>,
3438 }
3439 impl<'a> ::std::ops::Deref for SubresourceLayoutBuilder<'a> {
3440     type Target = SubresourceLayout;
deref(&self) -> &Self::Target3441     fn deref(&self) -> &Self::Target {
3442         &self.inner
3443     }
3444 }
3445 impl<'a> ::std::ops::DerefMut for SubresourceLayoutBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3446     fn deref_mut(&mut self) -> &mut Self::Target {
3447         &mut self.inner
3448     }
3449 }
3450 impl<'a> SubresourceLayoutBuilder<'a> {
offset(mut self, offset: DeviceSize) -> Self3451     pub fn offset(mut self, offset: DeviceSize) -> Self {
3452         self.inner.offset = offset;
3453         self
3454     }
size(mut self, size: DeviceSize) -> Self3455     pub fn size(mut self, size: DeviceSize) -> Self {
3456         self.inner.size = size;
3457         self
3458     }
row_pitch(mut self, row_pitch: DeviceSize) -> Self3459     pub fn row_pitch(mut self, row_pitch: DeviceSize) -> Self {
3460         self.inner.row_pitch = row_pitch;
3461         self
3462     }
array_pitch(mut self, array_pitch: DeviceSize) -> Self3463     pub fn array_pitch(mut self, array_pitch: DeviceSize) -> Self {
3464         self.inner.array_pitch = array_pitch;
3465         self
3466     }
depth_pitch(mut self, depth_pitch: DeviceSize) -> Self3467     pub fn depth_pitch(mut self, depth_pitch: DeviceSize) -> Self {
3468         self.inner.depth_pitch = depth_pitch;
3469         self
3470     }
3471     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3472     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3473     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubresourceLayout3474     pub fn build(self) -> SubresourceLayout {
3475         self.inner
3476     }
3477 }
3478 #[repr(C)]
3479 #[cfg_attr(feature = "debug", derive(Debug))]
3480 #[derive(Copy, Clone)]
3481 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewCreateInfo.html>"]
3482 pub struct ImageViewCreateInfo {
3483     pub s_type: StructureType,
3484     pub p_next: *const c_void,
3485     pub flags: ImageViewCreateFlags,
3486     pub image: Image,
3487     pub view_type: ImageViewType,
3488     pub format: Format,
3489     pub components: ComponentMapping,
3490     pub subresource_range: ImageSubresourceRange,
3491 }
3492 impl ::std::default::Default for ImageViewCreateInfo {
default() -> Self3493     fn default() -> Self {
3494         Self {
3495             s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
3496             p_next: ::std::ptr::null(),
3497             flags: ImageViewCreateFlags::default(),
3498             image: Image::default(),
3499             view_type: ImageViewType::default(),
3500             format: Format::default(),
3501             components: ComponentMapping::default(),
3502             subresource_range: ImageSubresourceRange::default(),
3503         }
3504     }
3505 }
3506 impl ImageViewCreateInfo {
builder<'a>() -> ImageViewCreateInfoBuilder<'a>3507     pub fn builder<'a>() -> ImageViewCreateInfoBuilder<'a> {
3508         ImageViewCreateInfoBuilder {
3509             inner: Self::default(),
3510             marker: ::std::marker::PhantomData,
3511         }
3512     }
3513 }
3514 #[repr(transparent)]
3515 pub struct ImageViewCreateInfoBuilder<'a> {
3516     inner: ImageViewCreateInfo,
3517     marker: ::std::marker::PhantomData<&'a ()>,
3518 }
3519 pub unsafe trait ExtendsImageViewCreateInfo {}
3520 impl<'a> ::std::ops::Deref for ImageViewCreateInfoBuilder<'a> {
3521     type Target = ImageViewCreateInfo;
deref(&self) -> &Self::Target3522     fn deref(&self) -> &Self::Target {
3523         &self.inner
3524     }
3525 }
3526 impl<'a> ::std::ops::DerefMut for ImageViewCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3527     fn deref_mut(&mut self) -> &mut Self::Target {
3528         &mut self.inner
3529     }
3530 }
3531 impl<'a> ImageViewCreateInfoBuilder<'a> {
flags(mut self, flags: ImageViewCreateFlags) -> Self3532     pub fn flags(mut self, flags: ImageViewCreateFlags) -> Self {
3533         self.inner.flags = flags;
3534         self
3535     }
image(mut self, image: Image) -> Self3536     pub fn image(mut self, image: Image) -> Self {
3537         self.inner.image = image;
3538         self
3539     }
view_type(mut self, view_type: ImageViewType) -> Self3540     pub fn view_type(mut self, view_type: ImageViewType) -> Self {
3541         self.inner.view_type = view_type;
3542         self
3543     }
format(mut self, format: Format) -> Self3544     pub fn format(mut self, format: Format) -> Self {
3545         self.inner.format = format;
3546         self
3547     }
components(mut self, components: ComponentMapping) -> Self3548     pub fn components(mut self, components: ComponentMapping) -> Self {
3549         self.inner.components = components;
3550         self
3551     }
subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self3552     pub fn subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self {
3553         self.inner.subresource_range = subresource_range;
3554         self
3555     }
3556     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
3557     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
3558     #[doc = r" valid extension structs can be pushed into the chain."]
3559     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
3560     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageViewCreateInfo>(mut self, next: &'a mut T) -> Self3561     pub fn push_next<T: ExtendsImageViewCreateInfo>(mut self, next: &'a mut T) -> Self {
3562         unsafe {
3563             let next_ptr = next as *mut T as *mut BaseOutStructure;
3564             let last_next = ptr_chain_iter(next).last().unwrap();
3565             (*last_next).p_next = self.inner.p_next as _;
3566             self.inner.p_next = next_ptr as _;
3567         }
3568         self
3569     }
3570     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3571     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3572     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewCreateInfo3573     pub fn build(self) -> ImageViewCreateInfo {
3574         self.inner
3575     }
3576 }
3577 #[repr(C)]
3578 #[cfg_attr(feature = "debug", derive(Debug))]
3579 #[derive(Copy, Clone, Default)]
3580 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCopy.html>"]
3581 pub struct BufferCopy {
3582     pub src_offset: DeviceSize,
3583     pub dst_offset: DeviceSize,
3584     pub size: DeviceSize,
3585 }
3586 impl BufferCopy {
builder<'a>() -> BufferCopyBuilder<'a>3587     pub fn builder<'a>() -> BufferCopyBuilder<'a> {
3588         BufferCopyBuilder {
3589             inner: Self::default(),
3590             marker: ::std::marker::PhantomData,
3591         }
3592     }
3593 }
3594 #[repr(transparent)]
3595 pub struct BufferCopyBuilder<'a> {
3596     inner: BufferCopy,
3597     marker: ::std::marker::PhantomData<&'a ()>,
3598 }
3599 impl<'a> ::std::ops::Deref for BufferCopyBuilder<'a> {
3600     type Target = BufferCopy;
deref(&self) -> &Self::Target3601     fn deref(&self) -> &Self::Target {
3602         &self.inner
3603     }
3604 }
3605 impl<'a> ::std::ops::DerefMut for BufferCopyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3606     fn deref_mut(&mut self) -> &mut Self::Target {
3607         &mut self.inner
3608     }
3609 }
3610 impl<'a> BufferCopyBuilder<'a> {
src_offset(mut self, src_offset: DeviceSize) -> Self3611     pub fn src_offset(mut self, src_offset: DeviceSize) -> Self {
3612         self.inner.src_offset = src_offset;
3613         self
3614     }
dst_offset(mut self, dst_offset: DeviceSize) -> Self3615     pub fn dst_offset(mut self, dst_offset: DeviceSize) -> Self {
3616         self.inner.dst_offset = dst_offset;
3617         self
3618     }
size(mut self, size: DeviceSize) -> Self3619     pub fn size(mut self, size: DeviceSize) -> Self {
3620         self.inner.size = size;
3621         self
3622     }
3623     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3624     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3625     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCopy3626     pub fn build(self) -> BufferCopy {
3627         self.inner
3628     }
3629 }
3630 #[repr(C)]
3631 #[cfg_attr(feature = "debug", derive(Debug))]
3632 #[derive(Copy, Clone, Default)]
3633 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseMemoryBind.html>"]
3634 pub struct SparseMemoryBind {
3635     pub resource_offset: DeviceSize,
3636     pub size: DeviceSize,
3637     pub memory: DeviceMemory,
3638     pub memory_offset: DeviceSize,
3639     pub flags: SparseMemoryBindFlags,
3640 }
3641 impl SparseMemoryBind {
builder<'a>() -> SparseMemoryBindBuilder<'a>3642     pub fn builder<'a>() -> SparseMemoryBindBuilder<'a> {
3643         SparseMemoryBindBuilder {
3644             inner: Self::default(),
3645             marker: ::std::marker::PhantomData,
3646         }
3647     }
3648 }
3649 #[repr(transparent)]
3650 pub struct SparseMemoryBindBuilder<'a> {
3651     inner: SparseMemoryBind,
3652     marker: ::std::marker::PhantomData<&'a ()>,
3653 }
3654 impl<'a> ::std::ops::Deref for SparseMemoryBindBuilder<'a> {
3655     type Target = SparseMemoryBind;
deref(&self) -> &Self::Target3656     fn deref(&self) -> &Self::Target {
3657         &self.inner
3658     }
3659 }
3660 impl<'a> ::std::ops::DerefMut for SparseMemoryBindBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3661     fn deref_mut(&mut self) -> &mut Self::Target {
3662         &mut self.inner
3663     }
3664 }
3665 impl<'a> SparseMemoryBindBuilder<'a> {
resource_offset(mut self, resource_offset: DeviceSize) -> Self3666     pub fn resource_offset(mut self, resource_offset: DeviceSize) -> Self {
3667         self.inner.resource_offset = resource_offset;
3668         self
3669     }
size(mut self, size: DeviceSize) -> Self3670     pub fn size(mut self, size: DeviceSize) -> Self {
3671         self.inner.size = size;
3672         self
3673     }
memory(mut self, memory: DeviceMemory) -> Self3674     pub fn memory(mut self, memory: DeviceMemory) -> Self {
3675         self.inner.memory = memory;
3676         self
3677     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self3678     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
3679         self.inner.memory_offset = memory_offset;
3680         self
3681     }
flags(mut self, flags: SparseMemoryBindFlags) -> Self3682     pub fn flags(mut self, flags: SparseMemoryBindFlags) -> Self {
3683         self.inner.flags = flags;
3684         self
3685     }
3686     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3687     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3688     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseMemoryBind3689     pub fn build(self) -> SparseMemoryBind {
3690         self.inner
3691     }
3692 }
3693 #[repr(C)]
3694 #[cfg_attr(feature = "debug", derive(Debug))]
3695 #[derive(Copy, Clone, Default)]
3696 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBind.html>"]
3697 pub struct SparseImageMemoryBind {
3698     pub subresource: ImageSubresource,
3699     pub offset: Offset3D,
3700     pub extent: Extent3D,
3701     pub memory: DeviceMemory,
3702     pub memory_offset: DeviceSize,
3703     pub flags: SparseMemoryBindFlags,
3704 }
3705 impl SparseImageMemoryBind {
builder<'a>() -> SparseImageMemoryBindBuilder<'a>3706     pub fn builder<'a>() -> SparseImageMemoryBindBuilder<'a> {
3707         SparseImageMemoryBindBuilder {
3708             inner: Self::default(),
3709             marker: ::std::marker::PhantomData,
3710         }
3711     }
3712 }
3713 #[repr(transparent)]
3714 pub struct SparseImageMemoryBindBuilder<'a> {
3715     inner: SparseImageMemoryBind,
3716     marker: ::std::marker::PhantomData<&'a ()>,
3717 }
3718 impl<'a> ::std::ops::Deref for SparseImageMemoryBindBuilder<'a> {
3719     type Target = SparseImageMemoryBind;
deref(&self) -> &Self::Target3720     fn deref(&self) -> &Self::Target {
3721         &self.inner
3722     }
3723 }
3724 impl<'a> ::std::ops::DerefMut for SparseImageMemoryBindBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3725     fn deref_mut(&mut self) -> &mut Self::Target {
3726         &mut self.inner
3727     }
3728 }
3729 impl<'a> SparseImageMemoryBindBuilder<'a> {
subresource(mut self, subresource: ImageSubresource) -> Self3730     pub fn subresource(mut self, subresource: ImageSubresource) -> Self {
3731         self.inner.subresource = subresource;
3732         self
3733     }
offset(mut self, offset: Offset3D) -> Self3734     pub fn offset(mut self, offset: Offset3D) -> Self {
3735         self.inner.offset = offset;
3736         self
3737     }
extent(mut self, extent: Extent3D) -> Self3738     pub fn extent(mut self, extent: Extent3D) -> Self {
3739         self.inner.extent = extent;
3740         self
3741     }
memory(mut self, memory: DeviceMemory) -> Self3742     pub fn memory(mut self, memory: DeviceMemory) -> Self {
3743         self.inner.memory = memory;
3744         self
3745     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self3746     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
3747         self.inner.memory_offset = memory_offset;
3748         self
3749     }
flags(mut self, flags: SparseMemoryBindFlags) -> Self3750     pub fn flags(mut self, flags: SparseMemoryBindFlags) -> Self {
3751         self.inner.flags = flags;
3752         self
3753     }
3754     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3755     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3756     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryBind3757     pub fn build(self) -> SparseImageMemoryBind {
3758         self.inner
3759     }
3760 }
3761 #[repr(C)]
3762 #[cfg_attr(feature = "debug", derive(Debug))]
3763 #[derive(Copy, Clone)]
3764 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseBufferMemoryBindInfo.html>"]
3765 pub struct SparseBufferMemoryBindInfo {
3766     pub buffer: Buffer,
3767     pub bind_count: u32,
3768     pub p_binds: *const SparseMemoryBind,
3769 }
3770 impl ::std::default::Default for SparseBufferMemoryBindInfo {
default() -> Self3771     fn default() -> Self {
3772         Self {
3773             buffer: Buffer::default(),
3774             bind_count: u32::default(),
3775             p_binds: ::std::ptr::null(),
3776         }
3777     }
3778 }
3779 impl SparseBufferMemoryBindInfo {
builder<'a>() -> SparseBufferMemoryBindInfoBuilder<'a>3780     pub fn builder<'a>() -> SparseBufferMemoryBindInfoBuilder<'a> {
3781         SparseBufferMemoryBindInfoBuilder {
3782             inner: Self::default(),
3783             marker: ::std::marker::PhantomData,
3784         }
3785     }
3786 }
3787 #[repr(transparent)]
3788 pub struct SparseBufferMemoryBindInfoBuilder<'a> {
3789     inner: SparseBufferMemoryBindInfo,
3790     marker: ::std::marker::PhantomData<&'a ()>,
3791 }
3792 impl<'a> ::std::ops::Deref for SparseBufferMemoryBindInfoBuilder<'a> {
3793     type Target = SparseBufferMemoryBindInfo;
deref(&self) -> &Self::Target3794     fn deref(&self) -> &Self::Target {
3795         &self.inner
3796     }
3797 }
3798 impl<'a> ::std::ops::DerefMut for SparseBufferMemoryBindInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3799     fn deref_mut(&mut self) -> &mut Self::Target {
3800         &mut self.inner
3801     }
3802 }
3803 impl<'a> SparseBufferMemoryBindInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self3804     pub fn buffer(mut self, buffer: Buffer) -> Self {
3805         self.inner.buffer = buffer;
3806         self
3807     }
binds(mut self, binds: &'a [SparseMemoryBind]) -> Self3808     pub fn binds(mut self, binds: &'a [SparseMemoryBind]) -> Self {
3809         self.inner.bind_count = binds.len() as _;
3810         self.inner.p_binds = binds.as_ptr();
3811         self
3812     }
3813     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3814     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3815     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseBufferMemoryBindInfo3816     pub fn build(self) -> SparseBufferMemoryBindInfo {
3817         self.inner
3818     }
3819 }
3820 #[repr(C)]
3821 #[cfg_attr(feature = "debug", derive(Debug))]
3822 #[derive(Copy, Clone)]
3823 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageOpaqueMemoryBindInfo.html>"]
3824 pub struct SparseImageOpaqueMemoryBindInfo {
3825     pub image: Image,
3826     pub bind_count: u32,
3827     pub p_binds: *const SparseMemoryBind,
3828 }
3829 impl ::std::default::Default for SparseImageOpaqueMemoryBindInfo {
default() -> Self3830     fn default() -> Self {
3831         Self {
3832             image: Image::default(),
3833             bind_count: u32::default(),
3834             p_binds: ::std::ptr::null(),
3835         }
3836     }
3837 }
3838 impl SparseImageOpaqueMemoryBindInfo {
builder<'a>() -> SparseImageOpaqueMemoryBindInfoBuilder<'a>3839     pub fn builder<'a>() -> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
3840         SparseImageOpaqueMemoryBindInfoBuilder {
3841             inner: Self::default(),
3842             marker: ::std::marker::PhantomData,
3843         }
3844     }
3845 }
3846 #[repr(transparent)]
3847 pub struct SparseImageOpaqueMemoryBindInfoBuilder<'a> {
3848     inner: SparseImageOpaqueMemoryBindInfo,
3849     marker: ::std::marker::PhantomData<&'a ()>,
3850 }
3851 impl<'a> ::std::ops::Deref for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
3852     type Target = SparseImageOpaqueMemoryBindInfo;
deref(&self) -> &Self::Target3853     fn deref(&self) -> &Self::Target {
3854         &self.inner
3855     }
3856 }
3857 impl<'a> ::std::ops::DerefMut for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3858     fn deref_mut(&mut self) -> &mut Self::Target {
3859         &mut self.inner
3860     }
3861 }
3862 impl<'a> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
image(mut self, image: Image) -> Self3863     pub fn image(mut self, image: Image) -> Self {
3864         self.inner.image = image;
3865         self
3866     }
binds(mut self, binds: &'a [SparseMemoryBind]) -> Self3867     pub fn binds(mut self, binds: &'a [SparseMemoryBind]) -> Self {
3868         self.inner.bind_count = binds.len() as _;
3869         self.inner.p_binds = binds.as_ptr();
3870         self
3871     }
3872     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3873     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3874     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageOpaqueMemoryBindInfo3875     pub fn build(self) -> SparseImageOpaqueMemoryBindInfo {
3876         self.inner
3877     }
3878 }
3879 #[repr(C)]
3880 #[cfg_attr(feature = "debug", derive(Debug))]
3881 #[derive(Copy, Clone)]
3882 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBindInfo.html>"]
3883 pub struct SparseImageMemoryBindInfo {
3884     pub image: Image,
3885     pub bind_count: u32,
3886     pub p_binds: *const SparseImageMemoryBind,
3887 }
3888 impl ::std::default::Default for SparseImageMemoryBindInfo {
default() -> Self3889     fn default() -> Self {
3890         Self {
3891             image: Image::default(),
3892             bind_count: u32::default(),
3893             p_binds: ::std::ptr::null(),
3894         }
3895     }
3896 }
3897 impl SparseImageMemoryBindInfo {
builder<'a>() -> SparseImageMemoryBindInfoBuilder<'a>3898     pub fn builder<'a>() -> SparseImageMemoryBindInfoBuilder<'a> {
3899         SparseImageMemoryBindInfoBuilder {
3900             inner: Self::default(),
3901             marker: ::std::marker::PhantomData,
3902         }
3903     }
3904 }
3905 #[repr(transparent)]
3906 pub struct SparseImageMemoryBindInfoBuilder<'a> {
3907     inner: SparseImageMemoryBindInfo,
3908     marker: ::std::marker::PhantomData<&'a ()>,
3909 }
3910 impl<'a> ::std::ops::Deref for SparseImageMemoryBindInfoBuilder<'a> {
3911     type Target = SparseImageMemoryBindInfo;
deref(&self) -> &Self::Target3912     fn deref(&self) -> &Self::Target {
3913         &self.inner
3914     }
3915 }
3916 impl<'a> ::std::ops::DerefMut for SparseImageMemoryBindInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3917     fn deref_mut(&mut self) -> &mut Self::Target {
3918         &mut self.inner
3919     }
3920 }
3921 impl<'a> SparseImageMemoryBindInfoBuilder<'a> {
image(mut self, image: Image) -> Self3922     pub fn image(mut self, image: Image) -> Self {
3923         self.inner.image = image;
3924         self
3925     }
binds(mut self, binds: &'a [SparseImageMemoryBind]) -> Self3926     pub fn binds(mut self, binds: &'a [SparseImageMemoryBind]) -> Self {
3927         self.inner.bind_count = binds.len() as _;
3928         self.inner.p_binds = binds.as_ptr();
3929         self
3930     }
3931     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
3932     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
3933     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryBindInfo3934     pub fn build(self) -> SparseImageMemoryBindInfo {
3935         self.inner
3936     }
3937 }
3938 #[repr(C)]
3939 #[cfg_attr(feature = "debug", derive(Debug))]
3940 #[derive(Copy, Clone)]
3941 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindSparseInfo.html>"]
3942 pub struct BindSparseInfo {
3943     pub s_type: StructureType,
3944     pub p_next: *const c_void,
3945     pub wait_semaphore_count: u32,
3946     pub p_wait_semaphores: *const Semaphore,
3947     pub buffer_bind_count: u32,
3948     pub p_buffer_binds: *const SparseBufferMemoryBindInfo,
3949     pub image_opaque_bind_count: u32,
3950     pub p_image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
3951     pub image_bind_count: u32,
3952     pub p_image_binds: *const SparseImageMemoryBindInfo,
3953     pub signal_semaphore_count: u32,
3954     pub p_signal_semaphores: *const Semaphore,
3955 }
3956 impl ::std::default::Default for BindSparseInfo {
default() -> Self3957     fn default() -> Self {
3958         Self {
3959             s_type: StructureType::BIND_SPARSE_INFO,
3960             p_next: ::std::ptr::null(),
3961             wait_semaphore_count: u32::default(),
3962             p_wait_semaphores: ::std::ptr::null(),
3963             buffer_bind_count: u32::default(),
3964             p_buffer_binds: ::std::ptr::null(),
3965             image_opaque_bind_count: u32::default(),
3966             p_image_opaque_binds: ::std::ptr::null(),
3967             image_bind_count: u32::default(),
3968             p_image_binds: ::std::ptr::null(),
3969             signal_semaphore_count: u32::default(),
3970             p_signal_semaphores: ::std::ptr::null(),
3971         }
3972     }
3973 }
3974 impl BindSparseInfo {
builder<'a>() -> BindSparseInfoBuilder<'a>3975     pub fn builder<'a>() -> BindSparseInfoBuilder<'a> {
3976         BindSparseInfoBuilder {
3977             inner: Self::default(),
3978             marker: ::std::marker::PhantomData,
3979         }
3980     }
3981 }
3982 #[repr(transparent)]
3983 pub struct BindSparseInfoBuilder<'a> {
3984     inner: BindSparseInfo,
3985     marker: ::std::marker::PhantomData<&'a ()>,
3986 }
3987 pub unsafe trait ExtendsBindSparseInfo {}
3988 impl<'a> ::std::ops::Deref for BindSparseInfoBuilder<'a> {
3989     type Target = BindSparseInfo;
deref(&self) -> &Self::Target3990     fn deref(&self) -> &Self::Target {
3991         &self.inner
3992     }
3993 }
3994 impl<'a> ::std::ops::DerefMut for BindSparseInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target3995     fn deref_mut(&mut self) -> &mut Self::Target {
3996         &mut self.inner
3997     }
3998 }
3999 impl<'a> BindSparseInfoBuilder<'a> {
wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self4000     pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self {
4001         self.inner.wait_semaphore_count = wait_semaphores.len() as _;
4002         self.inner.p_wait_semaphores = wait_semaphores.as_ptr();
4003         self
4004     }
buffer_binds(mut self, buffer_binds: &'a [SparseBufferMemoryBindInfo]) -> Self4005     pub fn buffer_binds(mut self, buffer_binds: &'a [SparseBufferMemoryBindInfo]) -> Self {
4006         self.inner.buffer_bind_count = buffer_binds.len() as _;
4007         self.inner.p_buffer_binds = buffer_binds.as_ptr();
4008         self
4009     }
image_opaque_binds( mut self, image_opaque_binds: &'a [SparseImageOpaqueMemoryBindInfo], ) -> Self4010     pub fn image_opaque_binds(
4011         mut self,
4012         image_opaque_binds: &'a [SparseImageOpaqueMemoryBindInfo],
4013     ) -> Self {
4014         self.inner.image_opaque_bind_count = image_opaque_binds.len() as _;
4015         self.inner.p_image_opaque_binds = image_opaque_binds.as_ptr();
4016         self
4017     }
image_binds(mut self, image_binds: &'a [SparseImageMemoryBindInfo]) -> Self4018     pub fn image_binds(mut self, image_binds: &'a [SparseImageMemoryBindInfo]) -> Self {
4019         self.inner.image_bind_count = image_binds.len() as _;
4020         self.inner.p_image_binds = image_binds.as_ptr();
4021         self
4022     }
signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self4023     pub fn signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self {
4024         self.inner.signal_semaphore_count = signal_semaphores.len() as _;
4025         self.inner.p_signal_semaphores = signal_semaphores.as_ptr();
4026         self
4027     }
4028     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4029     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4030     #[doc = r" valid extension structs can be pushed into the chain."]
4031     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4032     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBindSparseInfo>(mut self, next: &'a mut T) -> Self4033     pub fn push_next<T: ExtendsBindSparseInfo>(mut self, next: &'a mut T) -> Self {
4034         unsafe {
4035             let next_ptr = next as *mut T as *mut BaseOutStructure;
4036             let last_next = ptr_chain_iter(next).last().unwrap();
4037             (*last_next).p_next = self.inner.p_next as _;
4038             self.inner.p_next = next_ptr as _;
4039         }
4040         self
4041     }
4042     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4043     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4044     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindSparseInfo4045     pub fn build(self) -> BindSparseInfo {
4046         self.inner
4047     }
4048 }
4049 #[repr(C)]
4050 #[cfg_attr(feature = "debug", derive(Debug))]
4051 #[derive(Copy, Clone, Default)]
4052 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCopy.html>"]
4053 pub struct ImageCopy {
4054     pub src_subresource: ImageSubresourceLayers,
4055     pub src_offset: Offset3D,
4056     pub dst_subresource: ImageSubresourceLayers,
4057     pub dst_offset: Offset3D,
4058     pub extent: Extent3D,
4059 }
4060 impl ImageCopy {
builder<'a>() -> ImageCopyBuilder<'a>4061     pub fn builder<'a>() -> ImageCopyBuilder<'a> {
4062         ImageCopyBuilder {
4063             inner: Self::default(),
4064             marker: ::std::marker::PhantomData,
4065         }
4066     }
4067 }
4068 #[repr(transparent)]
4069 pub struct ImageCopyBuilder<'a> {
4070     inner: ImageCopy,
4071     marker: ::std::marker::PhantomData<&'a ()>,
4072 }
4073 impl<'a> ::std::ops::Deref for ImageCopyBuilder<'a> {
4074     type Target = ImageCopy;
deref(&self) -> &Self::Target4075     fn deref(&self) -> &Self::Target {
4076         &self.inner
4077     }
4078 }
4079 impl<'a> ::std::ops::DerefMut for ImageCopyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4080     fn deref_mut(&mut self) -> &mut Self::Target {
4081         &mut self.inner
4082     }
4083 }
4084 impl<'a> ImageCopyBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self4085     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
4086         self.inner.src_subresource = src_subresource;
4087         self
4088     }
src_offset(mut self, src_offset: Offset3D) -> Self4089     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
4090         self.inner.src_offset = src_offset;
4091         self
4092     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self4093     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
4094         self.inner.dst_subresource = dst_subresource;
4095         self
4096     }
dst_offset(mut self, dst_offset: Offset3D) -> Self4097     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
4098         self.inner.dst_offset = dst_offset;
4099         self
4100     }
extent(mut self, extent: Extent3D) -> Self4101     pub fn extent(mut self, extent: Extent3D) -> Self {
4102         self.inner.extent = extent;
4103         self
4104     }
4105     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4106     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4107     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageCopy4108     pub fn build(self) -> ImageCopy {
4109         self.inner
4110     }
4111 }
4112 #[repr(C)]
4113 #[cfg_attr(feature = "debug", derive(Debug))]
4114 #[derive(Copy, Clone)]
4115 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageBlit.html>"]
4116 pub struct ImageBlit {
4117     pub src_subresource: ImageSubresourceLayers,
4118     pub src_offsets: [Offset3D; 2],
4119     pub dst_subresource: ImageSubresourceLayers,
4120     pub dst_offsets: [Offset3D; 2],
4121 }
4122 impl ::std::default::Default for ImageBlit {
default() -> Self4123     fn default() -> Self {
4124         Self {
4125             src_subresource: ImageSubresourceLayers::default(),
4126             src_offsets: unsafe { ::std::mem::zeroed() },
4127             dst_subresource: ImageSubresourceLayers::default(),
4128             dst_offsets: unsafe { ::std::mem::zeroed() },
4129         }
4130     }
4131 }
4132 impl ImageBlit {
builder<'a>() -> ImageBlitBuilder<'a>4133     pub fn builder<'a>() -> ImageBlitBuilder<'a> {
4134         ImageBlitBuilder {
4135             inner: Self::default(),
4136             marker: ::std::marker::PhantomData,
4137         }
4138     }
4139 }
4140 #[repr(transparent)]
4141 pub struct ImageBlitBuilder<'a> {
4142     inner: ImageBlit,
4143     marker: ::std::marker::PhantomData<&'a ()>,
4144 }
4145 impl<'a> ::std::ops::Deref for ImageBlitBuilder<'a> {
4146     type Target = ImageBlit;
deref(&self) -> &Self::Target4147     fn deref(&self) -> &Self::Target {
4148         &self.inner
4149     }
4150 }
4151 impl<'a> ::std::ops::DerefMut for ImageBlitBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4152     fn deref_mut(&mut self) -> &mut Self::Target {
4153         &mut self.inner
4154     }
4155 }
4156 impl<'a> ImageBlitBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self4157     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
4158         self.inner.src_subresource = src_subresource;
4159         self
4160     }
src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self4161     pub fn src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self {
4162         self.inner.src_offsets = src_offsets;
4163         self
4164     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self4165     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
4166         self.inner.dst_subresource = dst_subresource;
4167         self
4168     }
dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self4169     pub fn dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self {
4170         self.inner.dst_offsets = dst_offsets;
4171         self
4172     }
4173     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4174     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4175     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageBlit4176     pub fn build(self) -> ImageBlit {
4177         self.inner
4178     }
4179 }
4180 #[repr(C)]
4181 #[cfg_attr(feature = "debug", derive(Debug))]
4182 #[derive(Copy, Clone, Default)]
4183 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferImageCopy.html>"]
4184 pub struct BufferImageCopy {
4185     pub buffer_offset: DeviceSize,
4186     pub buffer_row_length: u32,
4187     pub buffer_image_height: u32,
4188     pub image_subresource: ImageSubresourceLayers,
4189     pub image_offset: Offset3D,
4190     pub image_extent: Extent3D,
4191 }
4192 impl BufferImageCopy {
builder<'a>() -> BufferImageCopyBuilder<'a>4193     pub fn builder<'a>() -> BufferImageCopyBuilder<'a> {
4194         BufferImageCopyBuilder {
4195             inner: Self::default(),
4196             marker: ::std::marker::PhantomData,
4197         }
4198     }
4199 }
4200 #[repr(transparent)]
4201 pub struct BufferImageCopyBuilder<'a> {
4202     inner: BufferImageCopy,
4203     marker: ::std::marker::PhantomData<&'a ()>,
4204 }
4205 impl<'a> ::std::ops::Deref for BufferImageCopyBuilder<'a> {
4206     type Target = BufferImageCopy;
deref(&self) -> &Self::Target4207     fn deref(&self) -> &Self::Target {
4208         &self.inner
4209     }
4210 }
4211 impl<'a> ::std::ops::DerefMut for BufferImageCopyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4212     fn deref_mut(&mut self) -> &mut Self::Target {
4213         &mut self.inner
4214     }
4215 }
4216 impl<'a> BufferImageCopyBuilder<'a> {
buffer_offset(mut self, buffer_offset: DeviceSize) -> Self4217     pub fn buffer_offset(mut self, buffer_offset: DeviceSize) -> Self {
4218         self.inner.buffer_offset = buffer_offset;
4219         self
4220     }
buffer_row_length(mut self, buffer_row_length: u32) -> Self4221     pub fn buffer_row_length(mut self, buffer_row_length: u32) -> Self {
4222         self.inner.buffer_row_length = buffer_row_length;
4223         self
4224     }
buffer_image_height(mut self, buffer_image_height: u32) -> Self4225     pub fn buffer_image_height(mut self, buffer_image_height: u32) -> Self {
4226         self.inner.buffer_image_height = buffer_image_height;
4227         self
4228     }
image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self4229     pub fn image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self {
4230         self.inner.image_subresource = image_subresource;
4231         self
4232     }
image_offset(mut self, image_offset: Offset3D) -> Self4233     pub fn image_offset(mut self, image_offset: Offset3D) -> Self {
4234         self.inner.image_offset = image_offset;
4235         self
4236     }
image_extent(mut self, image_extent: Extent3D) -> Self4237     pub fn image_extent(mut self, image_extent: Extent3D) -> Self {
4238         self.inner.image_extent = image_extent;
4239         self
4240     }
4241     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4242     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4243     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferImageCopy4244     pub fn build(self) -> BufferImageCopy {
4245         self.inner
4246     }
4247 }
4248 #[repr(C)]
4249 #[cfg_attr(feature = "debug", derive(Debug))]
4250 #[derive(Copy, Clone, Default)]
4251 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageResolve.html>"]
4252 pub struct ImageResolve {
4253     pub src_subresource: ImageSubresourceLayers,
4254     pub src_offset: Offset3D,
4255     pub dst_subresource: ImageSubresourceLayers,
4256     pub dst_offset: Offset3D,
4257     pub extent: Extent3D,
4258 }
4259 impl ImageResolve {
builder<'a>() -> ImageResolveBuilder<'a>4260     pub fn builder<'a>() -> ImageResolveBuilder<'a> {
4261         ImageResolveBuilder {
4262             inner: Self::default(),
4263             marker: ::std::marker::PhantomData,
4264         }
4265     }
4266 }
4267 #[repr(transparent)]
4268 pub struct ImageResolveBuilder<'a> {
4269     inner: ImageResolve,
4270     marker: ::std::marker::PhantomData<&'a ()>,
4271 }
4272 impl<'a> ::std::ops::Deref for ImageResolveBuilder<'a> {
4273     type Target = ImageResolve;
deref(&self) -> &Self::Target4274     fn deref(&self) -> &Self::Target {
4275         &self.inner
4276     }
4277 }
4278 impl<'a> ::std::ops::DerefMut for ImageResolveBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4279     fn deref_mut(&mut self) -> &mut Self::Target {
4280         &mut self.inner
4281     }
4282 }
4283 impl<'a> ImageResolveBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self4284     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
4285         self.inner.src_subresource = src_subresource;
4286         self
4287     }
src_offset(mut self, src_offset: Offset3D) -> Self4288     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
4289         self.inner.src_offset = src_offset;
4290         self
4291     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self4292     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
4293         self.inner.dst_subresource = dst_subresource;
4294         self
4295     }
dst_offset(mut self, dst_offset: Offset3D) -> Self4296     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
4297         self.inner.dst_offset = dst_offset;
4298         self
4299     }
extent(mut self, extent: Extent3D) -> Self4300     pub fn extent(mut self, extent: Extent3D) -> Self {
4301         self.inner.extent = extent;
4302         self
4303     }
4304     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4305     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4306     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageResolve4307     pub fn build(self) -> ImageResolve {
4308         self.inner
4309     }
4310 }
4311 #[repr(C)]
4312 #[cfg_attr(feature = "debug", derive(Debug))]
4313 #[derive(Copy, Clone)]
4314 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModuleCreateInfo.html>"]
4315 pub struct ShaderModuleCreateInfo {
4316     pub s_type: StructureType,
4317     pub p_next: *const c_void,
4318     pub flags: ShaderModuleCreateFlags,
4319     pub code_size: usize,
4320     pub p_code: *const u32,
4321 }
4322 impl ::std::default::Default for ShaderModuleCreateInfo {
default() -> Self4323     fn default() -> Self {
4324         Self {
4325             s_type: StructureType::SHADER_MODULE_CREATE_INFO,
4326             p_next: ::std::ptr::null(),
4327             flags: ShaderModuleCreateFlags::default(),
4328             code_size: usize::default(),
4329             p_code: ::std::ptr::null(),
4330         }
4331     }
4332 }
4333 impl ShaderModuleCreateInfo {
builder<'a>() -> ShaderModuleCreateInfoBuilder<'a>4334     pub fn builder<'a>() -> ShaderModuleCreateInfoBuilder<'a> {
4335         ShaderModuleCreateInfoBuilder {
4336             inner: Self::default(),
4337             marker: ::std::marker::PhantomData,
4338         }
4339     }
4340 }
4341 #[repr(transparent)]
4342 pub struct ShaderModuleCreateInfoBuilder<'a> {
4343     inner: ShaderModuleCreateInfo,
4344     marker: ::std::marker::PhantomData<&'a ()>,
4345 }
4346 pub unsafe trait ExtendsShaderModuleCreateInfo {}
4347 impl<'a> ::std::ops::Deref for ShaderModuleCreateInfoBuilder<'a> {
4348     type Target = ShaderModuleCreateInfo;
deref(&self) -> &Self::Target4349     fn deref(&self) -> &Self::Target {
4350         &self.inner
4351     }
4352 }
4353 impl<'a> ::std::ops::DerefMut for ShaderModuleCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4354     fn deref_mut(&mut self) -> &mut Self::Target {
4355         &mut self.inner
4356     }
4357 }
4358 impl<'a> ShaderModuleCreateInfoBuilder<'a> {
flags(mut self, flags: ShaderModuleCreateFlags) -> Self4359     pub fn flags(mut self, flags: ShaderModuleCreateFlags) -> Self {
4360         self.inner.flags = flags;
4361         self
4362     }
code(mut self, code: &'a [u32]) -> Self4363     pub fn code(mut self, code: &'a [u32]) -> Self {
4364         self.inner.code_size = code.len() * 4;
4365         self.inner.p_code = code.as_ptr() as *const u32;
4366         self
4367     }
4368     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4369     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4370     #[doc = r" valid extension structs can be pushed into the chain."]
4371     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4372     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsShaderModuleCreateInfo>(mut self, next: &'a mut T) -> Self4373     pub fn push_next<T: ExtendsShaderModuleCreateInfo>(mut self, next: &'a mut T) -> Self {
4374         unsafe {
4375             let next_ptr = next as *mut T as *mut BaseOutStructure;
4376             let last_next = ptr_chain_iter(next).last().unwrap();
4377             (*last_next).p_next = self.inner.p_next as _;
4378             self.inner.p_next = next_ptr as _;
4379         }
4380         self
4381     }
4382     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4383     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4384     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderModuleCreateInfo4385     pub fn build(self) -> ShaderModuleCreateInfo {
4386         self.inner
4387     }
4388 }
4389 #[repr(C)]
4390 #[cfg_attr(feature = "debug", derive(Debug))]
4391 #[derive(Copy, Clone)]
4392 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutBinding.html>"]
4393 pub struct DescriptorSetLayoutBinding {
4394     pub binding: u32,
4395     pub descriptor_type: DescriptorType,
4396     pub descriptor_count: u32,
4397     pub stage_flags: ShaderStageFlags,
4398     pub p_immutable_samplers: *const Sampler,
4399 }
4400 impl ::std::default::Default for DescriptorSetLayoutBinding {
default() -> Self4401     fn default() -> Self {
4402         Self {
4403             binding: u32::default(),
4404             descriptor_type: DescriptorType::default(),
4405             descriptor_count: u32::default(),
4406             stage_flags: ShaderStageFlags::default(),
4407             p_immutable_samplers: ::std::ptr::null(),
4408         }
4409     }
4410 }
4411 impl DescriptorSetLayoutBinding {
builder<'a>() -> DescriptorSetLayoutBindingBuilder<'a>4412     pub fn builder<'a>() -> DescriptorSetLayoutBindingBuilder<'a> {
4413         DescriptorSetLayoutBindingBuilder {
4414             inner: Self::default(),
4415             marker: ::std::marker::PhantomData,
4416         }
4417     }
4418 }
4419 #[repr(transparent)]
4420 pub struct DescriptorSetLayoutBindingBuilder<'a> {
4421     inner: DescriptorSetLayoutBinding,
4422     marker: ::std::marker::PhantomData<&'a ()>,
4423 }
4424 impl<'a> ::std::ops::Deref for DescriptorSetLayoutBindingBuilder<'a> {
4425     type Target = DescriptorSetLayoutBinding;
deref(&self) -> &Self::Target4426     fn deref(&self) -> &Self::Target {
4427         &self.inner
4428     }
4429 }
4430 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutBindingBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4431     fn deref_mut(&mut self) -> &mut Self::Target {
4432         &mut self.inner
4433     }
4434 }
4435 impl<'a> DescriptorSetLayoutBindingBuilder<'a> {
binding(mut self, binding: u32) -> Self4436     pub fn binding(mut self, binding: u32) -> Self {
4437         self.inner.binding = binding;
4438         self
4439     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self4440     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
4441         self.inner.descriptor_type = descriptor_type;
4442         self
4443     }
descriptor_count(mut self, descriptor_count: u32) -> Self4444     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
4445         self.inner.descriptor_count = descriptor_count;
4446         self
4447     }
stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self4448     pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self {
4449         self.inner.stage_flags = stage_flags;
4450         self
4451     }
immutable_samplers(mut self, immutable_samplers: &'a [Sampler]) -> Self4452     pub fn immutable_samplers(mut self, immutable_samplers: &'a [Sampler]) -> Self {
4453         self.inner.descriptor_count = immutable_samplers.len() as _;
4454         self.inner.p_immutable_samplers = immutable_samplers.as_ptr();
4455         self
4456     }
4457     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4458     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4459     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutBinding4460     pub fn build(self) -> DescriptorSetLayoutBinding {
4461         self.inner
4462     }
4463 }
4464 #[repr(C)]
4465 #[cfg_attr(feature = "debug", derive(Debug))]
4466 #[derive(Copy, Clone)]
4467 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html>"]
4468 pub struct DescriptorSetLayoutCreateInfo {
4469     pub s_type: StructureType,
4470     pub p_next: *const c_void,
4471     pub flags: DescriptorSetLayoutCreateFlags,
4472     pub binding_count: u32,
4473     pub p_bindings: *const DescriptorSetLayoutBinding,
4474 }
4475 impl ::std::default::Default for DescriptorSetLayoutCreateInfo {
default() -> Self4476     fn default() -> Self {
4477         Self {
4478             s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
4479             p_next: ::std::ptr::null(),
4480             flags: DescriptorSetLayoutCreateFlags::default(),
4481             binding_count: u32::default(),
4482             p_bindings: ::std::ptr::null(),
4483         }
4484     }
4485 }
4486 impl DescriptorSetLayoutCreateInfo {
builder<'a>() -> DescriptorSetLayoutCreateInfoBuilder<'a>4487     pub fn builder<'a>() -> DescriptorSetLayoutCreateInfoBuilder<'a> {
4488         DescriptorSetLayoutCreateInfoBuilder {
4489             inner: Self::default(),
4490             marker: ::std::marker::PhantomData,
4491         }
4492     }
4493 }
4494 #[repr(transparent)]
4495 pub struct DescriptorSetLayoutCreateInfoBuilder<'a> {
4496     inner: DescriptorSetLayoutCreateInfo,
4497     marker: ::std::marker::PhantomData<&'a ()>,
4498 }
4499 pub unsafe trait ExtendsDescriptorSetLayoutCreateInfo {}
4500 impl<'a> ::std::ops::Deref for DescriptorSetLayoutCreateInfoBuilder<'a> {
4501     type Target = DescriptorSetLayoutCreateInfo;
deref(&self) -> &Self::Target4502     fn deref(&self) -> &Self::Target {
4503         &self.inner
4504     }
4505 }
4506 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4507     fn deref_mut(&mut self) -> &mut Self::Target {
4508         &mut self.inner
4509     }
4510 }
4511 impl<'a> DescriptorSetLayoutCreateInfoBuilder<'a> {
flags(mut self, flags: DescriptorSetLayoutCreateFlags) -> Self4512     pub fn flags(mut self, flags: DescriptorSetLayoutCreateFlags) -> Self {
4513         self.inner.flags = flags;
4514         self
4515     }
bindings(mut self, bindings: &'a [DescriptorSetLayoutBinding]) -> Self4516     pub fn bindings(mut self, bindings: &'a [DescriptorSetLayoutBinding]) -> Self {
4517         self.inner.binding_count = bindings.len() as _;
4518         self.inner.p_bindings = bindings.as_ptr();
4519         self
4520     }
4521     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4522     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4523     #[doc = r" valid extension structs can be pushed into the chain."]
4524     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4525     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorSetLayoutCreateInfo>(mut self, next: &'a mut T) -> Self4526     pub fn push_next<T: ExtendsDescriptorSetLayoutCreateInfo>(mut self, next: &'a mut T) -> Self {
4527         unsafe {
4528             let next_ptr = next as *mut T as *mut BaseOutStructure;
4529             let last_next = ptr_chain_iter(next).last().unwrap();
4530             (*last_next).p_next = self.inner.p_next as _;
4531             self.inner.p_next = next_ptr as _;
4532         }
4533         self
4534     }
4535     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4536     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4537     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutCreateInfo4538     pub fn build(self) -> DescriptorSetLayoutCreateInfo {
4539         self.inner
4540     }
4541 }
4542 #[repr(C)]
4543 #[cfg_attr(feature = "debug", derive(Debug))]
4544 #[derive(Copy, Clone, Default)]
4545 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolSize.html>"]
4546 pub struct DescriptorPoolSize {
4547     pub ty: DescriptorType,
4548     pub descriptor_count: u32,
4549 }
4550 impl DescriptorPoolSize {
builder<'a>() -> DescriptorPoolSizeBuilder<'a>4551     pub fn builder<'a>() -> DescriptorPoolSizeBuilder<'a> {
4552         DescriptorPoolSizeBuilder {
4553             inner: Self::default(),
4554             marker: ::std::marker::PhantomData,
4555         }
4556     }
4557 }
4558 #[repr(transparent)]
4559 pub struct DescriptorPoolSizeBuilder<'a> {
4560     inner: DescriptorPoolSize,
4561     marker: ::std::marker::PhantomData<&'a ()>,
4562 }
4563 impl<'a> ::std::ops::Deref for DescriptorPoolSizeBuilder<'a> {
4564     type Target = DescriptorPoolSize;
deref(&self) -> &Self::Target4565     fn deref(&self) -> &Self::Target {
4566         &self.inner
4567     }
4568 }
4569 impl<'a> ::std::ops::DerefMut for DescriptorPoolSizeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4570     fn deref_mut(&mut self) -> &mut Self::Target {
4571         &mut self.inner
4572     }
4573 }
4574 impl<'a> DescriptorPoolSizeBuilder<'a> {
ty(mut self, ty: DescriptorType) -> Self4575     pub fn ty(mut self, ty: DescriptorType) -> Self {
4576         self.inner.ty = ty;
4577         self
4578     }
descriptor_count(mut self, descriptor_count: u32) -> Self4579     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
4580         self.inner.descriptor_count = descriptor_count;
4581         self
4582     }
4583     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4584     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4585     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorPoolSize4586     pub fn build(self) -> DescriptorPoolSize {
4587         self.inner
4588     }
4589 }
4590 #[repr(C)]
4591 #[cfg_attr(feature = "debug", derive(Debug))]
4592 #[derive(Copy, Clone)]
4593 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolCreateInfo.html>"]
4594 pub struct DescriptorPoolCreateInfo {
4595     pub s_type: StructureType,
4596     pub p_next: *const c_void,
4597     pub flags: DescriptorPoolCreateFlags,
4598     pub max_sets: u32,
4599     pub pool_size_count: u32,
4600     pub p_pool_sizes: *const DescriptorPoolSize,
4601 }
4602 impl ::std::default::Default for DescriptorPoolCreateInfo {
default() -> Self4603     fn default() -> Self {
4604         Self {
4605             s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
4606             p_next: ::std::ptr::null(),
4607             flags: DescriptorPoolCreateFlags::default(),
4608             max_sets: u32::default(),
4609             pool_size_count: u32::default(),
4610             p_pool_sizes: ::std::ptr::null(),
4611         }
4612     }
4613 }
4614 impl DescriptorPoolCreateInfo {
builder<'a>() -> DescriptorPoolCreateInfoBuilder<'a>4615     pub fn builder<'a>() -> DescriptorPoolCreateInfoBuilder<'a> {
4616         DescriptorPoolCreateInfoBuilder {
4617             inner: Self::default(),
4618             marker: ::std::marker::PhantomData,
4619         }
4620     }
4621 }
4622 #[repr(transparent)]
4623 pub struct DescriptorPoolCreateInfoBuilder<'a> {
4624     inner: DescriptorPoolCreateInfo,
4625     marker: ::std::marker::PhantomData<&'a ()>,
4626 }
4627 pub unsafe trait ExtendsDescriptorPoolCreateInfo {}
4628 impl<'a> ::std::ops::Deref for DescriptorPoolCreateInfoBuilder<'a> {
4629     type Target = DescriptorPoolCreateInfo;
deref(&self) -> &Self::Target4630     fn deref(&self) -> &Self::Target {
4631         &self.inner
4632     }
4633 }
4634 impl<'a> ::std::ops::DerefMut for DescriptorPoolCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4635     fn deref_mut(&mut self) -> &mut Self::Target {
4636         &mut self.inner
4637     }
4638 }
4639 impl<'a> DescriptorPoolCreateInfoBuilder<'a> {
flags(mut self, flags: DescriptorPoolCreateFlags) -> Self4640     pub fn flags(mut self, flags: DescriptorPoolCreateFlags) -> Self {
4641         self.inner.flags = flags;
4642         self
4643     }
max_sets(mut self, max_sets: u32) -> Self4644     pub fn max_sets(mut self, max_sets: u32) -> Self {
4645         self.inner.max_sets = max_sets;
4646         self
4647     }
pool_sizes(mut self, pool_sizes: &'a [DescriptorPoolSize]) -> Self4648     pub fn pool_sizes(mut self, pool_sizes: &'a [DescriptorPoolSize]) -> Self {
4649         self.inner.pool_size_count = pool_sizes.len() as _;
4650         self.inner.p_pool_sizes = pool_sizes.as_ptr();
4651         self
4652     }
4653     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4654     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4655     #[doc = r" valid extension structs can be pushed into the chain."]
4656     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4657     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorPoolCreateInfo>(mut self, next: &'a mut T) -> Self4658     pub fn push_next<T: ExtendsDescriptorPoolCreateInfo>(mut self, next: &'a mut T) -> Self {
4659         unsafe {
4660             let next_ptr = next as *mut T as *mut BaseOutStructure;
4661             let last_next = ptr_chain_iter(next).last().unwrap();
4662             (*last_next).p_next = self.inner.p_next as _;
4663             self.inner.p_next = next_ptr as _;
4664         }
4665         self
4666     }
4667     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4668     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4669     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorPoolCreateInfo4670     pub fn build(self) -> DescriptorPoolCreateInfo {
4671         self.inner
4672     }
4673 }
4674 #[repr(C)]
4675 #[cfg_attr(feature = "debug", derive(Debug))]
4676 #[derive(Copy, Clone)]
4677 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetAllocateInfo.html>"]
4678 pub struct DescriptorSetAllocateInfo {
4679     pub s_type: StructureType,
4680     pub p_next: *const c_void,
4681     pub descriptor_pool: DescriptorPool,
4682     pub descriptor_set_count: u32,
4683     pub p_set_layouts: *const DescriptorSetLayout,
4684 }
4685 impl ::std::default::Default for DescriptorSetAllocateInfo {
default() -> Self4686     fn default() -> Self {
4687         Self {
4688             s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
4689             p_next: ::std::ptr::null(),
4690             descriptor_pool: DescriptorPool::default(),
4691             descriptor_set_count: u32::default(),
4692             p_set_layouts: ::std::ptr::null(),
4693         }
4694     }
4695 }
4696 impl DescriptorSetAllocateInfo {
builder<'a>() -> DescriptorSetAllocateInfoBuilder<'a>4697     pub fn builder<'a>() -> DescriptorSetAllocateInfoBuilder<'a> {
4698         DescriptorSetAllocateInfoBuilder {
4699             inner: Self::default(),
4700             marker: ::std::marker::PhantomData,
4701         }
4702     }
4703 }
4704 #[repr(transparent)]
4705 pub struct DescriptorSetAllocateInfoBuilder<'a> {
4706     inner: DescriptorSetAllocateInfo,
4707     marker: ::std::marker::PhantomData<&'a ()>,
4708 }
4709 pub unsafe trait ExtendsDescriptorSetAllocateInfo {}
4710 impl<'a> ::std::ops::Deref for DescriptorSetAllocateInfoBuilder<'a> {
4711     type Target = DescriptorSetAllocateInfo;
deref(&self) -> &Self::Target4712     fn deref(&self) -> &Self::Target {
4713         &self.inner
4714     }
4715 }
4716 impl<'a> ::std::ops::DerefMut for DescriptorSetAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4717     fn deref_mut(&mut self) -> &mut Self::Target {
4718         &mut self.inner
4719     }
4720 }
4721 impl<'a> DescriptorSetAllocateInfoBuilder<'a> {
descriptor_pool(mut self, descriptor_pool: DescriptorPool) -> Self4722     pub fn descriptor_pool(mut self, descriptor_pool: DescriptorPool) -> Self {
4723         self.inner.descriptor_pool = descriptor_pool;
4724         self
4725     }
set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self4726     pub fn set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self {
4727         self.inner.descriptor_set_count = set_layouts.len() as _;
4728         self.inner.p_set_layouts = set_layouts.as_ptr();
4729         self
4730     }
4731     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4732     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4733     #[doc = r" valid extension structs can be pushed into the chain."]
4734     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4735     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorSetAllocateInfo>(mut self, next: &'a mut T) -> Self4736     pub fn push_next<T: ExtendsDescriptorSetAllocateInfo>(mut self, next: &'a mut T) -> Self {
4737         unsafe {
4738             let next_ptr = next as *mut T as *mut BaseOutStructure;
4739             let last_next = ptr_chain_iter(next).last().unwrap();
4740             (*last_next).p_next = self.inner.p_next as _;
4741             self.inner.p_next = next_ptr as _;
4742         }
4743         self
4744     }
4745     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4746     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4747     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetAllocateInfo4748     pub fn build(self) -> DescriptorSetAllocateInfo {
4749         self.inner
4750     }
4751 }
4752 #[repr(C)]
4753 #[cfg_attr(feature = "debug", derive(Debug))]
4754 #[derive(Copy, Clone, Default)]
4755 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationMapEntry.html>"]
4756 pub struct SpecializationMapEntry {
4757     pub constant_id: u32,
4758     pub offset: u32,
4759     pub size: usize,
4760 }
4761 impl SpecializationMapEntry {
builder<'a>() -> SpecializationMapEntryBuilder<'a>4762     pub fn builder<'a>() -> SpecializationMapEntryBuilder<'a> {
4763         SpecializationMapEntryBuilder {
4764             inner: Self::default(),
4765             marker: ::std::marker::PhantomData,
4766         }
4767     }
4768 }
4769 #[repr(transparent)]
4770 pub struct SpecializationMapEntryBuilder<'a> {
4771     inner: SpecializationMapEntry,
4772     marker: ::std::marker::PhantomData<&'a ()>,
4773 }
4774 impl<'a> ::std::ops::Deref for SpecializationMapEntryBuilder<'a> {
4775     type Target = SpecializationMapEntry;
deref(&self) -> &Self::Target4776     fn deref(&self) -> &Self::Target {
4777         &self.inner
4778     }
4779 }
4780 impl<'a> ::std::ops::DerefMut for SpecializationMapEntryBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4781     fn deref_mut(&mut self) -> &mut Self::Target {
4782         &mut self.inner
4783     }
4784 }
4785 impl<'a> SpecializationMapEntryBuilder<'a> {
constant_id(mut self, constant_id: u32) -> Self4786     pub fn constant_id(mut self, constant_id: u32) -> Self {
4787         self.inner.constant_id = constant_id;
4788         self
4789     }
offset(mut self, offset: u32) -> Self4790     pub fn offset(mut self, offset: u32) -> Self {
4791         self.inner.offset = offset;
4792         self
4793     }
size(mut self, size: usize) -> Self4794     pub fn size(mut self, size: usize) -> Self {
4795         self.inner.size = size;
4796         self
4797     }
4798     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4799     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4800     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SpecializationMapEntry4801     pub fn build(self) -> SpecializationMapEntry {
4802         self.inner
4803     }
4804 }
4805 #[repr(C)]
4806 #[cfg_attr(feature = "debug", derive(Debug))]
4807 #[derive(Copy, Clone)]
4808 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationInfo.html>"]
4809 pub struct SpecializationInfo {
4810     pub map_entry_count: u32,
4811     pub p_map_entries: *const SpecializationMapEntry,
4812     pub data_size: usize,
4813     pub p_data: *const c_void,
4814 }
4815 impl ::std::default::Default for SpecializationInfo {
default() -> Self4816     fn default() -> Self {
4817         Self {
4818             map_entry_count: u32::default(),
4819             p_map_entries: ::std::ptr::null(),
4820             data_size: usize::default(),
4821             p_data: ::std::ptr::null(),
4822         }
4823     }
4824 }
4825 impl SpecializationInfo {
builder<'a>() -> SpecializationInfoBuilder<'a>4826     pub fn builder<'a>() -> SpecializationInfoBuilder<'a> {
4827         SpecializationInfoBuilder {
4828             inner: Self::default(),
4829             marker: ::std::marker::PhantomData,
4830         }
4831     }
4832 }
4833 #[repr(transparent)]
4834 pub struct SpecializationInfoBuilder<'a> {
4835     inner: SpecializationInfo,
4836     marker: ::std::marker::PhantomData<&'a ()>,
4837 }
4838 impl<'a> ::std::ops::Deref for SpecializationInfoBuilder<'a> {
4839     type Target = SpecializationInfo;
deref(&self) -> &Self::Target4840     fn deref(&self) -> &Self::Target {
4841         &self.inner
4842     }
4843 }
4844 impl<'a> ::std::ops::DerefMut for SpecializationInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4845     fn deref_mut(&mut self) -> &mut Self::Target {
4846         &mut self.inner
4847     }
4848 }
4849 impl<'a> SpecializationInfoBuilder<'a> {
map_entries(mut self, map_entries: &'a [SpecializationMapEntry]) -> Self4850     pub fn map_entries(mut self, map_entries: &'a [SpecializationMapEntry]) -> Self {
4851         self.inner.map_entry_count = map_entries.len() as _;
4852         self.inner.p_map_entries = map_entries.as_ptr();
4853         self
4854     }
data(mut self, data: &'a [u8]) -> Self4855     pub fn data(mut self, data: &'a [u8]) -> Self {
4856         self.inner.data_size = data.len() as _;
4857         self.inner.p_data = data.as_ptr() as *const c_void;
4858         self
4859     }
4860     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4861     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4862     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SpecializationInfo4863     pub fn build(self) -> SpecializationInfo {
4864         self.inner
4865     }
4866 }
4867 #[repr(C)]
4868 #[cfg_attr(feature = "debug", derive(Debug))]
4869 #[derive(Copy, Clone)]
4870 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageCreateInfo.html>"]
4871 pub struct PipelineShaderStageCreateInfo {
4872     pub s_type: StructureType,
4873     pub p_next: *const c_void,
4874     pub flags: PipelineShaderStageCreateFlags,
4875     pub stage: ShaderStageFlags,
4876     pub module: ShaderModule,
4877     pub p_name: *const c_char,
4878     pub p_specialization_info: *const SpecializationInfo,
4879 }
4880 impl ::std::default::Default for PipelineShaderStageCreateInfo {
default() -> Self4881     fn default() -> Self {
4882         Self {
4883             s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
4884             p_next: ::std::ptr::null(),
4885             flags: PipelineShaderStageCreateFlags::default(),
4886             stage: ShaderStageFlags::default(),
4887             module: ShaderModule::default(),
4888             p_name: ::std::ptr::null(),
4889             p_specialization_info: ::std::ptr::null(),
4890         }
4891     }
4892 }
4893 impl PipelineShaderStageCreateInfo {
builder<'a>() -> PipelineShaderStageCreateInfoBuilder<'a>4894     pub fn builder<'a>() -> PipelineShaderStageCreateInfoBuilder<'a> {
4895         PipelineShaderStageCreateInfoBuilder {
4896             inner: Self::default(),
4897             marker: ::std::marker::PhantomData,
4898         }
4899     }
4900 }
4901 #[repr(transparent)]
4902 pub struct PipelineShaderStageCreateInfoBuilder<'a> {
4903     inner: PipelineShaderStageCreateInfo,
4904     marker: ::std::marker::PhantomData<&'a ()>,
4905 }
4906 pub unsafe trait ExtendsPipelineShaderStageCreateInfo {}
4907 impl<'a> ::std::ops::Deref for PipelineShaderStageCreateInfoBuilder<'a> {
4908     type Target = PipelineShaderStageCreateInfo;
deref(&self) -> &Self::Target4909     fn deref(&self) -> &Self::Target {
4910         &self.inner
4911     }
4912 }
4913 impl<'a> ::std::ops::DerefMut for PipelineShaderStageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target4914     fn deref_mut(&mut self) -> &mut Self::Target {
4915         &mut self.inner
4916     }
4917 }
4918 impl<'a> PipelineShaderStageCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineShaderStageCreateFlags) -> Self4919     pub fn flags(mut self, flags: PipelineShaderStageCreateFlags) -> Self {
4920         self.inner.flags = flags;
4921         self
4922     }
stage(mut self, stage: ShaderStageFlags) -> Self4923     pub fn stage(mut self, stage: ShaderStageFlags) -> Self {
4924         self.inner.stage = stage;
4925         self
4926     }
module(mut self, module: ShaderModule) -> Self4927     pub fn module(mut self, module: ShaderModule) -> Self {
4928         self.inner.module = module;
4929         self
4930     }
name(mut self, name: &'a ::std::ffi::CStr) -> Self4931     pub fn name(mut self, name: &'a ::std::ffi::CStr) -> Self {
4932         self.inner.p_name = name.as_ptr();
4933         self
4934     }
specialization_info(mut self, specialization_info: &'a SpecializationInfo) -> Self4935     pub fn specialization_info(mut self, specialization_info: &'a SpecializationInfo) -> Self {
4936         self.inner.p_specialization_info = specialization_info;
4937         self
4938     }
4939     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
4940     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
4941     #[doc = r" valid extension structs can be pushed into the chain."]
4942     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
4943     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineShaderStageCreateInfo>(mut self, next: &'a mut T) -> Self4944     pub fn push_next<T: ExtendsPipelineShaderStageCreateInfo>(mut self, next: &'a mut T) -> Self {
4945         unsafe {
4946             let next_ptr = next as *mut T as *mut BaseOutStructure;
4947             let last_next = ptr_chain_iter(next).last().unwrap();
4948             (*last_next).p_next = self.inner.p_next as _;
4949             self.inner.p_next = next_ptr as _;
4950         }
4951         self
4952     }
4953     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
4954     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
4955     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineShaderStageCreateInfo4956     pub fn build(self) -> PipelineShaderStageCreateInfo {
4957         self.inner
4958     }
4959 }
4960 #[repr(C)]
4961 #[cfg_attr(feature = "debug", derive(Debug))]
4962 #[derive(Copy, Clone)]
4963 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComputePipelineCreateInfo.html>"]
4964 pub struct ComputePipelineCreateInfo {
4965     pub s_type: StructureType,
4966     pub p_next: *const c_void,
4967     pub flags: PipelineCreateFlags,
4968     pub stage: PipelineShaderStageCreateInfo,
4969     pub layout: PipelineLayout,
4970     pub base_pipeline_handle: Pipeline,
4971     pub base_pipeline_index: i32,
4972 }
4973 impl ::std::default::Default for ComputePipelineCreateInfo {
default() -> Self4974     fn default() -> Self {
4975         Self {
4976             s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
4977             p_next: ::std::ptr::null(),
4978             flags: PipelineCreateFlags::default(),
4979             stage: PipelineShaderStageCreateInfo::default(),
4980             layout: PipelineLayout::default(),
4981             base_pipeline_handle: Pipeline::default(),
4982             base_pipeline_index: i32::default(),
4983         }
4984     }
4985 }
4986 impl ComputePipelineCreateInfo {
builder<'a>() -> ComputePipelineCreateInfoBuilder<'a>4987     pub fn builder<'a>() -> ComputePipelineCreateInfoBuilder<'a> {
4988         ComputePipelineCreateInfoBuilder {
4989             inner: Self::default(),
4990             marker: ::std::marker::PhantomData,
4991         }
4992     }
4993 }
4994 #[repr(transparent)]
4995 pub struct ComputePipelineCreateInfoBuilder<'a> {
4996     inner: ComputePipelineCreateInfo,
4997     marker: ::std::marker::PhantomData<&'a ()>,
4998 }
4999 pub unsafe trait ExtendsComputePipelineCreateInfo {}
5000 impl<'a> ::std::ops::Deref for ComputePipelineCreateInfoBuilder<'a> {
5001     type Target = ComputePipelineCreateInfo;
deref(&self) -> &Self::Target5002     fn deref(&self) -> &Self::Target {
5003         &self.inner
5004     }
5005 }
5006 impl<'a> ::std::ops::DerefMut for ComputePipelineCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5007     fn deref_mut(&mut self) -> &mut Self::Target {
5008         &mut self.inner
5009     }
5010 }
5011 impl<'a> ComputePipelineCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self5012     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
5013         self.inner.flags = flags;
5014         self
5015     }
stage(mut self, stage: PipelineShaderStageCreateInfo) -> Self5016     pub fn stage(mut self, stage: PipelineShaderStageCreateInfo) -> Self {
5017         self.inner.stage = stage;
5018         self
5019     }
layout(mut self, layout: PipelineLayout) -> Self5020     pub fn layout(mut self, layout: PipelineLayout) -> Self {
5021         self.inner.layout = layout;
5022         self
5023     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self5024     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
5025         self.inner.base_pipeline_handle = base_pipeline_handle;
5026         self
5027     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self5028     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
5029         self.inner.base_pipeline_index = base_pipeline_index;
5030         self
5031     }
5032     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5033     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5034     #[doc = r" valid extension structs can be pushed into the chain."]
5035     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5036     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsComputePipelineCreateInfo>(mut self, next: &'a mut T) -> Self5037     pub fn push_next<T: ExtendsComputePipelineCreateInfo>(mut self, next: &'a mut T) -> Self {
5038         unsafe {
5039             let next_ptr = next as *mut T as *mut BaseOutStructure;
5040             let last_next = ptr_chain_iter(next).last().unwrap();
5041             (*last_next).p_next = self.inner.p_next as _;
5042             self.inner.p_next = next_ptr as _;
5043         }
5044         self
5045     }
5046     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5047     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5048     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ComputePipelineCreateInfo5049     pub fn build(self) -> ComputePipelineCreateInfo {
5050         self.inner
5051     }
5052 }
5053 #[repr(C)]
5054 #[cfg_attr(feature = "debug", derive(Debug))]
5055 #[derive(Copy, Clone, Default)]
5056 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDescription.html>"]
5057 pub struct VertexInputBindingDescription {
5058     pub binding: u32,
5059     pub stride: u32,
5060     pub input_rate: VertexInputRate,
5061 }
5062 impl VertexInputBindingDescription {
builder<'a>() -> VertexInputBindingDescriptionBuilder<'a>5063     pub fn builder<'a>() -> VertexInputBindingDescriptionBuilder<'a> {
5064         VertexInputBindingDescriptionBuilder {
5065             inner: Self::default(),
5066             marker: ::std::marker::PhantomData,
5067         }
5068     }
5069 }
5070 #[repr(transparent)]
5071 pub struct VertexInputBindingDescriptionBuilder<'a> {
5072     inner: VertexInputBindingDescription,
5073     marker: ::std::marker::PhantomData<&'a ()>,
5074 }
5075 impl<'a> ::std::ops::Deref for VertexInputBindingDescriptionBuilder<'a> {
5076     type Target = VertexInputBindingDescription;
deref(&self) -> &Self::Target5077     fn deref(&self) -> &Self::Target {
5078         &self.inner
5079     }
5080 }
5081 impl<'a> ::std::ops::DerefMut for VertexInputBindingDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5082     fn deref_mut(&mut self) -> &mut Self::Target {
5083         &mut self.inner
5084     }
5085 }
5086 impl<'a> VertexInputBindingDescriptionBuilder<'a> {
binding(mut self, binding: u32) -> Self5087     pub fn binding(mut self, binding: u32) -> Self {
5088         self.inner.binding = binding;
5089         self
5090     }
stride(mut self, stride: u32) -> Self5091     pub fn stride(mut self, stride: u32) -> Self {
5092         self.inner.stride = stride;
5093         self
5094     }
input_rate(mut self, input_rate: VertexInputRate) -> Self5095     pub fn input_rate(mut self, input_rate: VertexInputRate) -> Self {
5096         self.inner.input_rate = input_rate;
5097         self
5098     }
5099     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5100     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5101     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputBindingDescription5102     pub fn build(self) -> VertexInputBindingDescription {
5103         self.inner
5104     }
5105 }
5106 #[repr(C)]
5107 #[cfg_attr(feature = "debug", derive(Debug))]
5108 #[derive(Copy, Clone, Default)]
5109 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputAttributeDescription.html>"]
5110 pub struct VertexInputAttributeDescription {
5111     pub location: u32,
5112     pub binding: u32,
5113     pub format: Format,
5114     pub offset: u32,
5115 }
5116 impl VertexInputAttributeDescription {
builder<'a>() -> VertexInputAttributeDescriptionBuilder<'a>5117     pub fn builder<'a>() -> VertexInputAttributeDescriptionBuilder<'a> {
5118         VertexInputAttributeDescriptionBuilder {
5119             inner: Self::default(),
5120             marker: ::std::marker::PhantomData,
5121         }
5122     }
5123 }
5124 #[repr(transparent)]
5125 pub struct VertexInputAttributeDescriptionBuilder<'a> {
5126     inner: VertexInputAttributeDescription,
5127     marker: ::std::marker::PhantomData<&'a ()>,
5128 }
5129 impl<'a> ::std::ops::Deref for VertexInputAttributeDescriptionBuilder<'a> {
5130     type Target = VertexInputAttributeDescription;
deref(&self) -> &Self::Target5131     fn deref(&self) -> &Self::Target {
5132         &self.inner
5133     }
5134 }
5135 impl<'a> ::std::ops::DerefMut for VertexInputAttributeDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5136     fn deref_mut(&mut self) -> &mut Self::Target {
5137         &mut self.inner
5138     }
5139 }
5140 impl<'a> VertexInputAttributeDescriptionBuilder<'a> {
location(mut self, location: u32) -> Self5141     pub fn location(mut self, location: u32) -> Self {
5142         self.inner.location = location;
5143         self
5144     }
binding(mut self, binding: u32) -> Self5145     pub fn binding(mut self, binding: u32) -> Self {
5146         self.inner.binding = binding;
5147         self
5148     }
format(mut self, format: Format) -> Self5149     pub fn format(mut self, format: Format) -> Self {
5150         self.inner.format = format;
5151         self
5152     }
offset(mut self, offset: u32) -> Self5153     pub fn offset(mut self, offset: u32) -> Self {
5154         self.inner.offset = offset;
5155         self
5156     }
5157     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5158     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5159     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputAttributeDescription5160     pub fn build(self) -> VertexInputAttributeDescription {
5161         self.inner
5162     }
5163 }
5164 #[repr(C)]
5165 #[cfg_attr(feature = "debug", derive(Debug))]
5166 #[derive(Copy, Clone)]
5167 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputStateCreateInfo.html>"]
5168 pub struct PipelineVertexInputStateCreateInfo {
5169     pub s_type: StructureType,
5170     pub p_next: *const c_void,
5171     pub flags: PipelineVertexInputStateCreateFlags,
5172     pub vertex_binding_description_count: u32,
5173     pub p_vertex_binding_descriptions: *const VertexInputBindingDescription,
5174     pub vertex_attribute_description_count: u32,
5175     pub p_vertex_attribute_descriptions: *const VertexInputAttributeDescription,
5176 }
5177 impl ::std::default::Default for PipelineVertexInputStateCreateInfo {
default() -> Self5178     fn default() -> Self {
5179         Self {
5180             s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
5181             p_next: ::std::ptr::null(),
5182             flags: PipelineVertexInputStateCreateFlags::default(),
5183             vertex_binding_description_count: u32::default(),
5184             p_vertex_binding_descriptions: ::std::ptr::null(),
5185             vertex_attribute_description_count: u32::default(),
5186             p_vertex_attribute_descriptions: ::std::ptr::null(),
5187         }
5188     }
5189 }
5190 impl PipelineVertexInputStateCreateInfo {
builder<'a>() -> PipelineVertexInputStateCreateInfoBuilder<'a>5191     pub fn builder<'a>() -> PipelineVertexInputStateCreateInfoBuilder<'a> {
5192         PipelineVertexInputStateCreateInfoBuilder {
5193             inner: Self::default(),
5194             marker: ::std::marker::PhantomData,
5195         }
5196     }
5197 }
5198 #[repr(transparent)]
5199 pub struct PipelineVertexInputStateCreateInfoBuilder<'a> {
5200     inner: PipelineVertexInputStateCreateInfo,
5201     marker: ::std::marker::PhantomData<&'a ()>,
5202 }
5203 pub unsafe trait ExtendsPipelineVertexInputStateCreateInfo {}
5204 impl<'a> ::std::ops::Deref for PipelineVertexInputStateCreateInfoBuilder<'a> {
5205     type Target = PipelineVertexInputStateCreateInfo;
deref(&self) -> &Self::Target5206     fn deref(&self) -> &Self::Target {
5207         &self.inner
5208     }
5209 }
5210 impl<'a> ::std::ops::DerefMut for PipelineVertexInputStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5211     fn deref_mut(&mut self) -> &mut Self::Target {
5212         &mut self.inner
5213     }
5214 }
5215 impl<'a> PipelineVertexInputStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineVertexInputStateCreateFlags) -> Self5216     pub fn flags(mut self, flags: PipelineVertexInputStateCreateFlags) -> Self {
5217         self.inner.flags = flags;
5218         self
5219     }
vertex_binding_descriptions( mut self, vertex_binding_descriptions: &'a [VertexInputBindingDescription], ) -> Self5220     pub fn vertex_binding_descriptions(
5221         mut self,
5222         vertex_binding_descriptions: &'a [VertexInputBindingDescription],
5223     ) -> Self {
5224         self.inner.vertex_binding_description_count = vertex_binding_descriptions.len() as _;
5225         self.inner.p_vertex_binding_descriptions = vertex_binding_descriptions.as_ptr();
5226         self
5227     }
vertex_attribute_descriptions( mut self, vertex_attribute_descriptions: &'a [VertexInputAttributeDescription], ) -> Self5228     pub fn vertex_attribute_descriptions(
5229         mut self,
5230         vertex_attribute_descriptions: &'a [VertexInputAttributeDescription],
5231     ) -> Self {
5232         self.inner.vertex_attribute_description_count = vertex_attribute_descriptions.len() as _;
5233         self.inner.p_vertex_attribute_descriptions = vertex_attribute_descriptions.as_ptr();
5234         self
5235     }
5236     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5237     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5238     #[doc = r" valid extension structs can be pushed into the chain."]
5239     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5240     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineVertexInputStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5241     pub fn push_next<T: ExtendsPipelineVertexInputStateCreateInfo>(
5242         mut self,
5243         next: &'a mut T,
5244     ) -> Self {
5245         unsafe {
5246             let next_ptr = next as *mut T as *mut BaseOutStructure;
5247             let last_next = ptr_chain_iter(next).last().unwrap();
5248             (*last_next).p_next = self.inner.p_next as _;
5249             self.inner.p_next = next_ptr as _;
5250         }
5251         self
5252     }
5253     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5254     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5255     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineVertexInputStateCreateInfo5256     pub fn build(self) -> PipelineVertexInputStateCreateInfo {
5257         self.inner
5258     }
5259 }
5260 #[repr(C)]
5261 #[cfg_attr(feature = "debug", derive(Debug))]
5262 #[derive(Copy, Clone)]
5263 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInputAssemblyStateCreateInfo.html>"]
5264 pub struct PipelineInputAssemblyStateCreateInfo {
5265     pub s_type: StructureType,
5266     pub p_next: *const c_void,
5267     pub flags: PipelineInputAssemblyStateCreateFlags,
5268     pub topology: PrimitiveTopology,
5269     pub primitive_restart_enable: Bool32,
5270 }
5271 impl ::std::default::Default for PipelineInputAssemblyStateCreateInfo {
default() -> Self5272     fn default() -> Self {
5273         Self {
5274             s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
5275             p_next: ::std::ptr::null(),
5276             flags: PipelineInputAssemblyStateCreateFlags::default(),
5277             topology: PrimitiveTopology::default(),
5278             primitive_restart_enable: Bool32::default(),
5279         }
5280     }
5281 }
5282 impl PipelineInputAssemblyStateCreateInfo {
builder<'a>() -> PipelineInputAssemblyStateCreateInfoBuilder<'a>5283     pub fn builder<'a>() -> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
5284         PipelineInputAssemblyStateCreateInfoBuilder {
5285             inner: Self::default(),
5286             marker: ::std::marker::PhantomData,
5287         }
5288     }
5289 }
5290 #[repr(transparent)]
5291 pub struct PipelineInputAssemblyStateCreateInfoBuilder<'a> {
5292     inner: PipelineInputAssemblyStateCreateInfo,
5293     marker: ::std::marker::PhantomData<&'a ()>,
5294 }
5295 impl<'a> ::std::ops::Deref for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
5296     type Target = PipelineInputAssemblyStateCreateInfo;
deref(&self) -> &Self::Target5297     fn deref(&self) -> &Self::Target {
5298         &self.inner
5299     }
5300 }
5301 impl<'a> ::std::ops::DerefMut for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5302     fn deref_mut(&mut self) -> &mut Self::Target {
5303         &mut self.inner
5304     }
5305 }
5306 impl<'a> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineInputAssemblyStateCreateFlags) -> Self5307     pub fn flags(mut self, flags: PipelineInputAssemblyStateCreateFlags) -> Self {
5308         self.inner.flags = flags;
5309         self
5310     }
topology(mut self, topology: PrimitiveTopology) -> Self5311     pub fn topology(mut self, topology: PrimitiveTopology) -> Self {
5312         self.inner.topology = topology;
5313         self
5314     }
primitive_restart_enable(mut self, primitive_restart_enable: bool) -> Self5315     pub fn primitive_restart_enable(mut self, primitive_restart_enable: bool) -> Self {
5316         self.inner.primitive_restart_enable = primitive_restart_enable.into();
5317         self
5318     }
5319     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5320     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5321     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineInputAssemblyStateCreateInfo5322     pub fn build(self) -> PipelineInputAssemblyStateCreateInfo {
5323         self.inner
5324     }
5325 }
5326 #[repr(C)]
5327 #[cfg_attr(feature = "debug", derive(Debug))]
5328 #[derive(Copy, Clone)]
5329 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationStateCreateInfo.html>"]
5330 pub struct PipelineTessellationStateCreateInfo {
5331     pub s_type: StructureType,
5332     pub p_next: *const c_void,
5333     pub flags: PipelineTessellationStateCreateFlags,
5334     pub patch_control_points: u32,
5335 }
5336 impl ::std::default::Default for PipelineTessellationStateCreateInfo {
default() -> Self5337     fn default() -> Self {
5338         Self {
5339             s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
5340             p_next: ::std::ptr::null(),
5341             flags: PipelineTessellationStateCreateFlags::default(),
5342             patch_control_points: u32::default(),
5343         }
5344     }
5345 }
5346 impl PipelineTessellationStateCreateInfo {
builder<'a>() -> PipelineTessellationStateCreateInfoBuilder<'a>5347     pub fn builder<'a>() -> PipelineTessellationStateCreateInfoBuilder<'a> {
5348         PipelineTessellationStateCreateInfoBuilder {
5349             inner: Self::default(),
5350             marker: ::std::marker::PhantomData,
5351         }
5352     }
5353 }
5354 #[repr(transparent)]
5355 pub struct PipelineTessellationStateCreateInfoBuilder<'a> {
5356     inner: PipelineTessellationStateCreateInfo,
5357     marker: ::std::marker::PhantomData<&'a ()>,
5358 }
5359 pub unsafe trait ExtendsPipelineTessellationStateCreateInfo {}
5360 impl<'a> ::std::ops::Deref for PipelineTessellationStateCreateInfoBuilder<'a> {
5361     type Target = PipelineTessellationStateCreateInfo;
deref(&self) -> &Self::Target5362     fn deref(&self) -> &Self::Target {
5363         &self.inner
5364     }
5365 }
5366 impl<'a> ::std::ops::DerefMut for PipelineTessellationStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5367     fn deref_mut(&mut self) -> &mut Self::Target {
5368         &mut self.inner
5369     }
5370 }
5371 impl<'a> PipelineTessellationStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineTessellationStateCreateFlags) -> Self5372     pub fn flags(mut self, flags: PipelineTessellationStateCreateFlags) -> Self {
5373         self.inner.flags = flags;
5374         self
5375     }
patch_control_points(mut self, patch_control_points: u32) -> Self5376     pub fn patch_control_points(mut self, patch_control_points: u32) -> Self {
5377         self.inner.patch_control_points = patch_control_points;
5378         self
5379     }
5380     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5381     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5382     #[doc = r" valid extension structs can be pushed into the chain."]
5383     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5384     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineTessellationStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5385     pub fn push_next<T: ExtendsPipelineTessellationStateCreateInfo>(
5386         mut self,
5387         next: &'a mut T,
5388     ) -> Self {
5389         unsafe {
5390             let next_ptr = next as *mut T as *mut BaseOutStructure;
5391             let last_next = ptr_chain_iter(next).last().unwrap();
5392             (*last_next).p_next = self.inner.p_next as _;
5393             self.inner.p_next = next_ptr as _;
5394         }
5395         self
5396     }
5397     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5398     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5399     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineTessellationStateCreateInfo5400     pub fn build(self) -> PipelineTessellationStateCreateInfo {
5401         self.inner
5402     }
5403 }
5404 #[repr(C)]
5405 #[cfg_attr(feature = "debug", derive(Debug))]
5406 #[derive(Copy, Clone)]
5407 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportStateCreateInfo.html>"]
5408 pub struct PipelineViewportStateCreateInfo {
5409     pub s_type: StructureType,
5410     pub p_next: *const c_void,
5411     pub flags: PipelineViewportStateCreateFlags,
5412     pub viewport_count: u32,
5413     pub p_viewports: *const Viewport,
5414     pub scissor_count: u32,
5415     pub p_scissors: *const Rect2D,
5416 }
5417 impl ::std::default::Default for PipelineViewportStateCreateInfo {
default() -> Self5418     fn default() -> Self {
5419         Self {
5420             s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
5421             p_next: ::std::ptr::null(),
5422             flags: PipelineViewportStateCreateFlags::default(),
5423             viewport_count: u32::default(),
5424             p_viewports: ::std::ptr::null(),
5425             scissor_count: u32::default(),
5426             p_scissors: ::std::ptr::null(),
5427         }
5428     }
5429 }
5430 impl PipelineViewportStateCreateInfo {
builder<'a>() -> PipelineViewportStateCreateInfoBuilder<'a>5431     pub fn builder<'a>() -> PipelineViewportStateCreateInfoBuilder<'a> {
5432         PipelineViewportStateCreateInfoBuilder {
5433             inner: Self::default(),
5434             marker: ::std::marker::PhantomData,
5435         }
5436     }
5437 }
5438 #[repr(transparent)]
5439 pub struct PipelineViewportStateCreateInfoBuilder<'a> {
5440     inner: PipelineViewportStateCreateInfo,
5441     marker: ::std::marker::PhantomData<&'a ()>,
5442 }
5443 pub unsafe trait ExtendsPipelineViewportStateCreateInfo {}
5444 impl<'a> ::std::ops::Deref for PipelineViewportStateCreateInfoBuilder<'a> {
5445     type Target = PipelineViewportStateCreateInfo;
deref(&self) -> &Self::Target5446     fn deref(&self) -> &Self::Target {
5447         &self.inner
5448     }
5449 }
5450 impl<'a> ::std::ops::DerefMut for PipelineViewportStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5451     fn deref_mut(&mut self) -> &mut Self::Target {
5452         &mut self.inner
5453     }
5454 }
5455 impl<'a> PipelineViewportStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineViewportStateCreateFlags) -> Self5456     pub fn flags(mut self, flags: PipelineViewportStateCreateFlags) -> Self {
5457         self.inner.flags = flags;
5458         self
5459     }
viewport_count(mut self, viewport_count: u32) -> Self5460     pub fn viewport_count(mut self, viewport_count: u32) -> Self {
5461         self.inner.viewport_count = viewport_count;
5462         self
5463     }
viewports(mut self, viewports: &'a [Viewport]) -> Self5464     pub fn viewports(mut self, viewports: &'a [Viewport]) -> Self {
5465         self.inner.viewport_count = viewports.len() as _;
5466         self.inner.p_viewports = viewports.as_ptr();
5467         self
5468     }
scissor_count(mut self, scissor_count: u32) -> Self5469     pub fn scissor_count(mut self, scissor_count: u32) -> Self {
5470         self.inner.scissor_count = scissor_count;
5471         self
5472     }
scissors(mut self, scissors: &'a [Rect2D]) -> Self5473     pub fn scissors(mut self, scissors: &'a [Rect2D]) -> Self {
5474         self.inner.scissor_count = scissors.len() as _;
5475         self.inner.p_scissors = scissors.as_ptr();
5476         self
5477     }
5478     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5479     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5480     #[doc = r" valid extension structs can be pushed into the chain."]
5481     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5482     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineViewportStateCreateInfo>(mut self, next: &'a mut T) -> Self5483     pub fn push_next<T: ExtendsPipelineViewportStateCreateInfo>(mut self, next: &'a mut T) -> Self {
5484         unsafe {
5485             let next_ptr = next as *mut T as *mut BaseOutStructure;
5486             let last_next = ptr_chain_iter(next).last().unwrap();
5487             (*last_next).p_next = self.inner.p_next as _;
5488             self.inner.p_next = next_ptr as _;
5489         }
5490         self
5491     }
5492     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5493     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5494     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportStateCreateInfo5495     pub fn build(self) -> PipelineViewportStateCreateInfo {
5496         self.inner
5497     }
5498 }
5499 #[repr(C)]
5500 #[cfg_attr(feature = "debug", derive(Debug))]
5501 #[derive(Copy, Clone)]
5502 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateCreateInfo.html>"]
5503 pub struct PipelineRasterizationStateCreateInfo {
5504     pub s_type: StructureType,
5505     pub p_next: *const c_void,
5506     pub flags: PipelineRasterizationStateCreateFlags,
5507     pub depth_clamp_enable: Bool32,
5508     pub rasterizer_discard_enable: Bool32,
5509     pub polygon_mode: PolygonMode,
5510     pub cull_mode: CullModeFlags,
5511     pub front_face: FrontFace,
5512     pub depth_bias_enable: Bool32,
5513     pub depth_bias_constant_factor: f32,
5514     pub depth_bias_clamp: f32,
5515     pub depth_bias_slope_factor: f32,
5516     pub line_width: f32,
5517 }
5518 impl ::std::default::Default for PipelineRasterizationStateCreateInfo {
default() -> Self5519     fn default() -> Self {
5520         Self {
5521             s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
5522             p_next: ::std::ptr::null(),
5523             flags: PipelineRasterizationStateCreateFlags::default(),
5524             depth_clamp_enable: Bool32::default(),
5525             rasterizer_discard_enable: Bool32::default(),
5526             polygon_mode: PolygonMode::default(),
5527             cull_mode: CullModeFlags::default(),
5528             front_face: FrontFace::default(),
5529             depth_bias_enable: Bool32::default(),
5530             depth_bias_constant_factor: f32::default(),
5531             depth_bias_clamp: f32::default(),
5532             depth_bias_slope_factor: f32::default(),
5533             line_width: f32::default(),
5534         }
5535     }
5536 }
5537 impl PipelineRasterizationStateCreateInfo {
builder<'a>() -> PipelineRasterizationStateCreateInfoBuilder<'a>5538     pub fn builder<'a>() -> PipelineRasterizationStateCreateInfoBuilder<'a> {
5539         PipelineRasterizationStateCreateInfoBuilder {
5540             inner: Self::default(),
5541             marker: ::std::marker::PhantomData,
5542         }
5543     }
5544 }
5545 #[repr(transparent)]
5546 pub struct PipelineRasterizationStateCreateInfoBuilder<'a> {
5547     inner: PipelineRasterizationStateCreateInfo,
5548     marker: ::std::marker::PhantomData<&'a ()>,
5549 }
5550 pub unsafe trait ExtendsPipelineRasterizationStateCreateInfo {}
5551 impl<'a> ::std::ops::Deref for PipelineRasterizationStateCreateInfoBuilder<'a> {
5552     type Target = PipelineRasterizationStateCreateInfo;
deref(&self) -> &Self::Target5553     fn deref(&self) -> &Self::Target {
5554         &self.inner
5555     }
5556 }
5557 impl<'a> ::std::ops::DerefMut for PipelineRasterizationStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5558     fn deref_mut(&mut self) -> &mut Self::Target {
5559         &mut self.inner
5560     }
5561 }
5562 impl<'a> PipelineRasterizationStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineRasterizationStateCreateFlags) -> Self5563     pub fn flags(mut self, flags: PipelineRasterizationStateCreateFlags) -> Self {
5564         self.inner.flags = flags;
5565         self
5566     }
depth_clamp_enable(mut self, depth_clamp_enable: bool) -> Self5567     pub fn depth_clamp_enable(mut self, depth_clamp_enable: bool) -> Self {
5568         self.inner.depth_clamp_enable = depth_clamp_enable.into();
5569         self
5570     }
rasterizer_discard_enable(mut self, rasterizer_discard_enable: bool) -> Self5571     pub fn rasterizer_discard_enable(mut self, rasterizer_discard_enable: bool) -> Self {
5572         self.inner.rasterizer_discard_enable = rasterizer_discard_enable.into();
5573         self
5574     }
polygon_mode(mut self, polygon_mode: PolygonMode) -> Self5575     pub fn polygon_mode(mut self, polygon_mode: PolygonMode) -> Self {
5576         self.inner.polygon_mode = polygon_mode;
5577         self
5578     }
cull_mode(mut self, cull_mode: CullModeFlags) -> Self5579     pub fn cull_mode(mut self, cull_mode: CullModeFlags) -> Self {
5580         self.inner.cull_mode = cull_mode;
5581         self
5582     }
front_face(mut self, front_face: FrontFace) -> Self5583     pub fn front_face(mut self, front_face: FrontFace) -> Self {
5584         self.inner.front_face = front_face;
5585         self
5586     }
depth_bias_enable(mut self, depth_bias_enable: bool) -> Self5587     pub fn depth_bias_enable(mut self, depth_bias_enable: bool) -> Self {
5588         self.inner.depth_bias_enable = depth_bias_enable.into();
5589         self
5590     }
depth_bias_constant_factor(mut self, depth_bias_constant_factor: f32) -> Self5591     pub fn depth_bias_constant_factor(mut self, depth_bias_constant_factor: f32) -> Self {
5592         self.inner.depth_bias_constant_factor = depth_bias_constant_factor;
5593         self
5594     }
depth_bias_clamp(mut self, depth_bias_clamp: f32) -> Self5595     pub fn depth_bias_clamp(mut self, depth_bias_clamp: f32) -> Self {
5596         self.inner.depth_bias_clamp = depth_bias_clamp;
5597         self
5598     }
depth_bias_slope_factor(mut self, depth_bias_slope_factor: f32) -> Self5599     pub fn depth_bias_slope_factor(mut self, depth_bias_slope_factor: f32) -> Self {
5600         self.inner.depth_bias_slope_factor = depth_bias_slope_factor;
5601         self
5602     }
line_width(mut self, line_width: f32) -> Self5603     pub fn line_width(mut self, line_width: f32) -> Self {
5604         self.inner.line_width = line_width;
5605         self
5606     }
5607     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5608     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5609     #[doc = r" valid extension structs can be pushed into the chain."]
5610     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5611     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineRasterizationStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5612     pub fn push_next<T: ExtendsPipelineRasterizationStateCreateInfo>(
5613         mut self,
5614         next: &'a mut T,
5615     ) -> Self {
5616         unsafe {
5617             let next_ptr = next as *mut T as *mut BaseOutStructure;
5618             let last_next = ptr_chain_iter(next).last().unwrap();
5619             (*last_next).p_next = self.inner.p_next as _;
5620             self.inner.p_next = next_ptr as _;
5621         }
5622         self
5623     }
5624     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5625     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5626     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationStateCreateInfo5627     pub fn build(self) -> PipelineRasterizationStateCreateInfo {
5628         self.inner
5629     }
5630 }
5631 #[repr(C)]
5632 #[cfg_attr(feature = "debug", derive(Debug))]
5633 #[derive(Copy, Clone)]
5634 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html>"]
5635 pub struct PipelineMultisampleStateCreateInfo {
5636     pub s_type: StructureType,
5637     pub p_next: *const c_void,
5638     pub flags: PipelineMultisampleStateCreateFlags,
5639     pub rasterization_samples: SampleCountFlags,
5640     pub sample_shading_enable: Bool32,
5641     pub min_sample_shading: f32,
5642     pub p_sample_mask: *const SampleMask,
5643     pub alpha_to_coverage_enable: Bool32,
5644     pub alpha_to_one_enable: Bool32,
5645 }
5646 impl ::std::default::Default for PipelineMultisampleStateCreateInfo {
default() -> Self5647     fn default() -> Self {
5648         Self {
5649             s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
5650             p_next: ::std::ptr::null(),
5651             flags: PipelineMultisampleStateCreateFlags::default(),
5652             rasterization_samples: SampleCountFlags::default(),
5653             sample_shading_enable: Bool32::default(),
5654             min_sample_shading: f32::default(),
5655             p_sample_mask: ::std::ptr::null(),
5656             alpha_to_coverage_enable: Bool32::default(),
5657             alpha_to_one_enable: Bool32::default(),
5658         }
5659     }
5660 }
5661 impl PipelineMultisampleStateCreateInfo {
builder<'a>() -> PipelineMultisampleStateCreateInfoBuilder<'a>5662     pub fn builder<'a>() -> PipelineMultisampleStateCreateInfoBuilder<'a> {
5663         PipelineMultisampleStateCreateInfoBuilder {
5664             inner: Self::default(),
5665             marker: ::std::marker::PhantomData,
5666         }
5667     }
5668 }
5669 #[repr(transparent)]
5670 pub struct PipelineMultisampleStateCreateInfoBuilder<'a> {
5671     inner: PipelineMultisampleStateCreateInfo,
5672     marker: ::std::marker::PhantomData<&'a ()>,
5673 }
5674 pub unsafe trait ExtendsPipelineMultisampleStateCreateInfo {}
5675 impl<'a> ::std::ops::Deref for PipelineMultisampleStateCreateInfoBuilder<'a> {
5676     type Target = PipelineMultisampleStateCreateInfo;
deref(&self) -> &Self::Target5677     fn deref(&self) -> &Self::Target {
5678         &self.inner
5679     }
5680 }
5681 impl<'a> ::std::ops::DerefMut for PipelineMultisampleStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5682     fn deref_mut(&mut self) -> &mut Self::Target {
5683         &mut self.inner
5684     }
5685 }
5686 impl<'a> PipelineMultisampleStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineMultisampleStateCreateFlags) -> Self5687     pub fn flags(mut self, flags: PipelineMultisampleStateCreateFlags) -> Self {
5688         self.inner.flags = flags;
5689         self
5690     }
rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self5691     pub fn rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self {
5692         self.inner.rasterization_samples = rasterization_samples;
5693         self
5694     }
sample_shading_enable(mut self, sample_shading_enable: bool) -> Self5695     pub fn sample_shading_enable(mut self, sample_shading_enable: bool) -> Self {
5696         self.inner.sample_shading_enable = sample_shading_enable.into();
5697         self
5698     }
min_sample_shading(mut self, min_sample_shading: f32) -> Self5699     pub fn min_sample_shading(mut self, min_sample_shading: f32) -> Self {
5700         self.inner.min_sample_shading = min_sample_shading;
5701         self
5702     }
5703     #[doc = r" Sets `p_sample_mask` to `null` if the slice is empty. The mask will"]
5704     #[doc = r" be treated as if it has all bits set to `1`."]
5705     #[doc = r""]
5706     #[doc = r" See <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html#_description>"]
5707     #[doc = r" for more details."]
sample_mask(mut self, sample_mask: &'a [SampleMask]) -> Self5708     pub fn sample_mask(mut self, sample_mask: &'a [SampleMask]) -> Self {
5709         self.inner.p_sample_mask = if sample_mask.is_empty() {
5710             std::ptr::null()
5711         } else {
5712             sample_mask.as_ptr() as *const SampleMask
5713         };
5714         self
5715     }
alpha_to_coverage_enable(mut self, alpha_to_coverage_enable: bool) -> Self5716     pub fn alpha_to_coverage_enable(mut self, alpha_to_coverage_enable: bool) -> Self {
5717         self.inner.alpha_to_coverage_enable = alpha_to_coverage_enable.into();
5718         self
5719     }
alpha_to_one_enable(mut self, alpha_to_one_enable: bool) -> Self5720     pub fn alpha_to_one_enable(mut self, alpha_to_one_enable: bool) -> Self {
5721         self.inner.alpha_to_one_enable = alpha_to_one_enable.into();
5722         self
5723     }
5724     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5725     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5726     #[doc = r" valid extension structs can be pushed into the chain."]
5727     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5728     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineMultisampleStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5729     pub fn push_next<T: ExtendsPipelineMultisampleStateCreateInfo>(
5730         mut self,
5731         next: &'a mut T,
5732     ) -> Self {
5733         unsafe {
5734             let next_ptr = next as *mut T as *mut BaseOutStructure;
5735             let last_next = ptr_chain_iter(next).last().unwrap();
5736             (*last_next).p_next = self.inner.p_next as _;
5737             self.inner.p_next = next_ptr as _;
5738         }
5739         self
5740     }
5741     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5742     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5743     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineMultisampleStateCreateInfo5744     pub fn build(self) -> PipelineMultisampleStateCreateInfo {
5745         self.inner
5746     }
5747 }
5748 #[repr(C)]
5749 #[cfg_attr(feature = "debug", derive(Debug))]
5750 #[derive(Copy, Clone, Default)]
5751 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendAttachmentState.html>"]
5752 pub struct PipelineColorBlendAttachmentState {
5753     pub blend_enable: Bool32,
5754     pub src_color_blend_factor: BlendFactor,
5755     pub dst_color_blend_factor: BlendFactor,
5756     pub color_blend_op: BlendOp,
5757     pub src_alpha_blend_factor: BlendFactor,
5758     pub dst_alpha_blend_factor: BlendFactor,
5759     pub alpha_blend_op: BlendOp,
5760     pub color_write_mask: ColorComponentFlags,
5761 }
5762 impl PipelineColorBlendAttachmentState {
builder<'a>() -> PipelineColorBlendAttachmentStateBuilder<'a>5763     pub fn builder<'a>() -> PipelineColorBlendAttachmentStateBuilder<'a> {
5764         PipelineColorBlendAttachmentStateBuilder {
5765             inner: Self::default(),
5766             marker: ::std::marker::PhantomData,
5767         }
5768     }
5769 }
5770 #[repr(transparent)]
5771 pub struct PipelineColorBlendAttachmentStateBuilder<'a> {
5772     inner: PipelineColorBlendAttachmentState,
5773     marker: ::std::marker::PhantomData<&'a ()>,
5774 }
5775 impl<'a> ::std::ops::Deref for PipelineColorBlendAttachmentStateBuilder<'a> {
5776     type Target = PipelineColorBlendAttachmentState;
deref(&self) -> &Self::Target5777     fn deref(&self) -> &Self::Target {
5778         &self.inner
5779     }
5780 }
5781 impl<'a> ::std::ops::DerefMut for PipelineColorBlendAttachmentStateBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5782     fn deref_mut(&mut self) -> &mut Self::Target {
5783         &mut self.inner
5784     }
5785 }
5786 impl<'a> PipelineColorBlendAttachmentStateBuilder<'a> {
blend_enable(mut self, blend_enable: bool) -> Self5787     pub fn blend_enable(mut self, blend_enable: bool) -> Self {
5788         self.inner.blend_enable = blend_enable.into();
5789         self
5790     }
src_color_blend_factor(mut self, src_color_blend_factor: BlendFactor) -> Self5791     pub fn src_color_blend_factor(mut self, src_color_blend_factor: BlendFactor) -> Self {
5792         self.inner.src_color_blend_factor = src_color_blend_factor;
5793         self
5794     }
dst_color_blend_factor(mut self, dst_color_blend_factor: BlendFactor) -> Self5795     pub fn dst_color_blend_factor(mut self, dst_color_blend_factor: BlendFactor) -> Self {
5796         self.inner.dst_color_blend_factor = dst_color_blend_factor;
5797         self
5798     }
color_blend_op(mut self, color_blend_op: BlendOp) -> Self5799     pub fn color_blend_op(mut self, color_blend_op: BlendOp) -> Self {
5800         self.inner.color_blend_op = color_blend_op;
5801         self
5802     }
src_alpha_blend_factor(mut self, src_alpha_blend_factor: BlendFactor) -> Self5803     pub fn src_alpha_blend_factor(mut self, src_alpha_blend_factor: BlendFactor) -> Self {
5804         self.inner.src_alpha_blend_factor = src_alpha_blend_factor;
5805         self
5806     }
dst_alpha_blend_factor(mut self, dst_alpha_blend_factor: BlendFactor) -> Self5807     pub fn dst_alpha_blend_factor(mut self, dst_alpha_blend_factor: BlendFactor) -> Self {
5808         self.inner.dst_alpha_blend_factor = dst_alpha_blend_factor;
5809         self
5810     }
alpha_blend_op(mut self, alpha_blend_op: BlendOp) -> Self5811     pub fn alpha_blend_op(mut self, alpha_blend_op: BlendOp) -> Self {
5812         self.inner.alpha_blend_op = alpha_blend_op;
5813         self
5814     }
color_write_mask(mut self, color_write_mask: ColorComponentFlags) -> Self5815     pub fn color_write_mask(mut self, color_write_mask: ColorComponentFlags) -> Self {
5816         self.inner.color_write_mask = color_write_mask;
5817         self
5818     }
5819     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5820     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5821     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorBlendAttachmentState5822     pub fn build(self) -> PipelineColorBlendAttachmentState {
5823         self.inner
5824     }
5825 }
5826 #[repr(C)]
5827 #[cfg_attr(feature = "debug", derive(Debug))]
5828 #[derive(Copy, Clone)]
5829 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendStateCreateInfo.html>"]
5830 pub struct PipelineColorBlendStateCreateInfo {
5831     pub s_type: StructureType,
5832     pub p_next: *const c_void,
5833     pub flags: PipelineColorBlendStateCreateFlags,
5834     pub logic_op_enable: Bool32,
5835     pub logic_op: LogicOp,
5836     pub attachment_count: u32,
5837     pub p_attachments: *const PipelineColorBlendAttachmentState,
5838     pub blend_constants: [f32; 4],
5839 }
5840 impl ::std::default::Default for PipelineColorBlendStateCreateInfo {
default() -> Self5841     fn default() -> Self {
5842         Self {
5843             s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
5844             p_next: ::std::ptr::null(),
5845             flags: PipelineColorBlendStateCreateFlags::default(),
5846             logic_op_enable: Bool32::default(),
5847             logic_op: LogicOp::default(),
5848             attachment_count: u32::default(),
5849             p_attachments: ::std::ptr::null(),
5850             blend_constants: unsafe { ::std::mem::zeroed() },
5851         }
5852     }
5853 }
5854 impl PipelineColorBlendStateCreateInfo {
builder<'a>() -> PipelineColorBlendStateCreateInfoBuilder<'a>5855     pub fn builder<'a>() -> PipelineColorBlendStateCreateInfoBuilder<'a> {
5856         PipelineColorBlendStateCreateInfoBuilder {
5857             inner: Self::default(),
5858             marker: ::std::marker::PhantomData,
5859         }
5860     }
5861 }
5862 #[repr(transparent)]
5863 pub struct PipelineColorBlendStateCreateInfoBuilder<'a> {
5864     inner: PipelineColorBlendStateCreateInfo,
5865     marker: ::std::marker::PhantomData<&'a ()>,
5866 }
5867 pub unsafe trait ExtendsPipelineColorBlendStateCreateInfo {}
5868 impl<'a> ::std::ops::Deref for PipelineColorBlendStateCreateInfoBuilder<'a> {
5869     type Target = PipelineColorBlendStateCreateInfo;
deref(&self) -> &Self::Target5870     fn deref(&self) -> &Self::Target {
5871         &self.inner
5872     }
5873 }
5874 impl<'a> ::std::ops::DerefMut for PipelineColorBlendStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5875     fn deref_mut(&mut self) -> &mut Self::Target {
5876         &mut self.inner
5877     }
5878 }
5879 impl<'a> PipelineColorBlendStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineColorBlendStateCreateFlags) -> Self5880     pub fn flags(mut self, flags: PipelineColorBlendStateCreateFlags) -> Self {
5881         self.inner.flags = flags;
5882         self
5883     }
logic_op_enable(mut self, logic_op_enable: bool) -> Self5884     pub fn logic_op_enable(mut self, logic_op_enable: bool) -> Self {
5885         self.inner.logic_op_enable = logic_op_enable.into();
5886         self
5887     }
logic_op(mut self, logic_op: LogicOp) -> Self5888     pub fn logic_op(mut self, logic_op: LogicOp) -> Self {
5889         self.inner.logic_op = logic_op;
5890         self
5891     }
attachments(mut self, attachments: &'a [PipelineColorBlendAttachmentState]) -> Self5892     pub fn attachments(mut self, attachments: &'a [PipelineColorBlendAttachmentState]) -> Self {
5893         self.inner.attachment_count = attachments.len() as _;
5894         self.inner.p_attachments = attachments.as_ptr();
5895         self
5896     }
blend_constants(mut self, blend_constants: [f32; 4]) -> Self5897     pub fn blend_constants(mut self, blend_constants: [f32; 4]) -> Self {
5898         self.inner.blend_constants = blend_constants;
5899         self
5900     }
5901     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
5902     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
5903     #[doc = r" valid extension structs can be pushed into the chain."]
5904     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
5905     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPipelineColorBlendStateCreateInfo>( mut self, next: &'a mut T, ) -> Self5906     pub fn push_next<T: ExtendsPipelineColorBlendStateCreateInfo>(
5907         mut self,
5908         next: &'a mut T,
5909     ) -> Self {
5910         unsafe {
5911             let next_ptr = next as *mut T as *mut BaseOutStructure;
5912             let last_next = ptr_chain_iter(next).last().unwrap();
5913             (*last_next).p_next = self.inner.p_next as _;
5914             self.inner.p_next = next_ptr as _;
5915         }
5916         self
5917     }
5918     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5919     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5920     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorBlendStateCreateInfo5921     pub fn build(self) -> PipelineColorBlendStateCreateInfo {
5922         self.inner
5923     }
5924 }
5925 #[repr(C)]
5926 #[cfg_attr(feature = "debug", derive(Debug))]
5927 #[derive(Copy, Clone)]
5928 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDynamicStateCreateInfo.html>"]
5929 pub struct PipelineDynamicStateCreateInfo {
5930     pub s_type: StructureType,
5931     pub p_next: *const c_void,
5932     pub flags: PipelineDynamicStateCreateFlags,
5933     pub dynamic_state_count: u32,
5934     pub p_dynamic_states: *const DynamicState,
5935 }
5936 impl ::std::default::Default for PipelineDynamicStateCreateInfo {
default() -> Self5937     fn default() -> Self {
5938         Self {
5939             s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
5940             p_next: ::std::ptr::null(),
5941             flags: PipelineDynamicStateCreateFlags::default(),
5942             dynamic_state_count: u32::default(),
5943             p_dynamic_states: ::std::ptr::null(),
5944         }
5945     }
5946 }
5947 impl PipelineDynamicStateCreateInfo {
builder<'a>() -> PipelineDynamicStateCreateInfoBuilder<'a>5948     pub fn builder<'a>() -> PipelineDynamicStateCreateInfoBuilder<'a> {
5949         PipelineDynamicStateCreateInfoBuilder {
5950             inner: Self::default(),
5951             marker: ::std::marker::PhantomData,
5952         }
5953     }
5954 }
5955 #[repr(transparent)]
5956 pub struct PipelineDynamicStateCreateInfoBuilder<'a> {
5957     inner: PipelineDynamicStateCreateInfo,
5958     marker: ::std::marker::PhantomData<&'a ()>,
5959 }
5960 impl<'a> ::std::ops::Deref for PipelineDynamicStateCreateInfoBuilder<'a> {
5961     type Target = PipelineDynamicStateCreateInfo;
deref(&self) -> &Self::Target5962     fn deref(&self) -> &Self::Target {
5963         &self.inner
5964     }
5965 }
5966 impl<'a> ::std::ops::DerefMut for PipelineDynamicStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target5967     fn deref_mut(&mut self) -> &mut Self::Target {
5968         &mut self.inner
5969     }
5970 }
5971 impl<'a> PipelineDynamicStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineDynamicStateCreateFlags) -> Self5972     pub fn flags(mut self, flags: PipelineDynamicStateCreateFlags) -> Self {
5973         self.inner.flags = flags;
5974         self
5975     }
dynamic_states(mut self, dynamic_states: &'a [DynamicState]) -> Self5976     pub fn dynamic_states(mut self, dynamic_states: &'a [DynamicState]) -> Self {
5977         self.inner.dynamic_state_count = dynamic_states.len() as _;
5978         self.inner.p_dynamic_states = dynamic_states.as_ptr();
5979         self
5980     }
5981     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
5982     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
5983     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineDynamicStateCreateInfo5984     pub fn build(self) -> PipelineDynamicStateCreateInfo {
5985         self.inner
5986     }
5987 }
5988 #[repr(C)]
5989 #[cfg_attr(feature = "debug", derive(Debug))]
5990 #[derive(Copy, Clone, Default)]
5991 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilOpState.html>"]
5992 pub struct StencilOpState {
5993     pub fail_op: StencilOp,
5994     pub pass_op: StencilOp,
5995     pub depth_fail_op: StencilOp,
5996     pub compare_op: CompareOp,
5997     pub compare_mask: u32,
5998     pub write_mask: u32,
5999     pub reference: u32,
6000 }
6001 impl StencilOpState {
builder<'a>() -> StencilOpStateBuilder<'a>6002     pub fn builder<'a>() -> StencilOpStateBuilder<'a> {
6003         StencilOpStateBuilder {
6004             inner: Self::default(),
6005             marker: ::std::marker::PhantomData,
6006         }
6007     }
6008 }
6009 #[repr(transparent)]
6010 pub struct StencilOpStateBuilder<'a> {
6011     inner: StencilOpState,
6012     marker: ::std::marker::PhantomData<&'a ()>,
6013 }
6014 impl<'a> ::std::ops::Deref for StencilOpStateBuilder<'a> {
6015     type Target = StencilOpState;
deref(&self) -> &Self::Target6016     fn deref(&self) -> &Self::Target {
6017         &self.inner
6018     }
6019 }
6020 impl<'a> ::std::ops::DerefMut for StencilOpStateBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6021     fn deref_mut(&mut self) -> &mut Self::Target {
6022         &mut self.inner
6023     }
6024 }
6025 impl<'a> StencilOpStateBuilder<'a> {
fail_op(mut self, fail_op: StencilOp) -> Self6026     pub fn fail_op(mut self, fail_op: StencilOp) -> Self {
6027         self.inner.fail_op = fail_op;
6028         self
6029     }
pass_op(mut self, pass_op: StencilOp) -> Self6030     pub fn pass_op(mut self, pass_op: StencilOp) -> Self {
6031         self.inner.pass_op = pass_op;
6032         self
6033     }
depth_fail_op(mut self, depth_fail_op: StencilOp) -> Self6034     pub fn depth_fail_op(mut self, depth_fail_op: StencilOp) -> Self {
6035         self.inner.depth_fail_op = depth_fail_op;
6036         self
6037     }
compare_op(mut self, compare_op: CompareOp) -> Self6038     pub fn compare_op(mut self, compare_op: CompareOp) -> Self {
6039         self.inner.compare_op = compare_op;
6040         self
6041     }
compare_mask(mut self, compare_mask: u32) -> Self6042     pub fn compare_mask(mut self, compare_mask: u32) -> Self {
6043         self.inner.compare_mask = compare_mask;
6044         self
6045     }
write_mask(mut self, write_mask: u32) -> Self6046     pub fn write_mask(mut self, write_mask: u32) -> Self {
6047         self.inner.write_mask = write_mask;
6048         self
6049     }
reference(mut self, reference: u32) -> Self6050     pub fn reference(mut self, reference: u32) -> Self {
6051         self.inner.reference = reference;
6052         self
6053     }
6054     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6055     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6056     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> StencilOpState6057     pub fn build(self) -> StencilOpState {
6058         self.inner
6059     }
6060 }
6061 #[repr(C)]
6062 #[cfg_attr(feature = "debug", derive(Debug))]
6063 #[derive(Copy, Clone)]
6064 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDepthStencilStateCreateInfo.html>"]
6065 pub struct PipelineDepthStencilStateCreateInfo {
6066     pub s_type: StructureType,
6067     pub p_next: *const c_void,
6068     pub flags: PipelineDepthStencilStateCreateFlags,
6069     pub depth_test_enable: Bool32,
6070     pub depth_write_enable: Bool32,
6071     pub depth_compare_op: CompareOp,
6072     pub depth_bounds_test_enable: Bool32,
6073     pub stencil_test_enable: Bool32,
6074     pub front: StencilOpState,
6075     pub back: StencilOpState,
6076     pub min_depth_bounds: f32,
6077     pub max_depth_bounds: f32,
6078 }
6079 impl ::std::default::Default for PipelineDepthStencilStateCreateInfo {
default() -> Self6080     fn default() -> Self {
6081         Self {
6082             s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6083             p_next: ::std::ptr::null(),
6084             flags: PipelineDepthStencilStateCreateFlags::default(),
6085             depth_test_enable: Bool32::default(),
6086             depth_write_enable: Bool32::default(),
6087             depth_compare_op: CompareOp::default(),
6088             depth_bounds_test_enable: Bool32::default(),
6089             stencil_test_enable: Bool32::default(),
6090             front: StencilOpState::default(),
6091             back: StencilOpState::default(),
6092             min_depth_bounds: f32::default(),
6093             max_depth_bounds: f32::default(),
6094         }
6095     }
6096 }
6097 impl PipelineDepthStencilStateCreateInfo {
builder<'a>() -> PipelineDepthStencilStateCreateInfoBuilder<'a>6098     pub fn builder<'a>() -> PipelineDepthStencilStateCreateInfoBuilder<'a> {
6099         PipelineDepthStencilStateCreateInfoBuilder {
6100             inner: Self::default(),
6101             marker: ::std::marker::PhantomData,
6102         }
6103     }
6104 }
6105 #[repr(transparent)]
6106 pub struct PipelineDepthStencilStateCreateInfoBuilder<'a> {
6107     inner: PipelineDepthStencilStateCreateInfo,
6108     marker: ::std::marker::PhantomData<&'a ()>,
6109 }
6110 impl<'a> ::std::ops::Deref for PipelineDepthStencilStateCreateInfoBuilder<'a> {
6111     type Target = PipelineDepthStencilStateCreateInfo;
deref(&self) -> &Self::Target6112     fn deref(&self) -> &Self::Target {
6113         &self.inner
6114     }
6115 }
6116 impl<'a> ::std::ops::DerefMut for PipelineDepthStencilStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6117     fn deref_mut(&mut self) -> &mut Self::Target {
6118         &mut self.inner
6119     }
6120 }
6121 impl<'a> PipelineDepthStencilStateCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineDepthStencilStateCreateFlags) -> Self6122     pub fn flags(mut self, flags: PipelineDepthStencilStateCreateFlags) -> Self {
6123         self.inner.flags = flags;
6124         self
6125     }
depth_test_enable(mut self, depth_test_enable: bool) -> Self6126     pub fn depth_test_enable(mut self, depth_test_enable: bool) -> Self {
6127         self.inner.depth_test_enable = depth_test_enable.into();
6128         self
6129     }
depth_write_enable(mut self, depth_write_enable: bool) -> Self6130     pub fn depth_write_enable(mut self, depth_write_enable: bool) -> Self {
6131         self.inner.depth_write_enable = depth_write_enable.into();
6132         self
6133     }
depth_compare_op(mut self, depth_compare_op: CompareOp) -> Self6134     pub fn depth_compare_op(mut self, depth_compare_op: CompareOp) -> Self {
6135         self.inner.depth_compare_op = depth_compare_op;
6136         self
6137     }
depth_bounds_test_enable(mut self, depth_bounds_test_enable: bool) -> Self6138     pub fn depth_bounds_test_enable(mut self, depth_bounds_test_enable: bool) -> Self {
6139         self.inner.depth_bounds_test_enable = depth_bounds_test_enable.into();
6140         self
6141     }
stencil_test_enable(mut self, stencil_test_enable: bool) -> Self6142     pub fn stencil_test_enable(mut self, stencil_test_enable: bool) -> Self {
6143         self.inner.stencil_test_enable = stencil_test_enable.into();
6144         self
6145     }
front(mut self, front: StencilOpState) -> Self6146     pub fn front(mut self, front: StencilOpState) -> Self {
6147         self.inner.front = front;
6148         self
6149     }
back(mut self, back: StencilOpState) -> Self6150     pub fn back(mut self, back: StencilOpState) -> Self {
6151         self.inner.back = back;
6152         self
6153     }
min_depth_bounds(mut self, min_depth_bounds: f32) -> Self6154     pub fn min_depth_bounds(mut self, min_depth_bounds: f32) -> Self {
6155         self.inner.min_depth_bounds = min_depth_bounds;
6156         self
6157     }
max_depth_bounds(mut self, max_depth_bounds: f32) -> Self6158     pub fn max_depth_bounds(mut self, max_depth_bounds: f32) -> Self {
6159         self.inner.max_depth_bounds = max_depth_bounds;
6160         self
6161     }
6162     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6163     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6164     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineDepthStencilStateCreateInfo6165     pub fn build(self) -> PipelineDepthStencilStateCreateInfo {
6166         self.inner
6167     }
6168 }
6169 #[repr(C)]
6170 #[cfg_attr(feature = "debug", derive(Debug))]
6171 #[derive(Copy, Clone)]
6172 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsPipelineCreateInfo.html>"]
6173 pub struct GraphicsPipelineCreateInfo {
6174     pub s_type: StructureType,
6175     pub p_next: *const c_void,
6176     pub flags: PipelineCreateFlags,
6177     pub stage_count: u32,
6178     pub p_stages: *const PipelineShaderStageCreateInfo,
6179     pub p_vertex_input_state: *const PipelineVertexInputStateCreateInfo,
6180     pub p_input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
6181     pub p_tessellation_state: *const PipelineTessellationStateCreateInfo,
6182     pub p_viewport_state: *const PipelineViewportStateCreateInfo,
6183     pub p_rasterization_state: *const PipelineRasterizationStateCreateInfo,
6184     pub p_multisample_state: *const PipelineMultisampleStateCreateInfo,
6185     pub p_depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
6186     pub p_color_blend_state: *const PipelineColorBlendStateCreateInfo,
6187     pub p_dynamic_state: *const PipelineDynamicStateCreateInfo,
6188     pub layout: PipelineLayout,
6189     pub render_pass: RenderPass,
6190     pub subpass: u32,
6191     pub base_pipeline_handle: Pipeline,
6192     pub base_pipeline_index: i32,
6193 }
6194 impl ::std::default::Default for GraphicsPipelineCreateInfo {
default() -> Self6195     fn default() -> Self {
6196         Self {
6197             s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
6198             p_next: ::std::ptr::null(),
6199             flags: PipelineCreateFlags::default(),
6200             stage_count: u32::default(),
6201             p_stages: ::std::ptr::null(),
6202             p_vertex_input_state: ::std::ptr::null(),
6203             p_input_assembly_state: ::std::ptr::null(),
6204             p_tessellation_state: ::std::ptr::null(),
6205             p_viewport_state: ::std::ptr::null(),
6206             p_rasterization_state: ::std::ptr::null(),
6207             p_multisample_state: ::std::ptr::null(),
6208             p_depth_stencil_state: ::std::ptr::null(),
6209             p_color_blend_state: ::std::ptr::null(),
6210             p_dynamic_state: ::std::ptr::null(),
6211             layout: PipelineLayout::default(),
6212             render_pass: RenderPass::default(),
6213             subpass: u32::default(),
6214             base_pipeline_handle: Pipeline::default(),
6215             base_pipeline_index: i32::default(),
6216         }
6217     }
6218 }
6219 impl GraphicsPipelineCreateInfo {
builder<'a>() -> GraphicsPipelineCreateInfoBuilder<'a>6220     pub fn builder<'a>() -> GraphicsPipelineCreateInfoBuilder<'a> {
6221         GraphicsPipelineCreateInfoBuilder {
6222             inner: Self::default(),
6223             marker: ::std::marker::PhantomData,
6224         }
6225     }
6226 }
6227 #[repr(transparent)]
6228 pub struct GraphicsPipelineCreateInfoBuilder<'a> {
6229     inner: GraphicsPipelineCreateInfo,
6230     marker: ::std::marker::PhantomData<&'a ()>,
6231 }
6232 pub unsafe trait ExtendsGraphicsPipelineCreateInfo {}
6233 impl<'a> ::std::ops::Deref for GraphicsPipelineCreateInfoBuilder<'a> {
6234     type Target = GraphicsPipelineCreateInfo;
deref(&self) -> &Self::Target6235     fn deref(&self) -> &Self::Target {
6236         &self.inner
6237     }
6238 }
6239 impl<'a> ::std::ops::DerefMut for GraphicsPipelineCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6240     fn deref_mut(&mut self) -> &mut Self::Target {
6241         &mut self.inner
6242     }
6243 }
6244 impl<'a> GraphicsPipelineCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self6245     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
6246         self.inner.flags = flags;
6247         self
6248     }
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self6249     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
6250         self.inner.stage_count = stages.len() as _;
6251         self.inner.p_stages = stages.as_ptr();
6252         self
6253     }
vertex_input_state( mut self, vertex_input_state: &'a PipelineVertexInputStateCreateInfo, ) -> Self6254     pub fn vertex_input_state(
6255         mut self,
6256         vertex_input_state: &'a PipelineVertexInputStateCreateInfo,
6257     ) -> Self {
6258         self.inner.p_vertex_input_state = vertex_input_state;
6259         self
6260     }
input_assembly_state( mut self, input_assembly_state: &'a PipelineInputAssemblyStateCreateInfo, ) -> Self6261     pub fn input_assembly_state(
6262         mut self,
6263         input_assembly_state: &'a PipelineInputAssemblyStateCreateInfo,
6264     ) -> Self {
6265         self.inner.p_input_assembly_state = input_assembly_state;
6266         self
6267     }
tessellation_state( mut self, tessellation_state: &'a PipelineTessellationStateCreateInfo, ) -> Self6268     pub fn tessellation_state(
6269         mut self,
6270         tessellation_state: &'a PipelineTessellationStateCreateInfo,
6271     ) -> Self {
6272         self.inner.p_tessellation_state = tessellation_state;
6273         self
6274     }
viewport_state(mut self, viewport_state: &'a PipelineViewportStateCreateInfo) -> Self6275     pub fn viewport_state(mut self, viewport_state: &'a PipelineViewportStateCreateInfo) -> Self {
6276         self.inner.p_viewport_state = viewport_state;
6277         self
6278     }
rasterization_state( mut self, rasterization_state: &'a PipelineRasterizationStateCreateInfo, ) -> Self6279     pub fn rasterization_state(
6280         mut self,
6281         rasterization_state: &'a PipelineRasterizationStateCreateInfo,
6282     ) -> Self {
6283         self.inner.p_rasterization_state = rasterization_state;
6284         self
6285     }
multisample_state( mut self, multisample_state: &'a PipelineMultisampleStateCreateInfo, ) -> Self6286     pub fn multisample_state(
6287         mut self,
6288         multisample_state: &'a PipelineMultisampleStateCreateInfo,
6289     ) -> Self {
6290         self.inner.p_multisample_state = multisample_state;
6291         self
6292     }
depth_stencil_state( mut self, depth_stencil_state: &'a PipelineDepthStencilStateCreateInfo, ) -> Self6293     pub fn depth_stencil_state(
6294         mut self,
6295         depth_stencil_state: &'a PipelineDepthStencilStateCreateInfo,
6296     ) -> Self {
6297         self.inner.p_depth_stencil_state = depth_stencil_state;
6298         self
6299     }
color_blend_state( mut self, color_blend_state: &'a PipelineColorBlendStateCreateInfo, ) -> Self6300     pub fn color_blend_state(
6301         mut self,
6302         color_blend_state: &'a PipelineColorBlendStateCreateInfo,
6303     ) -> Self {
6304         self.inner.p_color_blend_state = color_blend_state;
6305         self
6306     }
dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self6307     pub fn dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self {
6308         self.inner.p_dynamic_state = dynamic_state;
6309         self
6310     }
layout(mut self, layout: PipelineLayout) -> Self6311     pub fn layout(mut self, layout: PipelineLayout) -> Self {
6312         self.inner.layout = layout;
6313         self
6314     }
render_pass(mut self, render_pass: RenderPass) -> Self6315     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
6316         self.inner.render_pass = render_pass;
6317         self
6318     }
subpass(mut self, subpass: u32) -> Self6319     pub fn subpass(mut self, subpass: u32) -> Self {
6320         self.inner.subpass = subpass;
6321         self
6322     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self6323     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
6324         self.inner.base_pipeline_handle = base_pipeline_handle;
6325         self
6326     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self6327     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
6328         self.inner.base_pipeline_index = base_pipeline_index;
6329         self
6330     }
6331     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
6332     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
6333     #[doc = r" valid extension structs can be pushed into the chain."]
6334     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
6335     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsGraphicsPipelineCreateInfo>(mut self, next: &'a mut T) -> Self6336     pub fn push_next<T: ExtendsGraphicsPipelineCreateInfo>(mut self, next: &'a mut T) -> Self {
6337         unsafe {
6338             let next_ptr = next as *mut T as *mut BaseOutStructure;
6339             let last_next = ptr_chain_iter(next).last().unwrap();
6340             (*last_next).p_next = self.inner.p_next as _;
6341             self.inner.p_next = next_ptr as _;
6342         }
6343         self
6344     }
6345     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6346     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6347     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GraphicsPipelineCreateInfo6348     pub fn build(self) -> GraphicsPipelineCreateInfo {
6349         self.inner
6350     }
6351 }
6352 #[repr(C)]
6353 #[cfg_attr(feature = "debug", derive(Debug))]
6354 #[derive(Copy, Clone)]
6355 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheCreateInfo.html>"]
6356 pub struct PipelineCacheCreateInfo {
6357     pub s_type: StructureType,
6358     pub p_next: *const c_void,
6359     pub flags: PipelineCacheCreateFlags,
6360     pub initial_data_size: usize,
6361     pub p_initial_data: *const c_void,
6362 }
6363 impl ::std::default::Default for PipelineCacheCreateInfo {
default() -> Self6364     fn default() -> Self {
6365         Self {
6366             s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
6367             p_next: ::std::ptr::null(),
6368             flags: PipelineCacheCreateFlags::default(),
6369             initial_data_size: usize::default(),
6370             p_initial_data: ::std::ptr::null(),
6371         }
6372     }
6373 }
6374 impl PipelineCacheCreateInfo {
builder<'a>() -> PipelineCacheCreateInfoBuilder<'a>6375     pub fn builder<'a>() -> PipelineCacheCreateInfoBuilder<'a> {
6376         PipelineCacheCreateInfoBuilder {
6377             inner: Self::default(),
6378             marker: ::std::marker::PhantomData,
6379         }
6380     }
6381 }
6382 #[repr(transparent)]
6383 pub struct PipelineCacheCreateInfoBuilder<'a> {
6384     inner: PipelineCacheCreateInfo,
6385     marker: ::std::marker::PhantomData<&'a ()>,
6386 }
6387 impl<'a> ::std::ops::Deref for PipelineCacheCreateInfoBuilder<'a> {
6388     type Target = PipelineCacheCreateInfo;
deref(&self) -> &Self::Target6389     fn deref(&self) -> &Self::Target {
6390         &self.inner
6391     }
6392 }
6393 impl<'a> ::std::ops::DerefMut for PipelineCacheCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6394     fn deref_mut(&mut self) -> &mut Self::Target {
6395         &mut self.inner
6396     }
6397 }
6398 impl<'a> PipelineCacheCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineCacheCreateFlags) -> Self6399     pub fn flags(mut self, flags: PipelineCacheCreateFlags) -> Self {
6400         self.inner.flags = flags;
6401         self
6402     }
initial_data(mut self, initial_data: &'a [u8]) -> Self6403     pub fn initial_data(mut self, initial_data: &'a [u8]) -> Self {
6404         self.inner.initial_data_size = initial_data.len() as _;
6405         self.inner.p_initial_data = initial_data.as_ptr() as *const c_void;
6406         self
6407     }
6408     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6409     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6410     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCacheCreateInfo6411     pub fn build(self) -> PipelineCacheCreateInfo {
6412         self.inner
6413     }
6414 }
6415 #[repr(C)]
6416 #[cfg_attr(feature = "debug", derive(Debug))]
6417 #[derive(Copy, Clone)]
6418 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheHeaderVersionOne.html>"]
6419 pub struct PipelineCacheHeaderVersionOne {
6420     pub header_size: u32,
6421     pub header_version: PipelineCacheHeaderVersion,
6422     pub vendor_id: u32,
6423     pub device_id: u32,
6424     pub pipeline_cache_uuid: [u8; UUID_SIZE],
6425 }
6426 impl ::std::default::Default for PipelineCacheHeaderVersionOne {
default() -> Self6427     fn default() -> Self {
6428         Self {
6429             header_size: u32::default(),
6430             header_version: PipelineCacheHeaderVersion::default(),
6431             vendor_id: u32::default(),
6432             device_id: u32::default(),
6433             pipeline_cache_uuid: unsafe { ::std::mem::zeroed() },
6434         }
6435     }
6436 }
6437 impl PipelineCacheHeaderVersionOne {
builder<'a>() -> PipelineCacheHeaderVersionOneBuilder<'a>6438     pub fn builder<'a>() -> PipelineCacheHeaderVersionOneBuilder<'a> {
6439         PipelineCacheHeaderVersionOneBuilder {
6440             inner: Self::default(),
6441             marker: ::std::marker::PhantomData,
6442         }
6443     }
6444 }
6445 #[repr(transparent)]
6446 pub struct PipelineCacheHeaderVersionOneBuilder<'a> {
6447     inner: PipelineCacheHeaderVersionOne,
6448     marker: ::std::marker::PhantomData<&'a ()>,
6449 }
6450 impl<'a> ::std::ops::Deref for PipelineCacheHeaderVersionOneBuilder<'a> {
6451     type Target = PipelineCacheHeaderVersionOne;
deref(&self) -> &Self::Target6452     fn deref(&self) -> &Self::Target {
6453         &self.inner
6454     }
6455 }
6456 impl<'a> ::std::ops::DerefMut for PipelineCacheHeaderVersionOneBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6457     fn deref_mut(&mut self) -> &mut Self::Target {
6458         &mut self.inner
6459     }
6460 }
6461 impl<'a> PipelineCacheHeaderVersionOneBuilder<'a> {
header_size(mut self, header_size: u32) -> Self6462     pub fn header_size(mut self, header_size: u32) -> Self {
6463         self.inner.header_size = header_size;
6464         self
6465     }
header_version(mut self, header_version: PipelineCacheHeaderVersion) -> Self6466     pub fn header_version(mut self, header_version: PipelineCacheHeaderVersion) -> Self {
6467         self.inner.header_version = header_version;
6468         self
6469     }
vendor_id(mut self, vendor_id: u32) -> Self6470     pub fn vendor_id(mut self, vendor_id: u32) -> Self {
6471         self.inner.vendor_id = vendor_id;
6472         self
6473     }
device_id(mut self, device_id: u32) -> Self6474     pub fn device_id(mut self, device_id: u32) -> Self {
6475         self.inner.device_id = device_id;
6476         self
6477     }
pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self6478     pub fn pipeline_cache_uuid(mut self, pipeline_cache_uuid: [u8; UUID_SIZE]) -> Self {
6479         self.inner.pipeline_cache_uuid = pipeline_cache_uuid;
6480         self
6481     }
6482     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6483     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6484     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCacheHeaderVersionOne6485     pub fn build(self) -> PipelineCacheHeaderVersionOne {
6486         self.inner
6487     }
6488 }
6489 #[repr(C)]
6490 #[cfg_attr(feature = "debug", derive(Debug))]
6491 #[derive(Copy, Clone, Default)]
6492 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPushConstantRange.html>"]
6493 pub struct PushConstantRange {
6494     pub stage_flags: ShaderStageFlags,
6495     pub offset: u32,
6496     pub size: u32,
6497 }
6498 impl PushConstantRange {
builder<'a>() -> PushConstantRangeBuilder<'a>6499     pub fn builder<'a>() -> PushConstantRangeBuilder<'a> {
6500         PushConstantRangeBuilder {
6501             inner: Self::default(),
6502             marker: ::std::marker::PhantomData,
6503         }
6504     }
6505 }
6506 #[repr(transparent)]
6507 pub struct PushConstantRangeBuilder<'a> {
6508     inner: PushConstantRange,
6509     marker: ::std::marker::PhantomData<&'a ()>,
6510 }
6511 impl<'a> ::std::ops::Deref for PushConstantRangeBuilder<'a> {
6512     type Target = PushConstantRange;
deref(&self) -> &Self::Target6513     fn deref(&self) -> &Self::Target {
6514         &self.inner
6515     }
6516 }
6517 impl<'a> ::std::ops::DerefMut for PushConstantRangeBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6518     fn deref_mut(&mut self) -> &mut Self::Target {
6519         &mut self.inner
6520     }
6521 }
6522 impl<'a> PushConstantRangeBuilder<'a> {
stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self6523     pub fn stage_flags(mut self, stage_flags: ShaderStageFlags) -> Self {
6524         self.inner.stage_flags = stage_flags;
6525         self
6526     }
offset(mut self, offset: u32) -> Self6527     pub fn offset(mut self, offset: u32) -> Self {
6528         self.inner.offset = offset;
6529         self
6530     }
size(mut self, size: u32) -> Self6531     pub fn size(mut self, size: u32) -> Self {
6532         self.inner.size = size;
6533         self
6534     }
6535     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6536     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6537     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PushConstantRange6538     pub fn build(self) -> PushConstantRange {
6539         self.inner
6540     }
6541 }
6542 #[repr(C)]
6543 #[cfg_attr(feature = "debug", derive(Debug))]
6544 #[derive(Copy, Clone)]
6545 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayoutCreateInfo.html>"]
6546 pub struct PipelineLayoutCreateInfo {
6547     pub s_type: StructureType,
6548     pub p_next: *const c_void,
6549     pub flags: PipelineLayoutCreateFlags,
6550     pub set_layout_count: u32,
6551     pub p_set_layouts: *const DescriptorSetLayout,
6552     pub push_constant_range_count: u32,
6553     pub p_push_constant_ranges: *const PushConstantRange,
6554 }
6555 impl ::std::default::Default for PipelineLayoutCreateInfo {
default() -> Self6556     fn default() -> Self {
6557         Self {
6558             s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
6559             p_next: ::std::ptr::null(),
6560             flags: PipelineLayoutCreateFlags::default(),
6561             set_layout_count: u32::default(),
6562             p_set_layouts: ::std::ptr::null(),
6563             push_constant_range_count: u32::default(),
6564             p_push_constant_ranges: ::std::ptr::null(),
6565         }
6566     }
6567 }
6568 impl PipelineLayoutCreateInfo {
builder<'a>() -> PipelineLayoutCreateInfoBuilder<'a>6569     pub fn builder<'a>() -> PipelineLayoutCreateInfoBuilder<'a> {
6570         PipelineLayoutCreateInfoBuilder {
6571             inner: Self::default(),
6572             marker: ::std::marker::PhantomData,
6573         }
6574     }
6575 }
6576 #[repr(transparent)]
6577 pub struct PipelineLayoutCreateInfoBuilder<'a> {
6578     inner: PipelineLayoutCreateInfo,
6579     marker: ::std::marker::PhantomData<&'a ()>,
6580 }
6581 impl<'a> ::std::ops::Deref for PipelineLayoutCreateInfoBuilder<'a> {
6582     type Target = PipelineLayoutCreateInfo;
deref(&self) -> &Self::Target6583     fn deref(&self) -> &Self::Target {
6584         &self.inner
6585     }
6586 }
6587 impl<'a> ::std::ops::DerefMut for PipelineLayoutCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6588     fn deref_mut(&mut self) -> &mut Self::Target {
6589         &mut self.inner
6590     }
6591 }
6592 impl<'a> PipelineLayoutCreateInfoBuilder<'a> {
flags(mut self, flags: PipelineLayoutCreateFlags) -> Self6593     pub fn flags(mut self, flags: PipelineLayoutCreateFlags) -> Self {
6594         self.inner.flags = flags;
6595         self
6596     }
set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self6597     pub fn set_layouts(mut self, set_layouts: &'a [DescriptorSetLayout]) -> Self {
6598         self.inner.set_layout_count = set_layouts.len() as _;
6599         self.inner.p_set_layouts = set_layouts.as_ptr();
6600         self
6601     }
push_constant_ranges(mut self, push_constant_ranges: &'a [PushConstantRange]) -> Self6602     pub fn push_constant_ranges(mut self, push_constant_ranges: &'a [PushConstantRange]) -> Self {
6603         self.inner.push_constant_range_count = push_constant_ranges.len() as _;
6604         self.inner.p_push_constant_ranges = push_constant_ranges.as_ptr();
6605         self
6606     }
6607     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6608     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6609     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineLayoutCreateInfo6610     pub fn build(self) -> PipelineLayoutCreateInfo {
6611         self.inner
6612     }
6613 }
6614 #[repr(C)]
6615 #[cfg_attr(feature = "debug", derive(Debug))]
6616 #[derive(Copy, Clone)]
6617 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCreateInfo.html>"]
6618 pub struct SamplerCreateInfo {
6619     pub s_type: StructureType,
6620     pub p_next: *const c_void,
6621     pub flags: SamplerCreateFlags,
6622     pub mag_filter: Filter,
6623     pub min_filter: Filter,
6624     pub mipmap_mode: SamplerMipmapMode,
6625     pub address_mode_u: SamplerAddressMode,
6626     pub address_mode_v: SamplerAddressMode,
6627     pub address_mode_w: SamplerAddressMode,
6628     pub mip_lod_bias: f32,
6629     pub anisotropy_enable: Bool32,
6630     pub max_anisotropy: f32,
6631     pub compare_enable: Bool32,
6632     pub compare_op: CompareOp,
6633     pub min_lod: f32,
6634     pub max_lod: f32,
6635     pub border_color: BorderColor,
6636     pub unnormalized_coordinates: Bool32,
6637 }
6638 impl ::std::default::Default for SamplerCreateInfo {
default() -> Self6639     fn default() -> Self {
6640         Self {
6641             s_type: StructureType::SAMPLER_CREATE_INFO,
6642             p_next: ::std::ptr::null(),
6643             flags: SamplerCreateFlags::default(),
6644             mag_filter: Filter::default(),
6645             min_filter: Filter::default(),
6646             mipmap_mode: SamplerMipmapMode::default(),
6647             address_mode_u: SamplerAddressMode::default(),
6648             address_mode_v: SamplerAddressMode::default(),
6649             address_mode_w: SamplerAddressMode::default(),
6650             mip_lod_bias: f32::default(),
6651             anisotropy_enable: Bool32::default(),
6652             max_anisotropy: f32::default(),
6653             compare_enable: Bool32::default(),
6654             compare_op: CompareOp::default(),
6655             min_lod: f32::default(),
6656             max_lod: f32::default(),
6657             border_color: BorderColor::default(),
6658             unnormalized_coordinates: Bool32::default(),
6659         }
6660     }
6661 }
6662 impl SamplerCreateInfo {
builder<'a>() -> SamplerCreateInfoBuilder<'a>6663     pub fn builder<'a>() -> SamplerCreateInfoBuilder<'a> {
6664         SamplerCreateInfoBuilder {
6665             inner: Self::default(),
6666             marker: ::std::marker::PhantomData,
6667         }
6668     }
6669 }
6670 #[repr(transparent)]
6671 pub struct SamplerCreateInfoBuilder<'a> {
6672     inner: SamplerCreateInfo,
6673     marker: ::std::marker::PhantomData<&'a ()>,
6674 }
6675 pub unsafe trait ExtendsSamplerCreateInfo {}
6676 impl<'a> ::std::ops::Deref for SamplerCreateInfoBuilder<'a> {
6677     type Target = SamplerCreateInfo;
deref(&self) -> &Self::Target6678     fn deref(&self) -> &Self::Target {
6679         &self.inner
6680     }
6681 }
6682 impl<'a> ::std::ops::DerefMut for SamplerCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6683     fn deref_mut(&mut self) -> &mut Self::Target {
6684         &mut self.inner
6685     }
6686 }
6687 impl<'a> SamplerCreateInfoBuilder<'a> {
flags(mut self, flags: SamplerCreateFlags) -> Self6688     pub fn flags(mut self, flags: SamplerCreateFlags) -> Self {
6689         self.inner.flags = flags;
6690         self
6691     }
mag_filter(mut self, mag_filter: Filter) -> Self6692     pub fn mag_filter(mut self, mag_filter: Filter) -> Self {
6693         self.inner.mag_filter = mag_filter;
6694         self
6695     }
min_filter(mut self, min_filter: Filter) -> Self6696     pub fn min_filter(mut self, min_filter: Filter) -> Self {
6697         self.inner.min_filter = min_filter;
6698         self
6699     }
mipmap_mode(mut self, mipmap_mode: SamplerMipmapMode) -> Self6700     pub fn mipmap_mode(mut self, mipmap_mode: SamplerMipmapMode) -> Self {
6701         self.inner.mipmap_mode = mipmap_mode;
6702         self
6703     }
address_mode_u(mut self, address_mode_u: SamplerAddressMode) -> Self6704     pub fn address_mode_u(mut self, address_mode_u: SamplerAddressMode) -> Self {
6705         self.inner.address_mode_u = address_mode_u;
6706         self
6707     }
address_mode_v(mut self, address_mode_v: SamplerAddressMode) -> Self6708     pub fn address_mode_v(mut self, address_mode_v: SamplerAddressMode) -> Self {
6709         self.inner.address_mode_v = address_mode_v;
6710         self
6711     }
address_mode_w(mut self, address_mode_w: SamplerAddressMode) -> Self6712     pub fn address_mode_w(mut self, address_mode_w: SamplerAddressMode) -> Self {
6713         self.inner.address_mode_w = address_mode_w;
6714         self
6715     }
mip_lod_bias(mut self, mip_lod_bias: f32) -> Self6716     pub fn mip_lod_bias(mut self, mip_lod_bias: f32) -> Self {
6717         self.inner.mip_lod_bias = mip_lod_bias;
6718         self
6719     }
anisotropy_enable(mut self, anisotropy_enable: bool) -> Self6720     pub fn anisotropy_enable(mut self, anisotropy_enable: bool) -> Self {
6721         self.inner.anisotropy_enable = anisotropy_enable.into();
6722         self
6723     }
max_anisotropy(mut self, max_anisotropy: f32) -> Self6724     pub fn max_anisotropy(mut self, max_anisotropy: f32) -> Self {
6725         self.inner.max_anisotropy = max_anisotropy;
6726         self
6727     }
compare_enable(mut self, compare_enable: bool) -> Self6728     pub fn compare_enable(mut self, compare_enable: bool) -> Self {
6729         self.inner.compare_enable = compare_enable.into();
6730         self
6731     }
compare_op(mut self, compare_op: CompareOp) -> Self6732     pub fn compare_op(mut self, compare_op: CompareOp) -> Self {
6733         self.inner.compare_op = compare_op;
6734         self
6735     }
min_lod(mut self, min_lod: f32) -> Self6736     pub fn min_lod(mut self, min_lod: f32) -> Self {
6737         self.inner.min_lod = min_lod;
6738         self
6739     }
max_lod(mut self, max_lod: f32) -> Self6740     pub fn max_lod(mut self, max_lod: f32) -> Self {
6741         self.inner.max_lod = max_lod;
6742         self
6743     }
border_color(mut self, border_color: BorderColor) -> Self6744     pub fn border_color(mut self, border_color: BorderColor) -> Self {
6745         self.inner.border_color = border_color;
6746         self
6747     }
unnormalized_coordinates(mut self, unnormalized_coordinates: bool) -> Self6748     pub fn unnormalized_coordinates(mut self, unnormalized_coordinates: bool) -> Self {
6749         self.inner.unnormalized_coordinates = unnormalized_coordinates.into();
6750         self
6751     }
6752     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
6753     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
6754     #[doc = r" valid extension structs can be pushed into the chain."]
6755     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
6756     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSamplerCreateInfo>(mut self, next: &'a mut T) -> Self6757     pub fn push_next<T: ExtendsSamplerCreateInfo>(mut self, next: &'a mut T) -> Self {
6758         unsafe {
6759             let next_ptr = next as *mut T as *mut BaseOutStructure;
6760             let last_next = ptr_chain_iter(next).last().unwrap();
6761             (*last_next).p_next = self.inner.p_next as _;
6762             self.inner.p_next = next_ptr as _;
6763         }
6764         self
6765     }
6766     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6767     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6768     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerCreateInfo6769     pub fn build(self) -> SamplerCreateInfo {
6770         self.inner
6771     }
6772 }
6773 #[repr(C)]
6774 #[cfg_attr(feature = "debug", derive(Debug))]
6775 #[derive(Copy, Clone)]
6776 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolCreateInfo.html>"]
6777 pub struct CommandPoolCreateInfo {
6778     pub s_type: StructureType,
6779     pub p_next: *const c_void,
6780     pub flags: CommandPoolCreateFlags,
6781     pub queue_family_index: u32,
6782 }
6783 impl ::std::default::Default for CommandPoolCreateInfo {
default() -> Self6784     fn default() -> Self {
6785         Self {
6786             s_type: StructureType::COMMAND_POOL_CREATE_INFO,
6787             p_next: ::std::ptr::null(),
6788             flags: CommandPoolCreateFlags::default(),
6789             queue_family_index: u32::default(),
6790         }
6791     }
6792 }
6793 impl CommandPoolCreateInfo {
builder<'a>() -> CommandPoolCreateInfoBuilder<'a>6794     pub fn builder<'a>() -> CommandPoolCreateInfoBuilder<'a> {
6795         CommandPoolCreateInfoBuilder {
6796             inner: Self::default(),
6797             marker: ::std::marker::PhantomData,
6798         }
6799     }
6800 }
6801 #[repr(transparent)]
6802 pub struct CommandPoolCreateInfoBuilder<'a> {
6803     inner: CommandPoolCreateInfo,
6804     marker: ::std::marker::PhantomData<&'a ()>,
6805 }
6806 impl<'a> ::std::ops::Deref for CommandPoolCreateInfoBuilder<'a> {
6807     type Target = CommandPoolCreateInfo;
deref(&self) -> &Self::Target6808     fn deref(&self) -> &Self::Target {
6809         &self.inner
6810     }
6811 }
6812 impl<'a> ::std::ops::DerefMut for CommandPoolCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6813     fn deref_mut(&mut self) -> &mut Self::Target {
6814         &mut self.inner
6815     }
6816 }
6817 impl<'a> CommandPoolCreateInfoBuilder<'a> {
flags(mut self, flags: CommandPoolCreateFlags) -> Self6818     pub fn flags(mut self, flags: CommandPoolCreateFlags) -> Self {
6819         self.inner.flags = flags;
6820         self
6821     }
queue_family_index(mut self, queue_family_index: u32) -> Self6822     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
6823         self.inner.queue_family_index = queue_family_index;
6824         self
6825     }
6826     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6827     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6828     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandPoolCreateInfo6829     pub fn build(self) -> CommandPoolCreateInfo {
6830         self.inner
6831     }
6832 }
6833 #[repr(C)]
6834 #[cfg_attr(feature = "debug", derive(Debug))]
6835 #[derive(Copy, Clone)]
6836 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferAllocateInfo.html>"]
6837 pub struct CommandBufferAllocateInfo {
6838     pub s_type: StructureType,
6839     pub p_next: *const c_void,
6840     pub command_pool: CommandPool,
6841     pub level: CommandBufferLevel,
6842     pub command_buffer_count: u32,
6843 }
6844 impl ::std::default::Default for CommandBufferAllocateInfo {
default() -> Self6845     fn default() -> Self {
6846         Self {
6847             s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
6848             p_next: ::std::ptr::null(),
6849             command_pool: CommandPool::default(),
6850             level: CommandBufferLevel::default(),
6851             command_buffer_count: u32::default(),
6852         }
6853     }
6854 }
6855 impl CommandBufferAllocateInfo {
builder<'a>() -> CommandBufferAllocateInfoBuilder<'a>6856     pub fn builder<'a>() -> CommandBufferAllocateInfoBuilder<'a> {
6857         CommandBufferAllocateInfoBuilder {
6858             inner: Self::default(),
6859             marker: ::std::marker::PhantomData,
6860         }
6861     }
6862 }
6863 #[repr(transparent)]
6864 pub struct CommandBufferAllocateInfoBuilder<'a> {
6865     inner: CommandBufferAllocateInfo,
6866     marker: ::std::marker::PhantomData<&'a ()>,
6867 }
6868 impl<'a> ::std::ops::Deref for CommandBufferAllocateInfoBuilder<'a> {
6869     type Target = CommandBufferAllocateInfo;
deref(&self) -> &Self::Target6870     fn deref(&self) -> &Self::Target {
6871         &self.inner
6872     }
6873 }
6874 impl<'a> ::std::ops::DerefMut for CommandBufferAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6875     fn deref_mut(&mut self) -> &mut Self::Target {
6876         &mut self.inner
6877     }
6878 }
6879 impl<'a> CommandBufferAllocateInfoBuilder<'a> {
command_pool(mut self, command_pool: CommandPool) -> Self6880     pub fn command_pool(mut self, command_pool: CommandPool) -> Self {
6881         self.inner.command_pool = command_pool;
6882         self
6883     }
level(mut self, level: CommandBufferLevel) -> Self6884     pub fn level(mut self, level: CommandBufferLevel) -> Self {
6885         self.inner.level = level;
6886         self
6887     }
command_buffer_count(mut self, command_buffer_count: u32) -> Self6888     pub fn command_buffer_count(mut self, command_buffer_count: u32) -> Self {
6889         self.inner.command_buffer_count = command_buffer_count;
6890         self
6891     }
6892     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6893     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6894     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferAllocateInfo6895     pub fn build(self) -> CommandBufferAllocateInfo {
6896         self.inner
6897     }
6898 }
6899 #[repr(C)]
6900 #[cfg_attr(feature = "debug", derive(Debug))]
6901 #[derive(Copy, Clone)]
6902 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceInfo.html>"]
6903 pub struct CommandBufferInheritanceInfo {
6904     pub s_type: StructureType,
6905     pub p_next: *const c_void,
6906     pub render_pass: RenderPass,
6907     pub subpass: u32,
6908     pub framebuffer: Framebuffer,
6909     pub occlusion_query_enable: Bool32,
6910     pub query_flags: QueryControlFlags,
6911     pub pipeline_statistics: QueryPipelineStatisticFlags,
6912 }
6913 impl ::std::default::Default for CommandBufferInheritanceInfo {
default() -> Self6914     fn default() -> Self {
6915         Self {
6916             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
6917             p_next: ::std::ptr::null(),
6918             render_pass: RenderPass::default(),
6919             subpass: u32::default(),
6920             framebuffer: Framebuffer::default(),
6921             occlusion_query_enable: Bool32::default(),
6922             query_flags: QueryControlFlags::default(),
6923             pipeline_statistics: QueryPipelineStatisticFlags::default(),
6924         }
6925     }
6926 }
6927 impl CommandBufferInheritanceInfo {
builder<'a>() -> CommandBufferInheritanceInfoBuilder<'a>6928     pub fn builder<'a>() -> CommandBufferInheritanceInfoBuilder<'a> {
6929         CommandBufferInheritanceInfoBuilder {
6930             inner: Self::default(),
6931             marker: ::std::marker::PhantomData,
6932         }
6933     }
6934 }
6935 #[repr(transparent)]
6936 pub struct CommandBufferInheritanceInfoBuilder<'a> {
6937     inner: CommandBufferInheritanceInfo,
6938     marker: ::std::marker::PhantomData<&'a ()>,
6939 }
6940 pub unsafe trait ExtendsCommandBufferInheritanceInfo {}
6941 impl<'a> ::std::ops::Deref for CommandBufferInheritanceInfoBuilder<'a> {
6942     type Target = CommandBufferInheritanceInfo;
deref(&self) -> &Self::Target6943     fn deref(&self) -> &Self::Target {
6944         &self.inner
6945     }
6946 }
6947 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target6948     fn deref_mut(&mut self) -> &mut Self::Target {
6949         &mut self.inner
6950     }
6951 }
6952 impl<'a> CommandBufferInheritanceInfoBuilder<'a> {
render_pass(mut self, render_pass: RenderPass) -> Self6953     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
6954         self.inner.render_pass = render_pass;
6955         self
6956     }
subpass(mut self, subpass: u32) -> Self6957     pub fn subpass(mut self, subpass: u32) -> Self {
6958         self.inner.subpass = subpass;
6959         self
6960     }
framebuffer(mut self, framebuffer: Framebuffer) -> Self6961     pub fn framebuffer(mut self, framebuffer: Framebuffer) -> Self {
6962         self.inner.framebuffer = framebuffer;
6963         self
6964     }
occlusion_query_enable(mut self, occlusion_query_enable: bool) -> Self6965     pub fn occlusion_query_enable(mut self, occlusion_query_enable: bool) -> Self {
6966         self.inner.occlusion_query_enable = occlusion_query_enable.into();
6967         self
6968     }
query_flags(mut self, query_flags: QueryControlFlags) -> Self6969     pub fn query_flags(mut self, query_flags: QueryControlFlags) -> Self {
6970         self.inner.query_flags = query_flags;
6971         self
6972     }
pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self6973     pub fn pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self {
6974         self.inner.pipeline_statistics = pipeline_statistics;
6975         self
6976     }
6977     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
6978     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
6979     #[doc = r" valid extension structs can be pushed into the chain."]
6980     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
6981     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsCommandBufferInheritanceInfo>(mut self, next: &'a mut T) -> Self6982     pub fn push_next<T: ExtendsCommandBufferInheritanceInfo>(mut self, next: &'a mut T) -> Self {
6983         unsafe {
6984             let next_ptr = next as *mut T as *mut BaseOutStructure;
6985             let last_next = ptr_chain_iter(next).last().unwrap();
6986             (*last_next).p_next = self.inner.p_next as _;
6987             self.inner.p_next = next_ptr as _;
6988         }
6989         self
6990     }
6991     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
6992     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
6993     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceInfo6994     pub fn build(self) -> CommandBufferInheritanceInfo {
6995         self.inner
6996     }
6997 }
6998 #[repr(C)]
6999 #[cfg_attr(feature = "debug", derive(Debug))]
7000 #[derive(Copy, Clone)]
7001 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferBeginInfo.html>"]
7002 pub struct CommandBufferBeginInfo {
7003     pub s_type: StructureType,
7004     pub p_next: *const c_void,
7005     pub flags: CommandBufferUsageFlags,
7006     pub p_inheritance_info: *const CommandBufferInheritanceInfo,
7007 }
7008 impl ::std::default::Default for CommandBufferBeginInfo {
default() -> Self7009     fn default() -> Self {
7010         Self {
7011             s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
7012             p_next: ::std::ptr::null(),
7013             flags: CommandBufferUsageFlags::default(),
7014             p_inheritance_info: ::std::ptr::null(),
7015         }
7016     }
7017 }
7018 impl CommandBufferBeginInfo {
builder<'a>() -> CommandBufferBeginInfoBuilder<'a>7019     pub fn builder<'a>() -> CommandBufferBeginInfoBuilder<'a> {
7020         CommandBufferBeginInfoBuilder {
7021             inner: Self::default(),
7022             marker: ::std::marker::PhantomData,
7023         }
7024     }
7025 }
7026 #[repr(transparent)]
7027 pub struct CommandBufferBeginInfoBuilder<'a> {
7028     inner: CommandBufferBeginInfo,
7029     marker: ::std::marker::PhantomData<&'a ()>,
7030 }
7031 pub unsafe trait ExtendsCommandBufferBeginInfo {}
7032 impl<'a> ::std::ops::Deref for CommandBufferBeginInfoBuilder<'a> {
7033     type Target = CommandBufferBeginInfo;
deref(&self) -> &Self::Target7034     fn deref(&self) -> &Self::Target {
7035         &self.inner
7036     }
7037 }
7038 impl<'a> ::std::ops::DerefMut for CommandBufferBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7039     fn deref_mut(&mut self) -> &mut Self::Target {
7040         &mut self.inner
7041     }
7042 }
7043 impl<'a> CommandBufferBeginInfoBuilder<'a> {
flags(mut self, flags: CommandBufferUsageFlags) -> Self7044     pub fn flags(mut self, flags: CommandBufferUsageFlags) -> Self {
7045         self.inner.flags = flags;
7046         self
7047     }
inheritance_info(mut self, inheritance_info: &'a CommandBufferInheritanceInfo) -> Self7048     pub fn inheritance_info(mut self, inheritance_info: &'a CommandBufferInheritanceInfo) -> Self {
7049         self.inner.p_inheritance_info = inheritance_info;
7050         self
7051     }
7052     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
7053     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
7054     #[doc = r" valid extension structs can be pushed into the chain."]
7055     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
7056     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsCommandBufferBeginInfo>(mut self, next: &'a mut T) -> Self7057     pub fn push_next<T: ExtendsCommandBufferBeginInfo>(mut self, next: &'a mut T) -> Self {
7058         unsafe {
7059             let next_ptr = next as *mut T as *mut BaseOutStructure;
7060             let last_next = ptr_chain_iter(next).last().unwrap();
7061             (*last_next).p_next = self.inner.p_next as _;
7062             self.inner.p_next = next_ptr as _;
7063         }
7064         self
7065     }
7066     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7067     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7068     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferBeginInfo7069     pub fn build(self) -> CommandBufferBeginInfo {
7070         self.inner
7071     }
7072 }
7073 #[repr(C)]
7074 #[derive(Copy, Clone)]
7075 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassBeginInfo.html>"]
7076 pub struct RenderPassBeginInfo {
7077     pub s_type: StructureType,
7078     pub p_next: *const c_void,
7079     pub render_pass: RenderPass,
7080     pub framebuffer: Framebuffer,
7081     pub render_area: Rect2D,
7082     pub clear_value_count: u32,
7083     pub p_clear_values: *const ClearValue,
7084 }
7085 #[cfg(feature = "debug")]
7086 impl fmt::Debug for RenderPassBeginInfo {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result7087     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
7088         fmt.debug_struct("RenderPassBeginInfo")
7089             .field("s_type", &self.s_type)
7090             .field("p_next", &self.p_next)
7091             .field("render_pass", &self.render_pass)
7092             .field("framebuffer", &self.framebuffer)
7093             .field("render_area", &self.render_area)
7094             .field("clear_value_count", &self.clear_value_count)
7095             .field("p_clear_values", &"union")
7096             .finish()
7097     }
7098 }
7099 impl ::std::default::Default for RenderPassBeginInfo {
default() -> Self7100     fn default() -> Self {
7101         Self {
7102             s_type: StructureType::RENDER_PASS_BEGIN_INFO,
7103             p_next: ::std::ptr::null(),
7104             render_pass: RenderPass::default(),
7105             framebuffer: Framebuffer::default(),
7106             render_area: Rect2D::default(),
7107             clear_value_count: u32::default(),
7108             p_clear_values: ::std::ptr::null(),
7109         }
7110     }
7111 }
7112 impl RenderPassBeginInfo {
builder<'a>() -> RenderPassBeginInfoBuilder<'a>7113     pub fn builder<'a>() -> RenderPassBeginInfoBuilder<'a> {
7114         RenderPassBeginInfoBuilder {
7115             inner: Self::default(),
7116             marker: ::std::marker::PhantomData,
7117         }
7118     }
7119 }
7120 #[repr(transparent)]
7121 pub struct RenderPassBeginInfoBuilder<'a> {
7122     inner: RenderPassBeginInfo,
7123     marker: ::std::marker::PhantomData<&'a ()>,
7124 }
7125 pub unsafe trait ExtendsRenderPassBeginInfo {}
7126 impl<'a> ::std::ops::Deref for RenderPassBeginInfoBuilder<'a> {
7127     type Target = RenderPassBeginInfo;
deref(&self) -> &Self::Target7128     fn deref(&self) -> &Self::Target {
7129         &self.inner
7130     }
7131 }
7132 impl<'a> ::std::ops::DerefMut for RenderPassBeginInfoBuilder<'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> RenderPassBeginInfoBuilder<'a> {
render_pass(mut self, render_pass: RenderPass) -> Self7138     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
7139         self.inner.render_pass = render_pass;
7140         self
7141     }
framebuffer(mut self, framebuffer: Framebuffer) -> Self7142     pub fn framebuffer(mut self, framebuffer: Framebuffer) -> Self {
7143         self.inner.framebuffer = framebuffer;
7144         self
7145     }
render_area(mut self, render_area: Rect2D) -> Self7146     pub fn render_area(mut self, render_area: Rect2D) -> Self {
7147         self.inner.render_area = render_area;
7148         self
7149     }
clear_values(mut self, clear_values: &'a [ClearValue]) -> Self7150     pub fn clear_values(mut self, clear_values: &'a [ClearValue]) -> Self {
7151         self.inner.clear_value_count = clear_values.len() as _;
7152         self.inner.p_clear_values = clear_values.as_ptr();
7153         self
7154     }
7155     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
7156     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
7157     #[doc = r" valid extension structs can be pushed into the chain."]
7158     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
7159     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRenderPassBeginInfo>(mut self, next: &'a mut T) -> Self7160     pub fn push_next<T: ExtendsRenderPassBeginInfo>(mut self, next: &'a mut T) -> Self {
7161         unsafe {
7162             let next_ptr = next as *mut T as *mut BaseOutStructure;
7163             let last_next = ptr_chain_iter(next).last().unwrap();
7164             (*last_next).p_next = self.inner.p_next as _;
7165             self.inner.p_next = next_ptr as _;
7166         }
7167         self
7168     }
7169     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7170     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7171     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassBeginInfo7172     pub fn build(self) -> RenderPassBeginInfo {
7173         self.inner
7174     }
7175 }
7176 #[repr(C)]
7177 #[derive(Copy, Clone)]
7178 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearColorValue.html>"]
7179 pub union ClearColorValue {
7180     pub float32: [f32; 4],
7181     pub int32: [i32; 4],
7182     pub uint32: [u32; 4],
7183 }
7184 impl ::std::default::Default for ClearColorValue {
default() -> Self7185     fn default() -> Self {
7186         unsafe { ::std::mem::zeroed() }
7187     }
7188 }
7189 #[repr(C)]
7190 #[cfg_attr(feature = "debug", derive(Debug))]
7191 #[derive(Copy, Clone, Default)]
7192 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearDepthStencilValue.html>"]
7193 pub struct ClearDepthStencilValue {
7194     pub depth: f32,
7195     pub stencil: u32,
7196 }
7197 impl ClearDepthStencilValue {
builder<'a>() -> ClearDepthStencilValueBuilder<'a>7198     pub fn builder<'a>() -> ClearDepthStencilValueBuilder<'a> {
7199         ClearDepthStencilValueBuilder {
7200             inner: Self::default(),
7201             marker: ::std::marker::PhantomData,
7202         }
7203     }
7204 }
7205 #[repr(transparent)]
7206 pub struct ClearDepthStencilValueBuilder<'a> {
7207     inner: ClearDepthStencilValue,
7208     marker: ::std::marker::PhantomData<&'a ()>,
7209 }
7210 impl<'a> ::std::ops::Deref for ClearDepthStencilValueBuilder<'a> {
7211     type Target = ClearDepthStencilValue;
deref(&self) -> &Self::Target7212     fn deref(&self) -> &Self::Target {
7213         &self.inner
7214     }
7215 }
7216 impl<'a> ::std::ops::DerefMut for ClearDepthStencilValueBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7217     fn deref_mut(&mut self) -> &mut Self::Target {
7218         &mut self.inner
7219     }
7220 }
7221 impl<'a> ClearDepthStencilValueBuilder<'a> {
depth(mut self, depth: f32) -> Self7222     pub fn depth(mut self, depth: f32) -> Self {
7223         self.inner.depth = depth;
7224         self
7225     }
stencil(mut self, stencil: u32) -> Self7226     pub fn stencil(mut self, stencil: u32) -> Self {
7227         self.inner.stencil = stencil;
7228         self
7229     }
7230     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7231     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7232     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ClearDepthStencilValue7233     pub fn build(self) -> ClearDepthStencilValue {
7234         self.inner
7235     }
7236 }
7237 #[repr(C)]
7238 #[derive(Copy, Clone)]
7239 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearValue.html>"]
7240 pub union ClearValue {
7241     pub color: ClearColorValue,
7242     pub depth_stencil: ClearDepthStencilValue,
7243 }
7244 impl ::std::default::Default for ClearValue {
default() -> Self7245     fn default() -> Self {
7246         unsafe { ::std::mem::zeroed() }
7247     }
7248 }
7249 #[repr(C)]
7250 #[derive(Copy, Clone, Default)]
7251 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearAttachment.html>"]
7252 pub struct ClearAttachment {
7253     pub aspect_mask: ImageAspectFlags,
7254     pub color_attachment: u32,
7255     pub clear_value: ClearValue,
7256 }
7257 #[cfg(feature = "debug")]
7258 impl fmt::Debug for ClearAttachment {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result7259     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
7260         fmt.debug_struct("ClearAttachment")
7261             .field("aspect_mask", &self.aspect_mask)
7262             .field("color_attachment", &self.color_attachment)
7263             .field("clear_value", &"union")
7264             .finish()
7265     }
7266 }
7267 impl ClearAttachment {
builder<'a>() -> ClearAttachmentBuilder<'a>7268     pub fn builder<'a>() -> ClearAttachmentBuilder<'a> {
7269         ClearAttachmentBuilder {
7270             inner: Self::default(),
7271             marker: ::std::marker::PhantomData,
7272         }
7273     }
7274 }
7275 #[repr(transparent)]
7276 pub struct ClearAttachmentBuilder<'a> {
7277     inner: ClearAttachment,
7278     marker: ::std::marker::PhantomData<&'a ()>,
7279 }
7280 impl<'a> ::std::ops::Deref for ClearAttachmentBuilder<'a> {
7281     type Target = ClearAttachment;
deref(&self) -> &Self::Target7282     fn deref(&self) -> &Self::Target {
7283         &self.inner
7284     }
7285 }
7286 impl<'a> ::std::ops::DerefMut for ClearAttachmentBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7287     fn deref_mut(&mut self) -> &mut Self::Target {
7288         &mut self.inner
7289     }
7290 }
7291 impl<'a> ClearAttachmentBuilder<'a> {
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self7292     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
7293         self.inner.aspect_mask = aspect_mask;
7294         self
7295     }
color_attachment(mut self, color_attachment: u32) -> Self7296     pub fn color_attachment(mut self, color_attachment: u32) -> Self {
7297         self.inner.color_attachment = color_attachment;
7298         self
7299     }
clear_value(mut self, clear_value: ClearValue) -> Self7300     pub fn clear_value(mut self, clear_value: ClearValue) -> Self {
7301         self.inner.clear_value = clear_value;
7302         self
7303     }
7304     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7305     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7306     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ClearAttachment7307     pub fn build(self) -> ClearAttachment {
7308         self.inner
7309     }
7310 }
7311 #[repr(C)]
7312 #[cfg_attr(feature = "debug", derive(Debug))]
7313 #[derive(Copy, Clone, Default)]
7314 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescription.html>"]
7315 pub struct AttachmentDescription {
7316     pub flags: AttachmentDescriptionFlags,
7317     pub format: Format,
7318     pub samples: SampleCountFlags,
7319     pub load_op: AttachmentLoadOp,
7320     pub store_op: AttachmentStoreOp,
7321     pub stencil_load_op: AttachmentLoadOp,
7322     pub stencil_store_op: AttachmentStoreOp,
7323     pub initial_layout: ImageLayout,
7324     pub final_layout: ImageLayout,
7325 }
7326 impl AttachmentDescription {
builder<'a>() -> AttachmentDescriptionBuilder<'a>7327     pub fn builder<'a>() -> AttachmentDescriptionBuilder<'a> {
7328         AttachmentDescriptionBuilder {
7329             inner: Self::default(),
7330             marker: ::std::marker::PhantomData,
7331         }
7332     }
7333 }
7334 #[repr(transparent)]
7335 pub struct AttachmentDescriptionBuilder<'a> {
7336     inner: AttachmentDescription,
7337     marker: ::std::marker::PhantomData<&'a ()>,
7338 }
7339 impl<'a> ::std::ops::Deref for AttachmentDescriptionBuilder<'a> {
7340     type Target = AttachmentDescription;
deref(&self) -> &Self::Target7341     fn deref(&self) -> &Self::Target {
7342         &self.inner
7343     }
7344 }
7345 impl<'a> ::std::ops::DerefMut for AttachmentDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7346     fn deref_mut(&mut self) -> &mut Self::Target {
7347         &mut self.inner
7348     }
7349 }
7350 impl<'a> AttachmentDescriptionBuilder<'a> {
flags(mut self, flags: AttachmentDescriptionFlags) -> Self7351     pub fn flags(mut self, flags: AttachmentDescriptionFlags) -> Self {
7352         self.inner.flags = flags;
7353         self
7354     }
format(mut self, format: Format) -> Self7355     pub fn format(mut self, format: Format) -> Self {
7356         self.inner.format = format;
7357         self
7358     }
samples(mut self, samples: SampleCountFlags) -> Self7359     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
7360         self.inner.samples = samples;
7361         self
7362     }
load_op(mut self, load_op: AttachmentLoadOp) -> Self7363     pub fn load_op(mut self, load_op: AttachmentLoadOp) -> Self {
7364         self.inner.load_op = load_op;
7365         self
7366     }
store_op(mut self, store_op: AttachmentStoreOp) -> Self7367     pub fn store_op(mut self, store_op: AttachmentStoreOp) -> Self {
7368         self.inner.store_op = store_op;
7369         self
7370     }
stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self7371     pub fn stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self {
7372         self.inner.stencil_load_op = stencil_load_op;
7373         self
7374     }
stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self7375     pub fn stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self {
7376         self.inner.stencil_store_op = stencil_store_op;
7377         self
7378     }
initial_layout(mut self, initial_layout: ImageLayout) -> Self7379     pub fn initial_layout(mut self, initial_layout: ImageLayout) -> Self {
7380         self.inner.initial_layout = initial_layout;
7381         self
7382     }
final_layout(mut self, final_layout: ImageLayout) -> Self7383     pub fn final_layout(mut self, final_layout: ImageLayout) -> Self {
7384         self.inner.final_layout = final_layout;
7385         self
7386     }
7387     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7388     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7389     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentDescription7390     pub fn build(self) -> AttachmentDescription {
7391         self.inner
7392     }
7393 }
7394 #[repr(C)]
7395 #[cfg_attr(feature = "debug", derive(Debug))]
7396 #[derive(Copy, Clone, Default)]
7397 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReference.html>"]
7398 pub struct AttachmentReference {
7399     pub attachment: u32,
7400     pub layout: ImageLayout,
7401 }
7402 impl AttachmentReference {
builder<'a>() -> AttachmentReferenceBuilder<'a>7403     pub fn builder<'a>() -> AttachmentReferenceBuilder<'a> {
7404         AttachmentReferenceBuilder {
7405             inner: Self::default(),
7406             marker: ::std::marker::PhantomData,
7407         }
7408     }
7409 }
7410 #[repr(transparent)]
7411 pub struct AttachmentReferenceBuilder<'a> {
7412     inner: AttachmentReference,
7413     marker: ::std::marker::PhantomData<&'a ()>,
7414 }
7415 impl<'a> ::std::ops::Deref for AttachmentReferenceBuilder<'a> {
7416     type Target = AttachmentReference;
deref(&self) -> &Self::Target7417     fn deref(&self) -> &Self::Target {
7418         &self.inner
7419     }
7420 }
7421 impl<'a> ::std::ops::DerefMut for AttachmentReferenceBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7422     fn deref_mut(&mut self) -> &mut Self::Target {
7423         &mut self.inner
7424     }
7425 }
7426 impl<'a> AttachmentReferenceBuilder<'a> {
attachment(mut self, attachment: u32) -> Self7427     pub fn attachment(mut self, attachment: u32) -> Self {
7428         self.inner.attachment = attachment;
7429         self
7430     }
layout(mut self, layout: ImageLayout) -> Self7431     pub fn layout(mut self, layout: ImageLayout) -> Self {
7432         self.inner.layout = layout;
7433         self
7434     }
7435     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7436     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7437     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentReference7438     pub fn build(self) -> AttachmentReference {
7439         self.inner
7440     }
7441 }
7442 #[repr(C)]
7443 #[cfg_attr(feature = "debug", derive(Debug))]
7444 #[derive(Copy, Clone)]
7445 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescription.html>"]
7446 pub struct SubpassDescription {
7447     pub flags: SubpassDescriptionFlags,
7448     pub pipeline_bind_point: PipelineBindPoint,
7449     pub input_attachment_count: u32,
7450     pub p_input_attachments: *const AttachmentReference,
7451     pub color_attachment_count: u32,
7452     pub p_color_attachments: *const AttachmentReference,
7453     pub p_resolve_attachments: *const AttachmentReference,
7454     pub p_depth_stencil_attachment: *const AttachmentReference,
7455     pub preserve_attachment_count: u32,
7456     pub p_preserve_attachments: *const u32,
7457 }
7458 impl ::std::default::Default for SubpassDescription {
default() -> Self7459     fn default() -> Self {
7460         Self {
7461             flags: SubpassDescriptionFlags::default(),
7462             pipeline_bind_point: PipelineBindPoint::default(),
7463             input_attachment_count: u32::default(),
7464             p_input_attachments: ::std::ptr::null(),
7465             color_attachment_count: u32::default(),
7466             p_color_attachments: ::std::ptr::null(),
7467             p_resolve_attachments: ::std::ptr::null(),
7468             p_depth_stencil_attachment: ::std::ptr::null(),
7469             preserve_attachment_count: u32::default(),
7470             p_preserve_attachments: ::std::ptr::null(),
7471         }
7472     }
7473 }
7474 impl SubpassDescription {
builder<'a>() -> SubpassDescriptionBuilder<'a>7475     pub fn builder<'a>() -> SubpassDescriptionBuilder<'a> {
7476         SubpassDescriptionBuilder {
7477             inner: Self::default(),
7478             marker: ::std::marker::PhantomData,
7479         }
7480     }
7481 }
7482 #[repr(transparent)]
7483 pub struct SubpassDescriptionBuilder<'a> {
7484     inner: SubpassDescription,
7485     marker: ::std::marker::PhantomData<&'a ()>,
7486 }
7487 impl<'a> ::std::ops::Deref for SubpassDescriptionBuilder<'a> {
7488     type Target = SubpassDescription;
deref(&self) -> &Self::Target7489     fn deref(&self) -> &Self::Target {
7490         &self.inner
7491     }
7492 }
7493 impl<'a> ::std::ops::DerefMut for SubpassDescriptionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7494     fn deref_mut(&mut self) -> &mut Self::Target {
7495         &mut self.inner
7496     }
7497 }
7498 impl<'a> SubpassDescriptionBuilder<'a> {
flags(mut self, flags: SubpassDescriptionFlags) -> Self7499     pub fn flags(mut self, flags: SubpassDescriptionFlags) -> Self {
7500         self.inner.flags = flags;
7501         self
7502     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self7503     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
7504         self.inner.pipeline_bind_point = pipeline_bind_point;
7505         self
7506     }
input_attachments(mut self, input_attachments: &'a [AttachmentReference]) -> Self7507     pub fn input_attachments(mut self, input_attachments: &'a [AttachmentReference]) -> Self {
7508         self.inner.input_attachment_count = input_attachments.len() as _;
7509         self.inner.p_input_attachments = input_attachments.as_ptr();
7510         self
7511     }
color_attachments(mut self, color_attachments: &'a [AttachmentReference]) -> Self7512     pub fn color_attachments(mut self, color_attachments: &'a [AttachmentReference]) -> Self {
7513         self.inner.color_attachment_count = color_attachments.len() as _;
7514         self.inner.p_color_attachments = color_attachments.as_ptr();
7515         self
7516     }
resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference]) -> Self7517     pub fn resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference]) -> Self {
7518         self.inner.color_attachment_count = resolve_attachments.len() as _;
7519         self.inner.p_resolve_attachments = resolve_attachments.as_ptr();
7520         self
7521     }
depth_stencil_attachment( mut self, depth_stencil_attachment: &'a AttachmentReference, ) -> Self7522     pub fn depth_stencil_attachment(
7523         mut self,
7524         depth_stencil_attachment: &'a AttachmentReference,
7525     ) -> Self {
7526         self.inner.p_depth_stencil_attachment = depth_stencil_attachment;
7527         self
7528     }
preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self7529     pub fn preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self {
7530         self.inner.preserve_attachment_count = preserve_attachments.len() as _;
7531         self.inner.p_preserve_attachments = preserve_attachments.as_ptr();
7532         self
7533     }
7534     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7535     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7536     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDescription7537     pub fn build(self) -> SubpassDescription {
7538         self.inner
7539     }
7540 }
7541 #[repr(C)]
7542 #[cfg_attr(feature = "debug", derive(Debug))]
7543 #[derive(Copy, Clone, Default)]
7544 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDependency.html>"]
7545 pub struct SubpassDependency {
7546     pub src_subpass: u32,
7547     pub dst_subpass: u32,
7548     pub src_stage_mask: PipelineStageFlags,
7549     pub dst_stage_mask: PipelineStageFlags,
7550     pub src_access_mask: AccessFlags,
7551     pub dst_access_mask: AccessFlags,
7552     pub dependency_flags: DependencyFlags,
7553 }
7554 impl SubpassDependency {
builder<'a>() -> SubpassDependencyBuilder<'a>7555     pub fn builder<'a>() -> SubpassDependencyBuilder<'a> {
7556         SubpassDependencyBuilder {
7557             inner: Self::default(),
7558             marker: ::std::marker::PhantomData,
7559         }
7560     }
7561 }
7562 #[repr(transparent)]
7563 pub struct SubpassDependencyBuilder<'a> {
7564     inner: SubpassDependency,
7565     marker: ::std::marker::PhantomData<&'a ()>,
7566 }
7567 impl<'a> ::std::ops::Deref for SubpassDependencyBuilder<'a> {
7568     type Target = SubpassDependency;
deref(&self) -> &Self::Target7569     fn deref(&self) -> &Self::Target {
7570         &self.inner
7571     }
7572 }
7573 impl<'a> ::std::ops::DerefMut for SubpassDependencyBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7574     fn deref_mut(&mut self) -> &mut Self::Target {
7575         &mut self.inner
7576     }
7577 }
7578 impl<'a> SubpassDependencyBuilder<'a> {
src_subpass(mut self, src_subpass: u32) -> Self7579     pub fn src_subpass(mut self, src_subpass: u32) -> Self {
7580         self.inner.src_subpass = src_subpass;
7581         self
7582     }
dst_subpass(mut self, dst_subpass: u32) -> Self7583     pub fn dst_subpass(mut self, dst_subpass: u32) -> Self {
7584         self.inner.dst_subpass = dst_subpass;
7585         self
7586     }
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self7587     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self {
7588         self.inner.src_stage_mask = src_stage_mask;
7589         self
7590     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self7591     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self {
7592         self.inner.dst_stage_mask = dst_stage_mask;
7593         self
7594     }
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self7595     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
7596         self.inner.src_access_mask = src_access_mask;
7597         self
7598     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self7599     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
7600         self.inner.dst_access_mask = dst_access_mask;
7601         self
7602     }
dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self7603     pub fn dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self {
7604         self.inner.dependency_flags = dependency_flags;
7605         self
7606     }
7607     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7608     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7609     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDependency7610     pub fn build(self) -> SubpassDependency {
7611         self.inner
7612     }
7613 }
7614 #[repr(C)]
7615 #[cfg_attr(feature = "debug", derive(Debug))]
7616 #[derive(Copy, Clone)]
7617 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateInfo.html>"]
7618 pub struct RenderPassCreateInfo {
7619     pub s_type: StructureType,
7620     pub p_next: *const c_void,
7621     pub flags: RenderPassCreateFlags,
7622     pub attachment_count: u32,
7623     pub p_attachments: *const AttachmentDescription,
7624     pub subpass_count: u32,
7625     pub p_subpasses: *const SubpassDescription,
7626     pub dependency_count: u32,
7627     pub p_dependencies: *const SubpassDependency,
7628 }
7629 impl ::std::default::Default for RenderPassCreateInfo {
default() -> Self7630     fn default() -> Self {
7631         Self {
7632             s_type: StructureType::RENDER_PASS_CREATE_INFO,
7633             p_next: ::std::ptr::null(),
7634             flags: RenderPassCreateFlags::default(),
7635             attachment_count: u32::default(),
7636             p_attachments: ::std::ptr::null(),
7637             subpass_count: u32::default(),
7638             p_subpasses: ::std::ptr::null(),
7639             dependency_count: u32::default(),
7640             p_dependencies: ::std::ptr::null(),
7641         }
7642     }
7643 }
7644 impl RenderPassCreateInfo {
builder<'a>() -> RenderPassCreateInfoBuilder<'a>7645     pub fn builder<'a>() -> RenderPassCreateInfoBuilder<'a> {
7646         RenderPassCreateInfoBuilder {
7647             inner: Self::default(),
7648             marker: ::std::marker::PhantomData,
7649         }
7650     }
7651 }
7652 #[repr(transparent)]
7653 pub struct RenderPassCreateInfoBuilder<'a> {
7654     inner: RenderPassCreateInfo,
7655     marker: ::std::marker::PhantomData<&'a ()>,
7656 }
7657 pub unsafe trait ExtendsRenderPassCreateInfo {}
7658 impl<'a> ::std::ops::Deref for RenderPassCreateInfoBuilder<'a> {
7659     type Target = RenderPassCreateInfo;
deref(&self) -> &Self::Target7660     fn deref(&self) -> &Self::Target {
7661         &self.inner
7662     }
7663 }
7664 impl<'a> ::std::ops::DerefMut for RenderPassCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7665     fn deref_mut(&mut self) -> &mut Self::Target {
7666         &mut self.inner
7667     }
7668 }
7669 impl<'a> RenderPassCreateInfoBuilder<'a> {
flags(mut self, flags: RenderPassCreateFlags) -> Self7670     pub fn flags(mut self, flags: RenderPassCreateFlags) -> Self {
7671         self.inner.flags = flags;
7672         self
7673     }
attachments(mut self, attachments: &'a [AttachmentDescription]) -> Self7674     pub fn attachments(mut self, attachments: &'a [AttachmentDescription]) -> Self {
7675         self.inner.attachment_count = attachments.len() as _;
7676         self.inner.p_attachments = attachments.as_ptr();
7677         self
7678     }
subpasses(mut self, subpasses: &'a [SubpassDescription]) -> Self7679     pub fn subpasses(mut self, subpasses: &'a [SubpassDescription]) -> Self {
7680         self.inner.subpass_count = subpasses.len() as _;
7681         self.inner.p_subpasses = subpasses.as_ptr();
7682         self
7683     }
dependencies(mut self, dependencies: &'a [SubpassDependency]) -> Self7684     pub fn dependencies(mut self, dependencies: &'a [SubpassDependency]) -> Self {
7685         self.inner.dependency_count = dependencies.len() as _;
7686         self.inner.p_dependencies = dependencies.as_ptr();
7687         self
7688     }
7689     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
7690     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
7691     #[doc = r" valid extension structs can be pushed into the chain."]
7692     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
7693     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRenderPassCreateInfo>(mut self, next: &'a mut T) -> Self7694     pub fn push_next<T: ExtendsRenderPassCreateInfo>(mut self, next: &'a mut T) -> Self {
7695         unsafe {
7696             let next_ptr = next as *mut T as *mut BaseOutStructure;
7697             let last_next = ptr_chain_iter(next).last().unwrap();
7698             (*last_next).p_next = self.inner.p_next as _;
7699             self.inner.p_next = next_ptr as _;
7700         }
7701         self
7702     }
7703     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7704     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7705     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassCreateInfo7706     pub fn build(self) -> RenderPassCreateInfo {
7707         self.inner
7708     }
7709 }
7710 #[repr(C)]
7711 #[cfg_attr(feature = "debug", derive(Debug))]
7712 #[derive(Copy, Clone)]
7713 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEventCreateInfo.html>"]
7714 pub struct EventCreateInfo {
7715     pub s_type: StructureType,
7716     pub p_next: *const c_void,
7717     pub flags: EventCreateFlags,
7718 }
7719 impl ::std::default::Default for EventCreateInfo {
default() -> Self7720     fn default() -> Self {
7721         Self {
7722             s_type: StructureType::EVENT_CREATE_INFO,
7723             p_next: ::std::ptr::null(),
7724             flags: EventCreateFlags::default(),
7725         }
7726     }
7727 }
7728 impl EventCreateInfo {
builder<'a>() -> EventCreateInfoBuilder<'a>7729     pub fn builder<'a>() -> EventCreateInfoBuilder<'a> {
7730         EventCreateInfoBuilder {
7731             inner: Self::default(),
7732             marker: ::std::marker::PhantomData,
7733         }
7734     }
7735 }
7736 #[repr(transparent)]
7737 pub struct EventCreateInfoBuilder<'a> {
7738     inner: EventCreateInfo,
7739     marker: ::std::marker::PhantomData<&'a ()>,
7740 }
7741 impl<'a> ::std::ops::Deref for EventCreateInfoBuilder<'a> {
7742     type Target = EventCreateInfo;
deref(&self) -> &Self::Target7743     fn deref(&self) -> &Self::Target {
7744         &self.inner
7745     }
7746 }
7747 impl<'a> ::std::ops::DerefMut for EventCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7748     fn deref_mut(&mut self) -> &mut Self::Target {
7749         &mut self.inner
7750     }
7751 }
7752 impl<'a> EventCreateInfoBuilder<'a> {
flags(mut self, flags: EventCreateFlags) -> Self7753     pub fn flags(mut self, flags: EventCreateFlags) -> Self {
7754         self.inner.flags = flags;
7755         self
7756     }
7757     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7758     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7759     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> EventCreateInfo7760     pub fn build(self) -> EventCreateInfo {
7761         self.inner
7762     }
7763 }
7764 #[repr(C)]
7765 #[cfg_attr(feature = "debug", derive(Debug))]
7766 #[derive(Copy, Clone)]
7767 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceCreateInfo.html>"]
7768 pub struct FenceCreateInfo {
7769     pub s_type: StructureType,
7770     pub p_next: *const c_void,
7771     pub flags: FenceCreateFlags,
7772 }
7773 impl ::std::default::Default for FenceCreateInfo {
default() -> Self7774     fn default() -> Self {
7775         Self {
7776             s_type: StructureType::FENCE_CREATE_INFO,
7777             p_next: ::std::ptr::null(),
7778             flags: FenceCreateFlags::default(),
7779         }
7780     }
7781 }
7782 impl FenceCreateInfo {
builder<'a>() -> FenceCreateInfoBuilder<'a>7783     pub fn builder<'a>() -> FenceCreateInfoBuilder<'a> {
7784         FenceCreateInfoBuilder {
7785             inner: Self::default(),
7786             marker: ::std::marker::PhantomData,
7787         }
7788     }
7789 }
7790 #[repr(transparent)]
7791 pub struct FenceCreateInfoBuilder<'a> {
7792     inner: FenceCreateInfo,
7793     marker: ::std::marker::PhantomData<&'a ()>,
7794 }
7795 pub unsafe trait ExtendsFenceCreateInfo {}
7796 impl<'a> ::std::ops::Deref for FenceCreateInfoBuilder<'a> {
7797     type Target = FenceCreateInfo;
deref(&self) -> &Self::Target7798     fn deref(&self) -> &Self::Target {
7799         &self.inner
7800     }
7801 }
7802 impl<'a> ::std::ops::DerefMut for FenceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7803     fn deref_mut(&mut self) -> &mut Self::Target {
7804         &mut self.inner
7805     }
7806 }
7807 impl<'a> FenceCreateInfoBuilder<'a> {
flags(mut self, flags: FenceCreateFlags) -> Self7808     pub fn flags(mut self, flags: FenceCreateFlags) -> Self {
7809         self.inner.flags = flags;
7810         self
7811     }
7812     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
7813     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
7814     #[doc = r" valid extension structs can be pushed into the chain."]
7815     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
7816     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsFenceCreateInfo>(mut self, next: &'a mut T) -> Self7817     pub fn push_next<T: ExtendsFenceCreateInfo>(mut self, next: &'a mut T) -> Self {
7818         unsafe {
7819             let next_ptr = next as *mut T as *mut BaseOutStructure;
7820             let last_next = ptr_chain_iter(next).last().unwrap();
7821             (*last_next).p_next = self.inner.p_next as _;
7822             self.inner.p_next = next_ptr as _;
7823         }
7824         self
7825     }
7826     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
7827     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
7828     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FenceCreateInfo7829     pub fn build(self) -> FenceCreateInfo {
7830         self.inner
7831     }
7832 }
7833 #[repr(C)]
7834 #[cfg_attr(feature = "debug", derive(Debug))]
7835 #[derive(Copy, Clone, Default)]
7836 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFeatures.html>"]
7837 pub struct PhysicalDeviceFeatures {
7838     pub robust_buffer_access: Bool32,
7839     pub full_draw_index_uint32: Bool32,
7840     pub image_cube_array: Bool32,
7841     pub independent_blend: Bool32,
7842     pub geometry_shader: Bool32,
7843     pub tessellation_shader: Bool32,
7844     pub sample_rate_shading: Bool32,
7845     pub dual_src_blend: Bool32,
7846     pub logic_op: Bool32,
7847     pub multi_draw_indirect: Bool32,
7848     pub draw_indirect_first_instance: Bool32,
7849     pub depth_clamp: Bool32,
7850     pub depth_bias_clamp: Bool32,
7851     pub fill_mode_non_solid: Bool32,
7852     pub depth_bounds: Bool32,
7853     pub wide_lines: Bool32,
7854     pub large_points: Bool32,
7855     pub alpha_to_one: Bool32,
7856     pub multi_viewport: Bool32,
7857     pub sampler_anisotropy: Bool32,
7858     pub texture_compression_etc2: Bool32,
7859     pub texture_compression_astc_ldr: Bool32,
7860     pub texture_compression_bc: Bool32,
7861     pub occlusion_query_precise: Bool32,
7862     pub pipeline_statistics_query: Bool32,
7863     pub vertex_pipeline_stores_and_atomics: Bool32,
7864     pub fragment_stores_and_atomics: Bool32,
7865     pub shader_tessellation_and_geometry_point_size: Bool32,
7866     pub shader_image_gather_extended: Bool32,
7867     pub shader_storage_image_extended_formats: Bool32,
7868     pub shader_storage_image_multisample: Bool32,
7869     pub shader_storage_image_read_without_format: Bool32,
7870     pub shader_storage_image_write_without_format: Bool32,
7871     pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
7872     pub shader_sampled_image_array_dynamic_indexing: Bool32,
7873     pub shader_storage_buffer_array_dynamic_indexing: Bool32,
7874     pub shader_storage_image_array_dynamic_indexing: Bool32,
7875     pub shader_clip_distance: Bool32,
7876     pub shader_cull_distance: Bool32,
7877     pub shader_float64: Bool32,
7878     pub shader_int64: Bool32,
7879     pub shader_int16: Bool32,
7880     pub shader_resource_residency: Bool32,
7881     pub shader_resource_min_lod: Bool32,
7882     pub sparse_binding: Bool32,
7883     pub sparse_residency_buffer: Bool32,
7884     pub sparse_residency_image2_d: Bool32,
7885     pub sparse_residency_image3_d: Bool32,
7886     pub sparse_residency2_samples: Bool32,
7887     pub sparse_residency4_samples: Bool32,
7888     pub sparse_residency8_samples: Bool32,
7889     pub sparse_residency16_samples: Bool32,
7890     pub sparse_residency_aliased: Bool32,
7891     pub variable_multisample_rate: Bool32,
7892     pub inherited_queries: Bool32,
7893 }
7894 impl PhysicalDeviceFeatures {
builder<'a>() -> PhysicalDeviceFeaturesBuilder<'a>7895     pub fn builder<'a>() -> PhysicalDeviceFeaturesBuilder<'a> {
7896         PhysicalDeviceFeaturesBuilder {
7897             inner: Self::default(),
7898             marker: ::std::marker::PhantomData,
7899         }
7900     }
7901 }
7902 #[repr(transparent)]
7903 pub struct PhysicalDeviceFeaturesBuilder<'a> {
7904     inner: PhysicalDeviceFeatures,
7905     marker: ::std::marker::PhantomData<&'a ()>,
7906 }
7907 impl<'a> ::std::ops::Deref for PhysicalDeviceFeaturesBuilder<'a> {
7908     type Target = PhysicalDeviceFeatures;
deref(&self) -> &Self::Target7909     fn deref(&self) -> &Self::Target {
7910         &self.inner
7911     }
7912 }
7913 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target7914     fn deref_mut(&mut self) -> &mut Self::Target {
7915         &mut self.inner
7916     }
7917 }
7918 impl<'a> PhysicalDeviceFeaturesBuilder<'a> {
robust_buffer_access(mut self, robust_buffer_access: bool) -> Self7919     pub fn robust_buffer_access(mut self, robust_buffer_access: bool) -> Self {
7920         self.inner.robust_buffer_access = robust_buffer_access.into();
7921         self
7922     }
full_draw_index_uint32(mut self, full_draw_index_uint32: bool) -> Self7923     pub fn full_draw_index_uint32(mut self, full_draw_index_uint32: bool) -> Self {
7924         self.inner.full_draw_index_uint32 = full_draw_index_uint32.into();
7925         self
7926     }
image_cube_array(mut self, image_cube_array: bool) -> Self7927     pub fn image_cube_array(mut self, image_cube_array: bool) -> Self {
7928         self.inner.image_cube_array = image_cube_array.into();
7929         self
7930     }
independent_blend(mut self, independent_blend: bool) -> Self7931     pub fn independent_blend(mut self, independent_blend: bool) -> Self {
7932         self.inner.independent_blend = independent_blend.into();
7933         self
7934     }
geometry_shader(mut self, geometry_shader: bool) -> Self7935     pub fn geometry_shader(mut self, geometry_shader: bool) -> Self {
7936         self.inner.geometry_shader = geometry_shader.into();
7937         self
7938     }
tessellation_shader(mut self, tessellation_shader: bool) -> Self7939     pub fn tessellation_shader(mut self, tessellation_shader: bool) -> Self {
7940         self.inner.tessellation_shader = tessellation_shader.into();
7941         self
7942     }
sample_rate_shading(mut self, sample_rate_shading: bool) -> Self7943     pub fn sample_rate_shading(mut self, sample_rate_shading: bool) -> Self {
7944         self.inner.sample_rate_shading = sample_rate_shading.into();
7945         self
7946     }
dual_src_blend(mut self, dual_src_blend: bool) -> Self7947     pub fn dual_src_blend(mut self, dual_src_blend: bool) -> Self {
7948         self.inner.dual_src_blend = dual_src_blend.into();
7949         self
7950     }
logic_op(mut self, logic_op: bool) -> Self7951     pub fn logic_op(mut self, logic_op: bool) -> Self {
7952         self.inner.logic_op = logic_op.into();
7953         self
7954     }
multi_draw_indirect(mut self, multi_draw_indirect: bool) -> Self7955     pub fn multi_draw_indirect(mut self, multi_draw_indirect: bool) -> Self {
7956         self.inner.multi_draw_indirect = multi_draw_indirect.into();
7957         self
7958     }
draw_indirect_first_instance(mut self, draw_indirect_first_instance: bool) -> Self7959     pub fn draw_indirect_first_instance(mut self, draw_indirect_first_instance: bool) -> Self {
7960         self.inner.draw_indirect_first_instance = draw_indirect_first_instance.into();
7961         self
7962     }
depth_clamp(mut self, depth_clamp: bool) -> Self7963     pub fn depth_clamp(mut self, depth_clamp: bool) -> Self {
7964         self.inner.depth_clamp = depth_clamp.into();
7965         self
7966     }
depth_bias_clamp(mut self, depth_bias_clamp: bool) -> Self7967     pub fn depth_bias_clamp(mut self, depth_bias_clamp: bool) -> Self {
7968         self.inner.depth_bias_clamp = depth_bias_clamp.into();
7969         self
7970     }
fill_mode_non_solid(mut self, fill_mode_non_solid: bool) -> Self7971     pub fn fill_mode_non_solid(mut self, fill_mode_non_solid: bool) -> Self {
7972         self.inner.fill_mode_non_solid = fill_mode_non_solid.into();
7973         self
7974     }
depth_bounds(mut self, depth_bounds: bool) -> Self7975     pub fn depth_bounds(mut self, depth_bounds: bool) -> Self {
7976         self.inner.depth_bounds = depth_bounds.into();
7977         self
7978     }
wide_lines(mut self, wide_lines: bool) -> Self7979     pub fn wide_lines(mut self, wide_lines: bool) -> Self {
7980         self.inner.wide_lines = wide_lines.into();
7981         self
7982     }
large_points(mut self, large_points: bool) -> Self7983     pub fn large_points(mut self, large_points: bool) -> Self {
7984         self.inner.large_points = large_points.into();
7985         self
7986     }
alpha_to_one(mut self, alpha_to_one: bool) -> Self7987     pub fn alpha_to_one(mut self, alpha_to_one: bool) -> Self {
7988         self.inner.alpha_to_one = alpha_to_one.into();
7989         self
7990     }
multi_viewport(mut self, multi_viewport: bool) -> Self7991     pub fn multi_viewport(mut self, multi_viewport: bool) -> Self {
7992         self.inner.multi_viewport = multi_viewport.into();
7993         self
7994     }
sampler_anisotropy(mut self, sampler_anisotropy: bool) -> Self7995     pub fn sampler_anisotropy(mut self, sampler_anisotropy: bool) -> Self {
7996         self.inner.sampler_anisotropy = sampler_anisotropy.into();
7997         self
7998     }
texture_compression_etc2(mut self, texture_compression_etc2: bool) -> Self7999     pub fn texture_compression_etc2(mut self, texture_compression_etc2: bool) -> Self {
8000         self.inner.texture_compression_etc2 = texture_compression_etc2.into();
8001         self
8002     }
texture_compression_astc_ldr(mut self, texture_compression_astc_ldr: bool) -> Self8003     pub fn texture_compression_astc_ldr(mut self, texture_compression_astc_ldr: bool) -> Self {
8004         self.inner.texture_compression_astc_ldr = texture_compression_astc_ldr.into();
8005         self
8006     }
texture_compression_bc(mut self, texture_compression_bc: bool) -> Self8007     pub fn texture_compression_bc(mut self, texture_compression_bc: bool) -> Self {
8008         self.inner.texture_compression_bc = texture_compression_bc.into();
8009         self
8010     }
occlusion_query_precise(mut self, occlusion_query_precise: bool) -> Self8011     pub fn occlusion_query_precise(mut self, occlusion_query_precise: bool) -> Self {
8012         self.inner.occlusion_query_precise = occlusion_query_precise.into();
8013         self
8014     }
pipeline_statistics_query(mut self, pipeline_statistics_query: bool) -> Self8015     pub fn pipeline_statistics_query(mut self, pipeline_statistics_query: bool) -> Self {
8016         self.inner.pipeline_statistics_query = pipeline_statistics_query.into();
8017         self
8018     }
vertex_pipeline_stores_and_atomics( mut self, vertex_pipeline_stores_and_atomics: bool, ) -> Self8019     pub fn vertex_pipeline_stores_and_atomics(
8020         mut self,
8021         vertex_pipeline_stores_and_atomics: bool,
8022     ) -> Self {
8023         self.inner.vertex_pipeline_stores_and_atomics = vertex_pipeline_stores_and_atomics.into();
8024         self
8025     }
fragment_stores_and_atomics(mut self, fragment_stores_and_atomics: bool) -> Self8026     pub fn fragment_stores_and_atomics(mut self, fragment_stores_and_atomics: bool) -> Self {
8027         self.inner.fragment_stores_and_atomics = fragment_stores_and_atomics.into();
8028         self
8029     }
shader_tessellation_and_geometry_point_size( mut self, shader_tessellation_and_geometry_point_size: bool, ) -> Self8030     pub fn shader_tessellation_and_geometry_point_size(
8031         mut self,
8032         shader_tessellation_and_geometry_point_size: bool,
8033     ) -> Self {
8034         self.inner.shader_tessellation_and_geometry_point_size =
8035             shader_tessellation_and_geometry_point_size.into();
8036         self
8037     }
shader_image_gather_extended(mut self, shader_image_gather_extended: bool) -> Self8038     pub fn shader_image_gather_extended(mut self, shader_image_gather_extended: bool) -> Self {
8039         self.inner.shader_image_gather_extended = shader_image_gather_extended.into();
8040         self
8041     }
shader_storage_image_extended_formats( mut self, shader_storage_image_extended_formats: bool, ) -> Self8042     pub fn shader_storage_image_extended_formats(
8043         mut self,
8044         shader_storage_image_extended_formats: bool,
8045     ) -> Self {
8046         self.inner.shader_storage_image_extended_formats =
8047             shader_storage_image_extended_formats.into();
8048         self
8049     }
shader_storage_image_multisample( mut self, shader_storage_image_multisample: bool, ) -> Self8050     pub fn shader_storage_image_multisample(
8051         mut self,
8052         shader_storage_image_multisample: bool,
8053     ) -> Self {
8054         self.inner.shader_storage_image_multisample = shader_storage_image_multisample.into();
8055         self
8056     }
shader_storage_image_read_without_format( mut self, shader_storage_image_read_without_format: bool, ) -> Self8057     pub fn shader_storage_image_read_without_format(
8058         mut self,
8059         shader_storage_image_read_without_format: bool,
8060     ) -> Self {
8061         self.inner.shader_storage_image_read_without_format =
8062             shader_storage_image_read_without_format.into();
8063         self
8064     }
shader_storage_image_write_without_format( mut self, shader_storage_image_write_without_format: bool, ) -> Self8065     pub fn shader_storage_image_write_without_format(
8066         mut self,
8067         shader_storage_image_write_without_format: bool,
8068     ) -> Self {
8069         self.inner.shader_storage_image_write_without_format =
8070             shader_storage_image_write_without_format.into();
8071         self
8072     }
shader_uniform_buffer_array_dynamic_indexing( mut self, shader_uniform_buffer_array_dynamic_indexing: bool, ) -> Self8073     pub fn shader_uniform_buffer_array_dynamic_indexing(
8074         mut self,
8075         shader_uniform_buffer_array_dynamic_indexing: bool,
8076     ) -> Self {
8077         self.inner.shader_uniform_buffer_array_dynamic_indexing =
8078             shader_uniform_buffer_array_dynamic_indexing.into();
8079         self
8080     }
shader_sampled_image_array_dynamic_indexing( mut self, shader_sampled_image_array_dynamic_indexing: bool, ) -> Self8081     pub fn shader_sampled_image_array_dynamic_indexing(
8082         mut self,
8083         shader_sampled_image_array_dynamic_indexing: bool,
8084     ) -> Self {
8085         self.inner.shader_sampled_image_array_dynamic_indexing =
8086             shader_sampled_image_array_dynamic_indexing.into();
8087         self
8088     }
shader_storage_buffer_array_dynamic_indexing( mut self, shader_storage_buffer_array_dynamic_indexing: bool, ) -> Self8089     pub fn shader_storage_buffer_array_dynamic_indexing(
8090         mut self,
8091         shader_storage_buffer_array_dynamic_indexing: bool,
8092     ) -> Self {
8093         self.inner.shader_storage_buffer_array_dynamic_indexing =
8094             shader_storage_buffer_array_dynamic_indexing.into();
8095         self
8096     }
shader_storage_image_array_dynamic_indexing( mut self, shader_storage_image_array_dynamic_indexing: bool, ) -> Self8097     pub fn shader_storage_image_array_dynamic_indexing(
8098         mut self,
8099         shader_storage_image_array_dynamic_indexing: bool,
8100     ) -> Self {
8101         self.inner.shader_storage_image_array_dynamic_indexing =
8102             shader_storage_image_array_dynamic_indexing.into();
8103         self
8104     }
shader_clip_distance(mut self, shader_clip_distance: bool) -> Self8105     pub fn shader_clip_distance(mut self, shader_clip_distance: bool) -> Self {
8106         self.inner.shader_clip_distance = shader_clip_distance.into();
8107         self
8108     }
shader_cull_distance(mut self, shader_cull_distance: bool) -> Self8109     pub fn shader_cull_distance(mut self, shader_cull_distance: bool) -> Self {
8110         self.inner.shader_cull_distance = shader_cull_distance.into();
8111         self
8112     }
shader_float64(mut self, shader_float64: bool) -> Self8113     pub fn shader_float64(mut self, shader_float64: bool) -> Self {
8114         self.inner.shader_float64 = shader_float64.into();
8115         self
8116     }
shader_int64(mut self, shader_int64: bool) -> Self8117     pub fn shader_int64(mut self, shader_int64: bool) -> Self {
8118         self.inner.shader_int64 = shader_int64.into();
8119         self
8120     }
shader_int16(mut self, shader_int16: bool) -> Self8121     pub fn shader_int16(mut self, shader_int16: bool) -> Self {
8122         self.inner.shader_int16 = shader_int16.into();
8123         self
8124     }
shader_resource_residency(mut self, shader_resource_residency: bool) -> Self8125     pub fn shader_resource_residency(mut self, shader_resource_residency: bool) -> Self {
8126         self.inner.shader_resource_residency = shader_resource_residency.into();
8127         self
8128     }
shader_resource_min_lod(mut self, shader_resource_min_lod: bool) -> Self8129     pub fn shader_resource_min_lod(mut self, shader_resource_min_lod: bool) -> Self {
8130         self.inner.shader_resource_min_lod = shader_resource_min_lod.into();
8131         self
8132     }
sparse_binding(mut self, sparse_binding: bool) -> Self8133     pub fn sparse_binding(mut self, sparse_binding: bool) -> Self {
8134         self.inner.sparse_binding = sparse_binding.into();
8135         self
8136     }
sparse_residency_buffer(mut self, sparse_residency_buffer: bool) -> Self8137     pub fn sparse_residency_buffer(mut self, sparse_residency_buffer: bool) -> Self {
8138         self.inner.sparse_residency_buffer = sparse_residency_buffer.into();
8139         self
8140     }
sparse_residency_image2_d(mut self, sparse_residency_image2_d: bool) -> Self8141     pub fn sparse_residency_image2_d(mut self, sparse_residency_image2_d: bool) -> Self {
8142         self.inner.sparse_residency_image2_d = sparse_residency_image2_d.into();
8143         self
8144     }
sparse_residency_image3_d(mut self, sparse_residency_image3_d: bool) -> Self8145     pub fn sparse_residency_image3_d(mut self, sparse_residency_image3_d: bool) -> Self {
8146         self.inner.sparse_residency_image3_d = sparse_residency_image3_d.into();
8147         self
8148     }
sparse_residency2_samples(mut self, sparse_residency2_samples: bool) -> Self8149     pub fn sparse_residency2_samples(mut self, sparse_residency2_samples: bool) -> Self {
8150         self.inner.sparse_residency2_samples = sparse_residency2_samples.into();
8151         self
8152     }
sparse_residency4_samples(mut self, sparse_residency4_samples: bool) -> Self8153     pub fn sparse_residency4_samples(mut self, sparse_residency4_samples: bool) -> Self {
8154         self.inner.sparse_residency4_samples = sparse_residency4_samples.into();
8155         self
8156     }
sparse_residency8_samples(mut self, sparse_residency8_samples: bool) -> Self8157     pub fn sparse_residency8_samples(mut self, sparse_residency8_samples: bool) -> Self {
8158         self.inner.sparse_residency8_samples = sparse_residency8_samples.into();
8159         self
8160     }
sparse_residency16_samples(mut self, sparse_residency16_samples: bool) -> Self8161     pub fn sparse_residency16_samples(mut self, sparse_residency16_samples: bool) -> Self {
8162         self.inner.sparse_residency16_samples = sparse_residency16_samples.into();
8163         self
8164     }
sparse_residency_aliased(mut self, sparse_residency_aliased: bool) -> Self8165     pub fn sparse_residency_aliased(mut self, sparse_residency_aliased: bool) -> Self {
8166         self.inner.sparse_residency_aliased = sparse_residency_aliased.into();
8167         self
8168     }
variable_multisample_rate(mut self, variable_multisample_rate: bool) -> Self8169     pub fn variable_multisample_rate(mut self, variable_multisample_rate: bool) -> Self {
8170         self.inner.variable_multisample_rate = variable_multisample_rate.into();
8171         self
8172     }
inherited_queries(mut self, inherited_queries: bool) -> Self8173     pub fn inherited_queries(mut self, inherited_queries: bool) -> Self {
8174         self.inner.inherited_queries = inherited_queries.into();
8175         self
8176     }
8177     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
8178     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
8179     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFeatures8180     pub fn build(self) -> PhysicalDeviceFeatures {
8181         self.inner
8182     }
8183 }
8184 #[repr(C)]
8185 #[cfg_attr(feature = "debug", derive(Debug))]
8186 #[derive(Copy, Clone, Default)]
8187 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSparseProperties.html>"]
8188 pub struct PhysicalDeviceSparseProperties {
8189     pub residency_standard2_d_block_shape: Bool32,
8190     pub residency_standard2_d_multisample_block_shape: Bool32,
8191     pub residency_standard3_d_block_shape: Bool32,
8192     pub residency_aligned_mip_size: Bool32,
8193     pub residency_non_resident_strict: Bool32,
8194 }
8195 impl PhysicalDeviceSparseProperties {
builder<'a>() -> PhysicalDeviceSparsePropertiesBuilder<'a>8196     pub fn builder<'a>() -> PhysicalDeviceSparsePropertiesBuilder<'a> {
8197         PhysicalDeviceSparsePropertiesBuilder {
8198             inner: Self::default(),
8199             marker: ::std::marker::PhantomData,
8200         }
8201     }
8202 }
8203 #[repr(transparent)]
8204 pub struct PhysicalDeviceSparsePropertiesBuilder<'a> {
8205     inner: PhysicalDeviceSparseProperties,
8206     marker: ::std::marker::PhantomData<&'a ()>,
8207 }
8208 impl<'a> ::std::ops::Deref for PhysicalDeviceSparsePropertiesBuilder<'a> {
8209     type Target = PhysicalDeviceSparseProperties;
deref(&self) -> &Self::Target8210     fn deref(&self) -> &Self::Target {
8211         &self.inner
8212     }
8213 }
8214 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSparsePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target8215     fn deref_mut(&mut self) -> &mut Self::Target {
8216         &mut self.inner
8217     }
8218 }
8219 impl<'a> PhysicalDeviceSparsePropertiesBuilder<'a> {
residency_standard2_d_block_shape( mut self, residency_standard2_d_block_shape: bool, ) -> Self8220     pub fn residency_standard2_d_block_shape(
8221         mut self,
8222         residency_standard2_d_block_shape: bool,
8223     ) -> Self {
8224         self.inner.residency_standard2_d_block_shape = residency_standard2_d_block_shape.into();
8225         self
8226     }
residency_standard2_d_multisample_block_shape( mut self, residency_standard2_d_multisample_block_shape: bool, ) -> Self8227     pub fn residency_standard2_d_multisample_block_shape(
8228         mut self,
8229         residency_standard2_d_multisample_block_shape: bool,
8230     ) -> Self {
8231         self.inner.residency_standard2_d_multisample_block_shape =
8232             residency_standard2_d_multisample_block_shape.into();
8233         self
8234     }
residency_standard3_d_block_shape( mut self, residency_standard3_d_block_shape: bool, ) -> Self8235     pub fn residency_standard3_d_block_shape(
8236         mut self,
8237         residency_standard3_d_block_shape: bool,
8238     ) -> Self {
8239         self.inner.residency_standard3_d_block_shape = residency_standard3_d_block_shape.into();
8240         self
8241     }
residency_aligned_mip_size(mut self, residency_aligned_mip_size: bool) -> Self8242     pub fn residency_aligned_mip_size(mut self, residency_aligned_mip_size: bool) -> Self {
8243         self.inner.residency_aligned_mip_size = residency_aligned_mip_size.into();
8244         self
8245     }
residency_non_resident_strict(mut self, residency_non_resident_strict: bool) -> Self8246     pub fn residency_non_resident_strict(mut self, residency_non_resident_strict: bool) -> Self {
8247         self.inner.residency_non_resident_strict = residency_non_resident_strict.into();
8248         self
8249     }
8250     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
8251     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
8252     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSparseProperties8253     pub fn build(self) -> PhysicalDeviceSparseProperties {
8254         self.inner
8255     }
8256 }
8257 #[repr(C)]
8258 #[cfg_attr(feature = "debug", derive(Debug))]
8259 #[derive(Copy, Clone)]
8260 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLimits.html>"]
8261 pub struct PhysicalDeviceLimits {
8262     pub max_image_dimension1_d: u32,
8263     pub max_image_dimension2_d: u32,
8264     pub max_image_dimension3_d: u32,
8265     pub max_image_dimension_cube: u32,
8266     pub max_image_array_layers: u32,
8267     pub max_texel_buffer_elements: u32,
8268     pub max_uniform_buffer_range: u32,
8269     pub max_storage_buffer_range: u32,
8270     pub max_push_constants_size: u32,
8271     pub max_memory_allocation_count: u32,
8272     pub max_sampler_allocation_count: u32,
8273     pub buffer_image_granularity: DeviceSize,
8274     pub sparse_address_space_size: DeviceSize,
8275     pub max_bound_descriptor_sets: u32,
8276     pub max_per_stage_descriptor_samplers: u32,
8277     pub max_per_stage_descriptor_uniform_buffers: u32,
8278     pub max_per_stage_descriptor_storage_buffers: u32,
8279     pub max_per_stage_descriptor_sampled_images: u32,
8280     pub max_per_stage_descriptor_storage_images: u32,
8281     pub max_per_stage_descriptor_input_attachments: u32,
8282     pub max_per_stage_resources: u32,
8283     pub max_descriptor_set_samplers: u32,
8284     pub max_descriptor_set_uniform_buffers: u32,
8285     pub max_descriptor_set_uniform_buffers_dynamic: u32,
8286     pub max_descriptor_set_storage_buffers: u32,
8287     pub max_descriptor_set_storage_buffers_dynamic: u32,
8288     pub max_descriptor_set_sampled_images: u32,
8289     pub max_descriptor_set_storage_images: u32,
8290     pub max_descriptor_set_input_attachments: u32,
8291     pub max_vertex_input_attributes: u32,
8292     pub max_vertex_input_bindings: u32,
8293     pub max_vertex_input_attribute_offset: u32,
8294     pub max_vertex_input_binding_stride: u32,
8295     pub max_vertex_output_components: u32,
8296     pub max_tessellation_generation_level: u32,
8297     pub max_tessellation_patch_size: u32,
8298     pub max_tessellation_control_per_vertex_input_components: u32,
8299     pub max_tessellation_control_per_vertex_output_components: u32,
8300     pub max_tessellation_control_per_patch_output_components: u32,
8301     pub max_tessellation_control_total_output_components: u32,
8302     pub max_tessellation_evaluation_input_components: u32,
8303     pub max_tessellation_evaluation_output_components: u32,
8304     pub max_geometry_shader_invocations: u32,
8305     pub max_geometry_input_components: u32,
8306     pub max_geometry_output_components: u32,
8307     pub max_geometry_output_vertices: u32,
8308     pub max_geometry_total_output_components: u32,
8309     pub max_fragment_input_components: u32,
8310     pub max_fragment_output_attachments: u32,
8311     pub max_fragment_dual_src_attachments: u32,
8312     pub max_fragment_combined_output_resources: u32,
8313     pub max_compute_shared_memory_size: u32,
8314     pub max_compute_work_group_count: [u32; 3],
8315     pub max_compute_work_group_invocations: u32,
8316     pub max_compute_work_group_size: [u32; 3],
8317     pub sub_pixel_precision_bits: u32,
8318     pub sub_texel_precision_bits: u32,
8319     pub mipmap_precision_bits: u32,
8320     pub max_draw_indexed_index_value: u32,
8321     pub max_draw_indirect_count: u32,
8322     pub max_sampler_lod_bias: f32,
8323     pub max_sampler_anisotropy: f32,
8324     pub max_viewports: u32,
8325     pub max_viewport_dimensions: [u32; 2],
8326     pub viewport_bounds_range: [f32; 2],
8327     pub viewport_sub_pixel_bits: u32,
8328     pub min_memory_map_alignment: usize,
8329     pub min_texel_buffer_offset_alignment: DeviceSize,
8330     pub min_uniform_buffer_offset_alignment: DeviceSize,
8331     pub min_storage_buffer_offset_alignment: DeviceSize,
8332     pub min_texel_offset: i32,
8333     pub max_texel_offset: u32,
8334     pub min_texel_gather_offset: i32,
8335     pub max_texel_gather_offset: u32,
8336     pub min_interpolation_offset: f32,
8337     pub max_interpolation_offset: f32,
8338     pub sub_pixel_interpolation_offset_bits: u32,
8339     pub max_framebuffer_width: u32,
8340     pub max_framebuffer_height: u32,
8341     pub max_framebuffer_layers: u32,
8342     pub framebuffer_color_sample_counts: SampleCountFlags,
8343     pub framebuffer_depth_sample_counts: SampleCountFlags,
8344     pub framebuffer_stencil_sample_counts: SampleCountFlags,
8345     pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
8346     pub max_color_attachments: u32,
8347     pub sampled_image_color_sample_counts: SampleCountFlags,
8348     pub sampled_image_integer_sample_counts: SampleCountFlags,
8349     pub sampled_image_depth_sample_counts: SampleCountFlags,
8350     pub sampled_image_stencil_sample_counts: SampleCountFlags,
8351     pub storage_image_sample_counts: SampleCountFlags,
8352     pub max_sample_mask_words: u32,
8353     pub timestamp_compute_and_graphics: Bool32,
8354     pub timestamp_period: f32,
8355     pub max_clip_distances: u32,
8356     pub max_cull_distances: u32,
8357     pub max_combined_clip_and_cull_distances: u32,
8358     pub discrete_queue_priorities: u32,
8359     pub point_size_range: [f32; 2],
8360     pub line_width_range: [f32; 2],
8361     pub point_size_granularity: f32,
8362     pub line_width_granularity: f32,
8363     pub strict_lines: Bool32,
8364     pub standard_sample_locations: Bool32,
8365     pub optimal_buffer_copy_offset_alignment: DeviceSize,
8366     pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
8367     pub non_coherent_atom_size: DeviceSize,
8368 }
8369 impl ::std::default::Default for PhysicalDeviceLimits {
default() -> Self8370     fn default() -> Self {
8371         Self {
8372             max_image_dimension1_d: u32::default(),
8373             max_image_dimension2_d: u32::default(),
8374             max_image_dimension3_d: u32::default(),
8375             max_image_dimension_cube: u32::default(),
8376             max_image_array_layers: u32::default(),
8377             max_texel_buffer_elements: u32::default(),
8378             max_uniform_buffer_range: u32::default(),
8379             max_storage_buffer_range: u32::default(),
8380             max_push_constants_size: u32::default(),
8381             max_memory_allocation_count: u32::default(),
8382             max_sampler_allocation_count: u32::default(),
8383             buffer_image_granularity: DeviceSize::default(),
8384             sparse_address_space_size: DeviceSize::default(),
8385             max_bound_descriptor_sets: u32::default(),
8386             max_per_stage_descriptor_samplers: u32::default(),
8387             max_per_stage_descriptor_uniform_buffers: u32::default(),
8388             max_per_stage_descriptor_storage_buffers: u32::default(),
8389             max_per_stage_descriptor_sampled_images: u32::default(),
8390             max_per_stage_descriptor_storage_images: u32::default(),
8391             max_per_stage_descriptor_input_attachments: u32::default(),
8392             max_per_stage_resources: u32::default(),
8393             max_descriptor_set_samplers: u32::default(),
8394             max_descriptor_set_uniform_buffers: u32::default(),
8395             max_descriptor_set_uniform_buffers_dynamic: u32::default(),
8396             max_descriptor_set_storage_buffers: u32::default(),
8397             max_descriptor_set_storage_buffers_dynamic: u32::default(),
8398             max_descriptor_set_sampled_images: u32::default(),
8399             max_descriptor_set_storage_images: u32::default(),
8400             max_descriptor_set_input_attachments: u32::default(),
8401             max_vertex_input_attributes: u32::default(),
8402             max_vertex_input_bindings: u32::default(),
8403             max_vertex_input_attribute_offset: u32::default(),
8404             max_vertex_input_binding_stride: u32::default(),
8405             max_vertex_output_components: u32::default(),
8406             max_tessellation_generation_level: u32::default(),
8407             max_tessellation_patch_size: u32::default(),
8408             max_tessellation_control_per_vertex_input_components: u32::default(),
8409             max_tessellation_control_per_vertex_output_components: u32::default(),
8410             max_tessellation_control_per_patch_output_components: u32::default(),
8411             max_tessellation_control_total_output_components: u32::default(),
8412             max_tessellation_evaluation_input_components: u32::default(),
8413             max_tessellation_evaluation_output_components: u32::default(),
8414             max_geometry_shader_invocations: u32::default(),
8415             max_geometry_input_components: u32::default(),
8416             max_geometry_output_components: u32::default(),
8417             max_geometry_output_vertices: u32::default(),
8418             max_geometry_total_output_components: u32::default(),
8419             max_fragment_input_components: u32::default(),
8420             max_fragment_output_attachments: u32::default(),
8421             max_fragment_dual_src_attachments: u32::default(),
8422             max_fragment_combined_output_resources: u32::default(),
8423             max_compute_shared_memory_size: u32::default(),
8424             max_compute_work_group_count: unsafe { ::std::mem::zeroed() },
8425             max_compute_work_group_invocations: u32::default(),
8426             max_compute_work_group_size: unsafe { ::std::mem::zeroed() },
8427             sub_pixel_precision_bits: u32::default(),
8428             sub_texel_precision_bits: u32::default(),
8429             mipmap_precision_bits: u32::default(),
8430             max_draw_indexed_index_value: u32::default(),
8431             max_draw_indirect_count: u32::default(),
8432             max_sampler_lod_bias: f32::default(),
8433             max_sampler_anisotropy: f32::default(),
8434             max_viewports: u32::default(),
8435             max_viewport_dimensions: unsafe { ::std::mem::zeroed() },
8436             viewport_bounds_range: unsafe { ::std::mem::zeroed() },
8437             viewport_sub_pixel_bits: u32::default(),
8438             min_memory_map_alignment: usize::default(),
8439             min_texel_buffer_offset_alignment: DeviceSize::default(),
8440             min_uniform_buffer_offset_alignment: DeviceSize::default(),
8441             min_storage_buffer_offset_alignment: DeviceSize::default(),
8442             min_texel_offset: i32::default(),
8443             max_texel_offset: u32::default(),
8444             min_texel_gather_offset: i32::default(),
8445             max_texel_gather_offset: u32::default(),
8446             min_interpolation_offset: f32::default(),
8447             max_interpolation_offset: f32::default(),
8448             sub_pixel_interpolation_offset_bits: u32::default(),
8449             max_framebuffer_width: u32::default(),
8450             max_framebuffer_height: u32::default(),
8451             max_framebuffer_layers: u32::default(),
8452             framebuffer_color_sample_counts: SampleCountFlags::default(),
8453             framebuffer_depth_sample_counts: SampleCountFlags::default(),
8454             framebuffer_stencil_sample_counts: SampleCountFlags::default(),
8455             framebuffer_no_attachments_sample_counts: SampleCountFlags::default(),
8456             max_color_attachments: u32::default(),
8457             sampled_image_color_sample_counts: SampleCountFlags::default(),
8458             sampled_image_integer_sample_counts: SampleCountFlags::default(),
8459             sampled_image_depth_sample_counts: SampleCountFlags::default(),
8460             sampled_image_stencil_sample_counts: SampleCountFlags::default(),
8461             storage_image_sample_counts: SampleCountFlags::default(),
8462             max_sample_mask_words: u32::default(),
8463             timestamp_compute_and_graphics: Bool32::default(),
8464             timestamp_period: f32::default(),
8465             max_clip_distances: u32::default(),
8466             max_cull_distances: u32::default(),
8467             max_combined_clip_and_cull_distances: u32::default(),
8468             discrete_queue_priorities: u32::default(),
8469             point_size_range: unsafe { ::std::mem::zeroed() },
8470             line_width_range: unsafe { ::std::mem::zeroed() },
8471             point_size_granularity: f32::default(),
8472             line_width_granularity: f32::default(),
8473             strict_lines: Bool32::default(),
8474             standard_sample_locations: Bool32::default(),
8475             optimal_buffer_copy_offset_alignment: DeviceSize::default(),
8476             optimal_buffer_copy_row_pitch_alignment: DeviceSize::default(),
8477             non_coherent_atom_size: DeviceSize::default(),
8478         }
8479     }
8480 }
8481 impl PhysicalDeviceLimits {
builder<'a>() -> PhysicalDeviceLimitsBuilder<'a>8482     pub fn builder<'a>() -> PhysicalDeviceLimitsBuilder<'a> {
8483         PhysicalDeviceLimitsBuilder {
8484             inner: Self::default(),
8485             marker: ::std::marker::PhantomData,
8486         }
8487     }
8488 }
8489 #[repr(transparent)]
8490 pub struct PhysicalDeviceLimitsBuilder<'a> {
8491     inner: PhysicalDeviceLimits,
8492     marker: ::std::marker::PhantomData<&'a ()>,
8493 }
8494 impl<'a> ::std::ops::Deref for PhysicalDeviceLimitsBuilder<'a> {
8495     type Target = PhysicalDeviceLimits;
deref(&self) -> &Self::Target8496     fn deref(&self) -> &Self::Target {
8497         &self.inner
8498     }
8499 }
8500 impl<'a> ::std::ops::DerefMut for PhysicalDeviceLimitsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target8501     fn deref_mut(&mut self) -> &mut Self::Target {
8502         &mut self.inner
8503     }
8504 }
8505 impl<'a> PhysicalDeviceLimitsBuilder<'a> {
max_image_dimension1_d(mut self, max_image_dimension1_d: u32) -> Self8506     pub fn max_image_dimension1_d(mut self, max_image_dimension1_d: u32) -> Self {
8507         self.inner.max_image_dimension1_d = max_image_dimension1_d;
8508         self
8509     }
max_image_dimension2_d(mut self, max_image_dimension2_d: u32) -> Self8510     pub fn max_image_dimension2_d(mut self, max_image_dimension2_d: u32) -> Self {
8511         self.inner.max_image_dimension2_d = max_image_dimension2_d;
8512         self
8513     }
max_image_dimension3_d(mut self, max_image_dimension3_d: u32) -> Self8514     pub fn max_image_dimension3_d(mut self, max_image_dimension3_d: u32) -> Self {
8515         self.inner.max_image_dimension3_d = max_image_dimension3_d;
8516         self
8517     }
max_image_dimension_cube(mut self, max_image_dimension_cube: u32) -> Self8518     pub fn max_image_dimension_cube(mut self, max_image_dimension_cube: u32) -> Self {
8519         self.inner.max_image_dimension_cube = max_image_dimension_cube;
8520         self
8521     }
max_image_array_layers(mut self, max_image_array_layers: u32) -> Self8522     pub fn max_image_array_layers(mut self, max_image_array_layers: u32) -> Self {
8523         self.inner.max_image_array_layers = max_image_array_layers;
8524         self
8525     }
max_texel_buffer_elements(mut self, max_texel_buffer_elements: u32) -> Self8526     pub fn max_texel_buffer_elements(mut self, max_texel_buffer_elements: u32) -> Self {
8527         self.inner.max_texel_buffer_elements = max_texel_buffer_elements;
8528         self
8529     }
max_uniform_buffer_range(mut self, max_uniform_buffer_range: u32) -> Self8530     pub fn max_uniform_buffer_range(mut self, max_uniform_buffer_range: u32) -> Self {
8531         self.inner.max_uniform_buffer_range = max_uniform_buffer_range;
8532         self
8533     }
max_storage_buffer_range(mut self, max_storage_buffer_range: u32) -> Self8534     pub fn max_storage_buffer_range(mut self, max_storage_buffer_range: u32) -> Self {
8535         self.inner.max_storage_buffer_range = max_storage_buffer_range;
8536         self
8537     }
max_push_constants_size(mut self, max_push_constants_size: u32) -> Self8538     pub fn max_push_constants_size(mut self, max_push_constants_size: u32) -> Self {
8539         self.inner.max_push_constants_size = max_push_constants_size;
8540         self
8541     }
max_memory_allocation_count(mut self, max_memory_allocation_count: u32) -> Self8542     pub fn max_memory_allocation_count(mut self, max_memory_allocation_count: u32) -> Self {
8543         self.inner.max_memory_allocation_count = max_memory_allocation_count;
8544         self
8545     }
max_sampler_allocation_count(mut self, max_sampler_allocation_count: u32) -> Self8546     pub fn max_sampler_allocation_count(mut self, max_sampler_allocation_count: u32) -> Self {
8547         self.inner.max_sampler_allocation_count = max_sampler_allocation_count;
8548         self
8549     }
buffer_image_granularity(mut self, buffer_image_granularity: DeviceSize) -> Self8550     pub fn buffer_image_granularity(mut self, buffer_image_granularity: DeviceSize) -> Self {
8551         self.inner.buffer_image_granularity = buffer_image_granularity;
8552         self
8553     }
sparse_address_space_size(mut self, sparse_address_space_size: DeviceSize) -> Self8554     pub fn sparse_address_space_size(mut self, sparse_address_space_size: DeviceSize) -> Self {
8555         self.inner.sparse_address_space_size = sparse_address_space_size;
8556         self
8557     }
max_bound_descriptor_sets(mut self, max_bound_descriptor_sets: u32) -> Self8558     pub fn max_bound_descriptor_sets(mut self, max_bound_descriptor_sets: u32) -> Self {
8559         self.inner.max_bound_descriptor_sets = max_bound_descriptor_sets;
8560         self
8561     }
max_per_stage_descriptor_samplers( mut self, max_per_stage_descriptor_samplers: u32, ) -> Self8562     pub fn max_per_stage_descriptor_samplers(
8563         mut self,
8564         max_per_stage_descriptor_samplers: u32,
8565     ) -> Self {
8566         self.inner.max_per_stage_descriptor_samplers = max_per_stage_descriptor_samplers;
8567         self
8568     }
max_per_stage_descriptor_uniform_buffers( mut self, max_per_stage_descriptor_uniform_buffers: u32, ) -> Self8569     pub fn max_per_stage_descriptor_uniform_buffers(
8570         mut self,
8571         max_per_stage_descriptor_uniform_buffers: u32,
8572     ) -> Self {
8573         self.inner.max_per_stage_descriptor_uniform_buffers =
8574             max_per_stage_descriptor_uniform_buffers;
8575         self
8576     }
max_per_stage_descriptor_storage_buffers( mut self, max_per_stage_descriptor_storage_buffers: u32, ) -> Self8577     pub fn max_per_stage_descriptor_storage_buffers(
8578         mut self,
8579         max_per_stage_descriptor_storage_buffers: u32,
8580     ) -> Self {
8581         self.inner.max_per_stage_descriptor_storage_buffers =
8582             max_per_stage_descriptor_storage_buffers;
8583         self
8584     }
max_per_stage_descriptor_sampled_images( mut self, max_per_stage_descriptor_sampled_images: u32, ) -> Self8585     pub fn max_per_stage_descriptor_sampled_images(
8586         mut self,
8587         max_per_stage_descriptor_sampled_images: u32,
8588     ) -> Self {
8589         self.inner.max_per_stage_descriptor_sampled_images =
8590             max_per_stage_descriptor_sampled_images;
8591         self
8592     }
max_per_stage_descriptor_storage_images( mut self, max_per_stage_descriptor_storage_images: u32, ) -> Self8593     pub fn max_per_stage_descriptor_storage_images(
8594         mut self,
8595         max_per_stage_descriptor_storage_images: u32,
8596     ) -> Self {
8597         self.inner.max_per_stage_descriptor_storage_images =
8598             max_per_stage_descriptor_storage_images;
8599         self
8600     }
max_per_stage_descriptor_input_attachments( mut self, max_per_stage_descriptor_input_attachments: u32, ) -> Self8601     pub fn max_per_stage_descriptor_input_attachments(
8602         mut self,
8603         max_per_stage_descriptor_input_attachments: u32,
8604     ) -> Self {
8605         self.inner.max_per_stage_descriptor_input_attachments =
8606             max_per_stage_descriptor_input_attachments;
8607         self
8608     }
max_per_stage_resources(mut self, max_per_stage_resources: u32) -> Self8609     pub fn max_per_stage_resources(mut self, max_per_stage_resources: u32) -> Self {
8610         self.inner.max_per_stage_resources = max_per_stage_resources;
8611         self
8612     }
max_descriptor_set_samplers(mut self, max_descriptor_set_samplers: u32) -> Self8613     pub fn max_descriptor_set_samplers(mut self, max_descriptor_set_samplers: u32) -> Self {
8614         self.inner.max_descriptor_set_samplers = max_descriptor_set_samplers;
8615         self
8616     }
max_descriptor_set_uniform_buffers( mut self, max_descriptor_set_uniform_buffers: u32, ) -> Self8617     pub fn max_descriptor_set_uniform_buffers(
8618         mut self,
8619         max_descriptor_set_uniform_buffers: u32,
8620     ) -> Self {
8621         self.inner.max_descriptor_set_uniform_buffers = max_descriptor_set_uniform_buffers;
8622         self
8623     }
max_descriptor_set_uniform_buffers_dynamic( mut self, max_descriptor_set_uniform_buffers_dynamic: u32, ) -> Self8624     pub fn max_descriptor_set_uniform_buffers_dynamic(
8625         mut self,
8626         max_descriptor_set_uniform_buffers_dynamic: u32,
8627     ) -> Self {
8628         self.inner.max_descriptor_set_uniform_buffers_dynamic =
8629             max_descriptor_set_uniform_buffers_dynamic;
8630         self
8631     }
max_descriptor_set_storage_buffers( mut self, max_descriptor_set_storage_buffers: u32, ) -> Self8632     pub fn max_descriptor_set_storage_buffers(
8633         mut self,
8634         max_descriptor_set_storage_buffers: u32,
8635     ) -> Self {
8636         self.inner.max_descriptor_set_storage_buffers = max_descriptor_set_storage_buffers;
8637         self
8638     }
max_descriptor_set_storage_buffers_dynamic( mut self, max_descriptor_set_storage_buffers_dynamic: u32, ) -> Self8639     pub fn max_descriptor_set_storage_buffers_dynamic(
8640         mut self,
8641         max_descriptor_set_storage_buffers_dynamic: u32,
8642     ) -> Self {
8643         self.inner.max_descriptor_set_storage_buffers_dynamic =
8644             max_descriptor_set_storage_buffers_dynamic;
8645         self
8646     }
max_descriptor_set_sampled_images( mut self, max_descriptor_set_sampled_images: u32, ) -> Self8647     pub fn max_descriptor_set_sampled_images(
8648         mut self,
8649         max_descriptor_set_sampled_images: u32,
8650     ) -> Self {
8651         self.inner.max_descriptor_set_sampled_images = max_descriptor_set_sampled_images;
8652         self
8653     }
max_descriptor_set_storage_images( mut self, max_descriptor_set_storage_images: u32, ) -> Self8654     pub fn max_descriptor_set_storage_images(
8655         mut self,
8656         max_descriptor_set_storage_images: u32,
8657     ) -> Self {
8658         self.inner.max_descriptor_set_storage_images = max_descriptor_set_storage_images;
8659         self
8660     }
max_descriptor_set_input_attachments( mut self, max_descriptor_set_input_attachments: u32, ) -> Self8661     pub fn max_descriptor_set_input_attachments(
8662         mut self,
8663         max_descriptor_set_input_attachments: u32,
8664     ) -> Self {
8665         self.inner.max_descriptor_set_input_attachments = max_descriptor_set_input_attachments;
8666         self
8667     }
max_vertex_input_attributes(mut self, max_vertex_input_attributes: u32) -> Self8668     pub fn max_vertex_input_attributes(mut self, max_vertex_input_attributes: u32) -> Self {
8669         self.inner.max_vertex_input_attributes = max_vertex_input_attributes;
8670         self
8671     }
max_vertex_input_bindings(mut self, max_vertex_input_bindings: u32) -> Self8672     pub fn max_vertex_input_bindings(mut self, max_vertex_input_bindings: u32) -> Self {
8673         self.inner.max_vertex_input_bindings = max_vertex_input_bindings;
8674         self
8675     }
max_vertex_input_attribute_offset( mut self, max_vertex_input_attribute_offset: u32, ) -> Self8676     pub fn max_vertex_input_attribute_offset(
8677         mut self,
8678         max_vertex_input_attribute_offset: u32,
8679     ) -> Self {
8680         self.inner.max_vertex_input_attribute_offset = max_vertex_input_attribute_offset;
8681         self
8682     }
max_vertex_input_binding_stride(mut self, max_vertex_input_binding_stride: u32) -> Self8683     pub fn max_vertex_input_binding_stride(mut self, max_vertex_input_binding_stride: u32) -> Self {
8684         self.inner.max_vertex_input_binding_stride = max_vertex_input_binding_stride;
8685         self
8686     }
max_vertex_output_components(mut self, max_vertex_output_components: u32) -> Self8687     pub fn max_vertex_output_components(mut self, max_vertex_output_components: u32) -> Self {
8688         self.inner.max_vertex_output_components = max_vertex_output_components;
8689         self
8690     }
max_tessellation_generation_level( mut self, max_tessellation_generation_level: u32, ) -> Self8691     pub fn max_tessellation_generation_level(
8692         mut self,
8693         max_tessellation_generation_level: u32,
8694     ) -> Self {
8695         self.inner.max_tessellation_generation_level = max_tessellation_generation_level;
8696         self
8697     }
max_tessellation_patch_size(mut self, max_tessellation_patch_size: u32) -> Self8698     pub fn max_tessellation_patch_size(mut self, max_tessellation_patch_size: u32) -> Self {
8699         self.inner.max_tessellation_patch_size = max_tessellation_patch_size;
8700         self
8701     }
max_tessellation_control_per_vertex_input_components( mut self, max_tessellation_control_per_vertex_input_components: u32, ) -> Self8702     pub fn max_tessellation_control_per_vertex_input_components(
8703         mut self,
8704         max_tessellation_control_per_vertex_input_components: u32,
8705     ) -> Self {
8706         self.inner
8707             .max_tessellation_control_per_vertex_input_components =
8708             max_tessellation_control_per_vertex_input_components;
8709         self
8710     }
max_tessellation_control_per_vertex_output_components( mut self, max_tessellation_control_per_vertex_output_components: u32, ) -> Self8711     pub fn max_tessellation_control_per_vertex_output_components(
8712         mut self,
8713         max_tessellation_control_per_vertex_output_components: u32,
8714     ) -> Self {
8715         self.inner
8716             .max_tessellation_control_per_vertex_output_components =
8717             max_tessellation_control_per_vertex_output_components;
8718         self
8719     }
max_tessellation_control_per_patch_output_components( mut self, max_tessellation_control_per_patch_output_components: u32, ) -> Self8720     pub fn max_tessellation_control_per_patch_output_components(
8721         mut self,
8722         max_tessellation_control_per_patch_output_components: u32,
8723     ) -> Self {
8724         self.inner
8725             .max_tessellation_control_per_patch_output_components =
8726             max_tessellation_control_per_patch_output_components;
8727         self
8728     }
max_tessellation_control_total_output_components( mut self, max_tessellation_control_total_output_components: u32, ) -> Self8729     pub fn max_tessellation_control_total_output_components(
8730         mut self,
8731         max_tessellation_control_total_output_components: u32,
8732     ) -> Self {
8733         self.inner.max_tessellation_control_total_output_components =
8734             max_tessellation_control_total_output_components;
8735         self
8736     }
max_tessellation_evaluation_input_components( mut self, max_tessellation_evaluation_input_components: u32, ) -> Self8737     pub fn max_tessellation_evaluation_input_components(
8738         mut self,
8739         max_tessellation_evaluation_input_components: u32,
8740     ) -> Self {
8741         self.inner.max_tessellation_evaluation_input_components =
8742             max_tessellation_evaluation_input_components;
8743         self
8744     }
max_tessellation_evaluation_output_components( mut self, max_tessellation_evaluation_output_components: u32, ) -> Self8745     pub fn max_tessellation_evaluation_output_components(
8746         mut self,
8747         max_tessellation_evaluation_output_components: u32,
8748     ) -> Self {
8749         self.inner.max_tessellation_evaluation_output_components =
8750             max_tessellation_evaluation_output_components;
8751         self
8752     }
max_geometry_shader_invocations(mut self, max_geometry_shader_invocations: u32) -> Self8753     pub fn max_geometry_shader_invocations(mut self, max_geometry_shader_invocations: u32) -> Self {
8754         self.inner.max_geometry_shader_invocations = max_geometry_shader_invocations;
8755         self
8756     }
max_geometry_input_components(mut self, max_geometry_input_components: u32) -> Self8757     pub fn max_geometry_input_components(mut self, max_geometry_input_components: u32) -> Self {
8758         self.inner.max_geometry_input_components = max_geometry_input_components;
8759         self
8760     }
max_geometry_output_components(mut self, max_geometry_output_components: u32) -> Self8761     pub fn max_geometry_output_components(mut self, max_geometry_output_components: u32) -> Self {
8762         self.inner.max_geometry_output_components = max_geometry_output_components;
8763         self
8764     }
max_geometry_output_vertices(mut self, max_geometry_output_vertices: u32) -> Self8765     pub fn max_geometry_output_vertices(mut self, max_geometry_output_vertices: u32) -> Self {
8766         self.inner.max_geometry_output_vertices = max_geometry_output_vertices;
8767         self
8768     }
max_geometry_total_output_components( mut self, max_geometry_total_output_components: u32, ) -> Self8769     pub fn max_geometry_total_output_components(
8770         mut self,
8771         max_geometry_total_output_components: u32,
8772     ) -> Self {
8773         self.inner.max_geometry_total_output_components = max_geometry_total_output_components;
8774         self
8775     }
max_fragment_input_components(mut self, max_fragment_input_components: u32) -> Self8776     pub fn max_fragment_input_components(mut self, max_fragment_input_components: u32) -> Self {
8777         self.inner.max_fragment_input_components = max_fragment_input_components;
8778         self
8779     }
max_fragment_output_attachments(mut self, max_fragment_output_attachments: u32) -> Self8780     pub fn max_fragment_output_attachments(mut self, max_fragment_output_attachments: u32) -> Self {
8781         self.inner.max_fragment_output_attachments = max_fragment_output_attachments;
8782         self
8783     }
max_fragment_dual_src_attachments( mut self, max_fragment_dual_src_attachments: u32, ) -> Self8784     pub fn max_fragment_dual_src_attachments(
8785         mut self,
8786         max_fragment_dual_src_attachments: u32,
8787     ) -> Self {
8788         self.inner.max_fragment_dual_src_attachments = max_fragment_dual_src_attachments;
8789         self
8790     }
max_fragment_combined_output_resources( mut self, max_fragment_combined_output_resources: u32, ) -> Self8791     pub fn max_fragment_combined_output_resources(
8792         mut self,
8793         max_fragment_combined_output_resources: u32,
8794     ) -> Self {
8795         self.inner.max_fragment_combined_output_resources = max_fragment_combined_output_resources;
8796         self
8797     }
max_compute_shared_memory_size(mut self, max_compute_shared_memory_size: u32) -> Self8798     pub fn max_compute_shared_memory_size(mut self, max_compute_shared_memory_size: u32) -> Self {
8799         self.inner.max_compute_shared_memory_size = max_compute_shared_memory_size;
8800         self
8801     }
max_compute_work_group_count(mut self, max_compute_work_group_count: [u32; 3]) -> Self8802     pub fn max_compute_work_group_count(mut self, max_compute_work_group_count: [u32; 3]) -> Self {
8803         self.inner.max_compute_work_group_count = max_compute_work_group_count;
8804         self
8805     }
max_compute_work_group_invocations( mut self, max_compute_work_group_invocations: u32, ) -> Self8806     pub fn max_compute_work_group_invocations(
8807         mut self,
8808         max_compute_work_group_invocations: u32,
8809     ) -> Self {
8810         self.inner.max_compute_work_group_invocations = max_compute_work_group_invocations;
8811         self
8812     }
max_compute_work_group_size(mut self, max_compute_work_group_size: [u32; 3]) -> Self8813     pub fn max_compute_work_group_size(mut self, max_compute_work_group_size: [u32; 3]) -> Self {
8814         self.inner.max_compute_work_group_size = max_compute_work_group_size;
8815         self
8816     }
sub_pixel_precision_bits(mut self, sub_pixel_precision_bits: u32) -> Self8817     pub fn sub_pixel_precision_bits(mut self, sub_pixel_precision_bits: u32) -> Self {
8818         self.inner.sub_pixel_precision_bits = sub_pixel_precision_bits;
8819         self
8820     }
sub_texel_precision_bits(mut self, sub_texel_precision_bits: u32) -> Self8821     pub fn sub_texel_precision_bits(mut self, sub_texel_precision_bits: u32) -> Self {
8822         self.inner.sub_texel_precision_bits = sub_texel_precision_bits;
8823         self
8824     }
mipmap_precision_bits(mut self, mipmap_precision_bits: u32) -> Self8825     pub fn mipmap_precision_bits(mut self, mipmap_precision_bits: u32) -> Self {
8826         self.inner.mipmap_precision_bits = mipmap_precision_bits;
8827         self
8828     }
max_draw_indexed_index_value(mut self, max_draw_indexed_index_value: u32) -> Self8829     pub fn max_draw_indexed_index_value(mut self, max_draw_indexed_index_value: u32) -> Self {
8830         self.inner.max_draw_indexed_index_value = max_draw_indexed_index_value;
8831         self
8832     }
max_draw_indirect_count(mut self, max_draw_indirect_count: u32) -> Self8833     pub fn max_draw_indirect_count(mut self, max_draw_indirect_count: u32) -> Self {
8834         self.inner.max_draw_indirect_count = max_draw_indirect_count;
8835         self
8836     }
max_sampler_lod_bias(mut self, max_sampler_lod_bias: f32) -> Self8837     pub fn max_sampler_lod_bias(mut self, max_sampler_lod_bias: f32) -> Self {
8838         self.inner.max_sampler_lod_bias = max_sampler_lod_bias;
8839         self
8840     }
max_sampler_anisotropy(mut self, max_sampler_anisotropy: f32) -> Self8841     pub fn max_sampler_anisotropy(mut self, max_sampler_anisotropy: f32) -> Self {
8842         self.inner.max_sampler_anisotropy = max_sampler_anisotropy;
8843         self
8844     }
max_viewports(mut self, max_viewports: u32) -> Self8845     pub fn max_viewports(mut self, max_viewports: u32) -> Self {
8846         self.inner.max_viewports = max_viewports;
8847         self
8848     }
max_viewport_dimensions(mut self, max_viewport_dimensions: [u32; 2]) -> Self8849     pub fn max_viewport_dimensions(mut self, max_viewport_dimensions: [u32; 2]) -> Self {
8850         self.inner.max_viewport_dimensions = max_viewport_dimensions;
8851         self
8852     }
viewport_bounds_range(mut self, viewport_bounds_range: [f32; 2]) -> Self8853     pub fn viewport_bounds_range(mut self, viewport_bounds_range: [f32; 2]) -> Self {
8854         self.inner.viewport_bounds_range = viewport_bounds_range;
8855         self
8856     }
viewport_sub_pixel_bits(mut self, viewport_sub_pixel_bits: u32) -> Self8857     pub fn viewport_sub_pixel_bits(mut self, viewport_sub_pixel_bits: u32) -> Self {
8858         self.inner.viewport_sub_pixel_bits = viewport_sub_pixel_bits;
8859         self
8860     }
min_memory_map_alignment(mut self, min_memory_map_alignment: usize) -> Self8861     pub fn min_memory_map_alignment(mut self, min_memory_map_alignment: usize) -> Self {
8862         self.inner.min_memory_map_alignment = min_memory_map_alignment;
8863         self
8864     }
min_texel_buffer_offset_alignment( mut self, min_texel_buffer_offset_alignment: DeviceSize, ) -> Self8865     pub fn min_texel_buffer_offset_alignment(
8866         mut self,
8867         min_texel_buffer_offset_alignment: DeviceSize,
8868     ) -> Self {
8869         self.inner.min_texel_buffer_offset_alignment = min_texel_buffer_offset_alignment;
8870         self
8871     }
min_uniform_buffer_offset_alignment( mut self, min_uniform_buffer_offset_alignment: DeviceSize, ) -> Self8872     pub fn min_uniform_buffer_offset_alignment(
8873         mut self,
8874         min_uniform_buffer_offset_alignment: DeviceSize,
8875     ) -> Self {
8876         self.inner.min_uniform_buffer_offset_alignment = min_uniform_buffer_offset_alignment;
8877         self
8878     }
min_storage_buffer_offset_alignment( mut self, min_storage_buffer_offset_alignment: DeviceSize, ) -> Self8879     pub fn min_storage_buffer_offset_alignment(
8880         mut self,
8881         min_storage_buffer_offset_alignment: DeviceSize,
8882     ) -> Self {
8883         self.inner.min_storage_buffer_offset_alignment = min_storage_buffer_offset_alignment;
8884         self
8885     }
min_texel_offset(mut self, min_texel_offset: i32) -> Self8886     pub fn min_texel_offset(mut self, min_texel_offset: i32) -> Self {
8887         self.inner.min_texel_offset = min_texel_offset;
8888         self
8889     }
max_texel_offset(mut self, max_texel_offset: u32) -> Self8890     pub fn max_texel_offset(mut self, max_texel_offset: u32) -> Self {
8891         self.inner.max_texel_offset = max_texel_offset;
8892         self
8893     }
min_texel_gather_offset(mut self, min_texel_gather_offset: i32) -> Self8894     pub fn min_texel_gather_offset(mut self, min_texel_gather_offset: i32) -> Self {
8895         self.inner.min_texel_gather_offset = min_texel_gather_offset;
8896         self
8897     }
max_texel_gather_offset(mut self, max_texel_gather_offset: u32) -> Self8898     pub fn max_texel_gather_offset(mut self, max_texel_gather_offset: u32) -> Self {
8899         self.inner.max_texel_gather_offset = max_texel_gather_offset;
8900         self
8901     }
min_interpolation_offset(mut self, min_interpolation_offset: f32) -> Self8902     pub fn min_interpolation_offset(mut self, min_interpolation_offset: f32) -> Self {
8903         self.inner.min_interpolation_offset = min_interpolation_offset;
8904         self
8905     }
max_interpolation_offset(mut self, max_interpolation_offset: f32) -> Self8906     pub fn max_interpolation_offset(mut self, max_interpolation_offset: f32) -> Self {
8907         self.inner.max_interpolation_offset = max_interpolation_offset;
8908         self
8909     }
sub_pixel_interpolation_offset_bits( mut self, sub_pixel_interpolation_offset_bits: u32, ) -> Self8910     pub fn sub_pixel_interpolation_offset_bits(
8911         mut self,
8912         sub_pixel_interpolation_offset_bits: u32,
8913     ) -> Self {
8914         self.inner.sub_pixel_interpolation_offset_bits = sub_pixel_interpolation_offset_bits;
8915         self
8916     }
max_framebuffer_width(mut self, max_framebuffer_width: u32) -> Self8917     pub fn max_framebuffer_width(mut self, max_framebuffer_width: u32) -> Self {
8918         self.inner.max_framebuffer_width = max_framebuffer_width;
8919         self
8920     }
max_framebuffer_height(mut self, max_framebuffer_height: u32) -> Self8921     pub fn max_framebuffer_height(mut self, max_framebuffer_height: u32) -> Self {
8922         self.inner.max_framebuffer_height = max_framebuffer_height;
8923         self
8924     }
max_framebuffer_layers(mut self, max_framebuffer_layers: u32) -> Self8925     pub fn max_framebuffer_layers(mut self, max_framebuffer_layers: u32) -> Self {
8926         self.inner.max_framebuffer_layers = max_framebuffer_layers;
8927         self
8928     }
framebuffer_color_sample_counts( mut self, framebuffer_color_sample_counts: SampleCountFlags, ) -> Self8929     pub fn framebuffer_color_sample_counts(
8930         mut self,
8931         framebuffer_color_sample_counts: SampleCountFlags,
8932     ) -> Self {
8933         self.inner.framebuffer_color_sample_counts = framebuffer_color_sample_counts;
8934         self
8935     }
framebuffer_depth_sample_counts( mut self, framebuffer_depth_sample_counts: SampleCountFlags, ) -> Self8936     pub fn framebuffer_depth_sample_counts(
8937         mut self,
8938         framebuffer_depth_sample_counts: SampleCountFlags,
8939     ) -> Self {
8940         self.inner.framebuffer_depth_sample_counts = framebuffer_depth_sample_counts;
8941         self
8942     }
framebuffer_stencil_sample_counts( mut self, framebuffer_stencil_sample_counts: SampleCountFlags, ) -> Self8943     pub fn framebuffer_stencil_sample_counts(
8944         mut self,
8945         framebuffer_stencil_sample_counts: SampleCountFlags,
8946     ) -> Self {
8947         self.inner.framebuffer_stencil_sample_counts = framebuffer_stencil_sample_counts;
8948         self
8949     }
framebuffer_no_attachments_sample_counts( mut self, framebuffer_no_attachments_sample_counts: SampleCountFlags, ) -> Self8950     pub fn framebuffer_no_attachments_sample_counts(
8951         mut self,
8952         framebuffer_no_attachments_sample_counts: SampleCountFlags,
8953     ) -> Self {
8954         self.inner.framebuffer_no_attachments_sample_counts =
8955             framebuffer_no_attachments_sample_counts;
8956         self
8957     }
max_color_attachments(mut self, max_color_attachments: u32) -> Self8958     pub fn max_color_attachments(mut self, max_color_attachments: u32) -> Self {
8959         self.inner.max_color_attachments = max_color_attachments;
8960         self
8961     }
sampled_image_color_sample_counts( mut self, sampled_image_color_sample_counts: SampleCountFlags, ) -> Self8962     pub fn sampled_image_color_sample_counts(
8963         mut self,
8964         sampled_image_color_sample_counts: SampleCountFlags,
8965     ) -> Self {
8966         self.inner.sampled_image_color_sample_counts = sampled_image_color_sample_counts;
8967         self
8968     }
sampled_image_integer_sample_counts( mut self, sampled_image_integer_sample_counts: SampleCountFlags, ) -> Self8969     pub fn sampled_image_integer_sample_counts(
8970         mut self,
8971         sampled_image_integer_sample_counts: SampleCountFlags,
8972     ) -> Self {
8973         self.inner.sampled_image_integer_sample_counts = sampled_image_integer_sample_counts;
8974         self
8975     }
sampled_image_depth_sample_counts( mut self, sampled_image_depth_sample_counts: SampleCountFlags, ) -> Self8976     pub fn sampled_image_depth_sample_counts(
8977         mut self,
8978         sampled_image_depth_sample_counts: SampleCountFlags,
8979     ) -> Self {
8980         self.inner.sampled_image_depth_sample_counts = sampled_image_depth_sample_counts;
8981         self
8982     }
sampled_image_stencil_sample_counts( mut self, sampled_image_stencil_sample_counts: SampleCountFlags, ) -> Self8983     pub fn sampled_image_stencil_sample_counts(
8984         mut self,
8985         sampled_image_stencil_sample_counts: SampleCountFlags,
8986     ) -> Self {
8987         self.inner.sampled_image_stencil_sample_counts = sampled_image_stencil_sample_counts;
8988         self
8989     }
storage_image_sample_counts( mut self, storage_image_sample_counts: SampleCountFlags, ) -> Self8990     pub fn storage_image_sample_counts(
8991         mut self,
8992         storage_image_sample_counts: SampleCountFlags,
8993     ) -> Self {
8994         self.inner.storage_image_sample_counts = storage_image_sample_counts;
8995         self
8996     }
max_sample_mask_words(mut self, max_sample_mask_words: u32) -> Self8997     pub fn max_sample_mask_words(mut self, max_sample_mask_words: u32) -> Self {
8998         self.inner.max_sample_mask_words = max_sample_mask_words;
8999         self
9000     }
timestamp_compute_and_graphics(mut self, timestamp_compute_and_graphics: bool) -> Self9001     pub fn timestamp_compute_and_graphics(mut self, timestamp_compute_and_graphics: bool) -> Self {
9002         self.inner.timestamp_compute_and_graphics = timestamp_compute_and_graphics.into();
9003         self
9004     }
timestamp_period(mut self, timestamp_period: f32) -> Self9005     pub fn timestamp_period(mut self, timestamp_period: f32) -> Self {
9006         self.inner.timestamp_period = timestamp_period;
9007         self
9008     }
max_clip_distances(mut self, max_clip_distances: u32) -> Self9009     pub fn max_clip_distances(mut self, max_clip_distances: u32) -> Self {
9010         self.inner.max_clip_distances = max_clip_distances;
9011         self
9012     }
max_cull_distances(mut self, max_cull_distances: u32) -> Self9013     pub fn max_cull_distances(mut self, max_cull_distances: u32) -> Self {
9014         self.inner.max_cull_distances = max_cull_distances;
9015         self
9016     }
max_combined_clip_and_cull_distances( mut self, max_combined_clip_and_cull_distances: u32, ) -> Self9017     pub fn max_combined_clip_and_cull_distances(
9018         mut self,
9019         max_combined_clip_and_cull_distances: u32,
9020     ) -> Self {
9021         self.inner.max_combined_clip_and_cull_distances = max_combined_clip_and_cull_distances;
9022         self
9023     }
discrete_queue_priorities(mut self, discrete_queue_priorities: u32) -> Self9024     pub fn discrete_queue_priorities(mut self, discrete_queue_priorities: u32) -> Self {
9025         self.inner.discrete_queue_priorities = discrete_queue_priorities;
9026         self
9027     }
point_size_range(mut self, point_size_range: [f32; 2]) -> Self9028     pub fn point_size_range(mut self, point_size_range: [f32; 2]) -> Self {
9029         self.inner.point_size_range = point_size_range;
9030         self
9031     }
line_width_range(mut self, line_width_range: [f32; 2]) -> Self9032     pub fn line_width_range(mut self, line_width_range: [f32; 2]) -> Self {
9033         self.inner.line_width_range = line_width_range;
9034         self
9035     }
point_size_granularity(mut self, point_size_granularity: f32) -> Self9036     pub fn point_size_granularity(mut self, point_size_granularity: f32) -> Self {
9037         self.inner.point_size_granularity = point_size_granularity;
9038         self
9039     }
line_width_granularity(mut self, line_width_granularity: f32) -> Self9040     pub fn line_width_granularity(mut self, line_width_granularity: f32) -> Self {
9041         self.inner.line_width_granularity = line_width_granularity;
9042         self
9043     }
strict_lines(mut self, strict_lines: bool) -> Self9044     pub fn strict_lines(mut self, strict_lines: bool) -> Self {
9045         self.inner.strict_lines = strict_lines.into();
9046         self
9047     }
standard_sample_locations(mut self, standard_sample_locations: bool) -> Self9048     pub fn standard_sample_locations(mut self, standard_sample_locations: bool) -> Self {
9049         self.inner.standard_sample_locations = standard_sample_locations.into();
9050         self
9051     }
optimal_buffer_copy_offset_alignment( mut self, optimal_buffer_copy_offset_alignment: DeviceSize, ) -> Self9052     pub fn optimal_buffer_copy_offset_alignment(
9053         mut self,
9054         optimal_buffer_copy_offset_alignment: DeviceSize,
9055     ) -> Self {
9056         self.inner.optimal_buffer_copy_offset_alignment = optimal_buffer_copy_offset_alignment;
9057         self
9058     }
optimal_buffer_copy_row_pitch_alignment( mut self, optimal_buffer_copy_row_pitch_alignment: DeviceSize, ) -> Self9059     pub fn optimal_buffer_copy_row_pitch_alignment(
9060         mut self,
9061         optimal_buffer_copy_row_pitch_alignment: DeviceSize,
9062     ) -> Self {
9063         self.inner.optimal_buffer_copy_row_pitch_alignment =
9064             optimal_buffer_copy_row_pitch_alignment;
9065         self
9066     }
non_coherent_atom_size(mut self, non_coherent_atom_size: DeviceSize) -> Self9067     pub fn non_coherent_atom_size(mut self, non_coherent_atom_size: DeviceSize) -> Self {
9068         self.inner.non_coherent_atom_size = non_coherent_atom_size;
9069         self
9070     }
9071     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9072     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9073     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceLimits9074     pub fn build(self) -> PhysicalDeviceLimits {
9075         self.inner
9076     }
9077 }
9078 #[repr(C)]
9079 #[cfg_attr(feature = "debug", derive(Debug))]
9080 #[derive(Copy, Clone)]
9081 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreCreateInfo.html>"]
9082 pub struct SemaphoreCreateInfo {
9083     pub s_type: StructureType,
9084     pub p_next: *const c_void,
9085     pub flags: SemaphoreCreateFlags,
9086 }
9087 impl ::std::default::Default for SemaphoreCreateInfo {
default() -> Self9088     fn default() -> Self {
9089         Self {
9090             s_type: StructureType::SEMAPHORE_CREATE_INFO,
9091             p_next: ::std::ptr::null(),
9092             flags: SemaphoreCreateFlags::default(),
9093         }
9094     }
9095 }
9096 impl SemaphoreCreateInfo {
builder<'a>() -> SemaphoreCreateInfoBuilder<'a>9097     pub fn builder<'a>() -> SemaphoreCreateInfoBuilder<'a> {
9098         SemaphoreCreateInfoBuilder {
9099             inner: Self::default(),
9100             marker: ::std::marker::PhantomData,
9101         }
9102     }
9103 }
9104 #[repr(transparent)]
9105 pub struct SemaphoreCreateInfoBuilder<'a> {
9106     inner: SemaphoreCreateInfo,
9107     marker: ::std::marker::PhantomData<&'a ()>,
9108 }
9109 pub unsafe trait ExtendsSemaphoreCreateInfo {}
9110 impl<'a> ::std::ops::Deref for SemaphoreCreateInfoBuilder<'a> {
9111     type Target = SemaphoreCreateInfo;
deref(&self) -> &Self::Target9112     fn deref(&self) -> &Self::Target {
9113         &self.inner
9114     }
9115 }
9116 impl<'a> ::std::ops::DerefMut for SemaphoreCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9117     fn deref_mut(&mut self) -> &mut Self::Target {
9118         &mut self.inner
9119     }
9120 }
9121 impl<'a> SemaphoreCreateInfoBuilder<'a> {
flags(mut self, flags: SemaphoreCreateFlags) -> Self9122     pub fn flags(mut self, flags: SemaphoreCreateFlags) -> Self {
9123         self.inner.flags = flags;
9124         self
9125     }
9126     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9127     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9128     #[doc = r" valid extension structs can be pushed into the chain."]
9129     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9130     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSemaphoreCreateInfo>(mut self, next: &'a mut T) -> Self9131     pub fn push_next<T: ExtendsSemaphoreCreateInfo>(mut self, next: &'a mut T) -> Self {
9132         unsafe {
9133             let next_ptr = next as *mut T as *mut BaseOutStructure;
9134             let last_next = ptr_chain_iter(next).last().unwrap();
9135             (*last_next).p_next = self.inner.p_next as _;
9136             self.inner.p_next = next_ptr as _;
9137         }
9138         self
9139     }
9140     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9141     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9142     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreCreateInfo9143     pub fn build(self) -> SemaphoreCreateInfo {
9144         self.inner
9145     }
9146 }
9147 #[repr(C)]
9148 #[cfg_attr(feature = "debug", derive(Debug))]
9149 #[derive(Copy, Clone)]
9150 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolCreateInfo.html>"]
9151 pub struct QueryPoolCreateInfo {
9152     pub s_type: StructureType,
9153     pub p_next: *const c_void,
9154     pub flags: QueryPoolCreateFlags,
9155     pub query_type: QueryType,
9156     pub query_count: u32,
9157     pub pipeline_statistics: QueryPipelineStatisticFlags,
9158 }
9159 impl ::std::default::Default for QueryPoolCreateInfo {
default() -> Self9160     fn default() -> Self {
9161         Self {
9162             s_type: StructureType::QUERY_POOL_CREATE_INFO,
9163             p_next: ::std::ptr::null(),
9164             flags: QueryPoolCreateFlags::default(),
9165             query_type: QueryType::default(),
9166             query_count: u32::default(),
9167             pipeline_statistics: QueryPipelineStatisticFlags::default(),
9168         }
9169     }
9170 }
9171 impl QueryPoolCreateInfo {
builder<'a>() -> QueryPoolCreateInfoBuilder<'a>9172     pub fn builder<'a>() -> QueryPoolCreateInfoBuilder<'a> {
9173         QueryPoolCreateInfoBuilder {
9174             inner: Self::default(),
9175             marker: ::std::marker::PhantomData,
9176         }
9177     }
9178 }
9179 #[repr(transparent)]
9180 pub struct QueryPoolCreateInfoBuilder<'a> {
9181     inner: QueryPoolCreateInfo,
9182     marker: ::std::marker::PhantomData<&'a ()>,
9183 }
9184 pub unsafe trait ExtendsQueryPoolCreateInfo {}
9185 impl<'a> ::std::ops::Deref for QueryPoolCreateInfoBuilder<'a> {
9186     type Target = QueryPoolCreateInfo;
deref(&self) -> &Self::Target9187     fn deref(&self) -> &Self::Target {
9188         &self.inner
9189     }
9190 }
9191 impl<'a> ::std::ops::DerefMut for QueryPoolCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9192     fn deref_mut(&mut self) -> &mut Self::Target {
9193         &mut self.inner
9194     }
9195 }
9196 impl<'a> QueryPoolCreateInfoBuilder<'a> {
flags(mut self, flags: QueryPoolCreateFlags) -> Self9197     pub fn flags(mut self, flags: QueryPoolCreateFlags) -> Self {
9198         self.inner.flags = flags;
9199         self
9200     }
query_type(mut self, query_type: QueryType) -> Self9201     pub fn query_type(mut self, query_type: QueryType) -> Self {
9202         self.inner.query_type = query_type;
9203         self
9204     }
query_count(mut self, query_count: u32) -> Self9205     pub fn query_count(mut self, query_count: u32) -> Self {
9206         self.inner.query_count = query_count;
9207         self
9208     }
pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self9209     pub fn pipeline_statistics(mut self, pipeline_statistics: QueryPipelineStatisticFlags) -> Self {
9210         self.inner.pipeline_statistics = pipeline_statistics;
9211         self
9212     }
9213     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9214     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9215     #[doc = r" valid extension structs can be pushed into the chain."]
9216     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9217     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsQueryPoolCreateInfo>(mut self, next: &'a mut T) -> Self9218     pub fn push_next<T: ExtendsQueryPoolCreateInfo>(mut self, next: &'a mut T) -> Self {
9219         unsafe {
9220             let next_ptr = next as *mut T as *mut BaseOutStructure;
9221             let last_next = ptr_chain_iter(next).last().unwrap();
9222             (*last_next).p_next = self.inner.p_next as _;
9223             self.inner.p_next = next_ptr as _;
9224         }
9225         self
9226     }
9227     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9228     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9229     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueryPoolCreateInfo9230     pub fn build(self) -> QueryPoolCreateInfo {
9231         self.inner
9232     }
9233 }
9234 #[repr(C)]
9235 #[cfg_attr(feature = "debug", derive(Debug))]
9236 #[derive(Copy, Clone)]
9237 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferCreateInfo.html>"]
9238 pub struct FramebufferCreateInfo {
9239     pub s_type: StructureType,
9240     pub p_next: *const c_void,
9241     pub flags: FramebufferCreateFlags,
9242     pub render_pass: RenderPass,
9243     pub attachment_count: u32,
9244     pub p_attachments: *const ImageView,
9245     pub width: u32,
9246     pub height: u32,
9247     pub layers: u32,
9248 }
9249 impl ::std::default::Default for FramebufferCreateInfo {
default() -> Self9250     fn default() -> Self {
9251         Self {
9252             s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
9253             p_next: ::std::ptr::null(),
9254             flags: FramebufferCreateFlags::default(),
9255             render_pass: RenderPass::default(),
9256             attachment_count: u32::default(),
9257             p_attachments: ::std::ptr::null(),
9258             width: u32::default(),
9259             height: u32::default(),
9260             layers: u32::default(),
9261         }
9262     }
9263 }
9264 impl FramebufferCreateInfo {
builder<'a>() -> FramebufferCreateInfoBuilder<'a>9265     pub fn builder<'a>() -> FramebufferCreateInfoBuilder<'a> {
9266         FramebufferCreateInfoBuilder {
9267             inner: Self::default(),
9268             marker: ::std::marker::PhantomData,
9269         }
9270     }
9271 }
9272 #[repr(transparent)]
9273 pub struct FramebufferCreateInfoBuilder<'a> {
9274     inner: FramebufferCreateInfo,
9275     marker: ::std::marker::PhantomData<&'a ()>,
9276 }
9277 pub unsafe trait ExtendsFramebufferCreateInfo {}
9278 impl<'a> ::std::ops::Deref for FramebufferCreateInfoBuilder<'a> {
9279     type Target = FramebufferCreateInfo;
deref(&self) -> &Self::Target9280     fn deref(&self) -> &Self::Target {
9281         &self.inner
9282     }
9283 }
9284 impl<'a> ::std::ops::DerefMut for FramebufferCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9285     fn deref_mut(&mut self) -> &mut Self::Target {
9286         &mut self.inner
9287     }
9288 }
9289 impl<'a> FramebufferCreateInfoBuilder<'a> {
flags(mut self, flags: FramebufferCreateFlags) -> Self9290     pub fn flags(mut self, flags: FramebufferCreateFlags) -> Self {
9291         self.inner.flags = flags;
9292         self
9293     }
render_pass(mut self, render_pass: RenderPass) -> Self9294     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
9295         self.inner.render_pass = render_pass;
9296         self
9297     }
attachments(mut self, attachments: &'a [ImageView]) -> Self9298     pub fn attachments(mut self, attachments: &'a [ImageView]) -> Self {
9299         self.inner.attachment_count = attachments.len() as _;
9300         self.inner.p_attachments = attachments.as_ptr();
9301         self
9302     }
width(mut self, width: u32) -> Self9303     pub fn width(mut self, width: u32) -> Self {
9304         self.inner.width = width;
9305         self
9306     }
height(mut self, height: u32) -> Self9307     pub fn height(mut self, height: u32) -> Self {
9308         self.inner.height = height;
9309         self
9310     }
layers(mut self, layers: u32) -> Self9311     pub fn layers(mut self, layers: u32) -> Self {
9312         self.inner.layers = layers;
9313         self
9314     }
9315     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9316     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9317     #[doc = r" valid extension structs can be pushed into the chain."]
9318     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9319     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsFramebufferCreateInfo>(mut self, next: &'a mut T) -> Self9320     pub fn push_next<T: ExtendsFramebufferCreateInfo>(mut self, next: &'a mut T) -> Self {
9321         unsafe {
9322             let next_ptr = next as *mut T as *mut BaseOutStructure;
9323             let last_next = ptr_chain_iter(next).last().unwrap();
9324             (*last_next).p_next = self.inner.p_next as _;
9325             self.inner.p_next = next_ptr as _;
9326         }
9327         self
9328     }
9329     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9330     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9331     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferCreateInfo9332     pub fn build(self) -> FramebufferCreateInfo {
9333         self.inner
9334     }
9335 }
9336 #[repr(C)]
9337 #[cfg_attr(feature = "debug", derive(Debug))]
9338 #[derive(Copy, Clone, Default)]
9339 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndirectCommand.html>"]
9340 pub struct DrawIndirectCommand {
9341     pub vertex_count: u32,
9342     pub instance_count: u32,
9343     pub first_vertex: u32,
9344     pub first_instance: u32,
9345 }
9346 impl DrawIndirectCommand {
builder<'a>() -> DrawIndirectCommandBuilder<'a>9347     pub fn builder<'a>() -> DrawIndirectCommandBuilder<'a> {
9348         DrawIndirectCommandBuilder {
9349             inner: Self::default(),
9350             marker: ::std::marker::PhantomData,
9351         }
9352     }
9353 }
9354 #[repr(transparent)]
9355 pub struct DrawIndirectCommandBuilder<'a> {
9356     inner: DrawIndirectCommand,
9357     marker: ::std::marker::PhantomData<&'a ()>,
9358 }
9359 impl<'a> ::std::ops::Deref for DrawIndirectCommandBuilder<'a> {
9360     type Target = DrawIndirectCommand;
deref(&self) -> &Self::Target9361     fn deref(&self) -> &Self::Target {
9362         &self.inner
9363     }
9364 }
9365 impl<'a> ::std::ops::DerefMut for DrawIndirectCommandBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9366     fn deref_mut(&mut self) -> &mut Self::Target {
9367         &mut self.inner
9368     }
9369 }
9370 impl<'a> DrawIndirectCommandBuilder<'a> {
vertex_count(mut self, vertex_count: u32) -> Self9371     pub fn vertex_count(mut self, vertex_count: u32) -> Self {
9372         self.inner.vertex_count = vertex_count;
9373         self
9374     }
instance_count(mut self, instance_count: u32) -> Self9375     pub fn instance_count(mut self, instance_count: u32) -> Self {
9376         self.inner.instance_count = instance_count;
9377         self
9378     }
first_vertex(mut self, first_vertex: u32) -> Self9379     pub fn first_vertex(mut self, first_vertex: u32) -> Self {
9380         self.inner.first_vertex = first_vertex;
9381         self
9382     }
first_instance(mut self, first_instance: u32) -> Self9383     pub fn first_instance(mut self, first_instance: u32) -> Self {
9384         self.inner.first_instance = first_instance;
9385         self
9386     }
9387     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9388     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9389     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrawIndirectCommand9390     pub fn build(self) -> DrawIndirectCommand {
9391         self.inner
9392     }
9393 }
9394 #[repr(C)]
9395 #[cfg_attr(feature = "debug", derive(Debug))]
9396 #[derive(Copy, Clone, Default)]
9397 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndexedIndirectCommand.html>"]
9398 pub struct DrawIndexedIndirectCommand {
9399     pub index_count: u32,
9400     pub instance_count: u32,
9401     pub first_index: u32,
9402     pub vertex_offset: i32,
9403     pub first_instance: u32,
9404 }
9405 impl DrawIndexedIndirectCommand {
builder<'a>() -> DrawIndexedIndirectCommandBuilder<'a>9406     pub fn builder<'a>() -> DrawIndexedIndirectCommandBuilder<'a> {
9407         DrawIndexedIndirectCommandBuilder {
9408             inner: Self::default(),
9409             marker: ::std::marker::PhantomData,
9410         }
9411     }
9412 }
9413 #[repr(transparent)]
9414 pub struct DrawIndexedIndirectCommandBuilder<'a> {
9415     inner: DrawIndexedIndirectCommand,
9416     marker: ::std::marker::PhantomData<&'a ()>,
9417 }
9418 impl<'a> ::std::ops::Deref for DrawIndexedIndirectCommandBuilder<'a> {
9419     type Target = DrawIndexedIndirectCommand;
deref(&self) -> &Self::Target9420     fn deref(&self) -> &Self::Target {
9421         &self.inner
9422     }
9423 }
9424 impl<'a> ::std::ops::DerefMut for DrawIndexedIndirectCommandBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9425     fn deref_mut(&mut self) -> &mut Self::Target {
9426         &mut self.inner
9427     }
9428 }
9429 impl<'a> DrawIndexedIndirectCommandBuilder<'a> {
index_count(mut self, index_count: u32) -> Self9430     pub fn index_count(mut self, index_count: u32) -> Self {
9431         self.inner.index_count = index_count;
9432         self
9433     }
instance_count(mut self, instance_count: u32) -> Self9434     pub fn instance_count(mut self, instance_count: u32) -> Self {
9435         self.inner.instance_count = instance_count;
9436         self
9437     }
first_index(mut self, first_index: u32) -> Self9438     pub fn first_index(mut self, first_index: u32) -> Self {
9439         self.inner.first_index = first_index;
9440         self
9441     }
vertex_offset(mut self, vertex_offset: i32) -> Self9442     pub fn vertex_offset(mut self, vertex_offset: i32) -> Self {
9443         self.inner.vertex_offset = vertex_offset;
9444         self
9445     }
first_instance(mut self, first_instance: u32) -> Self9446     pub fn first_instance(mut self, first_instance: u32) -> Self {
9447         self.inner.first_instance = first_instance;
9448         self
9449     }
9450     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9451     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9452     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrawIndexedIndirectCommand9453     pub fn build(self) -> DrawIndexedIndirectCommand {
9454         self.inner
9455     }
9456 }
9457 #[repr(C)]
9458 #[cfg_attr(feature = "debug", derive(Debug))]
9459 #[derive(Copy, Clone, Default)]
9460 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDispatchIndirectCommand.html>"]
9461 pub struct DispatchIndirectCommand {
9462     pub x: u32,
9463     pub y: u32,
9464     pub z: u32,
9465 }
9466 impl DispatchIndirectCommand {
builder<'a>() -> DispatchIndirectCommandBuilder<'a>9467     pub fn builder<'a>() -> DispatchIndirectCommandBuilder<'a> {
9468         DispatchIndirectCommandBuilder {
9469             inner: Self::default(),
9470             marker: ::std::marker::PhantomData,
9471         }
9472     }
9473 }
9474 #[repr(transparent)]
9475 pub struct DispatchIndirectCommandBuilder<'a> {
9476     inner: DispatchIndirectCommand,
9477     marker: ::std::marker::PhantomData<&'a ()>,
9478 }
9479 impl<'a> ::std::ops::Deref for DispatchIndirectCommandBuilder<'a> {
9480     type Target = DispatchIndirectCommand;
deref(&self) -> &Self::Target9481     fn deref(&self) -> &Self::Target {
9482         &self.inner
9483     }
9484 }
9485 impl<'a> ::std::ops::DerefMut for DispatchIndirectCommandBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9486     fn deref_mut(&mut self) -> &mut Self::Target {
9487         &mut self.inner
9488     }
9489 }
9490 impl<'a> DispatchIndirectCommandBuilder<'a> {
x(mut self, x: u32) -> Self9491     pub fn x(mut self, x: u32) -> Self {
9492         self.inner.x = x;
9493         self
9494     }
y(mut self, y: u32) -> Self9495     pub fn y(mut self, y: u32) -> Self {
9496         self.inner.y = y;
9497         self
9498     }
z(mut self, z: u32) -> Self9499     pub fn z(mut self, z: u32) -> Self {
9500         self.inner.z = z;
9501         self
9502     }
9503     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9504     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9505     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DispatchIndirectCommand9506     pub fn build(self) -> DispatchIndirectCommand {
9507         self.inner
9508     }
9509 }
9510 #[repr(C)]
9511 #[cfg_attr(feature = "debug", derive(Debug))]
9512 #[derive(Copy, Clone, Default)]
9513 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMultiDrawInfoEXT.html>"]
9514 pub struct MultiDrawInfoEXT {
9515     pub first_vertex: u32,
9516     pub vertex_count: u32,
9517 }
9518 impl MultiDrawInfoEXT {
builder<'a>() -> MultiDrawInfoEXTBuilder<'a>9519     pub fn builder<'a>() -> MultiDrawInfoEXTBuilder<'a> {
9520         MultiDrawInfoEXTBuilder {
9521             inner: Self::default(),
9522             marker: ::std::marker::PhantomData,
9523         }
9524     }
9525 }
9526 #[repr(transparent)]
9527 pub struct MultiDrawInfoEXTBuilder<'a> {
9528     inner: MultiDrawInfoEXT,
9529     marker: ::std::marker::PhantomData<&'a ()>,
9530 }
9531 impl<'a> ::std::ops::Deref for MultiDrawInfoEXTBuilder<'a> {
9532     type Target = MultiDrawInfoEXT;
deref(&self) -> &Self::Target9533     fn deref(&self) -> &Self::Target {
9534         &self.inner
9535     }
9536 }
9537 impl<'a> ::std::ops::DerefMut for MultiDrawInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9538     fn deref_mut(&mut self) -> &mut Self::Target {
9539         &mut self.inner
9540     }
9541 }
9542 impl<'a> MultiDrawInfoEXTBuilder<'a> {
first_vertex(mut self, first_vertex: u32) -> Self9543     pub fn first_vertex(mut self, first_vertex: u32) -> Self {
9544         self.inner.first_vertex = first_vertex;
9545         self
9546     }
vertex_count(mut self, vertex_count: u32) -> Self9547     pub fn vertex_count(mut self, vertex_count: u32) -> Self {
9548         self.inner.vertex_count = vertex_count;
9549         self
9550     }
9551     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9552     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9553     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MultiDrawInfoEXT9554     pub fn build(self) -> MultiDrawInfoEXT {
9555         self.inner
9556     }
9557 }
9558 #[repr(C)]
9559 #[cfg_attr(feature = "debug", derive(Debug))]
9560 #[derive(Copy, Clone, Default)]
9561 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMultiDrawIndexedInfoEXT.html>"]
9562 pub struct MultiDrawIndexedInfoEXT {
9563     pub first_index: u32,
9564     pub index_count: u32,
9565     pub vertex_offset: i32,
9566 }
9567 impl MultiDrawIndexedInfoEXT {
builder<'a>() -> MultiDrawIndexedInfoEXTBuilder<'a>9568     pub fn builder<'a>() -> MultiDrawIndexedInfoEXTBuilder<'a> {
9569         MultiDrawIndexedInfoEXTBuilder {
9570             inner: Self::default(),
9571             marker: ::std::marker::PhantomData,
9572         }
9573     }
9574 }
9575 #[repr(transparent)]
9576 pub struct MultiDrawIndexedInfoEXTBuilder<'a> {
9577     inner: MultiDrawIndexedInfoEXT,
9578     marker: ::std::marker::PhantomData<&'a ()>,
9579 }
9580 impl<'a> ::std::ops::Deref for MultiDrawIndexedInfoEXTBuilder<'a> {
9581     type Target = MultiDrawIndexedInfoEXT;
deref(&self) -> &Self::Target9582     fn deref(&self) -> &Self::Target {
9583         &self.inner
9584     }
9585 }
9586 impl<'a> ::std::ops::DerefMut for MultiDrawIndexedInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9587     fn deref_mut(&mut self) -> &mut Self::Target {
9588         &mut self.inner
9589     }
9590 }
9591 impl<'a> MultiDrawIndexedInfoEXTBuilder<'a> {
first_index(mut self, first_index: u32) -> Self9592     pub fn first_index(mut self, first_index: u32) -> Self {
9593         self.inner.first_index = first_index;
9594         self
9595     }
index_count(mut self, index_count: u32) -> Self9596     pub fn index_count(mut self, index_count: u32) -> Self {
9597         self.inner.index_count = index_count;
9598         self
9599     }
vertex_offset(mut self, vertex_offset: i32) -> Self9600     pub fn vertex_offset(mut self, vertex_offset: i32) -> Self {
9601         self.inner.vertex_offset = vertex_offset;
9602         self
9603     }
9604     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9605     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9606     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MultiDrawIndexedInfoEXT9607     pub fn build(self) -> MultiDrawIndexedInfoEXT {
9608         self.inner
9609     }
9610 }
9611 #[repr(C)]
9612 #[cfg_attr(feature = "debug", derive(Debug))]
9613 #[derive(Copy, Clone)]
9614 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubmitInfo.html>"]
9615 pub struct SubmitInfo {
9616     pub s_type: StructureType,
9617     pub p_next: *const c_void,
9618     pub wait_semaphore_count: u32,
9619     pub p_wait_semaphores: *const Semaphore,
9620     pub p_wait_dst_stage_mask: *const PipelineStageFlags,
9621     pub command_buffer_count: u32,
9622     pub p_command_buffers: *const CommandBuffer,
9623     pub signal_semaphore_count: u32,
9624     pub p_signal_semaphores: *const Semaphore,
9625 }
9626 impl ::std::default::Default for SubmitInfo {
default() -> Self9627     fn default() -> Self {
9628         Self {
9629             s_type: StructureType::SUBMIT_INFO,
9630             p_next: ::std::ptr::null(),
9631             wait_semaphore_count: u32::default(),
9632             p_wait_semaphores: ::std::ptr::null(),
9633             p_wait_dst_stage_mask: ::std::ptr::null(),
9634             command_buffer_count: u32::default(),
9635             p_command_buffers: ::std::ptr::null(),
9636             signal_semaphore_count: u32::default(),
9637             p_signal_semaphores: ::std::ptr::null(),
9638         }
9639     }
9640 }
9641 impl SubmitInfo {
builder<'a>() -> SubmitInfoBuilder<'a>9642     pub fn builder<'a>() -> SubmitInfoBuilder<'a> {
9643         SubmitInfoBuilder {
9644             inner: Self::default(),
9645             marker: ::std::marker::PhantomData,
9646         }
9647     }
9648 }
9649 #[repr(transparent)]
9650 pub struct SubmitInfoBuilder<'a> {
9651     inner: SubmitInfo,
9652     marker: ::std::marker::PhantomData<&'a ()>,
9653 }
9654 pub unsafe trait ExtendsSubmitInfo {}
9655 impl<'a> ::std::ops::Deref for SubmitInfoBuilder<'a> {
9656     type Target = SubmitInfo;
deref(&self) -> &Self::Target9657     fn deref(&self) -> &Self::Target {
9658         &self.inner
9659     }
9660 }
9661 impl<'a> ::std::ops::DerefMut for SubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9662     fn deref_mut(&mut self) -> &mut Self::Target {
9663         &mut self.inner
9664     }
9665 }
9666 impl<'a> SubmitInfoBuilder<'a> {
wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self9667     pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self {
9668         self.inner.wait_semaphore_count = wait_semaphores.len() as _;
9669         self.inner.p_wait_semaphores = wait_semaphores.as_ptr();
9670         self
9671     }
wait_dst_stage_mask(mut self, wait_dst_stage_mask: &'a [PipelineStageFlags]) -> Self9672     pub fn wait_dst_stage_mask(mut self, wait_dst_stage_mask: &'a [PipelineStageFlags]) -> Self {
9673         self.inner.wait_semaphore_count = wait_dst_stage_mask.len() as _;
9674         self.inner.p_wait_dst_stage_mask = wait_dst_stage_mask.as_ptr();
9675         self
9676     }
command_buffers(mut self, command_buffers: &'a [CommandBuffer]) -> Self9677     pub fn command_buffers(mut self, command_buffers: &'a [CommandBuffer]) -> Self {
9678         self.inner.command_buffer_count = command_buffers.len() as _;
9679         self.inner.p_command_buffers = command_buffers.as_ptr();
9680         self
9681     }
signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self9682     pub fn signal_semaphores(mut self, signal_semaphores: &'a [Semaphore]) -> Self {
9683         self.inner.signal_semaphore_count = signal_semaphores.len() as _;
9684         self.inner.p_signal_semaphores = signal_semaphores.as_ptr();
9685         self
9686     }
9687     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
9688     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
9689     #[doc = r" valid extension structs can be pushed into the chain."]
9690     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
9691     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubmitInfo>(mut self, next: &'a mut T) -> Self9692     pub fn push_next<T: ExtendsSubmitInfo>(mut self, next: &'a mut T) -> Self {
9693         unsafe {
9694             let next_ptr = next as *mut T as *mut BaseOutStructure;
9695             let last_next = ptr_chain_iter(next).last().unwrap();
9696             (*last_next).p_next = self.inner.p_next as _;
9697             self.inner.p_next = next_ptr as _;
9698         }
9699         self
9700     }
9701     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9702     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9703     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubmitInfo9704     pub fn build(self) -> SubmitInfo {
9705         self.inner
9706     }
9707 }
9708 #[repr(C)]
9709 #[cfg_attr(feature = "debug", derive(Debug))]
9710 #[derive(Copy, Clone)]
9711 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPropertiesKHR.html>"]
9712 pub struct DisplayPropertiesKHR {
9713     pub display: DisplayKHR,
9714     pub display_name: *const c_char,
9715     pub physical_dimensions: Extent2D,
9716     pub physical_resolution: Extent2D,
9717     pub supported_transforms: SurfaceTransformFlagsKHR,
9718     pub plane_reorder_possible: Bool32,
9719     pub persistent_content: Bool32,
9720 }
9721 impl ::std::default::Default for DisplayPropertiesKHR {
default() -> Self9722     fn default() -> Self {
9723         Self {
9724             display: DisplayKHR::default(),
9725             display_name: ::std::ptr::null(),
9726             physical_dimensions: Extent2D::default(),
9727             physical_resolution: Extent2D::default(),
9728             supported_transforms: SurfaceTransformFlagsKHR::default(),
9729             plane_reorder_possible: Bool32::default(),
9730             persistent_content: Bool32::default(),
9731         }
9732     }
9733 }
9734 impl DisplayPropertiesKHR {
builder<'a>() -> DisplayPropertiesKHRBuilder<'a>9735     pub fn builder<'a>() -> DisplayPropertiesKHRBuilder<'a> {
9736         DisplayPropertiesKHRBuilder {
9737             inner: Self::default(),
9738             marker: ::std::marker::PhantomData,
9739         }
9740     }
9741 }
9742 #[repr(transparent)]
9743 pub struct DisplayPropertiesKHRBuilder<'a> {
9744     inner: DisplayPropertiesKHR,
9745     marker: ::std::marker::PhantomData<&'a ()>,
9746 }
9747 impl<'a> ::std::ops::Deref for DisplayPropertiesKHRBuilder<'a> {
9748     type Target = DisplayPropertiesKHR;
deref(&self) -> &Self::Target9749     fn deref(&self) -> &Self::Target {
9750         &self.inner
9751     }
9752 }
9753 impl<'a> ::std::ops::DerefMut for DisplayPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9754     fn deref_mut(&mut self) -> &mut Self::Target {
9755         &mut self.inner
9756     }
9757 }
9758 impl<'a> DisplayPropertiesKHRBuilder<'a> {
display(mut self, display: DisplayKHR) -> Self9759     pub fn display(mut self, display: DisplayKHR) -> Self {
9760         self.inner.display = display;
9761         self
9762     }
display_name(mut self, display_name: &'a ::std::ffi::CStr) -> Self9763     pub fn display_name(mut self, display_name: &'a ::std::ffi::CStr) -> Self {
9764         self.inner.display_name = display_name.as_ptr();
9765         self
9766     }
physical_dimensions(mut self, physical_dimensions: Extent2D) -> Self9767     pub fn physical_dimensions(mut self, physical_dimensions: Extent2D) -> Self {
9768         self.inner.physical_dimensions = physical_dimensions;
9769         self
9770     }
physical_resolution(mut self, physical_resolution: Extent2D) -> Self9771     pub fn physical_resolution(mut self, physical_resolution: Extent2D) -> Self {
9772         self.inner.physical_resolution = physical_resolution;
9773         self
9774     }
supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self9775     pub fn supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self {
9776         self.inner.supported_transforms = supported_transforms;
9777         self
9778     }
plane_reorder_possible(mut self, plane_reorder_possible: bool) -> Self9779     pub fn plane_reorder_possible(mut self, plane_reorder_possible: bool) -> Self {
9780         self.inner.plane_reorder_possible = plane_reorder_possible.into();
9781         self
9782     }
persistent_content(mut self, persistent_content: bool) -> Self9783     pub fn persistent_content(mut self, persistent_content: bool) -> Self {
9784         self.inner.persistent_content = persistent_content.into();
9785         self
9786     }
9787     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9788     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9789     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPropertiesKHR9790     pub fn build(self) -> DisplayPropertiesKHR {
9791         self.inner
9792     }
9793 }
9794 #[repr(C)]
9795 #[cfg_attr(feature = "debug", derive(Debug))]
9796 #[derive(Copy, Clone, Default)]
9797 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlanePropertiesKHR.html>"]
9798 pub struct DisplayPlanePropertiesKHR {
9799     pub current_display: DisplayKHR,
9800     pub current_stack_index: u32,
9801 }
9802 impl DisplayPlanePropertiesKHR {
builder<'a>() -> DisplayPlanePropertiesKHRBuilder<'a>9803     pub fn builder<'a>() -> DisplayPlanePropertiesKHRBuilder<'a> {
9804         DisplayPlanePropertiesKHRBuilder {
9805             inner: Self::default(),
9806             marker: ::std::marker::PhantomData,
9807         }
9808     }
9809 }
9810 #[repr(transparent)]
9811 pub struct DisplayPlanePropertiesKHRBuilder<'a> {
9812     inner: DisplayPlanePropertiesKHR,
9813     marker: ::std::marker::PhantomData<&'a ()>,
9814 }
9815 impl<'a> ::std::ops::Deref for DisplayPlanePropertiesKHRBuilder<'a> {
9816     type Target = DisplayPlanePropertiesKHR;
deref(&self) -> &Self::Target9817     fn deref(&self) -> &Self::Target {
9818         &self.inner
9819     }
9820 }
9821 impl<'a> ::std::ops::DerefMut for DisplayPlanePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9822     fn deref_mut(&mut self) -> &mut Self::Target {
9823         &mut self.inner
9824     }
9825 }
9826 impl<'a> DisplayPlanePropertiesKHRBuilder<'a> {
current_display(mut self, current_display: DisplayKHR) -> Self9827     pub fn current_display(mut self, current_display: DisplayKHR) -> Self {
9828         self.inner.current_display = current_display;
9829         self
9830     }
current_stack_index(mut self, current_stack_index: u32) -> Self9831     pub fn current_stack_index(mut self, current_stack_index: u32) -> Self {
9832         self.inner.current_stack_index = current_stack_index;
9833         self
9834     }
9835     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9836     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9837     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlanePropertiesKHR9838     pub fn build(self) -> DisplayPlanePropertiesKHR {
9839         self.inner
9840     }
9841 }
9842 #[repr(C)]
9843 #[cfg_attr(feature = "debug", derive(Debug))]
9844 #[derive(Copy, Clone, Default)]
9845 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeParametersKHR.html>"]
9846 pub struct DisplayModeParametersKHR {
9847     pub visible_region: Extent2D,
9848     pub refresh_rate: u32,
9849 }
9850 impl DisplayModeParametersKHR {
builder<'a>() -> DisplayModeParametersKHRBuilder<'a>9851     pub fn builder<'a>() -> DisplayModeParametersKHRBuilder<'a> {
9852         DisplayModeParametersKHRBuilder {
9853             inner: Self::default(),
9854             marker: ::std::marker::PhantomData,
9855         }
9856     }
9857 }
9858 #[repr(transparent)]
9859 pub struct DisplayModeParametersKHRBuilder<'a> {
9860     inner: DisplayModeParametersKHR,
9861     marker: ::std::marker::PhantomData<&'a ()>,
9862 }
9863 impl<'a> ::std::ops::Deref for DisplayModeParametersKHRBuilder<'a> {
9864     type Target = DisplayModeParametersKHR;
deref(&self) -> &Self::Target9865     fn deref(&self) -> &Self::Target {
9866         &self.inner
9867     }
9868 }
9869 impl<'a> ::std::ops::DerefMut for DisplayModeParametersKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9870     fn deref_mut(&mut self) -> &mut Self::Target {
9871         &mut self.inner
9872     }
9873 }
9874 impl<'a> DisplayModeParametersKHRBuilder<'a> {
visible_region(mut self, visible_region: Extent2D) -> Self9875     pub fn visible_region(mut self, visible_region: Extent2D) -> Self {
9876         self.inner.visible_region = visible_region;
9877         self
9878     }
refresh_rate(mut self, refresh_rate: u32) -> Self9879     pub fn refresh_rate(mut self, refresh_rate: u32) -> Self {
9880         self.inner.refresh_rate = refresh_rate;
9881         self
9882     }
9883     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9884     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9885     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModeParametersKHR9886     pub fn build(self) -> DisplayModeParametersKHR {
9887         self.inner
9888     }
9889 }
9890 #[repr(C)]
9891 #[cfg_attr(feature = "debug", derive(Debug))]
9892 #[derive(Copy, Clone, Default)]
9893 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModePropertiesKHR.html>"]
9894 pub struct DisplayModePropertiesKHR {
9895     pub display_mode: DisplayModeKHR,
9896     pub parameters: DisplayModeParametersKHR,
9897 }
9898 impl DisplayModePropertiesKHR {
builder<'a>() -> DisplayModePropertiesKHRBuilder<'a>9899     pub fn builder<'a>() -> DisplayModePropertiesKHRBuilder<'a> {
9900         DisplayModePropertiesKHRBuilder {
9901             inner: Self::default(),
9902             marker: ::std::marker::PhantomData,
9903         }
9904     }
9905 }
9906 #[repr(transparent)]
9907 pub struct DisplayModePropertiesKHRBuilder<'a> {
9908     inner: DisplayModePropertiesKHR,
9909     marker: ::std::marker::PhantomData<&'a ()>,
9910 }
9911 impl<'a> ::std::ops::Deref for DisplayModePropertiesKHRBuilder<'a> {
9912     type Target = DisplayModePropertiesKHR;
deref(&self) -> &Self::Target9913     fn deref(&self) -> &Self::Target {
9914         &self.inner
9915     }
9916 }
9917 impl<'a> ::std::ops::DerefMut for DisplayModePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9918     fn deref_mut(&mut self) -> &mut Self::Target {
9919         &mut self.inner
9920     }
9921 }
9922 impl<'a> DisplayModePropertiesKHRBuilder<'a> {
display_mode(mut self, display_mode: DisplayModeKHR) -> Self9923     pub fn display_mode(mut self, display_mode: DisplayModeKHR) -> Self {
9924         self.inner.display_mode = display_mode;
9925         self
9926     }
parameters(mut self, parameters: DisplayModeParametersKHR) -> Self9927     pub fn parameters(mut self, parameters: DisplayModeParametersKHR) -> Self {
9928         self.inner.parameters = parameters;
9929         self
9930     }
9931     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9932     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9933     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModePropertiesKHR9934     pub fn build(self) -> DisplayModePropertiesKHR {
9935         self.inner
9936     }
9937 }
9938 #[repr(C)]
9939 #[cfg_attr(feature = "debug", derive(Debug))]
9940 #[derive(Copy, Clone)]
9941 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeCreateInfoKHR.html>"]
9942 pub struct DisplayModeCreateInfoKHR {
9943     pub s_type: StructureType,
9944     pub p_next: *const c_void,
9945     pub flags: DisplayModeCreateFlagsKHR,
9946     pub parameters: DisplayModeParametersKHR,
9947 }
9948 impl ::std::default::Default for DisplayModeCreateInfoKHR {
default() -> Self9949     fn default() -> Self {
9950         Self {
9951             s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
9952             p_next: ::std::ptr::null(),
9953             flags: DisplayModeCreateFlagsKHR::default(),
9954             parameters: DisplayModeParametersKHR::default(),
9955         }
9956     }
9957 }
9958 impl DisplayModeCreateInfoKHR {
builder<'a>() -> DisplayModeCreateInfoKHRBuilder<'a>9959     pub fn builder<'a>() -> DisplayModeCreateInfoKHRBuilder<'a> {
9960         DisplayModeCreateInfoKHRBuilder {
9961             inner: Self::default(),
9962             marker: ::std::marker::PhantomData,
9963         }
9964     }
9965 }
9966 #[repr(transparent)]
9967 pub struct DisplayModeCreateInfoKHRBuilder<'a> {
9968     inner: DisplayModeCreateInfoKHR,
9969     marker: ::std::marker::PhantomData<&'a ()>,
9970 }
9971 impl<'a> ::std::ops::Deref for DisplayModeCreateInfoKHRBuilder<'a> {
9972     type Target = DisplayModeCreateInfoKHR;
deref(&self) -> &Self::Target9973     fn deref(&self) -> &Self::Target {
9974         &self.inner
9975     }
9976 }
9977 impl<'a> ::std::ops::DerefMut for DisplayModeCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target9978     fn deref_mut(&mut self) -> &mut Self::Target {
9979         &mut self.inner
9980     }
9981 }
9982 impl<'a> DisplayModeCreateInfoKHRBuilder<'a> {
flags(mut self, flags: DisplayModeCreateFlagsKHR) -> Self9983     pub fn flags(mut self, flags: DisplayModeCreateFlagsKHR) -> Self {
9984         self.inner.flags = flags;
9985         self
9986     }
parameters(mut self, parameters: DisplayModeParametersKHR) -> Self9987     pub fn parameters(mut self, parameters: DisplayModeParametersKHR) -> Self {
9988         self.inner.parameters = parameters;
9989         self
9990     }
9991     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
9992     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
9993     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModeCreateInfoKHR9994     pub fn build(self) -> DisplayModeCreateInfoKHR {
9995         self.inner
9996     }
9997 }
9998 #[repr(C)]
9999 #[cfg_attr(feature = "debug", derive(Debug))]
10000 #[derive(Copy, Clone, Default)]
10001 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneCapabilitiesKHR.html>"]
10002 pub struct DisplayPlaneCapabilitiesKHR {
10003     pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
10004     pub min_src_position: Offset2D,
10005     pub max_src_position: Offset2D,
10006     pub min_src_extent: Extent2D,
10007     pub max_src_extent: Extent2D,
10008     pub min_dst_position: Offset2D,
10009     pub max_dst_position: Offset2D,
10010     pub min_dst_extent: Extent2D,
10011     pub max_dst_extent: Extent2D,
10012 }
10013 impl DisplayPlaneCapabilitiesKHR {
builder<'a>() -> DisplayPlaneCapabilitiesKHRBuilder<'a>10014     pub fn builder<'a>() -> DisplayPlaneCapabilitiesKHRBuilder<'a> {
10015         DisplayPlaneCapabilitiesKHRBuilder {
10016             inner: Self::default(),
10017             marker: ::std::marker::PhantomData,
10018         }
10019     }
10020 }
10021 #[repr(transparent)]
10022 pub struct DisplayPlaneCapabilitiesKHRBuilder<'a> {
10023     inner: DisplayPlaneCapabilitiesKHR,
10024     marker: ::std::marker::PhantomData<&'a ()>,
10025 }
10026 impl<'a> ::std::ops::Deref for DisplayPlaneCapabilitiesKHRBuilder<'a> {
10027     type Target = DisplayPlaneCapabilitiesKHR;
deref(&self) -> &Self::Target10028     fn deref(&self) -> &Self::Target {
10029         &self.inner
10030     }
10031 }
10032 impl<'a> ::std::ops::DerefMut for DisplayPlaneCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10033     fn deref_mut(&mut self) -> &mut Self::Target {
10034         &mut self.inner
10035     }
10036 }
10037 impl<'a> DisplayPlaneCapabilitiesKHRBuilder<'a> {
supported_alpha(mut self, supported_alpha: DisplayPlaneAlphaFlagsKHR) -> Self10038     pub fn supported_alpha(mut self, supported_alpha: DisplayPlaneAlphaFlagsKHR) -> Self {
10039         self.inner.supported_alpha = supported_alpha;
10040         self
10041     }
min_src_position(mut self, min_src_position: Offset2D) -> Self10042     pub fn min_src_position(mut self, min_src_position: Offset2D) -> Self {
10043         self.inner.min_src_position = min_src_position;
10044         self
10045     }
max_src_position(mut self, max_src_position: Offset2D) -> Self10046     pub fn max_src_position(mut self, max_src_position: Offset2D) -> Self {
10047         self.inner.max_src_position = max_src_position;
10048         self
10049     }
min_src_extent(mut self, min_src_extent: Extent2D) -> Self10050     pub fn min_src_extent(mut self, min_src_extent: Extent2D) -> Self {
10051         self.inner.min_src_extent = min_src_extent;
10052         self
10053     }
max_src_extent(mut self, max_src_extent: Extent2D) -> Self10054     pub fn max_src_extent(mut self, max_src_extent: Extent2D) -> Self {
10055         self.inner.max_src_extent = max_src_extent;
10056         self
10057     }
min_dst_position(mut self, min_dst_position: Offset2D) -> Self10058     pub fn min_dst_position(mut self, min_dst_position: Offset2D) -> Self {
10059         self.inner.min_dst_position = min_dst_position;
10060         self
10061     }
max_dst_position(mut self, max_dst_position: Offset2D) -> Self10062     pub fn max_dst_position(mut self, max_dst_position: Offset2D) -> Self {
10063         self.inner.max_dst_position = max_dst_position;
10064         self
10065     }
min_dst_extent(mut self, min_dst_extent: Extent2D) -> Self10066     pub fn min_dst_extent(mut self, min_dst_extent: Extent2D) -> Self {
10067         self.inner.min_dst_extent = min_dst_extent;
10068         self
10069     }
max_dst_extent(mut self, max_dst_extent: Extent2D) -> Self10070     pub fn max_dst_extent(mut self, max_dst_extent: Extent2D) -> Self {
10071         self.inner.max_dst_extent = max_dst_extent;
10072         self
10073     }
10074     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10075     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10076     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneCapabilitiesKHR10077     pub fn build(self) -> DisplayPlaneCapabilitiesKHR {
10078         self.inner
10079     }
10080 }
10081 #[repr(C)]
10082 #[cfg_attr(feature = "debug", derive(Debug))]
10083 #[derive(Copy, Clone)]
10084 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplaySurfaceCreateInfoKHR.html>"]
10085 pub struct DisplaySurfaceCreateInfoKHR {
10086     pub s_type: StructureType,
10087     pub p_next: *const c_void,
10088     pub flags: DisplaySurfaceCreateFlagsKHR,
10089     pub display_mode: DisplayModeKHR,
10090     pub plane_index: u32,
10091     pub plane_stack_index: u32,
10092     pub transform: SurfaceTransformFlagsKHR,
10093     pub global_alpha: f32,
10094     pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
10095     pub image_extent: Extent2D,
10096 }
10097 impl ::std::default::Default for DisplaySurfaceCreateInfoKHR {
default() -> Self10098     fn default() -> Self {
10099         Self {
10100             s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
10101             p_next: ::std::ptr::null(),
10102             flags: DisplaySurfaceCreateFlagsKHR::default(),
10103             display_mode: DisplayModeKHR::default(),
10104             plane_index: u32::default(),
10105             plane_stack_index: u32::default(),
10106             transform: SurfaceTransformFlagsKHR::default(),
10107             global_alpha: f32::default(),
10108             alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
10109             image_extent: Extent2D::default(),
10110         }
10111     }
10112 }
10113 impl DisplaySurfaceCreateInfoKHR {
builder<'a>() -> DisplaySurfaceCreateInfoKHRBuilder<'a>10114     pub fn builder<'a>() -> DisplaySurfaceCreateInfoKHRBuilder<'a> {
10115         DisplaySurfaceCreateInfoKHRBuilder {
10116             inner: Self::default(),
10117             marker: ::std::marker::PhantomData,
10118         }
10119     }
10120 }
10121 #[repr(transparent)]
10122 pub struct DisplaySurfaceCreateInfoKHRBuilder<'a> {
10123     inner: DisplaySurfaceCreateInfoKHR,
10124     marker: ::std::marker::PhantomData<&'a ()>,
10125 }
10126 impl<'a> ::std::ops::Deref for DisplaySurfaceCreateInfoKHRBuilder<'a> {
10127     type Target = DisplaySurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10128     fn deref(&self) -> &Self::Target {
10129         &self.inner
10130     }
10131 }
10132 impl<'a> ::std::ops::DerefMut for DisplaySurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10133     fn deref_mut(&mut self) -> &mut Self::Target {
10134         &mut self.inner
10135     }
10136 }
10137 impl<'a> DisplaySurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: DisplaySurfaceCreateFlagsKHR) -> Self10138     pub fn flags(mut self, flags: DisplaySurfaceCreateFlagsKHR) -> Self {
10139         self.inner.flags = flags;
10140         self
10141     }
display_mode(mut self, display_mode: DisplayModeKHR) -> Self10142     pub fn display_mode(mut self, display_mode: DisplayModeKHR) -> Self {
10143         self.inner.display_mode = display_mode;
10144         self
10145     }
plane_index(mut self, plane_index: u32) -> Self10146     pub fn plane_index(mut self, plane_index: u32) -> Self {
10147         self.inner.plane_index = plane_index;
10148         self
10149     }
plane_stack_index(mut self, plane_stack_index: u32) -> Self10150     pub fn plane_stack_index(mut self, plane_stack_index: u32) -> Self {
10151         self.inner.plane_stack_index = plane_stack_index;
10152         self
10153     }
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self10154     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
10155         self.inner.transform = transform;
10156         self
10157     }
global_alpha(mut self, global_alpha: f32) -> Self10158     pub fn global_alpha(mut self, global_alpha: f32) -> Self {
10159         self.inner.global_alpha = global_alpha;
10160         self
10161     }
alpha_mode(mut self, alpha_mode: DisplayPlaneAlphaFlagsKHR) -> Self10162     pub fn alpha_mode(mut self, alpha_mode: DisplayPlaneAlphaFlagsKHR) -> Self {
10163         self.inner.alpha_mode = alpha_mode;
10164         self
10165     }
image_extent(mut self, image_extent: Extent2D) -> Self10166     pub fn image_extent(mut self, image_extent: Extent2D) -> Self {
10167         self.inner.image_extent = image_extent;
10168         self
10169     }
10170     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10171     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10172     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplaySurfaceCreateInfoKHR10173     pub fn build(self) -> DisplaySurfaceCreateInfoKHR {
10174         self.inner
10175     }
10176 }
10177 #[repr(C)]
10178 #[cfg_attr(feature = "debug", derive(Debug))]
10179 #[derive(Copy, Clone)]
10180 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPresentInfoKHR.html>"]
10181 pub struct DisplayPresentInfoKHR {
10182     pub s_type: StructureType,
10183     pub p_next: *const c_void,
10184     pub src_rect: Rect2D,
10185     pub dst_rect: Rect2D,
10186     pub persistent: Bool32,
10187 }
10188 impl ::std::default::Default for DisplayPresentInfoKHR {
default() -> Self10189     fn default() -> Self {
10190         Self {
10191             s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
10192             p_next: ::std::ptr::null(),
10193             src_rect: Rect2D::default(),
10194             dst_rect: Rect2D::default(),
10195             persistent: Bool32::default(),
10196         }
10197     }
10198 }
10199 impl DisplayPresentInfoKHR {
builder<'a>() -> DisplayPresentInfoKHRBuilder<'a>10200     pub fn builder<'a>() -> DisplayPresentInfoKHRBuilder<'a> {
10201         DisplayPresentInfoKHRBuilder {
10202             inner: Self::default(),
10203             marker: ::std::marker::PhantomData,
10204         }
10205     }
10206 }
10207 #[repr(transparent)]
10208 pub struct DisplayPresentInfoKHRBuilder<'a> {
10209     inner: DisplayPresentInfoKHR,
10210     marker: ::std::marker::PhantomData<&'a ()>,
10211 }
10212 unsafe impl ExtendsPresentInfoKHR for DisplayPresentInfoKHRBuilder<'_> {}
10213 unsafe impl ExtendsPresentInfoKHR for DisplayPresentInfoKHR {}
10214 impl<'a> ::std::ops::Deref for DisplayPresentInfoKHRBuilder<'a> {
10215     type Target = DisplayPresentInfoKHR;
deref(&self) -> &Self::Target10216     fn deref(&self) -> &Self::Target {
10217         &self.inner
10218     }
10219 }
10220 impl<'a> ::std::ops::DerefMut for DisplayPresentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10221     fn deref_mut(&mut self) -> &mut Self::Target {
10222         &mut self.inner
10223     }
10224 }
10225 impl<'a> DisplayPresentInfoKHRBuilder<'a> {
src_rect(mut self, src_rect: Rect2D) -> Self10226     pub fn src_rect(mut self, src_rect: Rect2D) -> Self {
10227         self.inner.src_rect = src_rect;
10228         self
10229     }
dst_rect(mut self, dst_rect: Rect2D) -> Self10230     pub fn dst_rect(mut self, dst_rect: Rect2D) -> Self {
10231         self.inner.dst_rect = dst_rect;
10232         self
10233     }
persistent(mut self, persistent: bool) -> Self10234     pub fn persistent(mut self, persistent: bool) -> Self {
10235         self.inner.persistent = persistent.into();
10236         self
10237     }
10238     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10239     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10240     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPresentInfoKHR10241     pub fn build(self) -> DisplayPresentInfoKHR {
10242         self.inner
10243     }
10244 }
10245 #[repr(C)]
10246 #[cfg_attr(feature = "debug", derive(Debug))]
10247 #[derive(Copy, Clone, Default)]
10248 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilitiesKHR.html>"]
10249 pub struct SurfaceCapabilitiesKHR {
10250     pub min_image_count: u32,
10251     pub max_image_count: u32,
10252     pub current_extent: Extent2D,
10253     pub min_image_extent: Extent2D,
10254     pub max_image_extent: Extent2D,
10255     pub max_image_array_layers: u32,
10256     pub supported_transforms: SurfaceTransformFlagsKHR,
10257     pub current_transform: SurfaceTransformFlagsKHR,
10258     pub supported_composite_alpha: CompositeAlphaFlagsKHR,
10259     pub supported_usage_flags: ImageUsageFlags,
10260 }
10261 impl SurfaceCapabilitiesKHR {
builder<'a>() -> SurfaceCapabilitiesKHRBuilder<'a>10262     pub fn builder<'a>() -> SurfaceCapabilitiesKHRBuilder<'a> {
10263         SurfaceCapabilitiesKHRBuilder {
10264             inner: Self::default(),
10265             marker: ::std::marker::PhantomData,
10266         }
10267     }
10268 }
10269 #[repr(transparent)]
10270 pub struct SurfaceCapabilitiesKHRBuilder<'a> {
10271     inner: SurfaceCapabilitiesKHR,
10272     marker: ::std::marker::PhantomData<&'a ()>,
10273 }
10274 impl<'a> ::std::ops::Deref for SurfaceCapabilitiesKHRBuilder<'a> {
10275     type Target = SurfaceCapabilitiesKHR;
deref(&self) -> &Self::Target10276     fn deref(&self) -> &Self::Target {
10277         &self.inner
10278     }
10279 }
10280 impl<'a> ::std::ops::DerefMut for SurfaceCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10281     fn deref_mut(&mut self) -> &mut Self::Target {
10282         &mut self.inner
10283     }
10284 }
10285 impl<'a> SurfaceCapabilitiesKHRBuilder<'a> {
min_image_count(mut self, min_image_count: u32) -> Self10286     pub fn min_image_count(mut self, min_image_count: u32) -> Self {
10287         self.inner.min_image_count = min_image_count;
10288         self
10289     }
max_image_count(mut self, max_image_count: u32) -> Self10290     pub fn max_image_count(mut self, max_image_count: u32) -> Self {
10291         self.inner.max_image_count = max_image_count;
10292         self
10293     }
current_extent(mut self, current_extent: Extent2D) -> Self10294     pub fn current_extent(mut self, current_extent: Extent2D) -> Self {
10295         self.inner.current_extent = current_extent;
10296         self
10297     }
min_image_extent(mut self, min_image_extent: Extent2D) -> Self10298     pub fn min_image_extent(mut self, min_image_extent: Extent2D) -> Self {
10299         self.inner.min_image_extent = min_image_extent;
10300         self
10301     }
max_image_extent(mut self, max_image_extent: Extent2D) -> Self10302     pub fn max_image_extent(mut self, max_image_extent: Extent2D) -> Self {
10303         self.inner.max_image_extent = max_image_extent;
10304         self
10305     }
max_image_array_layers(mut self, max_image_array_layers: u32) -> Self10306     pub fn max_image_array_layers(mut self, max_image_array_layers: u32) -> Self {
10307         self.inner.max_image_array_layers = max_image_array_layers;
10308         self
10309     }
supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self10310     pub fn supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self {
10311         self.inner.supported_transforms = supported_transforms;
10312         self
10313     }
current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self10314     pub fn current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self {
10315         self.inner.current_transform = current_transform;
10316         self
10317     }
supported_composite_alpha( mut self, supported_composite_alpha: CompositeAlphaFlagsKHR, ) -> Self10318     pub fn supported_composite_alpha(
10319         mut self,
10320         supported_composite_alpha: CompositeAlphaFlagsKHR,
10321     ) -> Self {
10322         self.inner.supported_composite_alpha = supported_composite_alpha;
10323         self
10324     }
supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self10325     pub fn supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self {
10326         self.inner.supported_usage_flags = supported_usage_flags;
10327         self
10328     }
10329     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10330     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10331     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilitiesKHR10332     pub fn build(self) -> SurfaceCapabilitiesKHR {
10333         self.inner
10334     }
10335 }
10336 #[repr(C)]
10337 #[cfg_attr(feature = "debug", derive(Debug))]
10338 #[derive(Copy, Clone)]
10339 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidSurfaceCreateInfoKHR.html>"]
10340 pub struct AndroidSurfaceCreateInfoKHR {
10341     pub s_type: StructureType,
10342     pub p_next: *const c_void,
10343     pub flags: AndroidSurfaceCreateFlagsKHR,
10344     pub window: *mut ANativeWindow,
10345 }
10346 impl ::std::default::Default for AndroidSurfaceCreateInfoKHR {
default() -> Self10347     fn default() -> Self {
10348         Self {
10349             s_type: StructureType::ANDROID_SURFACE_CREATE_INFO_KHR,
10350             p_next: ::std::ptr::null(),
10351             flags: AndroidSurfaceCreateFlagsKHR::default(),
10352             window: ::std::ptr::null_mut(),
10353         }
10354     }
10355 }
10356 impl AndroidSurfaceCreateInfoKHR {
builder<'a>() -> AndroidSurfaceCreateInfoKHRBuilder<'a>10357     pub fn builder<'a>() -> AndroidSurfaceCreateInfoKHRBuilder<'a> {
10358         AndroidSurfaceCreateInfoKHRBuilder {
10359             inner: Self::default(),
10360             marker: ::std::marker::PhantomData,
10361         }
10362     }
10363 }
10364 #[repr(transparent)]
10365 pub struct AndroidSurfaceCreateInfoKHRBuilder<'a> {
10366     inner: AndroidSurfaceCreateInfoKHR,
10367     marker: ::std::marker::PhantomData<&'a ()>,
10368 }
10369 impl<'a> ::std::ops::Deref for AndroidSurfaceCreateInfoKHRBuilder<'a> {
10370     type Target = AndroidSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10371     fn deref(&self) -> &Self::Target {
10372         &self.inner
10373     }
10374 }
10375 impl<'a> ::std::ops::DerefMut for AndroidSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10376     fn deref_mut(&mut self) -> &mut Self::Target {
10377         &mut self.inner
10378     }
10379 }
10380 impl<'a> AndroidSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: AndroidSurfaceCreateFlagsKHR) -> Self10381     pub fn flags(mut self, flags: AndroidSurfaceCreateFlagsKHR) -> Self {
10382         self.inner.flags = flags;
10383         self
10384     }
window(mut self, window: *mut ANativeWindow) -> Self10385     pub fn window(mut self, window: *mut ANativeWindow) -> Self {
10386         self.inner.window = window;
10387         self
10388     }
10389     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10390     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10391     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidSurfaceCreateInfoKHR10392     pub fn build(self) -> AndroidSurfaceCreateInfoKHR {
10393         self.inner
10394     }
10395 }
10396 #[repr(C)]
10397 #[cfg_attr(feature = "debug", derive(Debug))]
10398 #[derive(Copy, Clone)]
10399 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViSurfaceCreateInfoNN.html>"]
10400 pub struct ViSurfaceCreateInfoNN {
10401     pub s_type: StructureType,
10402     pub p_next: *const c_void,
10403     pub flags: ViSurfaceCreateFlagsNN,
10404     pub window: *mut c_void,
10405 }
10406 impl ::std::default::Default for ViSurfaceCreateInfoNN {
default() -> Self10407     fn default() -> Self {
10408         Self {
10409             s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
10410             p_next: ::std::ptr::null(),
10411             flags: ViSurfaceCreateFlagsNN::default(),
10412             window: ::std::ptr::null_mut(),
10413         }
10414     }
10415 }
10416 impl ViSurfaceCreateInfoNN {
builder<'a>() -> ViSurfaceCreateInfoNNBuilder<'a>10417     pub fn builder<'a>() -> ViSurfaceCreateInfoNNBuilder<'a> {
10418         ViSurfaceCreateInfoNNBuilder {
10419             inner: Self::default(),
10420             marker: ::std::marker::PhantomData,
10421         }
10422     }
10423 }
10424 #[repr(transparent)]
10425 pub struct ViSurfaceCreateInfoNNBuilder<'a> {
10426     inner: ViSurfaceCreateInfoNN,
10427     marker: ::std::marker::PhantomData<&'a ()>,
10428 }
10429 impl<'a> ::std::ops::Deref for ViSurfaceCreateInfoNNBuilder<'a> {
10430     type Target = ViSurfaceCreateInfoNN;
deref(&self) -> &Self::Target10431     fn deref(&self) -> &Self::Target {
10432         &self.inner
10433     }
10434 }
10435 impl<'a> ::std::ops::DerefMut for ViSurfaceCreateInfoNNBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10436     fn deref_mut(&mut self) -> &mut Self::Target {
10437         &mut self.inner
10438     }
10439 }
10440 impl<'a> ViSurfaceCreateInfoNNBuilder<'a> {
flags(mut self, flags: ViSurfaceCreateFlagsNN) -> Self10441     pub fn flags(mut self, flags: ViSurfaceCreateFlagsNN) -> Self {
10442         self.inner.flags = flags;
10443         self
10444     }
window(mut self, window: *mut c_void) -> Self10445     pub fn window(mut self, window: *mut c_void) -> Self {
10446         self.inner.window = window;
10447         self
10448     }
10449     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10450     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10451     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ViSurfaceCreateInfoNN10452     pub fn build(self) -> ViSurfaceCreateInfoNN {
10453         self.inner
10454     }
10455 }
10456 #[repr(C)]
10457 #[cfg_attr(feature = "debug", derive(Debug))]
10458 #[derive(Copy, Clone)]
10459 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWaylandSurfaceCreateInfoKHR.html>"]
10460 pub struct WaylandSurfaceCreateInfoKHR {
10461     pub s_type: StructureType,
10462     pub p_next: *const c_void,
10463     pub flags: WaylandSurfaceCreateFlagsKHR,
10464     pub display: *mut wl_display,
10465     pub surface: *mut wl_surface,
10466 }
10467 impl ::std::default::Default for WaylandSurfaceCreateInfoKHR {
default() -> Self10468     fn default() -> Self {
10469         Self {
10470             s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
10471             p_next: ::std::ptr::null(),
10472             flags: WaylandSurfaceCreateFlagsKHR::default(),
10473             display: ::std::ptr::null_mut(),
10474             surface: ::std::ptr::null_mut(),
10475         }
10476     }
10477 }
10478 impl WaylandSurfaceCreateInfoKHR {
builder<'a>() -> WaylandSurfaceCreateInfoKHRBuilder<'a>10479     pub fn builder<'a>() -> WaylandSurfaceCreateInfoKHRBuilder<'a> {
10480         WaylandSurfaceCreateInfoKHRBuilder {
10481             inner: Self::default(),
10482             marker: ::std::marker::PhantomData,
10483         }
10484     }
10485 }
10486 #[repr(transparent)]
10487 pub struct WaylandSurfaceCreateInfoKHRBuilder<'a> {
10488     inner: WaylandSurfaceCreateInfoKHR,
10489     marker: ::std::marker::PhantomData<&'a ()>,
10490 }
10491 impl<'a> ::std::ops::Deref for WaylandSurfaceCreateInfoKHRBuilder<'a> {
10492     type Target = WaylandSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10493     fn deref(&self) -> &Self::Target {
10494         &self.inner
10495     }
10496 }
10497 impl<'a> ::std::ops::DerefMut for WaylandSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10498     fn deref_mut(&mut self) -> &mut Self::Target {
10499         &mut self.inner
10500     }
10501 }
10502 impl<'a> WaylandSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: WaylandSurfaceCreateFlagsKHR) -> Self10503     pub fn flags(mut self, flags: WaylandSurfaceCreateFlagsKHR) -> Self {
10504         self.inner.flags = flags;
10505         self
10506     }
display(mut self, display: *mut wl_display) -> Self10507     pub fn display(mut self, display: *mut wl_display) -> Self {
10508         self.inner.display = display;
10509         self
10510     }
surface(mut self, surface: *mut wl_surface) -> Self10511     pub fn surface(mut self, surface: *mut wl_surface) -> Self {
10512         self.inner.surface = surface;
10513         self
10514     }
10515     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10516     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10517     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WaylandSurfaceCreateInfoKHR10518     pub fn build(self) -> WaylandSurfaceCreateInfoKHR {
10519         self.inner
10520     }
10521 }
10522 #[repr(C)]
10523 #[cfg_attr(feature = "debug", derive(Debug))]
10524 #[derive(Copy, Clone)]
10525 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32SurfaceCreateInfoKHR.html>"]
10526 pub struct Win32SurfaceCreateInfoKHR {
10527     pub s_type: StructureType,
10528     pub p_next: *const c_void,
10529     pub flags: Win32SurfaceCreateFlagsKHR,
10530     pub hinstance: HINSTANCE,
10531     pub hwnd: HWND,
10532 }
10533 impl ::std::default::Default for Win32SurfaceCreateInfoKHR {
default() -> Self10534     fn default() -> Self {
10535         Self {
10536             s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
10537             p_next: ::std::ptr::null(),
10538             flags: Win32SurfaceCreateFlagsKHR::default(),
10539             hinstance: unsafe { ::std::mem::zeroed() },
10540             hwnd: unsafe { ::std::mem::zeroed() },
10541         }
10542     }
10543 }
10544 impl Win32SurfaceCreateInfoKHR {
builder<'a>() -> Win32SurfaceCreateInfoKHRBuilder<'a>10545     pub fn builder<'a>() -> Win32SurfaceCreateInfoKHRBuilder<'a> {
10546         Win32SurfaceCreateInfoKHRBuilder {
10547             inner: Self::default(),
10548             marker: ::std::marker::PhantomData,
10549         }
10550     }
10551 }
10552 #[repr(transparent)]
10553 pub struct Win32SurfaceCreateInfoKHRBuilder<'a> {
10554     inner: Win32SurfaceCreateInfoKHR,
10555     marker: ::std::marker::PhantomData<&'a ()>,
10556 }
10557 impl<'a> ::std::ops::Deref for Win32SurfaceCreateInfoKHRBuilder<'a> {
10558     type Target = Win32SurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10559     fn deref(&self) -> &Self::Target {
10560         &self.inner
10561     }
10562 }
10563 impl<'a> ::std::ops::DerefMut for Win32SurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10564     fn deref_mut(&mut self) -> &mut Self::Target {
10565         &mut self.inner
10566     }
10567 }
10568 impl<'a> Win32SurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: Win32SurfaceCreateFlagsKHR) -> Self10569     pub fn flags(mut self, flags: Win32SurfaceCreateFlagsKHR) -> Self {
10570         self.inner.flags = flags;
10571         self
10572     }
hinstance(mut self, hinstance: HINSTANCE) -> Self10573     pub fn hinstance(mut self, hinstance: HINSTANCE) -> Self {
10574         self.inner.hinstance = hinstance;
10575         self
10576     }
hwnd(mut self, hwnd: HWND) -> Self10577     pub fn hwnd(mut self, hwnd: HWND) -> Self {
10578         self.inner.hwnd = hwnd;
10579         self
10580     }
10581     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10582     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10583     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Win32SurfaceCreateInfoKHR10584     pub fn build(self) -> Win32SurfaceCreateInfoKHR {
10585         self.inner
10586     }
10587 }
10588 #[repr(C)]
10589 #[cfg_attr(feature = "debug", derive(Debug))]
10590 #[derive(Copy, Clone)]
10591 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXlibSurfaceCreateInfoKHR.html>"]
10592 pub struct XlibSurfaceCreateInfoKHR {
10593     pub s_type: StructureType,
10594     pub p_next: *const c_void,
10595     pub flags: XlibSurfaceCreateFlagsKHR,
10596     pub dpy: *mut Display,
10597     pub window: Window,
10598 }
10599 impl ::std::default::Default for XlibSurfaceCreateInfoKHR {
default() -> Self10600     fn default() -> Self {
10601         Self {
10602             s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
10603             p_next: ::std::ptr::null(),
10604             flags: XlibSurfaceCreateFlagsKHR::default(),
10605             dpy: ::std::ptr::null_mut(),
10606             window: Window::default(),
10607         }
10608     }
10609 }
10610 impl XlibSurfaceCreateInfoKHR {
builder<'a>() -> XlibSurfaceCreateInfoKHRBuilder<'a>10611     pub fn builder<'a>() -> XlibSurfaceCreateInfoKHRBuilder<'a> {
10612         XlibSurfaceCreateInfoKHRBuilder {
10613             inner: Self::default(),
10614             marker: ::std::marker::PhantomData,
10615         }
10616     }
10617 }
10618 #[repr(transparent)]
10619 pub struct XlibSurfaceCreateInfoKHRBuilder<'a> {
10620     inner: XlibSurfaceCreateInfoKHR,
10621     marker: ::std::marker::PhantomData<&'a ()>,
10622 }
10623 impl<'a> ::std::ops::Deref for XlibSurfaceCreateInfoKHRBuilder<'a> {
10624     type Target = XlibSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10625     fn deref(&self) -> &Self::Target {
10626         &self.inner
10627     }
10628 }
10629 impl<'a> ::std::ops::DerefMut for XlibSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10630     fn deref_mut(&mut self) -> &mut Self::Target {
10631         &mut self.inner
10632     }
10633 }
10634 impl<'a> XlibSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: XlibSurfaceCreateFlagsKHR) -> Self10635     pub fn flags(mut self, flags: XlibSurfaceCreateFlagsKHR) -> Self {
10636         self.inner.flags = flags;
10637         self
10638     }
dpy(mut self, dpy: *mut Display) -> Self10639     pub fn dpy(mut self, dpy: *mut Display) -> Self {
10640         self.inner.dpy = dpy;
10641         self
10642     }
window(mut self, window: Window) -> Self10643     pub fn window(mut self, window: Window) -> Self {
10644         self.inner.window = window;
10645         self
10646     }
10647     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10648     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10649     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> XlibSurfaceCreateInfoKHR10650     pub fn build(self) -> XlibSurfaceCreateInfoKHR {
10651         self.inner
10652     }
10653 }
10654 #[repr(C)]
10655 #[cfg_attr(feature = "debug", derive(Debug))]
10656 #[derive(Copy, Clone)]
10657 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXcbSurfaceCreateInfoKHR.html>"]
10658 pub struct XcbSurfaceCreateInfoKHR {
10659     pub s_type: StructureType,
10660     pub p_next: *const c_void,
10661     pub flags: XcbSurfaceCreateFlagsKHR,
10662     pub connection: *mut xcb_connection_t,
10663     pub window: xcb_window_t,
10664 }
10665 impl ::std::default::Default for XcbSurfaceCreateInfoKHR {
default() -> Self10666     fn default() -> Self {
10667         Self {
10668             s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
10669             p_next: ::std::ptr::null(),
10670             flags: XcbSurfaceCreateFlagsKHR::default(),
10671             connection: ::std::ptr::null_mut(),
10672             window: xcb_window_t::default(),
10673         }
10674     }
10675 }
10676 impl XcbSurfaceCreateInfoKHR {
builder<'a>() -> XcbSurfaceCreateInfoKHRBuilder<'a>10677     pub fn builder<'a>() -> XcbSurfaceCreateInfoKHRBuilder<'a> {
10678         XcbSurfaceCreateInfoKHRBuilder {
10679             inner: Self::default(),
10680             marker: ::std::marker::PhantomData,
10681         }
10682     }
10683 }
10684 #[repr(transparent)]
10685 pub struct XcbSurfaceCreateInfoKHRBuilder<'a> {
10686     inner: XcbSurfaceCreateInfoKHR,
10687     marker: ::std::marker::PhantomData<&'a ()>,
10688 }
10689 impl<'a> ::std::ops::Deref for XcbSurfaceCreateInfoKHRBuilder<'a> {
10690     type Target = XcbSurfaceCreateInfoKHR;
deref(&self) -> &Self::Target10691     fn deref(&self) -> &Self::Target {
10692         &self.inner
10693     }
10694 }
10695 impl<'a> ::std::ops::DerefMut for XcbSurfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10696     fn deref_mut(&mut self) -> &mut Self::Target {
10697         &mut self.inner
10698     }
10699 }
10700 impl<'a> XcbSurfaceCreateInfoKHRBuilder<'a> {
flags(mut self, flags: XcbSurfaceCreateFlagsKHR) -> Self10701     pub fn flags(mut self, flags: XcbSurfaceCreateFlagsKHR) -> Self {
10702         self.inner.flags = flags;
10703         self
10704     }
connection(mut self, connection: *mut xcb_connection_t) -> Self10705     pub fn connection(mut self, connection: *mut xcb_connection_t) -> Self {
10706         self.inner.connection = connection;
10707         self
10708     }
window(mut self, window: xcb_window_t) -> Self10709     pub fn window(mut self, window: xcb_window_t) -> Self {
10710         self.inner.window = window;
10711         self
10712     }
10713     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10714     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10715     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> XcbSurfaceCreateInfoKHR10716     pub fn build(self) -> XcbSurfaceCreateInfoKHR {
10717         self.inner
10718     }
10719 }
10720 #[repr(C)]
10721 #[cfg_attr(feature = "debug", derive(Debug))]
10722 #[derive(Copy, Clone)]
10723 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDirectFBSurfaceCreateInfoEXT.html>"]
10724 pub struct DirectFBSurfaceCreateInfoEXT {
10725     pub s_type: StructureType,
10726     pub p_next: *const c_void,
10727     pub flags: DirectFBSurfaceCreateFlagsEXT,
10728     pub dfb: *mut IDirectFB,
10729     pub surface: *mut IDirectFBSurface,
10730 }
10731 impl ::std::default::Default for DirectFBSurfaceCreateInfoEXT {
default() -> Self10732     fn default() -> Self {
10733         Self {
10734             s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
10735             p_next: ::std::ptr::null(),
10736             flags: DirectFBSurfaceCreateFlagsEXT::default(),
10737             dfb: ::std::ptr::null_mut(),
10738             surface: ::std::ptr::null_mut(),
10739         }
10740     }
10741 }
10742 impl DirectFBSurfaceCreateInfoEXT {
builder<'a>() -> DirectFBSurfaceCreateInfoEXTBuilder<'a>10743     pub fn builder<'a>() -> DirectFBSurfaceCreateInfoEXTBuilder<'a> {
10744         DirectFBSurfaceCreateInfoEXTBuilder {
10745             inner: Self::default(),
10746             marker: ::std::marker::PhantomData,
10747         }
10748     }
10749 }
10750 #[repr(transparent)]
10751 pub struct DirectFBSurfaceCreateInfoEXTBuilder<'a> {
10752     inner: DirectFBSurfaceCreateInfoEXT,
10753     marker: ::std::marker::PhantomData<&'a ()>,
10754 }
10755 impl<'a> ::std::ops::Deref for DirectFBSurfaceCreateInfoEXTBuilder<'a> {
10756     type Target = DirectFBSurfaceCreateInfoEXT;
deref(&self) -> &Self::Target10757     fn deref(&self) -> &Self::Target {
10758         &self.inner
10759     }
10760 }
10761 impl<'a> ::std::ops::DerefMut for DirectFBSurfaceCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10762     fn deref_mut(&mut self) -> &mut Self::Target {
10763         &mut self.inner
10764     }
10765 }
10766 impl<'a> DirectFBSurfaceCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DirectFBSurfaceCreateFlagsEXT) -> Self10767     pub fn flags(mut self, flags: DirectFBSurfaceCreateFlagsEXT) -> Self {
10768         self.inner.flags = flags;
10769         self
10770     }
dfb(mut self, dfb: *mut IDirectFB) -> Self10771     pub fn dfb(mut self, dfb: *mut IDirectFB) -> Self {
10772         self.inner.dfb = dfb;
10773         self
10774     }
surface(mut self, surface: *mut IDirectFBSurface) -> Self10775     pub fn surface(mut self, surface: *mut IDirectFBSurface) -> Self {
10776         self.inner.surface = surface;
10777         self
10778     }
10779     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10780     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10781     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DirectFBSurfaceCreateInfoEXT10782     pub fn build(self) -> DirectFBSurfaceCreateInfoEXT {
10783         self.inner
10784     }
10785 }
10786 #[repr(C)]
10787 #[cfg_attr(feature = "debug", derive(Debug))]
10788 #[derive(Copy, Clone)]
10789 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>"]
10790 pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
10791     pub s_type: StructureType,
10792     pub p_next: *const c_void,
10793     pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
10794     pub image_pipe_handle: zx_handle_t,
10795 }
10796 impl ::std::default::Default for ImagePipeSurfaceCreateInfoFUCHSIA {
default() -> Self10797     fn default() -> Self {
10798         Self {
10799             s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
10800             p_next: ::std::ptr::null(),
10801             flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
10802             image_pipe_handle: zx_handle_t::default(),
10803         }
10804     }
10805 }
10806 impl ImagePipeSurfaceCreateInfoFUCHSIA {
builder<'a>() -> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a>10807     pub fn builder<'a>() -> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
10808         ImagePipeSurfaceCreateInfoFUCHSIABuilder {
10809             inner: Self::default(),
10810             marker: ::std::marker::PhantomData,
10811         }
10812     }
10813 }
10814 #[repr(transparent)]
10815 pub struct ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
10816     inner: ImagePipeSurfaceCreateInfoFUCHSIA,
10817     marker: ::std::marker::PhantomData<&'a ()>,
10818 }
10819 impl<'a> ::std::ops::Deref for ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
10820     type Target = ImagePipeSurfaceCreateInfoFUCHSIA;
deref(&self) -> &Self::Target10821     fn deref(&self) -> &Self::Target {
10822         &self.inner
10823     }
10824 }
10825 impl<'a> ::std::ops::DerefMut for ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10826     fn deref_mut(&mut self) -> &mut Self::Target {
10827         &mut self.inner
10828     }
10829 }
10830 impl<'a> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> {
flags(mut self, flags: ImagePipeSurfaceCreateFlagsFUCHSIA) -> Self10831     pub fn flags(mut self, flags: ImagePipeSurfaceCreateFlagsFUCHSIA) -> Self {
10832         self.inner.flags = flags;
10833         self
10834     }
image_pipe_handle(mut self, image_pipe_handle: zx_handle_t) -> Self10835     pub fn image_pipe_handle(mut self, image_pipe_handle: zx_handle_t) -> Self {
10836         self.inner.image_pipe_handle = image_pipe_handle;
10837         self
10838     }
10839     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10840     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10841     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImagePipeSurfaceCreateInfoFUCHSIA10842     pub fn build(self) -> ImagePipeSurfaceCreateInfoFUCHSIA {
10843         self.inner
10844     }
10845 }
10846 #[repr(C)]
10847 #[cfg_attr(feature = "debug", derive(Debug))]
10848 #[derive(Copy, Clone)]
10849 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>"]
10850 pub struct StreamDescriptorSurfaceCreateInfoGGP {
10851     pub s_type: StructureType,
10852     pub p_next: *const c_void,
10853     pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
10854     pub stream_descriptor: GgpStreamDescriptor,
10855 }
10856 impl ::std::default::Default for StreamDescriptorSurfaceCreateInfoGGP {
default() -> Self10857     fn default() -> Self {
10858         Self {
10859             s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
10860             p_next: ::std::ptr::null(),
10861             flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
10862             stream_descriptor: GgpStreamDescriptor::default(),
10863         }
10864     }
10865 }
10866 impl StreamDescriptorSurfaceCreateInfoGGP {
builder<'a>() -> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a>10867     pub fn builder<'a>() -> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
10868         StreamDescriptorSurfaceCreateInfoGGPBuilder {
10869             inner: Self::default(),
10870             marker: ::std::marker::PhantomData,
10871         }
10872     }
10873 }
10874 #[repr(transparent)]
10875 pub struct StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
10876     inner: StreamDescriptorSurfaceCreateInfoGGP,
10877     marker: ::std::marker::PhantomData<&'a ()>,
10878 }
10879 impl<'a> ::std::ops::Deref for StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
10880     type Target = StreamDescriptorSurfaceCreateInfoGGP;
deref(&self) -> &Self::Target10881     fn deref(&self) -> &Self::Target {
10882         &self.inner
10883     }
10884 }
10885 impl<'a> ::std::ops::DerefMut for StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10886     fn deref_mut(&mut self) -> &mut Self::Target {
10887         &mut self.inner
10888     }
10889 }
10890 impl<'a> StreamDescriptorSurfaceCreateInfoGGPBuilder<'a> {
flags(mut self, flags: StreamDescriptorSurfaceCreateFlagsGGP) -> Self10891     pub fn flags(mut self, flags: StreamDescriptorSurfaceCreateFlagsGGP) -> Self {
10892         self.inner.flags = flags;
10893         self
10894     }
stream_descriptor(mut self, stream_descriptor: GgpStreamDescriptor) -> Self10895     pub fn stream_descriptor(mut self, stream_descriptor: GgpStreamDescriptor) -> Self {
10896         self.inner.stream_descriptor = stream_descriptor;
10897         self
10898     }
10899     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10900     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10901     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> StreamDescriptorSurfaceCreateInfoGGP10902     pub fn build(self) -> StreamDescriptorSurfaceCreateInfoGGP {
10903         self.inner
10904     }
10905 }
10906 #[repr(C)]
10907 #[cfg_attr(feature = "debug", derive(Debug))]
10908 #[derive(Copy, Clone)]
10909 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkScreenSurfaceCreateInfoQNX.html>"]
10910 pub struct ScreenSurfaceCreateInfoQNX {
10911     pub s_type: StructureType,
10912     pub p_next: *const c_void,
10913     pub flags: ScreenSurfaceCreateFlagsQNX,
10914     pub context: *mut _screen_context,
10915     pub window: *mut _screen_window,
10916 }
10917 impl ::std::default::Default for ScreenSurfaceCreateInfoQNX {
default() -> Self10918     fn default() -> Self {
10919         Self {
10920             s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
10921             p_next: ::std::ptr::null(),
10922             flags: ScreenSurfaceCreateFlagsQNX::default(),
10923             context: ::std::ptr::null_mut(),
10924             window: ::std::ptr::null_mut(),
10925         }
10926     }
10927 }
10928 impl ScreenSurfaceCreateInfoQNX {
builder<'a>() -> ScreenSurfaceCreateInfoQNXBuilder<'a>10929     pub fn builder<'a>() -> ScreenSurfaceCreateInfoQNXBuilder<'a> {
10930         ScreenSurfaceCreateInfoQNXBuilder {
10931             inner: Self::default(),
10932             marker: ::std::marker::PhantomData,
10933         }
10934     }
10935 }
10936 #[repr(transparent)]
10937 pub struct ScreenSurfaceCreateInfoQNXBuilder<'a> {
10938     inner: ScreenSurfaceCreateInfoQNX,
10939     marker: ::std::marker::PhantomData<&'a ()>,
10940 }
10941 impl<'a> ::std::ops::Deref for ScreenSurfaceCreateInfoQNXBuilder<'a> {
10942     type Target = ScreenSurfaceCreateInfoQNX;
deref(&self) -> &Self::Target10943     fn deref(&self) -> &Self::Target {
10944         &self.inner
10945     }
10946 }
10947 impl<'a> ::std::ops::DerefMut for ScreenSurfaceCreateInfoQNXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target10948     fn deref_mut(&mut self) -> &mut Self::Target {
10949         &mut self.inner
10950     }
10951 }
10952 impl<'a> ScreenSurfaceCreateInfoQNXBuilder<'a> {
flags(mut self, flags: ScreenSurfaceCreateFlagsQNX) -> Self10953     pub fn flags(mut self, flags: ScreenSurfaceCreateFlagsQNX) -> Self {
10954         self.inner.flags = flags;
10955         self
10956     }
context(mut self, context: &'a mut _screen_context) -> Self10957     pub fn context(mut self, context: &'a mut _screen_context) -> Self {
10958         self.inner.context = context;
10959         self
10960     }
window(mut self, window: &'a mut _screen_window) -> Self10961     pub fn window(mut self, window: &'a mut _screen_window) -> Self {
10962         self.inner.window = window;
10963         self
10964     }
10965     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
10966     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
10967     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ScreenSurfaceCreateInfoQNX10968     pub fn build(self) -> ScreenSurfaceCreateInfoQNX {
10969         self.inner
10970     }
10971 }
10972 #[repr(C)]
10973 #[cfg_attr(feature = "debug", derive(Debug))]
10974 #[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
10975 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFormatKHR.html>"]
10976 pub struct SurfaceFormatKHR {
10977     pub format: Format,
10978     pub color_space: ColorSpaceKHR,
10979 }
10980 impl SurfaceFormatKHR {
builder<'a>() -> SurfaceFormatKHRBuilder<'a>10981     pub fn builder<'a>() -> SurfaceFormatKHRBuilder<'a> {
10982         SurfaceFormatKHRBuilder {
10983             inner: Self::default(),
10984             marker: ::std::marker::PhantomData,
10985         }
10986     }
10987 }
10988 #[repr(transparent)]
10989 pub struct SurfaceFormatKHRBuilder<'a> {
10990     inner: SurfaceFormatKHR,
10991     marker: ::std::marker::PhantomData<&'a ()>,
10992 }
10993 impl<'a> ::std::ops::Deref for SurfaceFormatKHRBuilder<'a> {
10994     type Target = SurfaceFormatKHR;
deref(&self) -> &Self::Target10995     fn deref(&self) -> &Self::Target {
10996         &self.inner
10997     }
10998 }
10999 impl<'a> ::std::ops::DerefMut for SurfaceFormatKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11000     fn deref_mut(&mut self) -> &mut Self::Target {
11001         &mut self.inner
11002     }
11003 }
11004 impl<'a> SurfaceFormatKHRBuilder<'a> {
format(mut self, format: Format) -> Self11005     pub fn format(mut self, format: Format) -> Self {
11006         self.inner.format = format;
11007         self
11008     }
color_space(mut self, color_space: ColorSpaceKHR) -> Self11009     pub fn color_space(mut self, color_space: ColorSpaceKHR) -> Self {
11010         self.inner.color_space = color_space;
11011         self
11012     }
11013     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11014     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11015     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFormatKHR11016     pub fn build(self) -> SurfaceFormatKHR {
11017         self.inner
11018     }
11019 }
11020 #[repr(C)]
11021 #[cfg_attr(feature = "debug", derive(Debug))]
11022 #[derive(Copy, Clone)]
11023 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainCreateInfoKHR.html>"]
11024 pub struct SwapchainCreateInfoKHR {
11025     pub s_type: StructureType,
11026     pub p_next: *const c_void,
11027     pub flags: SwapchainCreateFlagsKHR,
11028     pub surface: SurfaceKHR,
11029     pub min_image_count: u32,
11030     pub image_format: Format,
11031     pub image_color_space: ColorSpaceKHR,
11032     pub image_extent: Extent2D,
11033     pub image_array_layers: u32,
11034     pub image_usage: ImageUsageFlags,
11035     pub image_sharing_mode: SharingMode,
11036     pub queue_family_index_count: u32,
11037     pub p_queue_family_indices: *const u32,
11038     pub pre_transform: SurfaceTransformFlagsKHR,
11039     pub composite_alpha: CompositeAlphaFlagsKHR,
11040     pub present_mode: PresentModeKHR,
11041     pub clipped: Bool32,
11042     pub old_swapchain: SwapchainKHR,
11043 }
11044 impl ::std::default::Default for SwapchainCreateInfoKHR {
default() -> Self11045     fn default() -> Self {
11046         Self {
11047             s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
11048             p_next: ::std::ptr::null(),
11049             flags: SwapchainCreateFlagsKHR::default(),
11050             surface: SurfaceKHR::default(),
11051             min_image_count: u32::default(),
11052             image_format: Format::default(),
11053             image_color_space: ColorSpaceKHR::default(),
11054             image_extent: Extent2D::default(),
11055             image_array_layers: u32::default(),
11056             image_usage: ImageUsageFlags::default(),
11057             image_sharing_mode: SharingMode::default(),
11058             queue_family_index_count: u32::default(),
11059             p_queue_family_indices: ::std::ptr::null(),
11060             pre_transform: SurfaceTransformFlagsKHR::default(),
11061             composite_alpha: CompositeAlphaFlagsKHR::default(),
11062             present_mode: PresentModeKHR::default(),
11063             clipped: Bool32::default(),
11064             old_swapchain: SwapchainKHR::default(),
11065         }
11066     }
11067 }
11068 impl SwapchainCreateInfoKHR {
builder<'a>() -> SwapchainCreateInfoKHRBuilder<'a>11069     pub fn builder<'a>() -> SwapchainCreateInfoKHRBuilder<'a> {
11070         SwapchainCreateInfoKHRBuilder {
11071             inner: Self::default(),
11072             marker: ::std::marker::PhantomData,
11073         }
11074     }
11075 }
11076 #[repr(transparent)]
11077 pub struct SwapchainCreateInfoKHRBuilder<'a> {
11078     inner: SwapchainCreateInfoKHR,
11079     marker: ::std::marker::PhantomData<&'a ()>,
11080 }
11081 pub unsafe trait ExtendsSwapchainCreateInfoKHR {}
11082 impl<'a> ::std::ops::Deref for SwapchainCreateInfoKHRBuilder<'a> {
11083     type Target = SwapchainCreateInfoKHR;
deref(&self) -> &Self::Target11084     fn deref(&self) -> &Self::Target {
11085         &self.inner
11086     }
11087 }
11088 impl<'a> ::std::ops::DerefMut for SwapchainCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11089     fn deref_mut(&mut self) -> &mut Self::Target {
11090         &mut self.inner
11091     }
11092 }
11093 impl<'a> SwapchainCreateInfoKHRBuilder<'a> {
flags(mut self, flags: SwapchainCreateFlagsKHR) -> Self11094     pub fn flags(mut self, flags: SwapchainCreateFlagsKHR) -> Self {
11095         self.inner.flags = flags;
11096         self
11097     }
surface(mut self, surface: SurfaceKHR) -> Self11098     pub fn surface(mut self, surface: SurfaceKHR) -> Self {
11099         self.inner.surface = surface;
11100         self
11101     }
min_image_count(mut self, min_image_count: u32) -> Self11102     pub fn min_image_count(mut self, min_image_count: u32) -> Self {
11103         self.inner.min_image_count = min_image_count;
11104         self
11105     }
image_format(mut self, image_format: Format) -> Self11106     pub fn image_format(mut self, image_format: Format) -> Self {
11107         self.inner.image_format = image_format;
11108         self
11109     }
image_color_space(mut self, image_color_space: ColorSpaceKHR) -> Self11110     pub fn image_color_space(mut self, image_color_space: ColorSpaceKHR) -> Self {
11111         self.inner.image_color_space = image_color_space;
11112         self
11113     }
image_extent(mut self, image_extent: Extent2D) -> Self11114     pub fn image_extent(mut self, image_extent: Extent2D) -> Self {
11115         self.inner.image_extent = image_extent;
11116         self
11117     }
image_array_layers(mut self, image_array_layers: u32) -> Self11118     pub fn image_array_layers(mut self, image_array_layers: u32) -> Self {
11119         self.inner.image_array_layers = image_array_layers;
11120         self
11121     }
image_usage(mut self, image_usage: ImageUsageFlags) -> Self11122     pub fn image_usage(mut self, image_usage: ImageUsageFlags) -> Self {
11123         self.inner.image_usage = image_usage;
11124         self
11125     }
image_sharing_mode(mut self, image_sharing_mode: SharingMode) -> Self11126     pub fn image_sharing_mode(mut self, image_sharing_mode: SharingMode) -> Self {
11127         self.inner.image_sharing_mode = image_sharing_mode;
11128         self
11129     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self11130     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
11131         self.inner.queue_family_index_count = queue_family_indices.len() as _;
11132         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
11133         self
11134     }
pre_transform(mut self, pre_transform: SurfaceTransformFlagsKHR) -> Self11135     pub fn pre_transform(mut self, pre_transform: SurfaceTransformFlagsKHR) -> Self {
11136         self.inner.pre_transform = pre_transform;
11137         self
11138     }
composite_alpha(mut self, composite_alpha: CompositeAlphaFlagsKHR) -> Self11139     pub fn composite_alpha(mut self, composite_alpha: CompositeAlphaFlagsKHR) -> Self {
11140         self.inner.composite_alpha = composite_alpha;
11141         self
11142     }
present_mode(mut self, present_mode: PresentModeKHR) -> Self11143     pub fn present_mode(mut self, present_mode: PresentModeKHR) -> Self {
11144         self.inner.present_mode = present_mode;
11145         self
11146     }
clipped(mut self, clipped: bool) -> Self11147     pub fn clipped(mut self, clipped: bool) -> Self {
11148         self.inner.clipped = clipped.into();
11149         self
11150     }
old_swapchain(mut self, old_swapchain: SwapchainKHR) -> Self11151     pub fn old_swapchain(mut self, old_swapchain: SwapchainKHR) -> Self {
11152         self.inner.old_swapchain = old_swapchain;
11153         self
11154     }
11155     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
11156     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
11157     #[doc = r" valid extension structs can be pushed into the chain."]
11158     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
11159     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSwapchainCreateInfoKHR>(mut self, next: &'a mut T) -> Self11160     pub fn push_next<T: ExtendsSwapchainCreateInfoKHR>(mut self, next: &'a mut T) -> Self {
11161         unsafe {
11162             let next_ptr = next as *mut T as *mut BaseOutStructure;
11163             let last_next = ptr_chain_iter(next).last().unwrap();
11164             (*last_next).p_next = self.inner.p_next as _;
11165             self.inner.p_next = next_ptr as _;
11166         }
11167         self
11168     }
11169     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11170     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11171     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainCreateInfoKHR11172     pub fn build(self) -> SwapchainCreateInfoKHR {
11173         self.inner
11174     }
11175 }
11176 #[repr(C)]
11177 #[cfg_attr(feature = "debug", derive(Debug))]
11178 #[derive(Copy, Clone)]
11179 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentInfoKHR.html>"]
11180 pub struct PresentInfoKHR {
11181     pub s_type: StructureType,
11182     pub p_next: *const c_void,
11183     pub wait_semaphore_count: u32,
11184     pub p_wait_semaphores: *const Semaphore,
11185     pub swapchain_count: u32,
11186     pub p_swapchains: *const SwapchainKHR,
11187     pub p_image_indices: *const u32,
11188     pub p_results: *mut Result,
11189 }
11190 impl ::std::default::Default for PresentInfoKHR {
default() -> Self11191     fn default() -> Self {
11192         Self {
11193             s_type: StructureType::PRESENT_INFO_KHR,
11194             p_next: ::std::ptr::null(),
11195             wait_semaphore_count: u32::default(),
11196             p_wait_semaphores: ::std::ptr::null(),
11197             swapchain_count: u32::default(),
11198             p_swapchains: ::std::ptr::null(),
11199             p_image_indices: ::std::ptr::null(),
11200             p_results: ::std::ptr::null_mut(),
11201         }
11202     }
11203 }
11204 impl PresentInfoKHR {
builder<'a>() -> PresentInfoKHRBuilder<'a>11205     pub fn builder<'a>() -> PresentInfoKHRBuilder<'a> {
11206         PresentInfoKHRBuilder {
11207             inner: Self::default(),
11208             marker: ::std::marker::PhantomData,
11209         }
11210     }
11211 }
11212 #[repr(transparent)]
11213 pub struct PresentInfoKHRBuilder<'a> {
11214     inner: PresentInfoKHR,
11215     marker: ::std::marker::PhantomData<&'a ()>,
11216 }
11217 pub unsafe trait ExtendsPresentInfoKHR {}
11218 impl<'a> ::std::ops::Deref for PresentInfoKHRBuilder<'a> {
11219     type Target = PresentInfoKHR;
deref(&self) -> &Self::Target11220     fn deref(&self) -> &Self::Target {
11221         &self.inner
11222     }
11223 }
11224 impl<'a> ::std::ops::DerefMut for PresentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11225     fn deref_mut(&mut self) -> &mut Self::Target {
11226         &mut self.inner
11227     }
11228 }
11229 impl<'a> PresentInfoKHRBuilder<'a> {
wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self11230     pub fn wait_semaphores(mut self, wait_semaphores: &'a [Semaphore]) -> Self {
11231         self.inner.wait_semaphore_count = wait_semaphores.len() as _;
11232         self.inner.p_wait_semaphores = wait_semaphores.as_ptr();
11233         self
11234     }
swapchains(mut self, swapchains: &'a [SwapchainKHR]) -> Self11235     pub fn swapchains(mut self, swapchains: &'a [SwapchainKHR]) -> Self {
11236         self.inner.swapchain_count = swapchains.len() as _;
11237         self.inner.p_swapchains = swapchains.as_ptr();
11238         self
11239     }
image_indices(mut self, image_indices: &'a [u32]) -> Self11240     pub fn image_indices(mut self, image_indices: &'a [u32]) -> Self {
11241         self.inner.swapchain_count = image_indices.len() as _;
11242         self.inner.p_image_indices = image_indices.as_ptr();
11243         self
11244     }
results(mut self, results: &'a mut [Result]) -> Self11245     pub fn results(mut self, results: &'a mut [Result]) -> Self {
11246         self.inner.swapchain_count = results.len() as _;
11247         self.inner.p_results = results.as_mut_ptr();
11248         self
11249     }
11250     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
11251     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
11252     #[doc = r" valid extension structs can be pushed into the chain."]
11253     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
11254     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPresentInfoKHR>(mut self, next: &'a mut T) -> Self11255     pub fn push_next<T: ExtendsPresentInfoKHR>(mut self, next: &'a mut T) -> Self {
11256         unsafe {
11257             let next_ptr = next as *mut T as *mut BaseOutStructure;
11258             let last_next = ptr_chain_iter(next).last().unwrap();
11259             (*last_next).p_next = self.inner.p_next as _;
11260             self.inner.p_next = next_ptr as _;
11261         }
11262         self
11263     }
11264     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11265     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11266     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentInfoKHR11267     pub fn build(self) -> PresentInfoKHR {
11268         self.inner
11269     }
11270 }
11271 #[repr(C)]
11272 #[derive(Copy, Clone)]
11273 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugReportCallbackCreateInfoEXT.html>"]
11274 pub struct DebugReportCallbackCreateInfoEXT {
11275     pub s_type: StructureType,
11276     pub p_next: *const c_void,
11277     pub flags: DebugReportFlagsEXT,
11278     pub pfn_callback: PFN_vkDebugReportCallbackEXT,
11279     pub p_user_data: *mut c_void,
11280 }
11281 #[cfg(feature = "debug")]
11282 impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result11283     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
11284         fmt.debug_struct("DebugReportCallbackCreateInfoEXT")
11285             .field("s_type", &self.s_type)
11286             .field("p_next", &self.p_next)
11287             .field("flags", &self.flags)
11288             .field("pfn_callback", &(self.pfn_callback.map(|x| x as *const ())))
11289             .field("p_user_data", &self.p_user_data)
11290             .finish()
11291     }
11292 }
11293 impl ::std::default::Default for DebugReportCallbackCreateInfoEXT {
default() -> Self11294     fn default() -> Self {
11295         Self {
11296             s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
11297             p_next: ::std::ptr::null(),
11298             flags: DebugReportFlagsEXT::default(),
11299             pfn_callback: PFN_vkDebugReportCallbackEXT::default(),
11300             p_user_data: ::std::ptr::null_mut(),
11301         }
11302     }
11303 }
11304 impl DebugReportCallbackCreateInfoEXT {
builder<'a>() -> DebugReportCallbackCreateInfoEXTBuilder<'a>11305     pub fn builder<'a>() -> DebugReportCallbackCreateInfoEXTBuilder<'a> {
11306         DebugReportCallbackCreateInfoEXTBuilder {
11307             inner: Self::default(),
11308             marker: ::std::marker::PhantomData,
11309         }
11310     }
11311 }
11312 #[repr(transparent)]
11313 pub struct DebugReportCallbackCreateInfoEXTBuilder<'a> {
11314     inner: DebugReportCallbackCreateInfoEXT,
11315     marker: ::std::marker::PhantomData<&'a ()>,
11316 }
11317 unsafe impl ExtendsInstanceCreateInfo for DebugReportCallbackCreateInfoEXTBuilder<'_> {}
11318 unsafe impl ExtendsInstanceCreateInfo for DebugReportCallbackCreateInfoEXT {}
11319 impl<'a> ::std::ops::Deref for DebugReportCallbackCreateInfoEXTBuilder<'a> {
11320     type Target = DebugReportCallbackCreateInfoEXT;
deref(&self) -> &Self::Target11321     fn deref(&self) -> &Self::Target {
11322         &self.inner
11323     }
11324 }
11325 impl<'a> ::std::ops::DerefMut for DebugReportCallbackCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11326     fn deref_mut(&mut self) -> &mut Self::Target {
11327         &mut self.inner
11328     }
11329 }
11330 impl<'a> DebugReportCallbackCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DebugReportFlagsEXT) -> Self11331     pub fn flags(mut self, flags: DebugReportFlagsEXT) -> Self {
11332         self.inner.flags = flags;
11333         self
11334     }
pfn_callback(mut self, pfn_callback: PFN_vkDebugReportCallbackEXT) -> Self11335     pub fn pfn_callback(mut self, pfn_callback: PFN_vkDebugReportCallbackEXT) -> Self {
11336         self.inner.pfn_callback = pfn_callback;
11337         self
11338     }
user_data(mut self, user_data: *mut c_void) -> Self11339     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
11340         self.inner.p_user_data = user_data;
11341         self
11342     }
11343     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11344     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11345     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugReportCallbackCreateInfoEXT11346     pub fn build(self) -> DebugReportCallbackCreateInfoEXT {
11347         self.inner
11348     }
11349 }
11350 #[repr(C)]
11351 #[cfg_attr(feature = "debug", derive(Debug))]
11352 #[derive(Copy, Clone)]
11353 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationFlagsEXT.html>"]
11354 pub struct ValidationFlagsEXT {
11355     pub s_type: StructureType,
11356     pub p_next: *const c_void,
11357     pub disabled_validation_check_count: u32,
11358     pub p_disabled_validation_checks: *const ValidationCheckEXT,
11359 }
11360 impl ::std::default::Default for ValidationFlagsEXT {
default() -> Self11361     fn default() -> Self {
11362         Self {
11363             s_type: StructureType::VALIDATION_FLAGS_EXT,
11364             p_next: ::std::ptr::null(),
11365             disabled_validation_check_count: u32::default(),
11366             p_disabled_validation_checks: ::std::ptr::null(),
11367         }
11368     }
11369 }
11370 impl ValidationFlagsEXT {
builder<'a>() -> ValidationFlagsEXTBuilder<'a>11371     pub fn builder<'a>() -> ValidationFlagsEXTBuilder<'a> {
11372         ValidationFlagsEXTBuilder {
11373             inner: Self::default(),
11374             marker: ::std::marker::PhantomData,
11375         }
11376     }
11377 }
11378 #[repr(transparent)]
11379 pub struct ValidationFlagsEXTBuilder<'a> {
11380     inner: ValidationFlagsEXT,
11381     marker: ::std::marker::PhantomData<&'a ()>,
11382 }
11383 unsafe impl ExtendsInstanceCreateInfo for ValidationFlagsEXTBuilder<'_> {}
11384 unsafe impl ExtendsInstanceCreateInfo for ValidationFlagsEXT {}
11385 impl<'a> ::std::ops::Deref for ValidationFlagsEXTBuilder<'a> {
11386     type Target = ValidationFlagsEXT;
deref(&self) -> &Self::Target11387     fn deref(&self) -> &Self::Target {
11388         &self.inner
11389     }
11390 }
11391 impl<'a> ::std::ops::DerefMut for ValidationFlagsEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11392     fn deref_mut(&mut self) -> &mut Self::Target {
11393         &mut self.inner
11394     }
11395 }
11396 impl<'a> ValidationFlagsEXTBuilder<'a> {
disabled_validation_checks( mut self, disabled_validation_checks: &'a [ValidationCheckEXT], ) -> Self11397     pub fn disabled_validation_checks(
11398         mut self,
11399         disabled_validation_checks: &'a [ValidationCheckEXT],
11400     ) -> Self {
11401         self.inner.disabled_validation_check_count = disabled_validation_checks.len() as _;
11402         self.inner.p_disabled_validation_checks = disabled_validation_checks.as_ptr();
11403         self
11404     }
11405     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11406     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11407     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ValidationFlagsEXT11408     pub fn build(self) -> ValidationFlagsEXT {
11409         self.inner
11410     }
11411 }
11412 #[repr(C)]
11413 #[cfg_attr(feature = "debug", derive(Debug))]
11414 #[derive(Copy, Clone)]
11415 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationFeaturesEXT.html>"]
11416 pub struct ValidationFeaturesEXT {
11417     pub s_type: StructureType,
11418     pub p_next: *const c_void,
11419     pub enabled_validation_feature_count: u32,
11420     pub p_enabled_validation_features: *const ValidationFeatureEnableEXT,
11421     pub disabled_validation_feature_count: u32,
11422     pub p_disabled_validation_features: *const ValidationFeatureDisableEXT,
11423 }
11424 impl ::std::default::Default for ValidationFeaturesEXT {
default() -> Self11425     fn default() -> Self {
11426         Self {
11427             s_type: StructureType::VALIDATION_FEATURES_EXT,
11428             p_next: ::std::ptr::null(),
11429             enabled_validation_feature_count: u32::default(),
11430             p_enabled_validation_features: ::std::ptr::null(),
11431             disabled_validation_feature_count: u32::default(),
11432             p_disabled_validation_features: ::std::ptr::null(),
11433         }
11434     }
11435 }
11436 impl ValidationFeaturesEXT {
builder<'a>() -> ValidationFeaturesEXTBuilder<'a>11437     pub fn builder<'a>() -> ValidationFeaturesEXTBuilder<'a> {
11438         ValidationFeaturesEXTBuilder {
11439             inner: Self::default(),
11440             marker: ::std::marker::PhantomData,
11441         }
11442     }
11443 }
11444 #[repr(transparent)]
11445 pub struct ValidationFeaturesEXTBuilder<'a> {
11446     inner: ValidationFeaturesEXT,
11447     marker: ::std::marker::PhantomData<&'a ()>,
11448 }
11449 unsafe impl ExtendsInstanceCreateInfo for ValidationFeaturesEXTBuilder<'_> {}
11450 unsafe impl ExtendsInstanceCreateInfo for ValidationFeaturesEXT {}
11451 impl<'a> ::std::ops::Deref for ValidationFeaturesEXTBuilder<'a> {
11452     type Target = ValidationFeaturesEXT;
deref(&self) -> &Self::Target11453     fn deref(&self) -> &Self::Target {
11454         &self.inner
11455     }
11456 }
11457 impl<'a> ::std::ops::DerefMut for ValidationFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11458     fn deref_mut(&mut self) -> &mut Self::Target {
11459         &mut self.inner
11460     }
11461 }
11462 impl<'a> ValidationFeaturesEXTBuilder<'a> {
enabled_validation_features( mut self, enabled_validation_features: &'a [ValidationFeatureEnableEXT], ) -> Self11463     pub fn enabled_validation_features(
11464         mut self,
11465         enabled_validation_features: &'a [ValidationFeatureEnableEXT],
11466     ) -> Self {
11467         self.inner.enabled_validation_feature_count = enabled_validation_features.len() as _;
11468         self.inner.p_enabled_validation_features = enabled_validation_features.as_ptr();
11469         self
11470     }
disabled_validation_features( mut self, disabled_validation_features: &'a [ValidationFeatureDisableEXT], ) -> Self11471     pub fn disabled_validation_features(
11472         mut self,
11473         disabled_validation_features: &'a [ValidationFeatureDisableEXT],
11474     ) -> Self {
11475         self.inner.disabled_validation_feature_count = disabled_validation_features.len() as _;
11476         self.inner.p_disabled_validation_features = disabled_validation_features.as_ptr();
11477         self
11478     }
11479     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11480     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11481     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ValidationFeaturesEXT11482     pub fn build(self) -> ValidationFeaturesEXT {
11483         self.inner
11484     }
11485 }
11486 #[repr(C)]
11487 #[cfg_attr(feature = "debug", derive(Debug))]
11488 #[derive(Copy, Clone)]
11489 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>"]
11490 pub struct PipelineRasterizationStateRasterizationOrderAMD {
11491     pub s_type: StructureType,
11492     pub p_next: *const c_void,
11493     pub rasterization_order: RasterizationOrderAMD,
11494 }
11495 impl ::std::default::Default for PipelineRasterizationStateRasterizationOrderAMD {
default() -> Self11496     fn default() -> Self {
11497         Self {
11498             s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
11499             p_next: ::std::ptr::null(),
11500             rasterization_order: RasterizationOrderAMD::default(),
11501         }
11502     }
11503 }
11504 impl PipelineRasterizationStateRasterizationOrderAMD {
builder<'a>() -> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a>11505     pub fn builder<'a>() -> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
11506         PipelineRasterizationStateRasterizationOrderAMDBuilder {
11507             inner: Self::default(),
11508             marker: ::std::marker::PhantomData,
11509         }
11510     }
11511 }
11512 #[repr(transparent)]
11513 pub struct PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
11514     inner: PipelineRasterizationStateRasterizationOrderAMD,
11515     marker: ::std::marker::PhantomData<&'a ()>,
11516 }
11517 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
11518     for PipelineRasterizationStateRasterizationOrderAMDBuilder<'_>
11519 {
11520 }
11521 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
11522     for PipelineRasterizationStateRasterizationOrderAMD
11523 {
11524 }
11525 impl<'a> ::std::ops::Deref for PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
11526     type Target = PipelineRasterizationStateRasterizationOrderAMD;
deref(&self) -> &Self::Target11527     fn deref(&self) -> &Self::Target {
11528         &self.inner
11529     }
11530 }
11531 impl<'a> ::std::ops::DerefMut for PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11532     fn deref_mut(&mut self) -> &mut Self::Target {
11533         &mut self.inner
11534     }
11535 }
11536 impl<'a> PipelineRasterizationStateRasterizationOrderAMDBuilder<'a> {
rasterization_order(mut self, rasterization_order: RasterizationOrderAMD) -> Self11537     pub fn rasterization_order(mut self, rasterization_order: RasterizationOrderAMD) -> Self {
11538         self.inner.rasterization_order = rasterization_order;
11539         self
11540     }
11541     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11542     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11543     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationStateRasterizationOrderAMD11544     pub fn build(self) -> PipelineRasterizationStateRasterizationOrderAMD {
11545         self.inner
11546     }
11547 }
11548 #[repr(C)]
11549 #[cfg_attr(feature = "debug", derive(Debug))]
11550 #[derive(Copy, Clone)]
11551 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugMarkerObjectNameInfoEXT.html>"]
11552 pub struct DebugMarkerObjectNameInfoEXT {
11553     pub s_type: StructureType,
11554     pub p_next: *const c_void,
11555     pub object_type: DebugReportObjectTypeEXT,
11556     pub object: u64,
11557     pub p_object_name: *const c_char,
11558 }
11559 impl ::std::default::Default for DebugMarkerObjectNameInfoEXT {
default() -> Self11560     fn default() -> Self {
11561         Self {
11562             s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
11563             p_next: ::std::ptr::null(),
11564             object_type: DebugReportObjectTypeEXT::default(),
11565             object: u64::default(),
11566             p_object_name: ::std::ptr::null(),
11567         }
11568     }
11569 }
11570 impl DebugMarkerObjectNameInfoEXT {
builder<'a>() -> DebugMarkerObjectNameInfoEXTBuilder<'a>11571     pub fn builder<'a>() -> DebugMarkerObjectNameInfoEXTBuilder<'a> {
11572         DebugMarkerObjectNameInfoEXTBuilder {
11573             inner: Self::default(),
11574             marker: ::std::marker::PhantomData,
11575         }
11576     }
11577 }
11578 #[repr(transparent)]
11579 pub struct DebugMarkerObjectNameInfoEXTBuilder<'a> {
11580     inner: DebugMarkerObjectNameInfoEXT,
11581     marker: ::std::marker::PhantomData<&'a ()>,
11582 }
11583 impl<'a> ::std::ops::Deref for DebugMarkerObjectNameInfoEXTBuilder<'a> {
11584     type Target = DebugMarkerObjectNameInfoEXT;
deref(&self) -> &Self::Target11585     fn deref(&self) -> &Self::Target {
11586         &self.inner
11587     }
11588 }
11589 impl<'a> ::std::ops::DerefMut for DebugMarkerObjectNameInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11590     fn deref_mut(&mut self) -> &mut Self::Target {
11591         &mut self.inner
11592     }
11593 }
11594 impl<'a> DebugMarkerObjectNameInfoEXTBuilder<'a> {
object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self11595     pub fn object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self {
11596         self.inner.object_type = object_type;
11597         self
11598     }
object(mut self, object: u64) -> Self11599     pub fn object(mut self, object: u64) -> Self {
11600         self.inner.object = object;
11601         self
11602     }
object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self11603     pub fn object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self {
11604         self.inner.p_object_name = object_name.as_ptr();
11605         self
11606     }
11607     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11608     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11609     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugMarkerObjectNameInfoEXT11610     pub fn build(self) -> DebugMarkerObjectNameInfoEXT {
11611         self.inner
11612     }
11613 }
11614 #[repr(C)]
11615 #[cfg_attr(feature = "debug", derive(Debug))]
11616 #[derive(Copy, Clone)]
11617 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugMarkerObjectTagInfoEXT.html>"]
11618 pub struct DebugMarkerObjectTagInfoEXT {
11619     pub s_type: StructureType,
11620     pub p_next: *const c_void,
11621     pub object_type: DebugReportObjectTypeEXT,
11622     pub object: u64,
11623     pub tag_name: u64,
11624     pub tag_size: usize,
11625     pub p_tag: *const c_void,
11626 }
11627 impl ::std::default::Default for DebugMarkerObjectTagInfoEXT {
default() -> Self11628     fn default() -> Self {
11629         Self {
11630             s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
11631             p_next: ::std::ptr::null(),
11632             object_type: DebugReportObjectTypeEXT::default(),
11633             object: u64::default(),
11634             tag_name: u64::default(),
11635             tag_size: usize::default(),
11636             p_tag: ::std::ptr::null(),
11637         }
11638     }
11639 }
11640 impl DebugMarkerObjectTagInfoEXT {
builder<'a>() -> DebugMarkerObjectTagInfoEXTBuilder<'a>11641     pub fn builder<'a>() -> DebugMarkerObjectTagInfoEXTBuilder<'a> {
11642         DebugMarkerObjectTagInfoEXTBuilder {
11643             inner: Self::default(),
11644             marker: ::std::marker::PhantomData,
11645         }
11646     }
11647 }
11648 #[repr(transparent)]
11649 pub struct DebugMarkerObjectTagInfoEXTBuilder<'a> {
11650     inner: DebugMarkerObjectTagInfoEXT,
11651     marker: ::std::marker::PhantomData<&'a ()>,
11652 }
11653 impl<'a> ::std::ops::Deref for DebugMarkerObjectTagInfoEXTBuilder<'a> {
11654     type Target = DebugMarkerObjectTagInfoEXT;
deref(&self) -> &Self::Target11655     fn deref(&self) -> &Self::Target {
11656         &self.inner
11657     }
11658 }
11659 impl<'a> ::std::ops::DerefMut for DebugMarkerObjectTagInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11660     fn deref_mut(&mut self) -> &mut Self::Target {
11661         &mut self.inner
11662     }
11663 }
11664 impl<'a> DebugMarkerObjectTagInfoEXTBuilder<'a> {
object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self11665     pub fn object_type(mut self, object_type: DebugReportObjectTypeEXT) -> Self {
11666         self.inner.object_type = object_type;
11667         self
11668     }
object(mut self, object: u64) -> Self11669     pub fn object(mut self, object: u64) -> Self {
11670         self.inner.object = object;
11671         self
11672     }
tag_name(mut self, tag_name: u64) -> Self11673     pub fn tag_name(mut self, tag_name: u64) -> Self {
11674         self.inner.tag_name = tag_name;
11675         self
11676     }
tag(mut self, tag: &'a [u8]) -> Self11677     pub fn tag(mut self, tag: &'a [u8]) -> Self {
11678         self.inner.tag_size = tag.len() as _;
11679         self.inner.p_tag = tag.as_ptr() as *const c_void;
11680         self
11681     }
11682     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11683     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11684     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugMarkerObjectTagInfoEXT11685     pub fn build(self) -> DebugMarkerObjectTagInfoEXT {
11686         self.inner
11687     }
11688 }
11689 #[repr(C)]
11690 #[cfg_attr(feature = "debug", derive(Debug))]
11691 #[derive(Copy, Clone)]
11692 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugMarkerMarkerInfoEXT.html>"]
11693 pub struct DebugMarkerMarkerInfoEXT {
11694     pub s_type: StructureType,
11695     pub p_next: *const c_void,
11696     pub p_marker_name: *const c_char,
11697     pub color: [f32; 4],
11698 }
11699 impl ::std::default::Default for DebugMarkerMarkerInfoEXT {
default() -> Self11700     fn default() -> Self {
11701         Self {
11702             s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
11703             p_next: ::std::ptr::null(),
11704             p_marker_name: ::std::ptr::null(),
11705             color: unsafe { ::std::mem::zeroed() },
11706         }
11707     }
11708 }
11709 impl DebugMarkerMarkerInfoEXT {
builder<'a>() -> DebugMarkerMarkerInfoEXTBuilder<'a>11710     pub fn builder<'a>() -> DebugMarkerMarkerInfoEXTBuilder<'a> {
11711         DebugMarkerMarkerInfoEXTBuilder {
11712             inner: Self::default(),
11713             marker: ::std::marker::PhantomData,
11714         }
11715     }
11716 }
11717 #[repr(transparent)]
11718 pub struct DebugMarkerMarkerInfoEXTBuilder<'a> {
11719     inner: DebugMarkerMarkerInfoEXT,
11720     marker: ::std::marker::PhantomData<&'a ()>,
11721 }
11722 impl<'a> ::std::ops::Deref for DebugMarkerMarkerInfoEXTBuilder<'a> {
11723     type Target = DebugMarkerMarkerInfoEXT;
deref(&self) -> &Self::Target11724     fn deref(&self) -> &Self::Target {
11725         &self.inner
11726     }
11727 }
11728 impl<'a> ::std::ops::DerefMut for DebugMarkerMarkerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11729     fn deref_mut(&mut self) -> &mut Self::Target {
11730         &mut self.inner
11731     }
11732 }
11733 impl<'a> DebugMarkerMarkerInfoEXTBuilder<'a> {
marker_name(mut self, marker_name: &'a ::std::ffi::CStr) -> Self11734     pub fn marker_name(mut self, marker_name: &'a ::std::ffi::CStr) -> Self {
11735         self.inner.p_marker_name = marker_name.as_ptr();
11736         self
11737     }
color(mut self, color: [f32; 4]) -> Self11738     pub fn color(mut self, color: [f32; 4]) -> Self {
11739         self.inner.color = color;
11740         self
11741     }
11742     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11743     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11744     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugMarkerMarkerInfoEXT11745     pub fn build(self) -> DebugMarkerMarkerInfoEXT {
11746         self.inner
11747     }
11748 }
11749 #[repr(C)]
11750 #[cfg_attr(feature = "debug", derive(Debug))]
11751 #[derive(Copy, Clone)]
11752 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDedicatedAllocationImageCreateInfoNV.html>"]
11753 pub struct DedicatedAllocationImageCreateInfoNV {
11754     pub s_type: StructureType,
11755     pub p_next: *const c_void,
11756     pub dedicated_allocation: Bool32,
11757 }
11758 impl ::std::default::Default for DedicatedAllocationImageCreateInfoNV {
default() -> Self11759     fn default() -> Self {
11760         Self {
11761             s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
11762             p_next: ::std::ptr::null(),
11763             dedicated_allocation: Bool32::default(),
11764         }
11765     }
11766 }
11767 impl DedicatedAllocationImageCreateInfoNV {
builder<'a>() -> DedicatedAllocationImageCreateInfoNVBuilder<'a>11768     pub fn builder<'a>() -> DedicatedAllocationImageCreateInfoNVBuilder<'a> {
11769         DedicatedAllocationImageCreateInfoNVBuilder {
11770             inner: Self::default(),
11771             marker: ::std::marker::PhantomData,
11772         }
11773     }
11774 }
11775 #[repr(transparent)]
11776 pub struct DedicatedAllocationImageCreateInfoNVBuilder<'a> {
11777     inner: DedicatedAllocationImageCreateInfoNV,
11778     marker: ::std::marker::PhantomData<&'a ()>,
11779 }
11780 unsafe impl ExtendsImageCreateInfo for DedicatedAllocationImageCreateInfoNVBuilder<'_> {}
11781 unsafe impl ExtendsImageCreateInfo for DedicatedAllocationImageCreateInfoNV {}
11782 impl<'a> ::std::ops::Deref for DedicatedAllocationImageCreateInfoNVBuilder<'a> {
11783     type Target = DedicatedAllocationImageCreateInfoNV;
deref(&self) -> &Self::Target11784     fn deref(&self) -> &Self::Target {
11785         &self.inner
11786     }
11787 }
11788 impl<'a> ::std::ops::DerefMut for DedicatedAllocationImageCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11789     fn deref_mut(&mut self) -> &mut Self::Target {
11790         &mut self.inner
11791     }
11792 }
11793 impl<'a> DedicatedAllocationImageCreateInfoNVBuilder<'a> {
dedicated_allocation(mut self, dedicated_allocation: bool) -> Self11794     pub fn dedicated_allocation(mut self, dedicated_allocation: bool) -> Self {
11795         self.inner.dedicated_allocation = dedicated_allocation.into();
11796         self
11797     }
11798     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11799     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11800     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DedicatedAllocationImageCreateInfoNV11801     pub fn build(self) -> DedicatedAllocationImageCreateInfoNV {
11802         self.inner
11803     }
11804 }
11805 #[repr(C)]
11806 #[cfg_attr(feature = "debug", derive(Debug))]
11807 #[derive(Copy, Clone)]
11808 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>"]
11809 pub struct DedicatedAllocationBufferCreateInfoNV {
11810     pub s_type: StructureType,
11811     pub p_next: *const c_void,
11812     pub dedicated_allocation: Bool32,
11813 }
11814 impl ::std::default::Default for DedicatedAllocationBufferCreateInfoNV {
default() -> Self11815     fn default() -> Self {
11816         Self {
11817             s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
11818             p_next: ::std::ptr::null(),
11819             dedicated_allocation: Bool32::default(),
11820         }
11821     }
11822 }
11823 impl DedicatedAllocationBufferCreateInfoNV {
builder<'a>() -> DedicatedAllocationBufferCreateInfoNVBuilder<'a>11824     pub fn builder<'a>() -> DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
11825         DedicatedAllocationBufferCreateInfoNVBuilder {
11826             inner: Self::default(),
11827             marker: ::std::marker::PhantomData,
11828         }
11829     }
11830 }
11831 #[repr(transparent)]
11832 pub struct DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
11833     inner: DedicatedAllocationBufferCreateInfoNV,
11834     marker: ::std::marker::PhantomData<&'a ()>,
11835 }
11836 unsafe impl ExtendsBufferCreateInfo for DedicatedAllocationBufferCreateInfoNVBuilder<'_> {}
11837 unsafe impl ExtendsBufferCreateInfo for DedicatedAllocationBufferCreateInfoNV {}
11838 impl<'a> ::std::ops::Deref for DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
11839     type Target = DedicatedAllocationBufferCreateInfoNV;
deref(&self) -> &Self::Target11840     fn deref(&self) -> &Self::Target {
11841         &self.inner
11842     }
11843 }
11844 impl<'a> ::std::ops::DerefMut for DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11845     fn deref_mut(&mut self) -> &mut Self::Target {
11846         &mut self.inner
11847     }
11848 }
11849 impl<'a> DedicatedAllocationBufferCreateInfoNVBuilder<'a> {
dedicated_allocation(mut self, dedicated_allocation: bool) -> Self11850     pub fn dedicated_allocation(mut self, dedicated_allocation: bool) -> Self {
11851         self.inner.dedicated_allocation = dedicated_allocation.into();
11852         self
11853     }
11854     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11855     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11856     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DedicatedAllocationBufferCreateInfoNV11857     pub fn build(self) -> DedicatedAllocationBufferCreateInfoNV {
11858         self.inner
11859     }
11860 }
11861 #[repr(C)]
11862 #[cfg_attr(feature = "debug", derive(Debug))]
11863 #[derive(Copy, Clone)]
11864 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>"]
11865 pub struct DedicatedAllocationMemoryAllocateInfoNV {
11866     pub s_type: StructureType,
11867     pub p_next: *const c_void,
11868     pub image: Image,
11869     pub buffer: Buffer,
11870 }
11871 impl ::std::default::Default for DedicatedAllocationMemoryAllocateInfoNV {
default() -> Self11872     fn default() -> Self {
11873         Self {
11874             s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
11875             p_next: ::std::ptr::null(),
11876             image: Image::default(),
11877             buffer: Buffer::default(),
11878         }
11879     }
11880 }
11881 impl DedicatedAllocationMemoryAllocateInfoNV {
builder<'a>() -> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a>11882     pub fn builder<'a>() -> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
11883         DedicatedAllocationMemoryAllocateInfoNVBuilder {
11884             inner: Self::default(),
11885             marker: ::std::marker::PhantomData,
11886         }
11887     }
11888 }
11889 #[repr(transparent)]
11890 pub struct DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
11891     inner: DedicatedAllocationMemoryAllocateInfoNV,
11892     marker: ::std::marker::PhantomData<&'a ()>,
11893 }
11894 unsafe impl ExtendsMemoryAllocateInfo for DedicatedAllocationMemoryAllocateInfoNVBuilder<'_> {}
11895 unsafe impl ExtendsMemoryAllocateInfo for DedicatedAllocationMemoryAllocateInfoNV {}
11896 impl<'a> ::std::ops::Deref for DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
11897     type Target = DedicatedAllocationMemoryAllocateInfoNV;
deref(&self) -> &Self::Target11898     fn deref(&self) -> &Self::Target {
11899         &self.inner
11900     }
11901 }
11902 impl<'a> ::std::ops::DerefMut for DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11903     fn deref_mut(&mut self) -> &mut Self::Target {
11904         &mut self.inner
11905     }
11906 }
11907 impl<'a> DedicatedAllocationMemoryAllocateInfoNVBuilder<'a> {
image(mut self, image: Image) -> Self11908     pub fn image(mut self, image: Image) -> Self {
11909         self.inner.image = image;
11910         self
11911     }
buffer(mut self, buffer: Buffer) -> Self11912     pub fn buffer(mut self, buffer: Buffer) -> Self {
11913         self.inner.buffer = buffer;
11914         self
11915     }
11916     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11917     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11918     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DedicatedAllocationMemoryAllocateInfoNV11919     pub fn build(self) -> DedicatedAllocationMemoryAllocateInfoNV {
11920         self.inner
11921     }
11922 }
11923 #[repr(C)]
11924 #[cfg_attr(feature = "debug", derive(Debug))]
11925 #[derive(Copy, Clone, Default)]
11926 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalImageFormatPropertiesNV.html>"]
11927 pub struct ExternalImageFormatPropertiesNV {
11928     pub image_format_properties: ImageFormatProperties,
11929     pub external_memory_features: ExternalMemoryFeatureFlagsNV,
11930     pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
11931     pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
11932 }
11933 impl ExternalImageFormatPropertiesNV {
builder<'a>() -> ExternalImageFormatPropertiesNVBuilder<'a>11934     pub fn builder<'a>() -> ExternalImageFormatPropertiesNVBuilder<'a> {
11935         ExternalImageFormatPropertiesNVBuilder {
11936             inner: Self::default(),
11937             marker: ::std::marker::PhantomData,
11938         }
11939     }
11940 }
11941 #[repr(transparent)]
11942 pub struct ExternalImageFormatPropertiesNVBuilder<'a> {
11943     inner: ExternalImageFormatPropertiesNV,
11944     marker: ::std::marker::PhantomData<&'a ()>,
11945 }
11946 impl<'a> ::std::ops::Deref for ExternalImageFormatPropertiesNVBuilder<'a> {
11947     type Target = ExternalImageFormatPropertiesNV;
deref(&self) -> &Self::Target11948     fn deref(&self) -> &Self::Target {
11949         &self.inner
11950     }
11951 }
11952 impl<'a> ::std::ops::DerefMut for ExternalImageFormatPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target11953     fn deref_mut(&mut self) -> &mut Self::Target {
11954         &mut self.inner
11955     }
11956 }
11957 impl<'a> ExternalImageFormatPropertiesNVBuilder<'a> {
image_format_properties( mut self, image_format_properties: ImageFormatProperties, ) -> Self11958     pub fn image_format_properties(
11959         mut self,
11960         image_format_properties: ImageFormatProperties,
11961     ) -> Self {
11962         self.inner.image_format_properties = image_format_properties;
11963         self
11964     }
external_memory_features( mut self, external_memory_features: ExternalMemoryFeatureFlagsNV, ) -> Self11965     pub fn external_memory_features(
11966         mut self,
11967         external_memory_features: ExternalMemoryFeatureFlagsNV,
11968     ) -> Self {
11969         self.inner.external_memory_features = external_memory_features;
11970         self
11971     }
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV, ) -> Self11972     pub fn export_from_imported_handle_types(
11973         mut self,
11974         export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
11975     ) -> Self {
11976         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
11977         self
11978     }
compatible_handle_types( mut self, compatible_handle_types: ExternalMemoryHandleTypeFlagsNV, ) -> Self11979     pub fn compatible_handle_types(
11980         mut self,
11981         compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
11982     ) -> Self {
11983         self.inner.compatible_handle_types = compatible_handle_types;
11984         self
11985     }
11986     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
11987     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
11988     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalImageFormatPropertiesNV11989     pub fn build(self) -> ExternalImageFormatPropertiesNV {
11990         self.inner
11991     }
11992 }
11993 #[repr(C)]
11994 #[cfg_attr(feature = "debug", derive(Debug))]
11995 #[derive(Copy, Clone)]
11996 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryImageCreateInfoNV.html>"]
11997 pub struct ExternalMemoryImageCreateInfoNV {
11998     pub s_type: StructureType,
11999     pub p_next: *const c_void,
12000     pub handle_types: ExternalMemoryHandleTypeFlagsNV,
12001 }
12002 impl ::std::default::Default for ExternalMemoryImageCreateInfoNV {
default() -> Self12003     fn default() -> Self {
12004         Self {
12005             s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
12006             p_next: ::std::ptr::null(),
12007             handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
12008         }
12009     }
12010 }
12011 impl ExternalMemoryImageCreateInfoNV {
builder<'a>() -> ExternalMemoryImageCreateInfoNVBuilder<'a>12012     pub fn builder<'a>() -> ExternalMemoryImageCreateInfoNVBuilder<'a> {
12013         ExternalMemoryImageCreateInfoNVBuilder {
12014             inner: Self::default(),
12015             marker: ::std::marker::PhantomData,
12016         }
12017     }
12018 }
12019 #[repr(transparent)]
12020 pub struct ExternalMemoryImageCreateInfoNVBuilder<'a> {
12021     inner: ExternalMemoryImageCreateInfoNV,
12022     marker: ::std::marker::PhantomData<&'a ()>,
12023 }
12024 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfoNVBuilder<'_> {}
12025 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfoNV {}
12026 impl<'a> ::std::ops::Deref for ExternalMemoryImageCreateInfoNVBuilder<'a> {
12027     type Target = ExternalMemoryImageCreateInfoNV;
deref(&self) -> &Self::Target12028     fn deref(&self) -> &Self::Target {
12029         &self.inner
12030     }
12031 }
12032 impl<'a> ::std::ops::DerefMut for ExternalMemoryImageCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12033     fn deref_mut(&mut self) -> &mut Self::Target {
12034         &mut self.inner
12035     }
12036 }
12037 impl<'a> ExternalMemoryImageCreateInfoNVBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self12038     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self {
12039         self.inner.handle_types = handle_types;
12040         self
12041     }
12042     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12043     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12044     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryImageCreateInfoNV12045     pub fn build(self) -> ExternalMemoryImageCreateInfoNV {
12046         self.inner
12047     }
12048 }
12049 #[repr(C)]
12050 #[cfg_attr(feature = "debug", derive(Debug))]
12051 #[derive(Copy, Clone)]
12052 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryAllocateInfoNV.html>"]
12053 pub struct ExportMemoryAllocateInfoNV {
12054     pub s_type: StructureType,
12055     pub p_next: *const c_void,
12056     pub handle_types: ExternalMemoryHandleTypeFlagsNV,
12057 }
12058 impl ::std::default::Default for ExportMemoryAllocateInfoNV {
default() -> Self12059     fn default() -> Self {
12060         Self {
12061             s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
12062             p_next: ::std::ptr::null(),
12063             handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
12064         }
12065     }
12066 }
12067 impl ExportMemoryAllocateInfoNV {
builder<'a>() -> ExportMemoryAllocateInfoNVBuilder<'a>12068     pub fn builder<'a>() -> ExportMemoryAllocateInfoNVBuilder<'a> {
12069         ExportMemoryAllocateInfoNVBuilder {
12070             inner: Self::default(),
12071             marker: ::std::marker::PhantomData,
12072         }
12073     }
12074 }
12075 #[repr(transparent)]
12076 pub struct ExportMemoryAllocateInfoNVBuilder<'a> {
12077     inner: ExportMemoryAllocateInfoNV,
12078     marker: ::std::marker::PhantomData<&'a ()>,
12079 }
12080 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfoNVBuilder<'_> {}
12081 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfoNV {}
12082 impl<'a> ::std::ops::Deref for ExportMemoryAllocateInfoNVBuilder<'a> {
12083     type Target = ExportMemoryAllocateInfoNV;
deref(&self) -> &Self::Target12084     fn deref(&self) -> &Self::Target {
12085         &self.inner
12086     }
12087 }
12088 impl<'a> ::std::ops::DerefMut for ExportMemoryAllocateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12089     fn deref_mut(&mut self) -> &mut Self::Target {
12090         &mut self.inner
12091     }
12092 }
12093 impl<'a> ExportMemoryAllocateInfoNVBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self12094     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlagsNV) -> Self {
12095         self.inner.handle_types = handle_types;
12096         self
12097     }
12098     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12099     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12100     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryAllocateInfoNV12101     pub fn build(self) -> ExportMemoryAllocateInfoNV {
12102         self.inner
12103     }
12104 }
12105 #[repr(C)]
12106 #[cfg_attr(feature = "debug", derive(Debug))]
12107 #[derive(Copy, Clone)]
12108 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryWin32HandleInfoNV.html>"]
12109 pub struct ImportMemoryWin32HandleInfoNV {
12110     pub s_type: StructureType,
12111     pub p_next: *const c_void,
12112     pub handle_type: ExternalMemoryHandleTypeFlagsNV,
12113     pub handle: HANDLE,
12114 }
12115 impl ::std::default::Default for ImportMemoryWin32HandleInfoNV {
default() -> Self12116     fn default() -> Self {
12117         Self {
12118             s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
12119             p_next: ::std::ptr::null(),
12120             handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
12121             handle: unsafe { ::std::mem::zeroed() },
12122         }
12123     }
12124 }
12125 impl ImportMemoryWin32HandleInfoNV {
builder<'a>() -> ImportMemoryWin32HandleInfoNVBuilder<'a>12126     pub fn builder<'a>() -> ImportMemoryWin32HandleInfoNVBuilder<'a> {
12127         ImportMemoryWin32HandleInfoNVBuilder {
12128             inner: Self::default(),
12129             marker: ::std::marker::PhantomData,
12130         }
12131     }
12132 }
12133 #[repr(transparent)]
12134 pub struct ImportMemoryWin32HandleInfoNVBuilder<'a> {
12135     inner: ImportMemoryWin32HandleInfoNV,
12136     marker: ::std::marker::PhantomData<&'a ()>,
12137 }
12138 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoNVBuilder<'_> {}
12139 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoNV {}
12140 impl<'a> ::std::ops::Deref for ImportMemoryWin32HandleInfoNVBuilder<'a> {
12141     type Target = ImportMemoryWin32HandleInfoNV;
deref(&self) -> &Self::Target12142     fn deref(&self) -> &Self::Target {
12143         &self.inner
12144     }
12145 }
12146 impl<'a> ::std::ops::DerefMut for ImportMemoryWin32HandleInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12147     fn deref_mut(&mut self) -> &mut Self::Target {
12148         &mut self.inner
12149     }
12150 }
12151 impl<'a> ImportMemoryWin32HandleInfoNVBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlagsNV) -> Self12152     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlagsNV) -> Self {
12153         self.inner.handle_type = handle_type;
12154         self
12155     }
handle(mut self, handle: HANDLE) -> Self12156     pub fn handle(mut self, handle: HANDLE) -> Self {
12157         self.inner.handle = handle;
12158         self
12159     }
12160     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12161     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12162     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryWin32HandleInfoNV12163     pub fn build(self) -> ImportMemoryWin32HandleInfoNV {
12164         self.inner
12165     }
12166 }
12167 #[repr(C)]
12168 #[cfg_attr(feature = "debug", derive(Debug))]
12169 #[derive(Copy, Clone)]
12170 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryWin32HandleInfoNV.html>"]
12171 pub struct ExportMemoryWin32HandleInfoNV {
12172     pub s_type: StructureType,
12173     pub p_next: *const c_void,
12174     pub p_attributes: *const SECURITY_ATTRIBUTES,
12175     pub dw_access: DWORD,
12176 }
12177 impl ::std::default::Default for ExportMemoryWin32HandleInfoNV {
default() -> Self12178     fn default() -> Self {
12179         Self {
12180             s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
12181             p_next: ::std::ptr::null(),
12182             p_attributes: ::std::ptr::null(),
12183             dw_access: DWORD::default(),
12184         }
12185     }
12186 }
12187 impl ExportMemoryWin32HandleInfoNV {
builder<'a>() -> ExportMemoryWin32HandleInfoNVBuilder<'a>12188     pub fn builder<'a>() -> ExportMemoryWin32HandleInfoNVBuilder<'a> {
12189         ExportMemoryWin32HandleInfoNVBuilder {
12190             inner: Self::default(),
12191             marker: ::std::marker::PhantomData,
12192         }
12193     }
12194 }
12195 #[repr(transparent)]
12196 pub struct ExportMemoryWin32HandleInfoNVBuilder<'a> {
12197     inner: ExportMemoryWin32HandleInfoNV,
12198     marker: ::std::marker::PhantomData<&'a ()>,
12199 }
12200 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoNVBuilder<'_> {}
12201 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoNV {}
12202 impl<'a> ::std::ops::Deref for ExportMemoryWin32HandleInfoNVBuilder<'a> {
12203     type Target = ExportMemoryWin32HandleInfoNV;
deref(&self) -> &Self::Target12204     fn deref(&self) -> &Self::Target {
12205         &self.inner
12206     }
12207 }
12208 impl<'a> ::std::ops::DerefMut for ExportMemoryWin32HandleInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12209     fn deref_mut(&mut self) -> &mut Self::Target {
12210         &mut self.inner
12211     }
12212 }
12213 impl<'a> ExportMemoryWin32HandleInfoNVBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self12214     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
12215         self.inner.p_attributes = attributes;
12216         self
12217     }
dw_access(mut self, dw_access: DWORD) -> Self12218     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
12219         self.inner.dw_access = dw_access;
12220         self
12221     }
12222     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12223     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12224     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryWin32HandleInfoNV12225     pub fn build(self) -> ExportMemoryWin32HandleInfoNV {
12226         self.inner
12227     }
12228 }
12229 #[repr(C)]
12230 #[cfg_attr(feature = "debug", derive(Debug))]
12231 #[derive(Copy, Clone)]
12232 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>"]
12233 pub struct Win32KeyedMutexAcquireReleaseInfoNV {
12234     pub s_type: StructureType,
12235     pub p_next: *const c_void,
12236     pub acquire_count: u32,
12237     pub p_acquire_syncs: *const DeviceMemory,
12238     pub p_acquire_keys: *const u64,
12239     pub p_acquire_timeout_milliseconds: *const u32,
12240     pub release_count: u32,
12241     pub p_release_syncs: *const DeviceMemory,
12242     pub p_release_keys: *const u64,
12243 }
12244 impl ::std::default::Default for Win32KeyedMutexAcquireReleaseInfoNV {
default() -> Self12245     fn default() -> Self {
12246         Self {
12247             s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
12248             p_next: ::std::ptr::null(),
12249             acquire_count: u32::default(),
12250             p_acquire_syncs: ::std::ptr::null(),
12251             p_acquire_keys: ::std::ptr::null(),
12252             p_acquire_timeout_milliseconds: ::std::ptr::null(),
12253             release_count: u32::default(),
12254             p_release_syncs: ::std::ptr::null(),
12255             p_release_keys: ::std::ptr::null(),
12256         }
12257     }
12258 }
12259 impl Win32KeyedMutexAcquireReleaseInfoNV {
builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a>12260     pub fn builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
12261         Win32KeyedMutexAcquireReleaseInfoNVBuilder {
12262             inner: Self::default(),
12263             marker: ::std::marker::PhantomData,
12264         }
12265     }
12266 }
12267 #[repr(transparent)]
12268 pub struct Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
12269     inner: Win32KeyedMutexAcquireReleaseInfoNV,
12270     marker: ::std::marker::PhantomData<&'a ()>,
12271 }
12272 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'_> {}
12273 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoNV {}
12274 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'_> {}
12275 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoNV {}
12276 impl<'a> ::std::ops::Deref for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
12277     type Target = Win32KeyedMutexAcquireReleaseInfoNV;
deref(&self) -> &Self::Target12278     fn deref(&self) -> &Self::Target {
12279         &self.inner
12280     }
12281 }
12282 impl<'a> ::std::ops::DerefMut for Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12283     fn deref_mut(&mut self) -> &mut Self::Target {
12284         &mut self.inner
12285     }
12286 }
12287 impl<'a> Win32KeyedMutexAcquireReleaseInfoNVBuilder<'a> {
acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self12288     pub fn acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self {
12289         self.inner.acquire_count = acquire_syncs.len() as _;
12290         self.inner.p_acquire_syncs = acquire_syncs.as_ptr();
12291         self
12292     }
acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self12293     pub fn acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self {
12294         self.inner.acquire_count = acquire_keys.len() as _;
12295         self.inner.p_acquire_keys = acquire_keys.as_ptr();
12296         self
12297     }
acquire_timeout_milliseconds(mut self, acquire_timeout_milliseconds: &'a [u32]) -> Self12298     pub fn acquire_timeout_milliseconds(mut self, acquire_timeout_milliseconds: &'a [u32]) -> Self {
12299         self.inner.acquire_count = acquire_timeout_milliseconds.len() as _;
12300         self.inner.p_acquire_timeout_milliseconds = acquire_timeout_milliseconds.as_ptr();
12301         self
12302     }
release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self12303     pub fn release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self {
12304         self.inner.release_count = release_syncs.len() as _;
12305         self.inner.p_release_syncs = release_syncs.as_ptr();
12306         self
12307     }
release_keys(mut self, release_keys: &'a [u64]) -> Self12308     pub fn release_keys(mut self, release_keys: &'a [u64]) -> Self {
12309         self.inner.release_count = release_keys.len() as _;
12310         self.inner.p_release_keys = release_keys.as_ptr();
12311         self
12312     }
12313     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12314     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12315     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Win32KeyedMutexAcquireReleaseInfoNV12316     pub fn build(self) -> Win32KeyedMutexAcquireReleaseInfoNV {
12317         self.inner
12318     }
12319 }
12320 #[repr(C)]
12321 #[cfg_attr(feature = "debug", derive(Debug))]
12322 #[derive(Copy, Clone)]
12323 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>"]
12324 pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12325     pub s_type: StructureType,
12326     pub p_next: *mut c_void,
12327     pub device_generated_commands: Bool32,
12328 }
12329 impl ::std::default::Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
default() -> Self12330     fn default() -> Self {
12331         Self {
12332             s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
12333             p_next: ::std::ptr::null_mut(),
12334             device_generated_commands: Bool32::default(),
12335         }
12336     }
12337 }
12338 impl PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a>12339     pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
12340         PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder {
12341             inner: Self::default(),
12342             marker: ::std::marker::PhantomData,
12343         }
12344     }
12345 }
12346 #[repr(transparent)]
12347 pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
12348     inner: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV,
12349     marker: ::std::marker::PhantomData<&'a ()>,
12350 }
12351 unsafe impl ExtendsPhysicalDeviceFeatures2
12352     for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'_>
12353 {
12354 }
12355 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
12356 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'_> {}
12357 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
12358 impl<'a> ::std::ops::Deref for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
12359     type Target = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
deref(&self) -> &Self::Target12360     fn deref(&self) -> &Self::Target {
12361         &self.inner
12362     }
12363 }
12364 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12365     fn deref_mut(&mut self) -> &mut Self::Target {
12366         &mut self.inner
12367     }
12368 }
12369 impl<'a> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
device_generated_commands(mut self, device_generated_commands: bool) -> Self12370     pub fn device_generated_commands(mut self, device_generated_commands: bool) -> Self {
12371         self.inner.device_generated_commands = device_generated_commands.into();
12372         self
12373     }
12374     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12375     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12376     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV12377     pub fn build(self) -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12378         self.inner
12379     }
12380 }
12381 #[repr(C)]
12382 #[cfg_attr(feature = "debug", derive(Debug))]
12383 #[derive(Copy, Clone)]
12384 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDevicePrivateDataCreateInfoEXT.html>"]
12385 pub struct DevicePrivateDataCreateInfoEXT {
12386     pub s_type: StructureType,
12387     pub p_next: *const c_void,
12388     pub private_data_slot_request_count: u32,
12389 }
12390 impl ::std::default::Default for DevicePrivateDataCreateInfoEXT {
default() -> Self12391     fn default() -> Self {
12392         Self {
12393             s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO_EXT,
12394             p_next: ::std::ptr::null(),
12395             private_data_slot_request_count: u32::default(),
12396         }
12397     }
12398 }
12399 impl DevicePrivateDataCreateInfoEXT {
builder<'a>() -> DevicePrivateDataCreateInfoEXTBuilder<'a>12400     pub fn builder<'a>() -> DevicePrivateDataCreateInfoEXTBuilder<'a> {
12401         DevicePrivateDataCreateInfoEXTBuilder {
12402             inner: Self::default(),
12403             marker: ::std::marker::PhantomData,
12404         }
12405     }
12406 }
12407 #[repr(transparent)]
12408 pub struct DevicePrivateDataCreateInfoEXTBuilder<'a> {
12409     inner: DevicePrivateDataCreateInfoEXT,
12410     marker: ::std::marker::PhantomData<&'a ()>,
12411 }
12412 unsafe impl ExtendsDeviceCreateInfo for DevicePrivateDataCreateInfoEXTBuilder<'_> {}
12413 unsafe impl ExtendsDeviceCreateInfo for DevicePrivateDataCreateInfoEXT {}
12414 impl<'a> ::std::ops::Deref for DevicePrivateDataCreateInfoEXTBuilder<'a> {
12415     type Target = DevicePrivateDataCreateInfoEXT;
deref(&self) -> &Self::Target12416     fn deref(&self) -> &Self::Target {
12417         &self.inner
12418     }
12419 }
12420 impl<'a> ::std::ops::DerefMut for DevicePrivateDataCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12421     fn deref_mut(&mut self) -> &mut Self::Target {
12422         &mut self.inner
12423     }
12424 }
12425 impl<'a> DevicePrivateDataCreateInfoEXTBuilder<'a> {
private_data_slot_request_count(mut self, private_data_slot_request_count: u32) -> Self12426     pub fn private_data_slot_request_count(mut self, private_data_slot_request_count: u32) -> Self {
12427         self.inner.private_data_slot_request_count = private_data_slot_request_count;
12428         self
12429     }
12430     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12431     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12432     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DevicePrivateDataCreateInfoEXT12433     pub fn build(self) -> DevicePrivateDataCreateInfoEXT {
12434         self.inner
12435     }
12436 }
12437 #[repr(C)]
12438 #[cfg_attr(feature = "debug", derive(Debug))]
12439 #[derive(Copy, Clone)]
12440 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPrivateDataSlotCreateInfoEXT.html>"]
12441 pub struct PrivateDataSlotCreateInfoEXT {
12442     pub s_type: StructureType,
12443     pub p_next: *const c_void,
12444     pub flags: PrivateDataSlotCreateFlagsEXT,
12445 }
12446 impl ::std::default::Default for PrivateDataSlotCreateInfoEXT {
default() -> Self12447     fn default() -> Self {
12448         Self {
12449             s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO_EXT,
12450             p_next: ::std::ptr::null(),
12451             flags: PrivateDataSlotCreateFlagsEXT::default(),
12452         }
12453     }
12454 }
12455 impl PrivateDataSlotCreateInfoEXT {
builder<'a>() -> PrivateDataSlotCreateInfoEXTBuilder<'a>12456     pub fn builder<'a>() -> PrivateDataSlotCreateInfoEXTBuilder<'a> {
12457         PrivateDataSlotCreateInfoEXTBuilder {
12458             inner: Self::default(),
12459             marker: ::std::marker::PhantomData,
12460         }
12461     }
12462 }
12463 #[repr(transparent)]
12464 pub struct PrivateDataSlotCreateInfoEXTBuilder<'a> {
12465     inner: PrivateDataSlotCreateInfoEXT,
12466     marker: ::std::marker::PhantomData<&'a ()>,
12467 }
12468 impl<'a> ::std::ops::Deref for PrivateDataSlotCreateInfoEXTBuilder<'a> {
12469     type Target = PrivateDataSlotCreateInfoEXT;
deref(&self) -> &Self::Target12470     fn deref(&self) -> &Self::Target {
12471         &self.inner
12472     }
12473 }
12474 impl<'a> ::std::ops::DerefMut for PrivateDataSlotCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12475     fn deref_mut(&mut self) -> &mut Self::Target {
12476         &mut self.inner
12477     }
12478 }
12479 impl<'a> PrivateDataSlotCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PrivateDataSlotCreateFlagsEXT) -> Self12480     pub fn flags(mut self, flags: PrivateDataSlotCreateFlagsEXT) -> Self {
12481         self.inner.flags = flags;
12482         self
12483     }
12484     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12485     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12486     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PrivateDataSlotCreateInfoEXT12487     pub fn build(self) -> PrivateDataSlotCreateInfoEXT {
12488         self.inner
12489     }
12490 }
12491 #[repr(C)]
12492 #[cfg_attr(feature = "debug", derive(Debug))]
12493 #[derive(Copy, Clone)]
12494 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>"]
12495 pub struct PhysicalDevicePrivateDataFeaturesEXT {
12496     pub s_type: StructureType,
12497     pub p_next: *mut c_void,
12498     pub private_data: Bool32,
12499 }
12500 impl ::std::default::Default for PhysicalDevicePrivateDataFeaturesEXT {
default() -> Self12501     fn default() -> Self {
12502         Self {
12503             s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT,
12504             p_next: ::std::ptr::null_mut(),
12505             private_data: Bool32::default(),
12506         }
12507     }
12508 }
12509 impl PhysicalDevicePrivateDataFeaturesEXT {
builder<'a>() -> PhysicalDevicePrivateDataFeaturesEXTBuilder<'a>12510     pub fn builder<'a>() -> PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
12511         PhysicalDevicePrivateDataFeaturesEXTBuilder {
12512             inner: Self::default(),
12513             marker: ::std::marker::PhantomData,
12514         }
12515     }
12516 }
12517 #[repr(transparent)]
12518 pub struct PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
12519     inner: PhysicalDevicePrivateDataFeaturesEXT,
12520     marker: ::std::marker::PhantomData<&'a ()>,
12521 }
12522 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePrivateDataFeaturesEXTBuilder<'_> {}
12523 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePrivateDataFeaturesEXT {}
12524 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrivateDataFeaturesEXTBuilder<'_> {}
12525 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrivateDataFeaturesEXT {}
12526 impl<'a> ::std::ops::Deref for PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
12527     type Target = PhysicalDevicePrivateDataFeaturesEXT;
deref(&self) -> &Self::Target12528     fn deref(&self) -> &Self::Target {
12529         &self.inner
12530     }
12531 }
12532 impl<'a> ::std::ops::DerefMut for PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12533     fn deref_mut(&mut self) -> &mut Self::Target {
12534         &mut self.inner
12535     }
12536 }
12537 impl<'a> PhysicalDevicePrivateDataFeaturesEXTBuilder<'a> {
private_data(mut self, private_data: bool) -> Self12538     pub fn private_data(mut self, private_data: bool) -> Self {
12539         self.inner.private_data = private_data.into();
12540         self
12541     }
12542     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12543     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12544     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePrivateDataFeaturesEXT12545     pub fn build(self) -> PhysicalDevicePrivateDataFeaturesEXT {
12546         self.inner
12547     }
12548 }
12549 #[repr(C)]
12550 #[cfg_attr(feature = "debug", derive(Debug))]
12551 #[derive(Copy, Clone)]
12552 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>"]
12553 pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12554     pub s_type: StructureType,
12555     pub p_next: *mut c_void,
12556     pub max_graphics_shader_group_count: u32,
12557     pub max_indirect_sequence_count: u32,
12558     pub max_indirect_commands_token_count: u32,
12559     pub max_indirect_commands_stream_count: u32,
12560     pub max_indirect_commands_token_offset: u32,
12561     pub max_indirect_commands_stream_stride: u32,
12562     pub min_sequences_count_buffer_offset_alignment: u32,
12563     pub min_sequences_index_buffer_offset_alignment: u32,
12564     pub min_indirect_commands_buffer_offset_alignment: u32,
12565 }
12566 impl ::std::default::Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
default() -> Self12567     fn default() -> Self {
12568         Self {
12569             s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
12570             p_next: ::std::ptr::null_mut(),
12571             max_graphics_shader_group_count: u32::default(),
12572             max_indirect_sequence_count: u32::default(),
12573             max_indirect_commands_token_count: u32::default(),
12574             max_indirect_commands_stream_count: u32::default(),
12575             max_indirect_commands_token_offset: u32::default(),
12576             max_indirect_commands_stream_stride: u32::default(),
12577             min_sequences_count_buffer_offset_alignment: u32::default(),
12578             min_sequences_index_buffer_offset_alignment: u32::default(),
12579             min_indirect_commands_buffer_offset_alignment: u32::default(),
12580         }
12581     }
12582 }
12583 impl PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a>12584     pub fn builder<'a>() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
12585         PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder {
12586             inner: Self::default(),
12587             marker: ::std::marker::PhantomData,
12588         }
12589     }
12590 }
12591 #[repr(transparent)]
12592 pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
12593     inner: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV,
12594     marker: ::std::marker::PhantomData<&'a ()>,
12595 }
12596 unsafe impl ExtendsPhysicalDeviceProperties2
12597     for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'_>
12598 {
12599 }
12600 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
12601 impl<'a> ::std::ops::Deref for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
12602     type Target = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
deref(&self) -> &Self::Target12603     fn deref(&self) -> &Self::Target {
12604         &self.inner
12605     }
12606 }
12607 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12608     fn deref_mut(&mut self) -> &mut Self::Target {
12609         &mut self.inner
12610     }
12611 }
12612 impl<'a> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
max_graphics_shader_group_count(mut self, max_graphics_shader_group_count: u32) -> Self12613     pub fn max_graphics_shader_group_count(mut self, max_graphics_shader_group_count: u32) -> Self {
12614         self.inner.max_graphics_shader_group_count = max_graphics_shader_group_count;
12615         self
12616     }
max_indirect_sequence_count(mut self, max_indirect_sequence_count: u32) -> Self12617     pub fn max_indirect_sequence_count(mut self, max_indirect_sequence_count: u32) -> Self {
12618         self.inner.max_indirect_sequence_count = max_indirect_sequence_count;
12619         self
12620     }
max_indirect_commands_token_count( mut self, max_indirect_commands_token_count: u32, ) -> Self12621     pub fn max_indirect_commands_token_count(
12622         mut self,
12623         max_indirect_commands_token_count: u32,
12624     ) -> Self {
12625         self.inner.max_indirect_commands_token_count = max_indirect_commands_token_count;
12626         self
12627     }
max_indirect_commands_stream_count( mut self, max_indirect_commands_stream_count: u32, ) -> Self12628     pub fn max_indirect_commands_stream_count(
12629         mut self,
12630         max_indirect_commands_stream_count: u32,
12631     ) -> Self {
12632         self.inner.max_indirect_commands_stream_count = max_indirect_commands_stream_count;
12633         self
12634     }
max_indirect_commands_token_offset( mut self, max_indirect_commands_token_offset: u32, ) -> Self12635     pub fn max_indirect_commands_token_offset(
12636         mut self,
12637         max_indirect_commands_token_offset: u32,
12638     ) -> Self {
12639         self.inner.max_indirect_commands_token_offset = max_indirect_commands_token_offset;
12640         self
12641     }
max_indirect_commands_stream_stride( mut self, max_indirect_commands_stream_stride: u32, ) -> Self12642     pub fn max_indirect_commands_stream_stride(
12643         mut self,
12644         max_indirect_commands_stream_stride: u32,
12645     ) -> Self {
12646         self.inner.max_indirect_commands_stream_stride = max_indirect_commands_stream_stride;
12647         self
12648     }
min_sequences_count_buffer_offset_alignment( mut self, min_sequences_count_buffer_offset_alignment: u32, ) -> Self12649     pub fn min_sequences_count_buffer_offset_alignment(
12650         mut self,
12651         min_sequences_count_buffer_offset_alignment: u32,
12652     ) -> Self {
12653         self.inner.min_sequences_count_buffer_offset_alignment =
12654             min_sequences_count_buffer_offset_alignment;
12655         self
12656     }
min_sequences_index_buffer_offset_alignment( mut self, min_sequences_index_buffer_offset_alignment: u32, ) -> Self12657     pub fn min_sequences_index_buffer_offset_alignment(
12658         mut self,
12659         min_sequences_index_buffer_offset_alignment: u32,
12660     ) -> Self {
12661         self.inner.min_sequences_index_buffer_offset_alignment =
12662             min_sequences_index_buffer_offset_alignment;
12663         self
12664     }
min_indirect_commands_buffer_offset_alignment( mut self, min_indirect_commands_buffer_offset_alignment: u32, ) -> Self12665     pub fn min_indirect_commands_buffer_offset_alignment(
12666         mut self,
12667         min_indirect_commands_buffer_offset_alignment: u32,
12668     ) -> Self {
12669         self.inner.min_indirect_commands_buffer_offset_alignment =
12670             min_indirect_commands_buffer_offset_alignment;
12671         self
12672     }
12673     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12674     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12675     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV12676     pub fn build(self) -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12677         self.inner
12678     }
12679 }
12680 #[repr(C)]
12681 #[cfg_attr(feature = "debug", derive(Debug))]
12682 #[derive(Copy, Clone)]
12683 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>"]
12684 pub struct PhysicalDeviceMultiDrawPropertiesEXT {
12685     pub s_type: StructureType,
12686     pub p_next: *mut c_void,
12687     pub max_multi_draw_count: u32,
12688 }
12689 impl ::std::default::Default for PhysicalDeviceMultiDrawPropertiesEXT {
default() -> Self12690     fn default() -> Self {
12691         Self {
12692             s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
12693             p_next: ::std::ptr::null_mut(),
12694             max_multi_draw_count: u32::default(),
12695         }
12696     }
12697 }
12698 impl PhysicalDeviceMultiDrawPropertiesEXT {
builder<'a>() -> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a>12699     pub fn builder<'a>() -> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12700         PhysicalDeviceMultiDrawPropertiesEXTBuilder {
12701             inner: Self::default(),
12702             marker: ::std::marker::PhantomData,
12703         }
12704     }
12705 }
12706 #[repr(transparent)]
12707 pub struct PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12708     inner: PhysicalDeviceMultiDrawPropertiesEXT,
12709     marker: ::std::marker::PhantomData<&'a ()>,
12710 }
12711 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'_> {}
12712 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiDrawPropertiesEXT {}
12713 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
12714     type Target = PhysicalDeviceMultiDrawPropertiesEXT;
deref(&self) -> &Self::Target12715     fn deref(&self) -> &Self::Target {
12716         &self.inner
12717     }
12718 }
12719 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12720     fn deref_mut(&mut self) -> &mut Self::Target {
12721         &mut self.inner
12722     }
12723 }
12724 impl<'a> PhysicalDeviceMultiDrawPropertiesEXTBuilder<'a> {
max_multi_draw_count(mut self, max_multi_draw_count: u32) -> Self12725     pub fn max_multi_draw_count(mut self, max_multi_draw_count: u32) -> Self {
12726         self.inner.max_multi_draw_count = max_multi_draw_count;
12727         self
12728     }
12729     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12730     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12731     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiDrawPropertiesEXT12732     pub fn build(self) -> PhysicalDeviceMultiDrawPropertiesEXT {
12733         self.inner
12734     }
12735 }
12736 #[repr(C)]
12737 #[cfg_attr(feature = "debug", derive(Debug))]
12738 #[derive(Copy, Clone)]
12739 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsShaderGroupCreateInfoNV.html>"]
12740 pub struct GraphicsShaderGroupCreateInfoNV {
12741     pub s_type: StructureType,
12742     pub p_next: *const c_void,
12743     pub stage_count: u32,
12744     pub p_stages: *const PipelineShaderStageCreateInfo,
12745     pub p_vertex_input_state: *const PipelineVertexInputStateCreateInfo,
12746     pub p_tessellation_state: *const PipelineTessellationStateCreateInfo,
12747 }
12748 impl ::std::default::Default for GraphicsShaderGroupCreateInfoNV {
default() -> Self12749     fn default() -> Self {
12750         Self {
12751             s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
12752             p_next: ::std::ptr::null(),
12753             stage_count: u32::default(),
12754             p_stages: ::std::ptr::null(),
12755             p_vertex_input_state: ::std::ptr::null(),
12756             p_tessellation_state: ::std::ptr::null(),
12757         }
12758     }
12759 }
12760 impl GraphicsShaderGroupCreateInfoNV {
builder<'a>() -> GraphicsShaderGroupCreateInfoNVBuilder<'a>12761     pub fn builder<'a>() -> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12762         GraphicsShaderGroupCreateInfoNVBuilder {
12763             inner: Self::default(),
12764             marker: ::std::marker::PhantomData,
12765         }
12766     }
12767 }
12768 #[repr(transparent)]
12769 pub struct GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12770     inner: GraphicsShaderGroupCreateInfoNV,
12771     marker: ::std::marker::PhantomData<&'a ()>,
12772 }
12773 impl<'a> ::std::ops::Deref for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
12774     type Target = GraphicsShaderGroupCreateInfoNV;
deref(&self) -> &Self::Target12775     fn deref(&self) -> &Self::Target {
12776         &self.inner
12777     }
12778 }
12779 impl<'a> ::std::ops::DerefMut for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12780     fn deref_mut(&mut self) -> &mut Self::Target {
12781         &mut self.inner
12782     }
12783 }
12784 impl<'a> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self12785     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
12786         self.inner.stage_count = stages.len() as _;
12787         self.inner.p_stages = stages.as_ptr();
12788         self
12789     }
vertex_input_state( mut self, vertex_input_state: &'a PipelineVertexInputStateCreateInfo, ) -> Self12790     pub fn vertex_input_state(
12791         mut self,
12792         vertex_input_state: &'a PipelineVertexInputStateCreateInfo,
12793     ) -> Self {
12794         self.inner.p_vertex_input_state = vertex_input_state;
12795         self
12796     }
tessellation_state( mut self, tessellation_state: &'a PipelineTessellationStateCreateInfo, ) -> Self12797     pub fn tessellation_state(
12798         mut self,
12799         tessellation_state: &'a PipelineTessellationStateCreateInfo,
12800     ) -> Self {
12801         self.inner.p_tessellation_state = tessellation_state;
12802         self
12803     }
12804     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12805     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12806     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GraphicsShaderGroupCreateInfoNV12807     pub fn build(self) -> GraphicsShaderGroupCreateInfoNV {
12808         self.inner
12809     }
12810 }
12811 #[repr(C)]
12812 #[cfg_attr(feature = "debug", derive(Debug))]
12813 #[derive(Copy, Clone)]
12814 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>"]
12815 pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
12816     pub s_type: StructureType,
12817     pub p_next: *const c_void,
12818     pub group_count: u32,
12819     pub p_groups: *const GraphicsShaderGroupCreateInfoNV,
12820     pub pipeline_count: u32,
12821     pub p_pipelines: *const Pipeline,
12822 }
12823 impl ::std::default::Default for GraphicsPipelineShaderGroupsCreateInfoNV {
default() -> Self12824     fn default() -> Self {
12825         Self {
12826             s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
12827             p_next: ::std::ptr::null(),
12828             group_count: u32::default(),
12829             p_groups: ::std::ptr::null(),
12830             pipeline_count: u32::default(),
12831             p_pipelines: ::std::ptr::null(),
12832         }
12833     }
12834 }
12835 impl GraphicsPipelineShaderGroupsCreateInfoNV {
builder<'a>() -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a>12836     pub fn builder<'a>() -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12837         GraphicsPipelineShaderGroupsCreateInfoNVBuilder {
12838             inner: Self::default(),
12839             marker: ::std::marker::PhantomData,
12840         }
12841     }
12842 }
12843 #[repr(transparent)]
12844 pub struct GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12845     inner: GraphicsPipelineShaderGroupsCreateInfoNV,
12846     marker: ::std::marker::PhantomData<&'a ()>,
12847 }
12848 unsafe impl ExtendsGraphicsPipelineCreateInfo
12849     for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'_>
12850 {
12851 }
12852 unsafe impl ExtendsGraphicsPipelineCreateInfo for GraphicsPipelineShaderGroupsCreateInfoNV {}
12853 impl<'a> ::std::ops::Deref for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
12854     type Target = GraphicsPipelineShaderGroupsCreateInfoNV;
deref(&self) -> &Self::Target12855     fn deref(&self) -> &Self::Target {
12856         &self.inner
12857     }
12858 }
12859 impl<'a> ::std::ops::DerefMut for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12860     fn deref_mut(&mut self) -> &mut Self::Target {
12861         &mut self.inner
12862     }
12863 }
12864 impl<'a> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
groups(mut self, groups: &'a [GraphicsShaderGroupCreateInfoNV]) -> Self12865     pub fn groups(mut self, groups: &'a [GraphicsShaderGroupCreateInfoNV]) -> Self {
12866         self.inner.group_count = groups.len() as _;
12867         self.inner.p_groups = groups.as_ptr();
12868         self
12869     }
pipelines(mut self, pipelines: &'a [Pipeline]) -> Self12870     pub fn pipelines(mut self, pipelines: &'a [Pipeline]) -> Self {
12871         self.inner.pipeline_count = pipelines.len() as _;
12872         self.inner.p_pipelines = pipelines.as_ptr();
12873         self
12874     }
12875     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12876     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12877     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GraphicsPipelineShaderGroupsCreateInfoNV12878     pub fn build(self) -> GraphicsPipelineShaderGroupsCreateInfoNV {
12879         self.inner
12880     }
12881 }
12882 #[repr(C)]
12883 #[cfg_attr(feature = "debug", derive(Debug))]
12884 #[derive(Copy, Clone, Default)]
12885 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindShaderGroupIndirectCommandNV.html>"]
12886 pub struct BindShaderGroupIndirectCommandNV {
12887     pub group_index: u32,
12888 }
12889 impl BindShaderGroupIndirectCommandNV {
builder<'a>() -> BindShaderGroupIndirectCommandNVBuilder<'a>12890     pub fn builder<'a>() -> BindShaderGroupIndirectCommandNVBuilder<'a> {
12891         BindShaderGroupIndirectCommandNVBuilder {
12892             inner: Self::default(),
12893             marker: ::std::marker::PhantomData,
12894         }
12895     }
12896 }
12897 #[repr(transparent)]
12898 pub struct BindShaderGroupIndirectCommandNVBuilder<'a> {
12899     inner: BindShaderGroupIndirectCommandNV,
12900     marker: ::std::marker::PhantomData<&'a ()>,
12901 }
12902 impl<'a> ::std::ops::Deref for BindShaderGroupIndirectCommandNVBuilder<'a> {
12903     type Target = BindShaderGroupIndirectCommandNV;
deref(&self) -> &Self::Target12904     fn deref(&self) -> &Self::Target {
12905         &self.inner
12906     }
12907 }
12908 impl<'a> ::std::ops::DerefMut for BindShaderGroupIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12909     fn deref_mut(&mut self) -> &mut Self::Target {
12910         &mut self.inner
12911     }
12912 }
12913 impl<'a> BindShaderGroupIndirectCommandNVBuilder<'a> {
group_index(mut self, group_index: u32) -> Self12914     pub fn group_index(mut self, group_index: u32) -> Self {
12915         self.inner.group_index = group_index;
12916         self
12917     }
12918     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12919     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12920     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindShaderGroupIndirectCommandNV12921     pub fn build(self) -> BindShaderGroupIndirectCommandNV {
12922         self.inner
12923     }
12924 }
12925 #[repr(C)]
12926 #[cfg_attr(feature = "debug", derive(Debug))]
12927 #[derive(Copy, Clone, Default)]
12928 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindIndexBufferIndirectCommandNV.html>"]
12929 pub struct BindIndexBufferIndirectCommandNV {
12930     pub buffer_address: DeviceAddress,
12931     pub size: u32,
12932     pub index_type: IndexType,
12933 }
12934 impl BindIndexBufferIndirectCommandNV {
builder<'a>() -> BindIndexBufferIndirectCommandNVBuilder<'a>12935     pub fn builder<'a>() -> BindIndexBufferIndirectCommandNVBuilder<'a> {
12936         BindIndexBufferIndirectCommandNVBuilder {
12937             inner: Self::default(),
12938             marker: ::std::marker::PhantomData,
12939         }
12940     }
12941 }
12942 #[repr(transparent)]
12943 pub struct BindIndexBufferIndirectCommandNVBuilder<'a> {
12944     inner: BindIndexBufferIndirectCommandNV,
12945     marker: ::std::marker::PhantomData<&'a ()>,
12946 }
12947 impl<'a> ::std::ops::Deref for BindIndexBufferIndirectCommandNVBuilder<'a> {
12948     type Target = BindIndexBufferIndirectCommandNV;
deref(&self) -> &Self::Target12949     fn deref(&self) -> &Self::Target {
12950         &self.inner
12951     }
12952 }
12953 impl<'a> ::std::ops::DerefMut for BindIndexBufferIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target12954     fn deref_mut(&mut self) -> &mut Self::Target {
12955         &mut self.inner
12956     }
12957 }
12958 impl<'a> BindIndexBufferIndirectCommandNVBuilder<'a> {
buffer_address(mut self, buffer_address: DeviceAddress) -> Self12959     pub fn buffer_address(mut self, buffer_address: DeviceAddress) -> Self {
12960         self.inner.buffer_address = buffer_address;
12961         self
12962     }
size(mut self, size: u32) -> Self12963     pub fn size(mut self, size: u32) -> Self {
12964         self.inner.size = size;
12965         self
12966     }
index_type(mut self, index_type: IndexType) -> Self12967     pub fn index_type(mut self, index_type: IndexType) -> Self {
12968         self.inner.index_type = index_type;
12969         self
12970     }
12971     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
12972     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
12973     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindIndexBufferIndirectCommandNV12974     pub fn build(self) -> BindIndexBufferIndirectCommandNV {
12975         self.inner
12976     }
12977 }
12978 #[repr(C)]
12979 #[cfg_attr(feature = "debug", derive(Debug))]
12980 #[derive(Copy, Clone, Default)]
12981 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindVertexBufferIndirectCommandNV.html>"]
12982 pub struct BindVertexBufferIndirectCommandNV {
12983     pub buffer_address: DeviceAddress,
12984     pub size: u32,
12985     pub stride: u32,
12986 }
12987 impl BindVertexBufferIndirectCommandNV {
builder<'a>() -> BindVertexBufferIndirectCommandNVBuilder<'a>12988     pub fn builder<'a>() -> BindVertexBufferIndirectCommandNVBuilder<'a> {
12989         BindVertexBufferIndirectCommandNVBuilder {
12990             inner: Self::default(),
12991             marker: ::std::marker::PhantomData,
12992         }
12993     }
12994 }
12995 #[repr(transparent)]
12996 pub struct BindVertexBufferIndirectCommandNVBuilder<'a> {
12997     inner: BindVertexBufferIndirectCommandNV,
12998     marker: ::std::marker::PhantomData<&'a ()>,
12999 }
13000 impl<'a> ::std::ops::Deref for BindVertexBufferIndirectCommandNVBuilder<'a> {
13001     type Target = BindVertexBufferIndirectCommandNV;
deref(&self) -> &Self::Target13002     fn deref(&self) -> &Self::Target {
13003         &self.inner
13004     }
13005 }
13006 impl<'a> ::std::ops::DerefMut for BindVertexBufferIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13007     fn deref_mut(&mut self) -> &mut Self::Target {
13008         &mut self.inner
13009     }
13010 }
13011 impl<'a> BindVertexBufferIndirectCommandNVBuilder<'a> {
buffer_address(mut self, buffer_address: DeviceAddress) -> Self13012     pub fn buffer_address(mut self, buffer_address: DeviceAddress) -> Self {
13013         self.inner.buffer_address = buffer_address;
13014         self
13015     }
size(mut self, size: u32) -> Self13016     pub fn size(mut self, size: u32) -> Self {
13017         self.inner.size = size;
13018         self
13019     }
stride(mut self, stride: u32) -> Self13020     pub fn stride(mut self, stride: u32) -> Self {
13021         self.inner.stride = stride;
13022         self
13023     }
13024     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13025     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13026     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindVertexBufferIndirectCommandNV13027     pub fn build(self) -> BindVertexBufferIndirectCommandNV {
13028         self.inner
13029     }
13030 }
13031 #[repr(C)]
13032 #[cfg_attr(feature = "debug", derive(Debug))]
13033 #[derive(Copy, Clone, Default)]
13034 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSetStateFlagsIndirectCommandNV.html>"]
13035 pub struct SetStateFlagsIndirectCommandNV {
13036     pub data: u32,
13037 }
13038 impl SetStateFlagsIndirectCommandNV {
builder<'a>() -> SetStateFlagsIndirectCommandNVBuilder<'a>13039     pub fn builder<'a>() -> SetStateFlagsIndirectCommandNVBuilder<'a> {
13040         SetStateFlagsIndirectCommandNVBuilder {
13041             inner: Self::default(),
13042             marker: ::std::marker::PhantomData,
13043         }
13044     }
13045 }
13046 #[repr(transparent)]
13047 pub struct SetStateFlagsIndirectCommandNVBuilder<'a> {
13048     inner: SetStateFlagsIndirectCommandNV,
13049     marker: ::std::marker::PhantomData<&'a ()>,
13050 }
13051 impl<'a> ::std::ops::Deref for SetStateFlagsIndirectCommandNVBuilder<'a> {
13052     type Target = SetStateFlagsIndirectCommandNV;
deref(&self) -> &Self::Target13053     fn deref(&self) -> &Self::Target {
13054         &self.inner
13055     }
13056 }
13057 impl<'a> ::std::ops::DerefMut for SetStateFlagsIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13058     fn deref_mut(&mut self) -> &mut Self::Target {
13059         &mut self.inner
13060     }
13061 }
13062 impl<'a> SetStateFlagsIndirectCommandNVBuilder<'a> {
data(mut self, data: u32) -> Self13063     pub fn data(mut self, data: u32) -> Self {
13064         self.inner.data = data;
13065         self
13066     }
13067     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13068     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13069     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SetStateFlagsIndirectCommandNV13070     pub fn build(self) -> SetStateFlagsIndirectCommandNV {
13071         self.inner
13072     }
13073 }
13074 #[repr(C)]
13075 #[cfg_attr(feature = "debug", derive(Debug))]
13076 #[derive(Copy, Clone, Default)]
13077 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsStreamNV.html>"]
13078 pub struct IndirectCommandsStreamNV {
13079     pub buffer: Buffer,
13080     pub offset: DeviceSize,
13081 }
13082 impl IndirectCommandsStreamNV {
builder<'a>() -> IndirectCommandsStreamNVBuilder<'a>13083     pub fn builder<'a>() -> IndirectCommandsStreamNVBuilder<'a> {
13084         IndirectCommandsStreamNVBuilder {
13085             inner: Self::default(),
13086             marker: ::std::marker::PhantomData,
13087         }
13088     }
13089 }
13090 #[repr(transparent)]
13091 pub struct IndirectCommandsStreamNVBuilder<'a> {
13092     inner: IndirectCommandsStreamNV,
13093     marker: ::std::marker::PhantomData<&'a ()>,
13094 }
13095 impl<'a> ::std::ops::Deref for IndirectCommandsStreamNVBuilder<'a> {
13096     type Target = IndirectCommandsStreamNV;
deref(&self) -> &Self::Target13097     fn deref(&self) -> &Self::Target {
13098         &self.inner
13099     }
13100 }
13101 impl<'a> ::std::ops::DerefMut for IndirectCommandsStreamNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13102     fn deref_mut(&mut self) -> &mut Self::Target {
13103         &mut self.inner
13104     }
13105 }
13106 impl<'a> IndirectCommandsStreamNVBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self13107     pub fn buffer(mut self, buffer: Buffer) -> Self {
13108         self.inner.buffer = buffer;
13109         self
13110     }
offset(mut self, offset: DeviceSize) -> Self13111     pub fn offset(mut self, offset: DeviceSize) -> Self {
13112         self.inner.offset = offset;
13113         self
13114     }
13115     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13116     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13117     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IndirectCommandsStreamNV13118     pub fn build(self) -> IndirectCommandsStreamNV {
13119         self.inner
13120     }
13121 }
13122 #[repr(C)]
13123 #[cfg_attr(feature = "debug", derive(Debug))]
13124 #[derive(Copy, Clone)]
13125 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsLayoutTokenNV.html>"]
13126 pub struct IndirectCommandsLayoutTokenNV {
13127     pub s_type: StructureType,
13128     pub p_next: *const c_void,
13129     pub token_type: IndirectCommandsTokenTypeNV,
13130     pub stream: u32,
13131     pub offset: u32,
13132     pub vertex_binding_unit: u32,
13133     pub vertex_dynamic_stride: Bool32,
13134     pub pushconstant_pipeline_layout: PipelineLayout,
13135     pub pushconstant_shader_stage_flags: ShaderStageFlags,
13136     pub pushconstant_offset: u32,
13137     pub pushconstant_size: u32,
13138     pub indirect_state_flags: IndirectStateFlagsNV,
13139     pub index_type_count: u32,
13140     pub p_index_types: *const IndexType,
13141     pub p_index_type_values: *const u32,
13142 }
13143 impl ::std::default::Default for IndirectCommandsLayoutTokenNV {
default() -> Self13144     fn default() -> Self {
13145         Self {
13146             s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
13147             p_next: ::std::ptr::null(),
13148             token_type: IndirectCommandsTokenTypeNV::default(),
13149             stream: u32::default(),
13150             offset: u32::default(),
13151             vertex_binding_unit: u32::default(),
13152             vertex_dynamic_stride: Bool32::default(),
13153             pushconstant_pipeline_layout: PipelineLayout::default(),
13154             pushconstant_shader_stage_flags: ShaderStageFlags::default(),
13155             pushconstant_offset: u32::default(),
13156             pushconstant_size: u32::default(),
13157             indirect_state_flags: IndirectStateFlagsNV::default(),
13158             index_type_count: u32::default(),
13159             p_index_types: ::std::ptr::null(),
13160             p_index_type_values: ::std::ptr::null(),
13161         }
13162     }
13163 }
13164 impl IndirectCommandsLayoutTokenNV {
builder<'a>() -> IndirectCommandsLayoutTokenNVBuilder<'a>13165     pub fn builder<'a>() -> IndirectCommandsLayoutTokenNVBuilder<'a> {
13166         IndirectCommandsLayoutTokenNVBuilder {
13167             inner: Self::default(),
13168             marker: ::std::marker::PhantomData,
13169         }
13170     }
13171 }
13172 #[repr(transparent)]
13173 pub struct IndirectCommandsLayoutTokenNVBuilder<'a> {
13174     inner: IndirectCommandsLayoutTokenNV,
13175     marker: ::std::marker::PhantomData<&'a ()>,
13176 }
13177 impl<'a> ::std::ops::Deref for IndirectCommandsLayoutTokenNVBuilder<'a> {
13178     type Target = IndirectCommandsLayoutTokenNV;
deref(&self) -> &Self::Target13179     fn deref(&self) -> &Self::Target {
13180         &self.inner
13181     }
13182 }
13183 impl<'a> ::std::ops::DerefMut for IndirectCommandsLayoutTokenNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13184     fn deref_mut(&mut self) -> &mut Self::Target {
13185         &mut self.inner
13186     }
13187 }
13188 impl<'a> IndirectCommandsLayoutTokenNVBuilder<'a> {
token_type(mut self, token_type: IndirectCommandsTokenTypeNV) -> Self13189     pub fn token_type(mut self, token_type: IndirectCommandsTokenTypeNV) -> Self {
13190         self.inner.token_type = token_type;
13191         self
13192     }
stream(mut self, stream: u32) -> Self13193     pub fn stream(mut self, stream: u32) -> Self {
13194         self.inner.stream = stream;
13195         self
13196     }
offset(mut self, offset: u32) -> Self13197     pub fn offset(mut self, offset: u32) -> Self {
13198         self.inner.offset = offset;
13199         self
13200     }
vertex_binding_unit(mut self, vertex_binding_unit: u32) -> Self13201     pub fn vertex_binding_unit(mut self, vertex_binding_unit: u32) -> Self {
13202         self.inner.vertex_binding_unit = vertex_binding_unit;
13203         self
13204     }
vertex_dynamic_stride(mut self, vertex_dynamic_stride: bool) -> Self13205     pub fn vertex_dynamic_stride(mut self, vertex_dynamic_stride: bool) -> Self {
13206         self.inner.vertex_dynamic_stride = vertex_dynamic_stride.into();
13207         self
13208     }
pushconstant_pipeline_layout( mut self, pushconstant_pipeline_layout: PipelineLayout, ) -> Self13209     pub fn pushconstant_pipeline_layout(
13210         mut self,
13211         pushconstant_pipeline_layout: PipelineLayout,
13212     ) -> Self {
13213         self.inner.pushconstant_pipeline_layout = pushconstant_pipeline_layout;
13214         self
13215     }
pushconstant_shader_stage_flags( mut self, pushconstant_shader_stage_flags: ShaderStageFlags, ) -> Self13216     pub fn pushconstant_shader_stage_flags(
13217         mut self,
13218         pushconstant_shader_stage_flags: ShaderStageFlags,
13219     ) -> Self {
13220         self.inner.pushconstant_shader_stage_flags = pushconstant_shader_stage_flags;
13221         self
13222     }
pushconstant_offset(mut self, pushconstant_offset: u32) -> Self13223     pub fn pushconstant_offset(mut self, pushconstant_offset: u32) -> Self {
13224         self.inner.pushconstant_offset = pushconstant_offset;
13225         self
13226     }
pushconstant_size(mut self, pushconstant_size: u32) -> Self13227     pub fn pushconstant_size(mut self, pushconstant_size: u32) -> Self {
13228         self.inner.pushconstant_size = pushconstant_size;
13229         self
13230     }
indirect_state_flags(mut self, indirect_state_flags: IndirectStateFlagsNV) -> Self13231     pub fn indirect_state_flags(mut self, indirect_state_flags: IndirectStateFlagsNV) -> Self {
13232         self.inner.indirect_state_flags = indirect_state_flags;
13233         self
13234     }
index_types(mut self, index_types: &'a [IndexType]) -> Self13235     pub fn index_types(mut self, index_types: &'a [IndexType]) -> Self {
13236         self.inner.index_type_count = index_types.len() as _;
13237         self.inner.p_index_types = index_types.as_ptr();
13238         self
13239     }
index_type_values(mut self, index_type_values: &'a [u32]) -> Self13240     pub fn index_type_values(mut self, index_type_values: &'a [u32]) -> Self {
13241         self.inner.index_type_count = index_type_values.len() as _;
13242         self.inner.p_index_type_values = index_type_values.as_ptr();
13243         self
13244     }
13245     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13246     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13247     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IndirectCommandsLayoutTokenNV13248     pub fn build(self) -> IndirectCommandsLayoutTokenNV {
13249         self.inner
13250     }
13251 }
13252 #[repr(C)]
13253 #[cfg_attr(feature = "debug", derive(Debug))]
13254 #[derive(Copy, Clone)]
13255 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>"]
13256 pub struct IndirectCommandsLayoutCreateInfoNV {
13257     pub s_type: StructureType,
13258     pub p_next: *const c_void,
13259     pub flags: IndirectCommandsLayoutUsageFlagsNV,
13260     pub pipeline_bind_point: PipelineBindPoint,
13261     pub token_count: u32,
13262     pub p_tokens: *const IndirectCommandsLayoutTokenNV,
13263     pub stream_count: u32,
13264     pub p_stream_strides: *const u32,
13265 }
13266 impl ::std::default::Default for IndirectCommandsLayoutCreateInfoNV {
default() -> Self13267     fn default() -> Self {
13268         Self {
13269             s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
13270             p_next: ::std::ptr::null(),
13271             flags: IndirectCommandsLayoutUsageFlagsNV::default(),
13272             pipeline_bind_point: PipelineBindPoint::default(),
13273             token_count: u32::default(),
13274             p_tokens: ::std::ptr::null(),
13275             stream_count: u32::default(),
13276             p_stream_strides: ::std::ptr::null(),
13277         }
13278     }
13279 }
13280 impl IndirectCommandsLayoutCreateInfoNV {
builder<'a>() -> IndirectCommandsLayoutCreateInfoNVBuilder<'a>13281     pub fn builder<'a>() -> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13282         IndirectCommandsLayoutCreateInfoNVBuilder {
13283             inner: Self::default(),
13284             marker: ::std::marker::PhantomData,
13285         }
13286     }
13287 }
13288 #[repr(transparent)]
13289 pub struct IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13290     inner: IndirectCommandsLayoutCreateInfoNV,
13291     marker: ::std::marker::PhantomData<&'a ()>,
13292 }
13293 impl<'a> ::std::ops::Deref for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
13294     type Target = IndirectCommandsLayoutCreateInfoNV;
deref(&self) -> &Self::Target13295     fn deref(&self) -> &Self::Target {
13296         &self.inner
13297     }
13298 }
13299 impl<'a> ::std::ops::DerefMut for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13300     fn deref_mut(&mut self) -> &mut Self::Target {
13301         &mut self.inner
13302     }
13303 }
13304 impl<'a> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
flags(mut self, flags: IndirectCommandsLayoutUsageFlagsNV) -> Self13305     pub fn flags(mut self, flags: IndirectCommandsLayoutUsageFlagsNV) -> Self {
13306         self.inner.flags = flags;
13307         self
13308     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self13309     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
13310         self.inner.pipeline_bind_point = pipeline_bind_point;
13311         self
13312     }
tokens(mut self, tokens: &'a [IndirectCommandsLayoutTokenNV]) -> Self13313     pub fn tokens(mut self, tokens: &'a [IndirectCommandsLayoutTokenNV]) -> Self {
13314         self.inner.token_count = tokens.len() as _;
13315         self.inner.p_tokens = tokens.as_ptr();
13316         self
13317     }
stream_strides(mut self, stream_strides: &'a [u32]) -> Self13318     pub fn stream_strides(mut self, stream_strides: &'a [u32]) -> Self {
13319         self.inner.stream_count = stream_strides.len() as _;
13320         self.inner.p_stream_strides = stream_strides.as_ptr();
13321         self
13322     }
13323     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13324     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13325     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IndirectCommandsLayoutCreateInfoNV13326     pub fn build(self) -> IndirectCommandsLayoutCreateInfoNV {
13327         self.inner
13328     }
13329 }
13330 #[repr(C)]
13331 #[cfg_attr(feature = "debug", derive(Debug))]
13332 #[derive(Copy, Clone)]
13333 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeneratedCommandsInfoNV.html>"]
13334 pub struct GeneratedCommandsInfoNV {
13335     pub s_type: StructureType,
13336     pub p_next: *const c_void,
13337     pub pipeline_bind_point: PipelineBindPoint,
13338     pub pipeline: Pipeline,
13339     pub indirect_commands_layout: IndirectCommandsLayoutNV,
13340     pub stream_count: u32,
13341     pub p_streams: *const IndirectCommandsStreamNV,
13342     pub sequences_count: u32,
13343     pub preprocess_buffer: Buffer,
13344     pub preprocess_offset: DeviceSize,
13345     pub preprocess_size: DeviceSize,
13346     pub sequences_count_buffer: Buffer,
13347     pub sequences_count_offset: DeviceSize,
13348     pub sequences_index_buffer: Buffer,
13349     pub sequences_index_offset: DeviceSize,
13350 }
13351 impl ::std::default::Default for GeneratedCommandsInfoNV {
default() -> Self13352     fn default() -> Self {
13353         Self {
13354             s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
13355             p_next: ::std::ptr::null(),
13356             pipeline_bind_point: PipelineBindPoint::default(),
13357             pipeline: Pipeline::default(),
13358             indirect_commands_layout: IndirectCommandsLayoutNV::default(),
13359             stream_count: u32::default(),
13360             p_streams: ::std::ptr::null(),
13361             sequences_count: u32::default(),
13362             preprocess_buffer: Buffer::default(),
13363             preprocess_offset: DeviceSize::default(),
13364             preprocess_size: DeviceSize::default(),
13365             sequences_count_buffer: Buffer::default(),
13366             sequences_count_offset: DeviceSize::default(),
13367             sequences_index_buffer: Buffer::default(),
13368             sequences_index_offset: DeviceSize::default(),
13369         }
13370     }
13371 }
13372 impl GeneratedCommandsInfoNV {
builder<'a>() -> GeneratedCommandsInfoNVBuilder<'a>13373     pub fn builder<'a>() -> GeneratedCommandsInfoNVBuilder<'a> {
13374         GeneratedCommandsInfoNVBuilder {
13375             inner: Self::default(),
13376             marker: ::std::marker::PhantomData,
13377         }
13378     }
13379 }
13380 #[repr(transparent)]
13381 pub struct GeneratedCommandsInfoNVBuilder<'a> {
13382     inner: GeneratedCommandsInfoNV,
13383     marker: ::std::marker::PhantomData<&'a ()>,
13384 }
13385 impl<'a> ::std::ops::Deref for GeneratedCommandsInfoNVBuilder<'a> {
13386     type Target = GeneratedCommandsInfoNV;
deref(&self) -> &Self::Target13387     fn deref(&self) -> &Self::Target {
13388         &self.inner
13389     }
13390 }
13391 impl<'a> ::std::ops::DerefMut for GeneratedCommandsInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13392     fn deref_mut(&mut self) -> &mut Self::Target {
13393         &mut self.inner
13394     }
13395 }
13396 impl<'a> GeneratedCommandsInfoNVBuilder<'a> {
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self13397     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
13398         self.inner.pipeline_bind_point = pipeline_bind_point;
13399         self
13400     }
pipeline(mut self, pipeline: Pipeline) -> Self13401     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
13402         self.inner.pipeline = pipeline;
13403         self
13404     }
indirect_commands_layout( mut self, indirect_commands_layout: IndirectCommandsLayoutNV, ) -> Self13405     pub fn indirect_commands_layout(
13406         mut self,
13407         indirect_commands_layout: IndirectCommandsLayoutNV,
13408     ) -> Self {
13409         self.inner.indirect_commands_layout = indirect_commands_layout;
13410         self
13411     }
streams(mut self, streams: &'a [IndirectCommandsStreamNV]) -> Self13412     pub fn streams(mut self, streams: &'a [IndirectCommandsStreamNV]) -> Self {
13413         self.inner.stream_count = streams.len() as _;
13414         self.inner.p_streams = streams.as_ptr();
13415         self
13416     }
sequences_count(mut self, sequences_count: u32) -> Self13417     pub fn sequences_count(mut self, sequences_count: u32) -> Self {
13418         self.inner.sequences_count = sequences_count;
13419         self
13420     }
preprocess_buffer(mut self, preprocess_buffer: Buffer) -> Self13421     pub fn preprocess_buffer(mut self, preprocess_buffer: Buffer) -> Self {
13422         self.inner.preprocess_buffer = preprocess_buffer;
13423         self
13424     }
preprocess_offset(mut self, preprocess_offset: DeviceSize) -> Self13425     pub fn preprocess_offset(mut self, preprocess_offset: DeviceSize) -> Self {
13426         self.inner.preprocess_offset = preprocess_offset;
13427         self
13428     }
preprocess_size(mut self, preprocess_size: DeviceSize) -> Self13429     pub fn preprocess_size(mut self, preprocess_size: DeviceSize) -> Self {
13430         self.inner.preprocess_size = preprocess_size;
13431         self
13432     }
sequences_count_buffer(mut self, sequences_count_buffer: Buffer) -> Self13433     pub fn sequences_count_buffer(mut self, sequences_count_buffer: Buffer) -> Self {
13434         self.inner.sequences_count_buffer = sequences_count_buffer;
13435         self
13436     }
sequences_count_offset(mut self, sequences_count_offset: DeviceSize) -> Self13437     pub fn sequences_count_offset(mut self, sequences_count_offset: DeviceSize) -> Self {
13438         self.inner.sequences_count_offset = sequences_count_offset;
13439         self
13440     }
sequences_index_buffer(mut self, sequences_index_buffer: Buffer) -> Self13441     pub fn sequences_index_buffer(mut self, sequences_index_buffer: Buffer) -> Self {
13442         self.inner.sequences_index_buffer = sequences_index_buffer;
13443         self
13444     }
sequences_index_offset(mut self, sequences_index_offset: DeviceSize) -> Self13445     pub fn sequences_index_offset(mut self, sequences_index_offset: DeviceSize) -> Self {
13446         self.inner.sequences_index_offset = sequences_index_offset;
13447         self
13448     }
13449     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13450     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13451     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeneratedCommandsInfoNV13452     pub fn build(self) -> GeneratedCommandsInfoNV {
13453         self.inner
13454     }
13455 }
13456 #[repr(C)]
13457 #[cfg_attr(feature = "debug", derive(Debug))]
13458 #[derive(Copy, Clone)]
13459 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>"]
13460 pub struct GeneratedCommandsMemoryRequirementsInfoNV {
13461     pub s_type: StructureType,
13462     pub p_next: *const c_void,
13463     pub pipeline_bind_point: PipelineBindPoint,
13464     pub pipeline: Pipeline,
13465     pub indirect_commands_layout: IndirectCommandsLayoutNV,
13466     pub max_sequences_count: u32,
13467 }
13468 impl ::std::default::Default for GeneratedCommandsMemoryRequirementsInfoNV {
default() -> Self13469     fn default() -> Self {
13470         Self {
13471             s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
13472             p_next: ::std::ptr::null(),
13473             pipeline_bind_point: PipelineBindPoint::default(),
13474             pipeline: Pipeline::default(),
13475             indirect_commands_layout: IndirectCommandsLayoutNV::default(),
13476             max_sequences_count: u32::default(),
13477         }
13478     }
13479 }
13480 impl GeneratedCommandsMemoryRequirementsInfoNV {
builder<'a>() -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a>13481     pub fn builder<'a>() -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13482         GeneratedCommandsMemoryRequirementsInfoNVBuilder {
13483             inner: Self::default(),
13484             marker: ::std::marker::PhantomData,
13485         }
13486     }
13487 }
13488 #[repr(transparent)]
13489 pub struct GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13490     inner: GeneratedCommandsMemoryRequirementsInfoNV,
13491     marker: ::std::marker::PhantomData<&'a ()>,
13492 }
13493 impl<'a> ::std::ops::Deref for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
13494     type Target = GeneratedCommandsMemoryRequirementsInfoNV;
deref(&self) -> &Self::Target13495     fn deref(&self) -> &Self::Target {
13496         &self.inner
13497     }
13498 }
13499 impl<'a> ::std::ops::DerefMut for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target13500     fn deref_mut(&mut self) -> &mut Self::Target {
13501         &mut self.inner
13502     }
13503 }
13504 impl<'a> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self13505     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
13506         self.inner.pipeline_bind_point = pipeline_bind_point;
13507         self
13508     }
pipeline(mut self, pipeline: Pipeline) -> Self13509     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
13510         self.inner.pipeline = pipeline;
13511         self
13512     }
indirect_commands_layout( mut self, indirect_commands_layout: IndirectCommandsLayoutNV, ) -> Self13513     pub fn indirect_commands_layout(
13514         mut self,
13515         indirect_commands_layout: IndirectCommandsLayoutNV,
13516     ) -> Self {
13517         self.inner.indirect_commands_layout = indirect_commands_layout;
13518         self
13519     }
max_sequences_count(mut self, max_sequences_count: u32) -> Self13520     pub fn max_sequences_count(mut self, max_sequences_count: u32) -> Self {
13521         self.inner.max_sequences_count = max_sequences_count;
13522         self
13523     }
13524     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13525     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13526     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeneratedCommandsMemoryRequirementsInfoNV13527     pub fn build(self) -> GeneratedCommandsMemoryRequirementsInfoNV {
13528         self.inner
13529     }
13530 }
13531 #[repr(C)]
13532 #[cfg_attr(feature = "debug", derive(Debug))]
13533 #[derive(Copy, Clone)]
13534 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFeatures2.html>"]
13535 pub struct PhysicalDeviceFeatures2 {
13536     pub s_type: StructureType,
13537     pub p_next: *mut c_void,
13538     pub features: PhysicalDeviceFeatures,
13539 }
13540 impl ::std::default::Default for PhysicalDeviceFeatures2 {
default() -> Self13541     fn default() -> Self {
13542         Self {
13543             s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
13544             p_next: ::std::ptr::null_mut(),
13545             features: PhysicalDeviceFeatures::default(),
13546         }
13547     }
13548 }
13549 impl PhysicalDeviceFeatures2 {
builder<'a>() -> PhysicalDeviceFeatures2Builder<'a>13550     pub fn builder<'a>() -> PhysicalDeviceFeatures2Builder<'a> {
13551         PhysicalDeviceFeatures2Builder {
13552             inner: Self::default(),
13553             marker: ::std::marker::PhantomData,
13554         }
13555     }
13556 }
13557 #[repr(transparent)]
13558 pub struct PhysicalDeviceFeatures2Builder<'a> {
13559     inner: PhysicalDeviceFeatures2,
13560     marker: ::std::marker::PhantomData<&'a ()>,
13561 }
13562 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFeatures2Builder<'_> {}
13563 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFeatures2 {}
13564 pub unsafe trait ExtendsPhysicalDeviceFeatures2 {}
13565 impl<'a> ::std::ops::Deref for PhysicalDeviceFeatures2Builder<'a> {
13566     type Target = PhysicalDeviceFeatures2;
deref(&self) -> &Self::Target13567     fn deref(&self) -> &Self::Target {
13568         &self.inner
13569     }
13570 }
13571 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFeatures2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13572     fn deref_mut(&mut self) -> &mut Self::Target {
13573         &mut self.inner
13574     }
13575 }
13576 impl<'a> PhysicalDeviceFeatures2Builder<'a> {
features(mut self, features: PhysicalDeviceFeatures) -> Self13577     pub fn features(mut self, features: PhysicalDeviceFeatures) -> Self {
13578         self.inner.features = features;
13579         self
13580     }
13581     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13582     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13583     #[doc = r" valid extension structs can be pushed into the chain."]
13584     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13585     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceFeatures2>(mut self, next: &'a mut T) -> Self13586     pub fn push_next<T: ExtendsPhysicalDeviceFeatures2>(mut self, next: &'a mut T) -> Self {
13587         unsafe {
13588             let next_ptr = next as *mut T as *mut BaseOutStructure;
13589             let last_next = ptr_chain_iter(next).last().unwrap();
13590             (*last_next).p_next = self.inner.p_next as _;
13591             self.inner.p_next = next_ptr as _;
13592         }
13593         self
13594     }
13595     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13596     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13597     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFeatures213598     pub fn build(self) -> PhysicalDeviceFeatures2 {
13599         self.inner
13600     }
13601 }
13602 #[repr(C)]
13603 #[cfg_attr(feature = "debug", derive(Debug))]
13604 #[derive(Copy, Clone)]
13605 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProperties2.html>"]
13606 pub struct PhysicalDeviceProperties2 {
13607     pub s_type: StructureType,
13608     pub p_next: *mut c_void,
13609     pub properties: PhysicalDeviceProperties,
13610 }
13611 impl ::std::default::Default for PhysicalDeviceProperties2 {
default() -> Self13612     fn default() -> Self {
13613         Self {
13614             s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
13615             p_next: ::std::ptr::null_mut(),
13616             properties: PhysicalDeviceProperties::default(),
13617         }
13618     }
13619 }
13620 impl PhysicalDeviceProperties2 {
builder<'a>() -> PhysicalDeviceProperties2Builder<'a>13621     pub fn builder<'a>() -> PhysicalDeviceProperties2Builder<'a> {
13622         PhysicalDeviceProperties2Builder {
13623             inner: Self::default(),
13624             marker: ::std::marker::PhantomData,
13625         }
13626     }
13627 }
13628 #[repr(transparent)]
13629 pub struct PhysicalDeviceProperties2Builder<'a> {
13630     inner: PhysicalDeviceProperties2,
13631     marker: ::std::marker::PhantomData<&'a ()>,
13632 }
13633 pub unsafe trait ExtendsPhysicalDeviceProperties2 {}
13634 impl<'a> ::std::ops::Deref for PhysicalDeviceProperties2Builder<'a> {
13635     type Target = PhysicalDeviceProperties2;
deref(&self) -> &Self::Target13636     fn deref(&self) -> &Self::Target {
13637         &self.inner
13638     }
13639 }
13640 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13641     fn deref_mut(&mut self) -> &mut Self::Target {
13642         &mut self.inner
13643     }
13644 }
13645 impl<'a> PhysicalDeviceProperties2Builder<'a> {
properties(mut self, properties: PhysicalDeviceProperties) -> Self13646     pub fn properties(mut self, properties: PhysicalDeviceProperties) -> Self {
13647         self.inner.properties = properties;
13648         self
13649     }
13650     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13651     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13652     #[doc = r" valid extension structs can be pushed into the chain."]
13653     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13654     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceProperties2>(mut self, next: &'a mut T) -> Self13655     pub fn push_next<T: ExtendsPhysicalDeviceProperties2>(mut self, next: &'a mut T) -> Self {
13656         unsafe {
13657             let next_ptr = next as *mut T as *mut BaseOutStructure;
13658             let last_next = ptr_chain_iter(next).last().unwrap();
13659             (*last_next).p_next = self.inner.p_next as _;
13660             self.inner.p_next = next_ptr as _;
13661         }
13662         self
13663     }
13664     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13665     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13666     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProperties213667     pub fn build(self) -> PhysicalDeviceProperties2 {
13668         self.inner
13669     }
13670 }
13671 #[repr(C)]
13672 #[cfg_attr(feature = "debug", derive(Debug))]
13673 #[derive(Copy, Clone)]
13674 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatProperties2.html>"]
13675 pub struct FormatProperties2 {
13676     pub s_type: StructureType,
13677     pub p_next: *mut c_void,
13678     pub format_properties: FormatProperties,
13679 }
13680 impl ::std::default::Default for FormatProperties2 {
default() -> Self13681     fn default() -> Self {
13682         Self {
13683             s_type: StructureType::FORMAT_PROPERTIES_2,
13684             p_next: ::std::ptr::null_mut(),
13685             format_properties: FormatProperties::default(),
13686         }
13687     }
13688 }
13689 impl FormatProperties2 {
builder<'a>() -> FormatProperties2Builder<'a>13690     pub fn builder<'a>() -> FormatProperties2Builder<'a> {
13691         FormatProperties2Builder {
13692             inner: Self::default(),
13693             marker: ::std::marker::PhantomData,
13694         }
13695     }
13696 }
13697 #[repr(transparent)]
13698 pub struct FormatProperties2Builder<'a> {
13699     inner: FormatProperties2,
13700     marker: ::std::marker::PhantomData<&'a ()>,
13701 }
13702 pub unsafe trait ExtendsFormatProperties2 {}
13703 impl<'a> ::std::ops::Deref for FormatProperties2Builder<'a> {
13704     type Target = FormatProperties2;
deref(&self) -> &Self::Target13705     fn deref(&self) -> &Self::Target {
13706         &self.inner
13707     }
13708 }
13709 impl<'a> ::std::ops::DerefMut for FormatProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13710     fn deref_mut(&mut self) -> &mut Self::Target {
13711         &mut self.inner
13712     }
13713 }
13714 impl<'a> FormatProperties2Builder<'a> {
format_properties(mut self, format_properties: FormatProperties) -> Self13715     pub fn format_properties(mut self, format_properties: FormatProperties) -> Self {
13716         self.inner.format_properties = format_properties;
13717         self
13718     }
13719     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13720     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13721     #[doc = r" valid extension structs can be pushed into the chain."]
13722     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13723     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsFormatProperties2>(mut self, next: &'a mut T) -> Self13724     pub fn push_next<T: ExtendsFormatProperties2>(mut self, next: &'a mut T) -> Self {
13725         unsafe {
13726             let next_ptr = next as *mut T as *mut BaseOutStructure;
13727             let last_next = ptr_chain_iter(next).last().unwrap();
13728             (*last_next).p_next = self.inner.p_next as _;
13729             self.inner.p_next = next_ptr as _;
13730         }
13731         self
13732     }
13733     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13734     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13735     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FormatProperties213736     pub fn build(self) -> FormatProperties2 {
13737         self.inner
13738     }
13739 }
13740 #[repr(C)]
13741 #[cfg_attr(feature = "debug", derive(Debug))]
13742 #[derive(Copy, Clone)]
13743 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatProperties2.html>"]
13744 pub struct ImageFormatProperties2 {
13745     pub s_type: StructureType,
13746     pub p_next: *mut c_void,
13747     pub image_format_properties: ImageFormatProperties,
13748 }
13749 impl ::std::default::Default for ImageFormatProperties2 {
default() -> Self13750     fn default() -> Self {
13751         Self {
13752             s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
13753             p_next: ::std::ptr::null_mut(),
13754             image_format_properties: ImageFormatProperties::default(),
13755         }
13756     }
13757 }
13758 impl ImageFormatProperties2 {
builder<'a>() -> ImageFormatProperties2Builder<'a>13759     pub fn builder<'a>() -> ImageFormatProperties2Builder<'a> {
13760         ImageFormatProperties2Builder {
13761             inner: Self::default(),
13762             marker: ::std::marker::PhantomData,
13763         }
13764     }
13765 }
13766 #[repr(transparent)]
13767 pub struct ImageFormatProperties2Builder<'a> {
13768     inner: ImageFormatProperties2,
13769     marker: ::std::marker::PhantomData<&'a ()>,
13770 }
13771 pub unsafe trait ExtendsImageFormatProperties2 {}
13772 impl<'a> ::std::ops::Deref for ImageFormatProperties2Builder<'a> {
13773     type Target = ImageFormatProperties2;
deref(&self) -> &Self::Target13774     fn deref(&self) -> &Self::Target {
13775         &self.inner
13776     }
13777 }
13778 impl<'a> ::std::ops::DerefMut for ImageFormatProperties2Builder<'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> ImageFormatProperties2Builder<'a> {
image_format_properties( mut self, image_format_properties: ImageFormatProperties, ) -> Self13784     pub fn image_format_properties(
13785         mut self,
13786         image_format_properties: ImageFormatProperties,
13787     ) -> Self {
13788         self.inner.image_format_properties = image_format_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: ExtendsImageFormatProperties2>(mut self, next: &'a mut T) -> Self13796     pub fn push_next<T: ExtendsImageFormatProperties2>(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) -> ImageFormatProperties213808     pub fn build(self) -> ImageFormatProperties2 {
13809         self.inner
13810     }
13811 }
13812 #[repr(C)]
13813 #[cfg_attr(feature = "debug", derive(Debug))]
13814 #[derive(Copy, Clone)]
13815 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageFormatInfo2.html>"]
13816 pub struct PhysicalDeviceImageFormatInfo2 {
13817     pub s_type: StructureType,
13818     pub p_next: *const c_void,
13819     pub format: Format,
13820     pub ty: ImageType,
13821     pub tiling: ImageTiling,
13822     pub usage: ImageUsageFlags,
13823     pub flags: ImageCreateFlags,
13824 }
13825 impl ::std::default::Default for PhysicalDeviceImageFormatInfo2 {
default() -> Self13826     fn default() -> Self {
13827         Self {
13828             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
13829             p_next: ::std::ptr::null(),
13830             format: Format::default(),
13831             ty: ImageType::default(),
13832             tiling: ImageTiling::default(),
13833             usage: ImageUsageFlags::default(),
13834             flags: ImageCreateFlags::default(),
13835         }
13836     }
13837 }
13838 impl PhysicalDeviceImageFormatInfo2 {
builder<'a>() -> PhysicalDeviceImageFormatInfo2Builder<'a>13839     pub fn builder<'a>() -> PhysicalDeviceImageFormatInfo2Builder<'a> {
13840         PhysicalDeviceImageFormatInfo2Builder {
13841             inner: Self::default(),
13842             marker: ::std::marker::PhantomData,
13843         }
13844     }
13845 }
13846 #[repr(transparent)]
13847 pub struct PhysicalDeviceImageFormatInfo2Builder<'a> {
13848     inner: PhysicalDeviceImageFormatInfo2,
13849     marker: ::std::marker::PhantomData<&'a ()>,
13850 }
13851 pub unsafe trait ExtendsPhysicalDeviceImageFormatInfo2 {}
13852 impl<'a> ::std::ops::Deref for PhysicalDeviceImageFormatInfo2Builder<'a> {
13853     type Target = PhysicalDeviceImageFormatInfo2;
deref(&self) -> &Self::Target13854     fn deref(&self) -> &Self::Target {
13855         &self.inner
13856     }
13857 }
13858 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageFormatInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13859     fn deref_mut(&mut self) -> &mut Self::Target {
13860         &mut self.inner
13861     }
13862 }
13863 impl<'a> PhysicalDeviceImageFormatInfo2Builder<'a> {
format(mut self, format: Format) -> Self13864     pub fn format(mut self, format: Format) -> Self {
13865         self.inner.format = format;
13866         self
13867     }
ty(mut self, ty: ImageType) -> Self13868     pub fn ty(mut self, ty: ImageType) -> Self {
13869         self.inner.ty = ty;
13870         self
13871     }
tiling(mut self, tiling: ImageTiling) -> Self13872     pub fn tiling(mut self, tiling: ImageTiling) -> Self {
13873         self.inner.tiling = tiling;
13874         self
13875     }
usage(mut self, usage: ImageUsageFlags) -> Self13876     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
13877         self.inner.usage = usage;
13878         self
13879     }
flags(mut self, flags: ImageCreateFlags) -> Self13880     pub fn flags(mut self, flags: ImageCreateFlags) -> Self {
13881         self.inner.flags = flags;
13882         self
13883     }
13884     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13885     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13886     #[doc = r" valid extension structs can be pushed into the chain."]
13887     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13888     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceImageFormatInfo2>(mut self, next: &'a mut T) -> Self13889     pub fn push_next<T: ExtendsPhysicalDeviceImageFormatInfo2>(mut self, next: &'a mut T) -> Self {
13890         unsafe {
13891             let next_ptr = next as *mut T as *mut BaseOutStructure;
13892             let last_next = ptr_chain_iter(next).last().unwrap();
13893             (*last_next).p_next = self.inner.p_next as _;
13894             self.inner.p_next = next_ptr as _;
13895         }
13896         self
13897     }
13898     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13899     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13900     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageFormatInfo213901     pub fn build(self) -> PhysicalDeviceImageFormatInfo2 {
13902         self.inner
13903     }
13904 }
13905 #[repr(C)]
13906 #[cfg_attr(feature = "debug", derive(Debug))]
13907 #[derive(Copy, Clone)]
13908 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyProperties2.html>"]
13909 pub struct QueueFamilyProperties2 {
13910     pub s_type: StructureType,
13911     pub p_next: *mut c_void,
13912     pub queue_family_properties: QueueFamilyProperties,
13913 }
13914 impl ::std::default::Default for QueueFamilyProperties2 {
default() -> Self13915     fn default() -> Self {
13916         Self {
13917             s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
13918             p_next: ::std::ptr::null_mut(),
13919             queue_family_properties: QueueFamilyProperties::default(),
13920         }
13921     }
13922 }
13923 impl QueueFamilyProperties2 {
builder<'a>() -> QueueFamilyProperties2Builder<'a>13924     pub fn builder<'a>() -> QueueFamilyProperties2Builder<'a> {
13925         QueueFamilyProperties2Builder {
13926             inner: Self::default(),
13927             marker: ::std::marker::PhantomData,
13928         }
13929     }
13930 }
13931 #[repr(transparent)]
13932 pub struct QueueFamilyProperties2Builder<'a> {
13933     inner: QueueFamilyProperties2,
13934     marker: ::std::marker::PhantomData<&'a ()>,
13935 }
13936 pub unsafe trait ExtendsQueueFamilyProperties2 {}
13937 impl<'a> ::std::ops::Deref for QueueFamilyProperties2Builder<'a> {
13938     type Target = QueueFamilyProperties2;
deref(&self) -> &Self::Target13939     fn deref(&self) -> &Self::Target {
13940         &self.inner
13941     }
13942 }
13943 impl<'a> ::std::ops::DerefMut for QueueFamilyProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target13944     fn deref_mut(&mut self) -> &mut Self::Target {
13945         &mut self.inner
13946     }
13947 }
13948 impl<'a> QueueFamilyProperties2Builder<'a> {
queue_family_properties( mut self, queue_family_properties: QueueFamilyProperties, ) -> Self13949     pub fn queue_family_properties(
13950         mut self,
13951         queue_family_properties: QueueFamilyProperties,
13952     ) -> Self {
13953         self.inner.queue_family_properties = queue_family_properties;
13954         self
13955     }
13956     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
13957     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
13958     #[doc = r" valid extension structs can be pushed into the chain."]
13959     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
13960     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsQueueFamilyProperties2>(mut self, next: &'a mut T) -> Self13961     pub fn push_next<T: ExtendsQueueFamilyProperties2>(mut self, next: &'a mut T) -> Self {
13962         unsafe {
13963             let next_ptr = next as *mut T as *mut BaseOutStructure;
13964             let last_next = ptr_chain_iter(next).last().unwrap();
13965             (*last_next).p_next = self.inner.p_next as _;
13966             self.inner.p_next = next_ptr as _;
13967         }
13968         self
13969     }
13970     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
13971     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
13972     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyProperties213973     pub fn build(self) -> QueueFamilyProperties2 {
13974         self.inner
13975     }
13976 }
13977 #[repr(C)]
13978 #[cfg_attr(feature = "debug", derive(Debug))]
13979 #[derive(Copy, Clone)]
13980 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryProperties2.html>"]
13981 pub struct PhysicalDeviceMemoryProperties2 {
13982     pub s_type: StructureType,
13983     pub p_next: *mut c_void,
13984     pub memory_properties: PhysicalDeviceMemoryProperties,
13985 }
13986 impl ::std::default::Default for PhysicalDeviceMemoryProperties2 {
default() -> Self13987     fn default() -> Self {
13988         Self {
13989             s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
13990             p_next: ::std::ptr::null_mut(),
13991             memory_properties: PhysicalDeviceMemoryProperties::default(),
13992         }
13993     }
13994 }
13995 impl PhysicalDeviceMemoryProperties2 {
builder<'a>() -> PhysicalDeviceMemoryProperties2Builder<'a>13996     pub fn builder<'a>() -> PhysicalDeviceMemoryProperties2Builder<'a> {
13997         PhysicalDeviceMemoryProperties2Builder {
13998             inner: Self::default(),
13999             marker: ::std::marker::PhantomData,
14000         }
14001     }
14002 }
14003 #[repr(transparent)]
14004 pub struct PhysicalDeviceMemoryProperties2Builder<'a> {
14005     inner: PhysicalDeviceMemoryProperties2,
14006     marker: ::std::marker::PhantomData<&'a ()>,
14007 }
14008 pub unsafe trait ExtendsPhysicalDeviceMemoryProperties2 {}
14009 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryProperties2Builder<'a> {
14010     type Target = PhysicalDeviceMemoryProperties2;
deref(&self) -> &Self::Target14011     fn deref(&self) -> &Self::Target {
14012         &self.inner
14013     }
14014 }
14015 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target14016     fn deref_mut(&mut self) -> &mut Self::Target {
14017         &mut self.inner
14018     }
14019 }
14020 impl<'a> PhysicalDeviceMemoryProperties2Builder<'a> {
memory_properties(mut self, memory_properties: PhysicalDeviceMemoryProperties) -> Self14021     pub fn memory_properties(mut self, memory_properties: PhysicalDeviceMemoryProperties) -> Self {
14022         self.inner.memory_properties = memory_properties;
14023         self
14024     }
14025     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
14026     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
14027     #[doc = r" valid extension structs can be pushed into the chain."]
14028     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
14029     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceMemoryProperties2>(mut self, next: &'a mut T) -> Self14030     pub fn push_next<T: ExtendsPhysicalDeviceMemoryProperties2>(mut self, next: &'a mut T) -> Self {
14031         unsafe {
14032             let next_ptr = next as *mut T as *mut BaseOutStructure;
14033             let last_next = ptr_chain_iter(next).last().unwrap();
14034             (*last_next).p_next = self.inner.p_next as _;
14035             self.inner.p_next = next_ptr as _;
14036         }
14037         self
14038     }
14039     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14040     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14041     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryProperties214042     pub fn build(self) -> PhysicalDeviceMemoryProperties2 {
14043         self.inner
14044     }
14045 }
14046 #[repr(C)]
14047 #[cfg_attr(feature = "debug", derive(Debug))]
14048 #[derive(Copy, Clone)]
14049 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatProperties2.html>"]
14050 pub struct SparseImageFormatProperties2 {
14051     pub s_type: StructureType,
14052     pub p_next: *mut c_void,
14053     pub properties: SparseImageFormatProperties,
14054 }
14055 impl ::std::default::Default for SparseImageFormatProperties2 {
default() -> Self14056     fn default() -> Self {
14057         Self {
14058             s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
14059             p_next: ::std::ptr::null_mut(),
14060             properties: SparseImageFormatProperties::default(),
14061         }
14062     }
14063 }
14064 impl SparseImageFormatProperties2 {
builder<'a>() -> SparseImageFormatProperties2Builder<'a>14065     pub fn builder<'a>() -> SparseImageFormatProperties2Builder<'a> {
14066         SparseImageFormatProperties2Builder {
14067             inner: Self::default(),
14068             marker: ::std::marker::PhantomData,
14069         }
14070     }
14071 }
14072 #[repr(transparent)]
14073 pub struct SparseImageFormatProperties2Builder<'a> {
14074     inner: SparseImageFormatProperties2,
14075     marker: ::std::marker::PhantomData<&'a ()>,
14076 }
14077 impl<'a> ::std::ops::Deref for SparseImageFormatProperties2Builder<'a> {
14078     type Target = SparseImageFormatProperties2;
deref(&self) -> &Self::Target14079     fn deref(&self) -> &Self::Target {
14080         &self.inner
14081     }
14082 }
14083 impl<'a> ::std::ops::DerefMut for SparseImageFormatProperties2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target14084     fn deref_mut(&mut self) -> &mut Self::Target {
14085         &mut self.inner
14086     }
14087 }
14088 impl<'a> SparseImageFormatProperties2Builder<'a> {
properties(mut self, properties: SparseImageFormatProperties) -> Self14089     pub fn properties(mut self, properties: SparseImageFormatProperties) -> Self {
14090         self.inner.properties = properties;
14091         self
14092     }
14093     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14094     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14095     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageFormatProperties214096     pub fn build(self) -> SparseImageFormatProperties2 {
14097         self.inner
14098     }
14099 }
14100 #[repr(C)]
14101 #[cfg_attr(feature = "debug", derive(Debug))]
14102 #[derive(Copy, Clone)]
14103 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>"]
14104 pub struct PhysicalDeviceSparseImageFormatInfo2 {
14105     pub s_type: StructureType,
14106     pub p_next: *const c_void,
14107     pub format: Format,
14108     pub ty: ImageType,
14109     pub samples: SampleCountFlags,
14110     pub usage: ImageUsageFlags,
14111     pub tiling: ImageTiling,
14112 }
14113 impl ::std::default::Default for PhysicalDeviceSparseImageFormatInfo2 {
default() -> Self14114     fn default() -> Self {
14115         Self {
14116             s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
14117             p_next: ::std::ptr::null(),
14118             format: Format::default(),
14119             ty: ImageType::default(),
14120             samples: SampleCountFlags::default(),
14121             usage: ImageUsageFlags::default(),
14122             tiling: ImageTiling::default(),
14123         }
14124     }
14125 }
14126 impl PhysicalDeviceSparseImageFormatInfo2 {
builder<'a>() -> PhysicalDeviceSparseImageFormatInfo2Builder<'a>14127     pub fn builder<'a>() -> PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
14128         PhysicalDeviceSparseImageFormatInfo2Builder {
14129             inner: Self::default(),
14130             marker: ::std::marker::PhantomData,
14131         }
14132     }
14133 }
14134 #[repr(transparent)]
14135 pub struct PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
14136     inner: PhysicalDeviceSparseImageFormatInfo2,
14137     marker: ::std::marker::PhantomData<&'a ()>,
14138 }
14139 impl<'a> ::std::ops::Deref for PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
14140     type Target = PhysicalDeviceSparseImageFormatInfo2;
deref(&self) -> &Self::Target14141     fn deref(&self) -> &Self::Target {
14142         &self.inner
14143     }
14144 }
14145 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target14146     fn deref_mut(&mut self) -> &mut Self::Target {
14147         &mut self.inner
14148     }
14149 }
14150 impl<'a> PhysicalDeviceSparseImageFormatInfo2Builder<'a> {
format(mut self, format: Format) -> Self14151     pub fn format(mut self, format: Format) -> Self {
14152         self.inner.format = format;
14153         self
14154     }
ty(mut self, ty: ImageType) -> Self14155     pub fn ty(mut self, ty: ImageType) -> Self {
14156         self.inner.ty = ty;
14157         self
14158     }
samples(mut self, samples: SampleCountFlags) -> Self14159     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
14160         self.inner.samples = samples;
14161         self
14162     }
usage(mut self, usage: ImageUsageFlags) -> Self14163     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
14164         self.inner.usage = usage;
14165         self
14166     }
tiling(mut self, tiling: ImageTiling) -> Self14167     pub fn tiling(mut self, tiling: ImageTiling) -> Self {
14168         self.inner.tiling = tiling;
14169         self
14170     }
14171     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14172     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14173     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSparseImageFormatInfo214174     pub fn build(self) -> PhysicalDeviceSparseImageFormatInfo2 {
14175         self.inner
14176     }
14177 }
14178 #[repr(C)]
14179 #[cfg_attr(feature = "debug", derive(Debug))]
14180 #[derive(Copy, Clone)]
14181 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>"]
14182 pub struct PhysicalDevicePushDescriptorPropertiesKHR {
14183     pub s_type: StructureType,
14184     pub p_next: *mut c_void,
14185     pub max_push_descriptors: u32,
14186 }
14187 impl ::std::default::Default for PhysicalDevicePushDescriptorPropertiesKHR {
default() -> Self14188     fn default() -> Self {
14189         Self {
14190             s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
14191             p_next: ::std::ptr::null_mut(),
14192             max_push_descriptors: u32::default(),
14193         }
14194     }
14195 }
14196 impl PhysicalDevicePushDescriptorPropertiesKHR {
builder<'a>() -> PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a>14197     pub fn builder<'a>() -> PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
14198         PhysicalDevicePushDescriptorPropertiesKHRBuilder {
14199             inner: Self::default(),
14200             marker: ::std::marker::PhantomData,
14201         }
14202     }
14203 }
14204 #[repr(transparent)]
14205 pub struct PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
14206     inner: PhysicalDevicePushDescriptorPropertiesKHR,
14207     marker: ::std::marker::PhantomData<&'a ()>,
14208 }
14209 unsafe impl ExtendsPhysicalDeviceProperties2
14210     for PhysicalDevicePushDescriptorPropertiesKHRBuilder<'_>
14211 {
14212 }
14213 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePushDescriptorPropertiesKHR {}
14214 impl<'a> ::std::ops::Deref for PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
14215     type Target = PhysicalDevicePushDescriptorPropertiesKHR;
deref(&self) -> &Self::Target14216     fn deref(&self) -> &Self::Target {
14217         &self.inner
14218     }
14219 }
14220 impl<'a> ::std::ops::DerefMut for PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14221     fn deref_mut(&mut self) -> &mut Self::Target {
14222         &mut self.inner
14223     }
14224 }
14225 impl<'a> PhysicalDevicePushDescriptorPropertiesKHRBuilder<'a> {
max_push_descriptors(mut self, max_push_descriptors: u32) -> Self14226     pub fn max_push_descriptors(mut self, max_push_descriptors: u32) -> Self {
14227         self.inner.max_push_descriptors = max_push_descriptors;
14228         self
14229     }
14230     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14231     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14232     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePushDescriptorPropertiesKHR14233     pub fn build(self) -> PhysicalDevicePushDescriptorPropertiesKHR {
14234         self.inner
14235     }
14236 }
14237 #[repr(C)]
14238 #[cfg_attr(feature = "debug", derive(Debug))]
14239 #[derive(Copy, Clone, Default)]
14240 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkConformanceVersion.html>"]
14241 pub struct ConformanceVersion {
14242     pub major: u8,
14243     pub minor: u8,
14244     pub subminor: u8,
14245     pub patch: u8,
14246 }
14247 impl ConformanceVersion {
builder<'a>() -> ConformanceVersionBuilder<'a>14248     pub fn builder<'a>() -> ConformanceVersionBuilder<'a> {
14249         ConformanceVersionBuilder {
14250             inner: Self::default(),
14251             marker: ::std::marker::PhantomData,
14252         }
14253     }
14254 }
14255 #[repr(transparent)]
14256 pub struct ConformanceVersionBuilder<'a> {
14257     inner: ConformanceVersion,
14258     marker: ::std::marker::PhantomData<&'a ()>,
14259 }
14260 impl<'a> ::std::ops::Deref for ConformanceVersionBuilder<'a> {
14261     type Target = ConformanceVersion;
deref(&self) -> &Self::Target14262     fn deref(&self) -> &Self::Target {
14263         &self.inner
14264     }
14265 }
14266 impl<'a> ::std::ops::DerefMut for ConformanceVersionBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14267     fn deref_mut(&mut self) -> &mut Self::Target {
14268         &mut self.inner
14269     }
14270 }
14271 impl<'a> ConformanceVersionBuilder<'a> {
major(mut self, major: u8) -> Self14272     pub fn major(mut self, major: u8) -> Self {
14273         self.inner.major = major;
14274         self
14275     }
minor(mut self, minor: u8) -> Self14276     pub fn minor(mut self, minor: u8) -> Self {
14277         self.inner.minor = minor;
14278         self
14279     }
subminor(mut self, subminor: u8) -> Self14280     pub fn subminor(mut self, subminor: u8) -> Self {
14281         self.inner.subminor = subminor;
14282         self
14283     }
patch(mut self, patch: u8) -> Self14284     pub fn patch(mut self, patch: u8) -> Self {
14285         self.inner.patch = patch;
14286         self
14287     }
14288     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14289     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14290     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ConformanceVersion14291     pub fn build(self) -> ConformanceVersion {
14292         self.inner
14293     }
14294 }
14295 #[repr(C)]
14296 #[derive(Copy, Clone)]
14297 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDriverProperties.html>"]
14298 pub struct PhysicalDeviceDriverProperties {
14299     pub s_type: StructureType,
14300     pub p_next: *mut c_void,
14301     pub driver_id: DriverId,
14302     pub driver_name: [c_char; MAX_DRIVER_NAME_SIZE],
14303     pub driver_info: [c_char; MAX_DRIVER_INFO_SIZE],
14304     pub conformance_version: ConformanceVersion,
14305 }
14306 #[cfg(feature = "debug")]
14307 impl fmt::Debug for PhysicalDeviceDriverProperties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result14308     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
14309         fmt.debug_struct("PhysicalDeviceDriverProperties")
14310             .field("s_type", &self.s_type)
14311             .field("p_next", &self.p_next)
14312             .field("driver_id", &self.driver_id)
14313             .field("driver_name", &unsafe {
14314                 ::std::ffi::CStr::from_ptr(self.driver_name.as_ptr() as *const c_char)
14315             })
14316             .field("driver_info", &unsafe {
14317                 ::std::ffi::CStr::from_ptr(self.driver_info.as_ptr() as *const c_char)
14318             })
14319             .field("conformance_version", &self.conformance_version)
14320             .finish()
14321     }
14322 }
14323 impl ::std::default::Default for PhysicalDeviceDriverProperties {
default() -> Self14324     fn default() -> Self {
14325         Self {
14326             s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
14327             p_next: ::std::ptr::null_mut(),
14328             driver_id: DriverId::default(),
14329             driver_name: unsafe { ::std::mem::zeroed() },
14330             driver_info: unsafe { ::std::mem::zeroed() },
14331             conformance_version: ConformanceVersion::default(),
14332         }
14333     }
14334 }
14335 impl PhysicalDeviceDriverProperties {
builder<'a>() -> PhysicalDeviceDriverPropertiesBuilder<'a>14336     pub fn builder<'a>() -> PhysicalDeviceDriverPropertiesBuilder<'a> {
14337         PhysicalDeviceDriverPropertiesBuilder {
14338             inner: Self::default(),
14339             marker: ::std::marker::PhantomData,
14340         }
14341     }
14342 }
14343 #[repr(transparent)]
14344 pub struct PhysicalDeviceDriverPropertiesBuilder<'a> {
14345     inner: PhysicalDeviceDriverProperties,
14346     marker: ::std::marker::PhantomData<&'a ()>,
14347 }
14348 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDriverPropertiesBuilder<'_> {}
14349 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDriverProperties {}
14350 impl<'a> ::std::ops::Deref for PhysicalDeviceDriverPropertiesBuilder<'a> {
14351     type Target = PhysicalDeviceDriverProperties;
deref(&self) -> &Self::Target14352     fn deref(&self) -> &Self::Target {
14353         &self.inner
14354     }
14355 }
14356 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDriverPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14357     fn deref_mut(&mut self) -> &mut Self::Target {
14358         &mut self.inner
14359     }
14360 }
14361 impl<'a> PhysicalDeviceDriverPropertiesBuilder<'a> {
driver_id(mut self, driver_id: DriverId) -> Self14362     pub fn driver_id(mut self, driver_id: DriverId) -> Self {
14363         self.inner.driver_id = driver_id;
14364         self
14365     }
driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self14366     pub fn driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self {
14367         self.inner.driver_name = driver_name;
14368         self
14369     }
driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self14370     pub fn driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self {
14371         self.inner.driver_info = driver_info;
14372         self
14373     }
conformance_version(mut self, conformance_version: ConformanceVersion) -> Self14374     pub fn conformance_version(mut self, conformance_version: ConformanceVersion) -> Self {
14375         self.inner.conformance_version = conformance_version;
14376         self
14377     }
14378     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14379     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14380     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDriverProperties14381     pub fn build(self) -> PhysicalDeviceDriverProperties {
14382         self.inner
14383     }
14384 }
14385 #[repr(C)]
14386 #[cfg_attr(feature = "debug", derive(Debug))]
14387 #[derive(Copy, Clone)]
14388 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentRegionsKHR.html>"]
14389 pub struct PresentRegionsKHR {
14390     pub s_type: StructureType,
14391     pub p_next: *const c_void,
14392     pub swapchain_count: u32,
14393     pub p_regions: *const PresentRegionKHR,
14394 }
14395 impl ::std::default::Default for PresentRegionsKHR {
default() -> Self14396     fn default() -> Self {
14397         Self {
14398             s_type: StructureType::PRESENT_REGIONS_KHR,
14399             p_next: ::std::ptr::null(),
14400             swapchain_count: u32::default(),
14401             p_regions: ::std::ptr::null(),
14402         }
14403     }
14404 }
14405 impl PresentRegionsKHR {
builder<'a>() -> PresentRegionsKHRBuilder<'a>14406     pub fn builder<'a>() -> PresentRegionsKHRBuilder<'a> {
14407         PresentRegionsKHRBuilder {
14408             inner: Self::default(),
14409             marker: ::std::marker::PhantomData,
14410         }
14411     }
14412 }
14413 #[repr(transparent)]
14414 pub struct PresentRegionsKHRBuilder<'a> {
14415     inner: PresentRegionsKHR,
14416     marker: ::std::marker::PhantomData<&'a ()>,
14417 }
14418 unsafe impl ExtendsPresentInfoKHR for PresentRegionsKHRBuilder<'_> {}
14419 unsafe impl ExtendsPresentInfoKHR for PresentRegionsKHR {}
14420 impl<'a> ::std::ops::Deref for PresentRegionsKHRBuilder<'a> {
14421     type Target = PresentRegionsKHR;
deref(&self) -> &Self::Target14422     fn deref(&self) -> &Self::Target {
14423         &self.inner
14424     }
14425 }
14426 impl<'a> ::std::ops::DerefMut for PresentRegionsKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14427     fn deref_mut(&mut self) -> &mut Self::Target {
14428         &mut self.inner
14429     }
14430 }
14431 impl<'a> PresentRegionsKHRBuilder<'a> {
regions(mut self, regions: &'a [PresentRegionKHR]) -> Self14432     pub fn regions(mut self, regions: &'a [PresentRegionKHR]) -> Self {
14433         self.inner.swapchain_count = regions.len() as _;
14434         self.inner.p_regions = regions.as_ptr();
14435         self
14436     }
14437     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14438     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14439     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentRegionsKHR14440     pub fn build(self) -> PresentRegionsKHR {
14441         self.inner
14442     }
14443 }
14444 #[repr(C)]
14445 #[cfg_attr(feature = "debug", derive(Debug))]
14446 #[derive(Copy, Clone)]
14447 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentRegionKHR.html>"]
14448 pub struct PresentRegionKHR {
14449     pub rectangle_count: u32,
14450     pub p_rectangles: *const RectLayerKHR,
14451 }
14452 impl ::std::default::Default for PresentRegionKHR {
default() -> Self14453     fn default() -> Self {
14454         Self {
14455             rectangle_count: u32::default(),
14456             p_rectangles: ::std::ptr::null(),
14457         }
14458     }
14459 }
14460 impl PresentRegionKHR {
builder<'a>() -> PresentRegionKHRBuilder<'a>14461     pub fn builder<'a>() -> PresentRegionKHRBuilder<'a> {
14462         PresentRegionKHRBuilder {
14463             inner: Self::default(),
14464             marker: ::std::marker::PhantomData,
14465         }
14466     }
14467 }
14468 #[repr(transparent)]
14469 pub struct PresentRegionKHRBuilder<'a> {
14470     inner: PresentRegionKHR,
14471     marker: ::std::marker::PhantomData<&'a ()>,
14472 }
14473 impl<'a> ::std::ops::Deref for PresentRegionKHRBuilder<'a> {
14474     type Target = PresentRegionKHR;
deref(&self) -> &Self::Target14475     fn deref(&self) -> &Self::Target {
14476         &self.inner
14477     }
14478 }
14479 impl<'a> ::std::ops::DerefMut for PresentRegionKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14480     fn deref_mut(&mut self) -> &mut Self::Target {
14481         &mut self.inner
14482     }
14483 }
14484 impl<'a> PresentRegionKHRBuilder<'a> {
rectangles(mut self, rectangles: &'a [RectLayerKHR]) -> Self14485     pub fn rectangles(mut self, rectangles: &'a [RectLayerKHR]) -> Self {
14486         self.inner.rectangle_count = rectangles.len() as _;
14487         self.inner.p_rectangles = rectangles.as_ptr();
14488         self
14489     }
14490     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14491     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14492     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentRegionKHR14493     pub fn build(self) -> PresentRegionKHR {
14494         self.inner
14495     }
14496 }
14497 #[repr(C)]
14498 #[cfg_attr(feature = "debug", derive(Debug))]
14499 #[derive(Copy, Clone, Default)]
14500 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRectLayerKHR.html>"]
14501 pub struct RectLayerKHR {
14502     pub offset: Offset2D,
14503     pub extent: Extent2D,
14504     pub layer: u32,
14505 }
14506 impl RectLayerKHR {
builder<'a>() -> RectLayerKHRBuilder<'a>14507     pub fn builder<'a>() -> RectLayerKHRBuilder<'a> {
14508         RectLayerKHRBuilder {
14509             inner: Self::default(),
14510             marker: ::std::marker::PhantomData,
14511         }
14512     }
14513 }
14514 #[repr(transparent)]
14515 pub struct RectLayerKHRBuilder<'a> {
14516     inner: RectLayerKHR,
14517     marker: ::std::marker::PhantomData<&'a ()>,
14518 }
14519 impl<'a> ::std::ops::Deref for RectLayerKHRBuilder<'a> {
14520     type Target = RectLayerKHR;
deref(&self) -> &Self::Target14521     fn deref(&self) -> &Self::Target {
14522         &self.inner
14523     }
14524 }
14525 impl<'a> ::std::ops::DerefMut for RectLayerKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14526     fn deref_mut(&mut self) -> &mut Self::Target {
14527         &mut self.inner
14528     }
14529 }
14530 impl<'a> RectLayerKHRBuilder<'a> {
offset(mut self, offset: Offset2D) -> Self14531     pub fn offset(mut self, offset: Offset2D) -> Self {
14532         self.inner.offset = offset;
14533         self
14534     }
extent(mut self, extent: Extent2D) -> Self14535     pub fn extent(mut self, extent: Extent2D) -> Self {
14536         self.inner.extent = extent;
14537         self
14538     }
layer(mut self, layer: u32) -> Self14539     pub fn layer(mut self, layer: u32) -> Self {
14540         self.inner.layer = layer;
14541         self
14542     }
14543     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14544     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14545     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RectLayerKHR14546     pub fn build(self) -> RectLayerKHR {
14547         self.inner
14548     }
14549 }
14550 #[repr(C)]
14551 #[cfg_attr(feature = "debug", derive(Debug))]
14552 #[derive(Copy, Clone)]
14553 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVariablePointersFeatures.html>"]
14554 pub struct PhysicalDeviceVariablePointersFeatures {
14555     pub s_type: StructureType,
14556     pub p_next: *mut c_void,
14557     pub variable_pointers_storage_buffer: Bool32,
14558     pub variable_pointers: Bool32,
14559 }
14560 impl ::std::default::Default for PhysicalDeviceVariablePointersFeatures {
default() -> Self14561     fn default() -> Self {
14562         Self {
14563             s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
14564             p_next: ::std::ptr::null_mut(),
14565             variable_pointers_storage_buffer: Bool32::default(),
14566             variable_pointers: Bool32::default(),
14567         }
14568     }
14569 }
14570 impl PhysicalDeviceVariablePointersFeatures {
builder<'a>() -> PhysicalDeviceVariablePointersFeaturesBuilder<'a>14571     pub fn builder<'a>() -> PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14572         PhysicalDeviceVariablePointersFeaturesBuilder {
14573             inner: Self::default(),
14574             marker: ::std::marker::PhantomData,
14575         }
14576     }
14577 }
14578 #[repr(transparent)]
14579 pub struct PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14580     inner: PhysicalDeviceVariablePointersFeatures,
14581     marker: ::std::marker::PhantomData<&'a ()>,
14582 }
14583 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVariablePointersFeaturesBuilder<'_> {}
14584 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVariablePointersFeatures {}
14585 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVariablePointersFeaturesBuilder<'_> {}
14586 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVariablePointersFeatures {}
14587 impl<'a> ::std::ops::Deref for PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
14588     type Target = PhysicalDeviceVariablePointersFeatures;
deref(&self) -> &Self::Target14589     fn deref(&self) -> &Self::Target {
14590         &self.inner
14591     }
14592 }
14593 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14594     fn deref_mut(&mut self) -> &mut Self::Target {
14595         &mut self.inner
14596     }
14597 }
14598 impl<'a> PhysicalDeviceVariablePointersFeaturesBuilder<'a> {
variable_pointers_storage_buffer( mut self, variable_pointers_storage_buffer: bool, ) -> Self14599     pub fn variable_pointers_storage_buffer(
14600         mut self,
14601         variable_pointers_storage_buffer: bool,
14602     ) -> Self {
14603         self.inner.variable_pointers_storage_buffer = variable_pointers_storage_buffer.into();
14604         self
14605     }
variable_pointers(mut self, variable_pointers: bool) -> Self14606     pub fn variable_pointers(mut self, variable_pointers: bool) -> Self {
14607         self.inner.variable_pointers = variable_pointers.into();
14608         self
14609     }
14610     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14611     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14612     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVariablePointersFeatures14613     pub fn build(self) -> PhysicalDeviceVariablePointersFeatures {
14614         self.inner
14615     }
14616 }
14617 #[repr(C)]
14618 #[cfg_attr(feature = "debug", derive(Debug))]
14619 #[derive(Copy, Clone, Default)]
14620 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryProperties.html>"]
14621 pub struct ExternalMemoryProperties {
14622     pub external_memory_features: ExternalMemoryFeatureFlags,
14623     pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
14624     pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
14625 }
14626 impl ExternalMemoryProperties {
builder<'a>() -> ExternalMemoryPropertiesBuilder<'a>14627     pub fn builder<'a>() -> ExternalMemoryPropertiesBuilder<'a> {
14628         ExternalMemoryPropertiesBuilder {
14629             inner: Self::default(),
14630             marker: ::std::marker::PhantomData,
14631         }
14632     }
14633 }
14634 #[repr(transparent)]
14635 pub struct ExternalMemoryPropertiesBuilder<'a> {
14636     inner: ExternalMemoryProperties,
14637     marker: ::std::marker::PhantomData<&'a ()>,
14638 }
14639 impl<'a> ::std::ops::Deref for ExternalMemoryPropertiesBuilder<'a> {
14640     type Target = ExternalMemoryProperties;
deref(&self) -> &Self::Target14641     fn deref(&self) -> &Self::Target {
14642         &self.inner
14643     }
14644 }
14645 impl<'a> ::std::ops::DerefMut for ExternalMemoryPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14646     fn deref_mut(&mut self) -> &mut Self::Target {
14647         &mut self.inner
14648     }
14649 }
14650 impl<'a> ExternalMemoryPropertiesBuilder<'a> {
external_memory_features( mut self, external_memory_features: ExternalMemoryFeatureFlags, ) -> Self14651     pub fn external_memory_features(
14652         mut self,
14653         external_memory_features: ExternalMemoryFeatureFlags,
14654     ) -> Self {
14655         self.inner.external_memory_features = external_memory_features;
14656         self
14657     }
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalMemoryHandleTypeFlags, ) -> Self14658     pub fn export_from_imported_handle_types(
14659         mut self,
14660         export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
14661     ) -> Self {
14662         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
14663         self
14664     }
compatible_handle_types( mut self, compatible_handle_types: ExternalMemoryHandleTypeFlags, ) -> Self14665     pub fn compatible_handle_types(
14666         mut self,
14667         compatible_handle_types: ExternalMemoryHandleTypeFlags,
14668     ) -> Self {
14669         self.inner.compatible_handle_types = compatible_handle_types;
14670         self
14671     }
14672     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14673     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14674     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryProperties14675     pub fn build(self) -> ExternalMemoryProperties {
14676         self.inner
14677     }
14678 }
14679 #[repr(C)]
14680 #[cfg_attr(feature = "debug", derive(Debug))]
14681 #[derive(Copy, Clone)]
14682 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>"]
14683 pub struct PhysicalDeviceExternalImageFormatInfo {
14684     pub s_type: StructureType,
14685     pub p_next: *const c_void,
14686     pub handle_type: ExternalMemoryHandleTypeFlags,
14687 }
14688 impl ::std::default::Default for PhysicalDeviceExternalImageFormatInfo {
default() -> Self14689     fn default() -> Self {
14690         Self {
14691             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
14692             p_next: ::std::ptr::null(),
14693             handle_type: ExternalMemoryHandleTypeFlags::default(),
14694         }
14695     }
14696 }
14697 impl PhysicalDeviceExternalImageFormatInfo {
builder<'a>() -> PhysicalDeviceExternalImageFormatInfoBuilder<'a>14698     pub fn builder<'a>() -> PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14699         PhysicalDeviceExternalImageFormatInfoBuilder {
14700             inner: Self::default(),
14701             marker: ::std::marker::PhantomData,
14702         }
14703     }
14704 }
14705 #[repr(transparent)]
14706 pub struct PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14707     inner: PhysicalDeviceExternalImageFormatInfo,
14708     marker: ::std::marker::PhantomData<&'a ()>,
14709 }
14710 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2
14711     for PhysicalDeviceExternalImageFormatInfoBuilder<'_>
14712 {
14713 }
14714 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for PhysicalDeviceExternalImageFormatInfo {}
14715 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
14716     type Target = PhysicalDeviceExternalImageFormatInfo;
deref(&self) -> &Self::Target14717     fn deref(&self) -> &Self::Target {
14718         &self.inner
14719     }
14720 }
14721 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14722     fn deref_mut(&mut self) -> &mut Self::Target {
14723         &mut self.inner
14724     }
14725 }
14726 impl<'a> PhysicalDeviceExternalImageFormatInfoBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self14727     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
14728         self.inner.handle_type = handle_type;
14729         self
14730     }
14731     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14732     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14733     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalImageFormatInfo14734     pub fn build(self) -> PhysicalDeviceExternalImageFormatInfo {
14735         self.inner
14736     }
14737 }
14738 #[repr(C)]
14739 #[cfg_attr(feature = "debug", derive(Debug))]
14740 #[derive(Copy, Clone)]
14741 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalImageFormatProperties.html>"]
14742 pub struct ExternalImageFormatProperties {
14743     pub s_type: StructureType,
14744     pub p_next: *mut c_void,
14745     pub external_memory_properties: ExternalMemoryProperties,
14746 }
14747 impl ::std::default::Default for ExternalImageFormatProperties {
default() -> Self14748     fn default() -> Self {
14749         Self {
14750             s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
14751             p_next: ::std::ptr::null_mut(),
14752             external_memory_properties: ExternalMemoryProperties::default(),
14753         }
14754     }
14755 }
14756 impl ExternalImageFormatProperties {
builder<'a>() -> ExternalImageFormatPropertiesBuilder<'a>14757     pub fn builder<'a>() -> ExternalImageFormatPropertiesBuilder<'a> {
14758         ExternalImageFormatPropertiesBuilder {
14759             inner: Self::default(),
14760             marker: ::std::marker::PhantomData,
14761         }
14762     }
14763 }
14764 #[repr(transparent)]
14765 pub struct ExternalImageFormatPropertiesBuilder<'a> {
14766     inner: ExternalImageFormatProperties,
14767     marker: ::std::marker::PhantomData<&'a ()>,
14768 }
14769 unsafe impl ExtendsImageFormatProperties2 for ExternalImageFormatPropertiesBuilder<'_> {}
14770 unsafe impl ExtendsImageFormatProperties2 for ExternalImageFormatProperties {}
14771 impl<'a> ::std::ops::Deref for ExternalImageFormatPropertiesBuilder<'a> {
14772     type Target = ExternalImageFormatProperties;
deref(&self) -> &Self::Target14773     fn deref(&self) -> &Self::Target {
14774         &self.inner
14775     }
14776 }
14777 impl<'a> ::std::ops::DerefMut for ExternalImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14778     fn deref_mut(&mut self) -> &mut Self::Target {
14779         &mut self.inner
14780     }
14781 }
14782 impl<'a> ExternalImageFormatPropertiesBuilder<'a> {
external_memory_properties( mut self, external_memory_properties: ExternalMemoryProperties, ) -> Self14783     pub fn external_memory_properties(
14784         mut self,
14785         external_memory_properties: ExternalMemoryProperties,
14786     ) -> Self {
14787         self.inner.external_memory_properties = external_memory_properties;
14788         self
14789     }
14790     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14791     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14792     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalImageFormatProperties14793     pub fn build(self) -> ExternalImageFormatProperties {
14794         self.inner
14795     }
14796 }
14797 #[repr(C)]
14798 #[cfg_attr(feature = "debug", derive(Debug))]
14799 #[derive(Copy, Clone)]
14800 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalBufferInfo.html>"]
14801 pub struct PhysicalDeviceExternalBufferInfo {
14802     pub s_type: StructureType,
14803     pub p_next: *const c_void,
14804     pub flags: BufferCreateFlags,
14805     pub usage: BufferUsageFlags,
14806     pub handle_type: ExternalMemoryHandleTypeFlags,
14807 }
14808 impl ::std::default::Default for PhysicalDeviceExternalBufferInfo {
default() -> Self14809     fn default() -> Self {
14810         Self {
14811             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
14812             p_next: ::std::ptr::null(),
14813             flags: BufferCreateFlags::default(),
14814             usage: BufferUsageFlags::default(),
14815             handle_type: ExternalMemoryHandleTypeFlags::default(),
14816         }
14817     }
14818 }
14819 impl PhysicalDeviceExternalBufferInfo {
builder<'a>() -> PhysicalDeviceExternalBufferInfoBuilder<'a>14820     pub fn builder<'a>() -> PhysicalDeviceExternalBufferInfoBuilder<'a> {
14821         PhysicalDeviceExternalBufferInfoBuilder {
14822             inner: Self::default(),
14823             marker: ::std::marker::PhantomData,
14824         }
14825     }
14826 }
14827 #[repr(transparent)]
14828 pub struct PhysicalDeviceExternalBufferInfoBuilder<'a> {
14829     inner: PhysicalDeviceExternalBufferInfo,
14830     marker: ::std::marker::PhantomData<&'a ()>,
14831 }
14832 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalBufferInfoBuilder<'a> {
14833     type Target = PhysicalDeviceExternalBufferInfo;
deref(&self) -> &Self::Target14834     fn deref(&self) -> &Self::Target {
14835         &self.inner
14836     }
14837 }
14838 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalBufferInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14839     fn deref_mut(&mut self) -> &mut Self::Target {
14840         &mut self.inner
14841     }
14842 }
14843 impl<'a> PhysicalDeviceExternalBufferInfoBuilder<'a> {
flags(mut self, flags: BufferCreateFlags) -> Self14844     pub fn flags(mut self, flags: BufferCreateFlags) -> Self {
14845         self.inner.flags = flags;
14846         self
14847     }
usage(mut self, usage: BufferUsageFlags) -> Self14848     pub fn usage(mut self, usage: BufferUsageFlags) -> Self {
14849         self.inner.usage = usage;
14850         self
14851     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self14852     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
14853         self.inner.handle_type = handle_type;
14854         self
14855     }
14856     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14857     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14858     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalBufferInfo14859     pub fn build(self) -> PhysicalDeviceExternalBufferInfo {
14860         self.inner
14861     }
14862 }
14863 #[repr(C)]
14864 #[cfg_attr(feature = "debug", derive(Debug))]
14865 #[derive(Copy, Clone)]
14866 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalBufferProperties.html>"]
14867 pub struct ExternalBufferProperties {
14868     pub s_type: StructureType,
14869     pub p_next: *mut c_void,
14870     pub external_memory_properties: ExternalMemoryProperties,
14871 }
14872 impl ::std::default::Default for ExternalBufferProperties {
default() -> Self14873     fn default() -> Self {
14874         Self {
14875             s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
14876             p_next: ::std::ptr::null_mut(),
14877             external_memory_properties: ExternalMemoryProperties::default(),
14878         }
14879     }
14880 }
14881 impl ExternalBufferProperties {
builder<'a>() -> ExternalBufferPropertiesBuilder<'a>14882     pub fn builder<'a>() -> ExternalBufferPropertiesBuilder<'a> {
14883         ExternalBufferPropertiesBuilder {
14884             inner: Self::default(),
14885             marker: ::std::marker::PhantomData,
14886         }
14887     }
14888 }
14889 #[repr(transparent)]
14890 pub struct ExternalBufferPropertiesBuilder<'a> {
14891     inner: ExternalBufferProperties,
14892     marker: ::std::marker::PhantomData<&'a ()>,
14893 }
14894 impl<'a> ::std::ops::Deref for ExternalBufferPropertiesBuilder<'a> {
14895     type Target = ExternalBufferProperties;
deref(&self) -> &Self::Target14896     fn deref(&self) -> &Self::Target {
14897         &self.inner
14898     }
14899 }
14900 impl<'a> ::std::ops::DerefMut for ExternalBufferPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target14901     fn deref_mut(&mut self) -> &mut Self::Target {
14902         &mut self.inner
14903     }
14904 }
14905 impl<'a> ExternalBufferPropertiesBuilder<'a> {
external_memory_properties( mut self, external_memory_properties: ExternalMemoryProperties, ) -> Self14906     pub fn external_memory_properties(
14907         mut self,
14908         external_memory_properties: ExternalMemoryProperties,
14909     ) -> Self {
14910         self.inner.external_memory_properties = external_memory_properties;
14911         self
14912     }
14913     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14914     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14915     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalBufferProperties14916     pub fn build(self) -> ExternalBufferProperties {
14917         self.inner
14918     }
14919 }
14920 #[repr(C)]
14921 #[cfg_attr(feature = "debug", derive(Debug))]
14922 #[derive(Copy, Clone)]
14923 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceIDProperties.html>"]
14924 pub struct PhysicalDeviceIDProperties {
14925     pub s_type: StructureType,
14926     pub p_next: *mut c_void,
14927     pub device_uuid: [u8; UUID_SIZE],
14928     pub driver_uuid: [u8; UUID_SIZE],
14929     pub device_luid: [u8; LUID_SIZE],
14930     pub device_node_mask: u32,
14931     pub device_luid_valid: Bool32,
14932 }
14933 impl ::std::default::Default for PhysicalDeviceIDProperties {
default() -> Self14934     fn default() -> Self {
14935         Self {
14936             s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
14937             p_next: ::std::ptr::null_mut(),
14938             device_uuid: unsafe { ::std::mem::zeroed() },
14939             driver_uuid: unsafe { ::std::mem::zeroed() },
14940             device_luid: unsafe { ::std::mem::zeroed() },
14941             device_node_mask: u32::default(),
14942             device_luid_valid: Bool32::default(),
14943         }
14944     }
14945 }
14946 impl PhysicalDeviceIDProperties {
builder<'a>() -> PhysicalDeviceIDPropertiesBuilder<'a>14947     pub fn builder<'a>() -> PhysicalDeviceIDPropertiesBuilder<'a> {
14948         PhysicalDeviceIDPropertiesBuilder {
14949             inner: Self::default(),
14950             marker: ::std::marker::PhantomData,
14951         }
14952     }
14953 }
14954 #[repr(transparent)]
14955 pub struct PhysicalDeviceIDPropertiesBuilder<'a> {
14956     inner: PhysicalDeviceIDProperties,
14957     marker: ::std::marker::PhantomData<&'a ()>,
14958 }
14959 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceIDPropertiesBuilder<'_> {}
14960 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceIDProperties {}
14961 impl<'a> ::std::ops::Deref for PhysicalDeviceIDPropertiesBuilder<'a> {
14962     type Target = PhysicalDeviceIDProperties;
deref(&self) -> &Self::Target14963     fn deref(&self) -> &Self::Target {
14964         &self.inner
14965     }
14966 }
14967 impl<'a> ::std::ops::DerefMut for PhysicalDeviceIDPropertiesBuilder<'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> PhysicalDeviceIDPropertiesBuilder<'a> {
device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self14973     pub fn device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self {
14974         self.inner.device_uuid = device_uuid;
14975         self
14976     }
driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self14977     pub fn driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self {
14978         self.inner.driver_uuid = driver_uuid;
14979         self
14980     }
device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self14981     pub fn device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self {
14982         self.inner.device_luid = device_luid;
14983         self
14984     }
device_node_mask(mut self, device_node_mask: u32) -> Self14985     pub fn device_node_mask(mut self, device_node_mask: u32) -> Self {
14986         self.inner.device_node_mask = device_node_mask;
14987         self
14988     }
device_luid_valid(mut self, device_luid_valid: bool) -> Self14989     pub fn device_luid_valid(mut self, device_luid_valid: bool) -> Self {
14990         self.inner.device_luid_valid = device_luid_valid.into();
14991         self
14992     }
14993     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
14994     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
14995     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceIDProperties14996     pub fn build(self) -> PhysicalDeviceIDProperties {
14997         self.inner
14998     }
14999 }
15000 #[repr(C)]
15001 #[cfg_attr(feature = "debug", derive(Debug))]
15002 #[derive(Copy, Clone)]
15003 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryImageCreateInfo.html>"]
15004 pub struct ExternalMemoryImageCreateInfo {
15005     pub s_type: StructureType,
15006     pub p_next: *const c_void,
15007     pub handle_types: ExternalMemoryHandleTypeFlags,
15008 }
15009 impl ::std::default::Default for ExternalMemoryImageCreateInfo {
default() -> Self15010     fn default() -> Self {
15011         Self {
15012             s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
15013             p_next: ::std::ptr::null(),
15014             handle_types: ExternalMemoryHandleTypeFlags::default(),
15015         }
15016     }
15017 }
15018 impl ExternalMemoryImageCreateInfo {
builder<'a>() -> ExternalMemoryImageCreateInfoBuilder<'a>15019     pub fn builder<'a>() -> ExternalMemoryImageCreateInfoBuilder<'a> {
15020         ExternalMemoryImageCreateInfoBuilder {
15021             inner: Self::default(),
15022             marker: ::std::marker::PhantomData,
15023         }
15024     }
15025 }
15026 #[repr(transparent)]
15027 pub struct ExternalMemoryImageCreateInfoBuilder<'a> {
15028     inner: ExternalMemoryImageCreateInfo,
15029     marker: ::std::marker::PhantomData<&'a ()>,
15030 }
15031 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfoBuilder<'_> {}
15032 unsafe impl ExtendsImageCreateInfo for ExternalMemoryImageCreateInfo {}
15033 impl<'a> ::std::ops::Deref for ExternalMemoryImageCreateInfoBuilder<'a> {
15034     type Target = ExternalMemoryImageCreateInfo;
deref(&self) -> &Self::Target15035     fn deref(&self) -> &Self::Target {
15036         &self.inner
15037     }
15038 }
15039 impl<'a> ::std::ops::DerefMut for ExternalMemoryImageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15040     fn deref_mut(&mut self) -> &mut Self::Target {
15041         &mut self.inner
15042     }
15043 }
15044 impl<'a> ExternalMemoryImageCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self15045     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self {
15046         self.inner.handle_types = handle_types;
15047         self
15048     }
15049     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15050     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15051     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryImageCreateInfo15052     pub fn build(self) -> ExternalMemoryImageCreateInfo {
15053         self.inner
15054     }
15055 }
15056 #[repr(C)]
15057 #[cfg_attr(feature = "debug", derive(Debug))]
15058 #[derive(Copy, Clone)]
15059 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalMemoryBufferCreateInfo.html>"]
15060 pub struct ExternalMemoryBufferCreateInfo {
15061     pub s_type: StructureType,
15062     pub p_next: *const c_void,
15063     pub handle_types: ExternalMemoryHandleTypeFlags,
15064 }
15065 impl ::std::default::Default for ExternalMemoryBufferCreateInfo {
default() -> Self15066     fn default() -> Self {
15067         Self {
15068             s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
15069             p_next: ::std::ptr::null(),
15070             handle_types: ExternalMemoryHandleTypeFlags::default(),
15071         }
15072     }
15073 }
15074 impl ExternalMemoryBufferCreateInfo {
builder<'a>() -> ExternalMemoryBufferCreateInfoBuilder<'a>15075     pub fn builder<'a>() -> ExternalMemoryBufferCreateInfoBuilder<'a> {
15076         ExternalMemoryBufferCreateInfoBuilder {
15077             inner: Self::default(),
15078             marker: ::std::marker::PhantomData,
15079         }
15080     }
15081 }
15082 #[repr(transparent)]
15083 pub struct ExternalMemoryBufferCreateInfoBuilder<'a> {
15084     inner: ExternalMemoryBufferCreateInfo,
15085     marker: ::std::marker::PhantomData<&'a ()>,
15086 }
15087 unsafe impl ExtendsBufferCreateInfo for ExternalMemoryBufferCreateInfoBuilder<'_> {}
15088 unsafe impl ExtendsBufferCreateInfo for ExternalMemoryBufferCreateInfo {}
15089 impl<'a> ::std::ops::Deref for ExternalMemoryBufferCreateInfoBuilder<'a> {
15090     type Target = ExternalMemoryBufferCreateInfo;
deref(&self) -> &Self::Target15091     fn deref(&self) -> &Self::Target {
15092         &self.inner
15093     }
15094 }
15095 impl<'a> ::std::ops::DerefMut for ExternalMemoryBufferCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15096     fn deref_mut(&mut self) -> &mut Self::Target {
15097         &mut self.inner
15098     }
15099 }
15100 impl<'a> ExternalMemoryBufferCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self15101     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self {
15102         self.inner.handle_types = handle_types;
15103         self
15104     }
15105     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15106     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15107     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalMemoryBufferCreateInfo15108     pub fn build(self) -> ExternalMemoryBufferCreateInfo {
15109         self.inner
15110     }
15111 }
15112 #[repr(C)]
15113 #[cfg_attr(feature = "debug", derive(Debug))]
15114 #[derive(Copy, Clone)]
15115 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryAllocateInfo.html>"]
15116 pub struct ExportMemoryAllocateInfo {
15117     pub s_type: StructureType,
15118     pub p_next: *const c_void,
15119     pub handle_types: ExternalMemoryHandleTypeFlags,
15120 }
15121 impl ::std::default::Default for ExportMemoryAllocateInfo {
default() -> Self15122     fn default() -> Self {
15123         Self {
15124             s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
15125             p_next: ::std::ptr::null(),
15126             handle_types: ExternalMemoryHandleTypeFlags::default(),
15127         }
15128     }
15129 }
15130 impl ExportMemoryAllocateInfo {
builder<'a>() -> ExportMemoryAllocateInfoBuilder<'a>15131     pub fn builder<'a>() -> ExportMemoryAllocateInfoBuilder<'a> {
15132         ExportMemoryAllocateInfoBuilder {
15133             inner: Self::default(),
15134             marker: ::std::marker::PhantomData,
15135         }
15136     }
15137 }
15138 #[repr(transparent)]
15139 pub struct ExportMemoryAllocateInfoBuilder<'a> {
15140     inner: ExportMemoryAllocateInfo,
15141     marker: ::std::marker::PhantomData<&'a ()>,
15142 }
15143 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfoBuilder<'_> {}
15144 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryAllocateInfo {}
15145 impl<'a> ::std::ops::Deref for ExportMemoryAllocateInfoBuilder<'a> {
15146     type Target = ExportMemoryAllocateInfo;
deref(&self) -> &Self::Target15147     fn deref(&self) -> &Self::Target {
15148         &self.inner
15149     }
15150 }
15151 impl<'a> ::std::ops::DerefMut for ExportMemoryAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15152     fn deref_mut(&mut self) -> &mut Self::Target {
15153         &mut self.inner
15154     }
15155 }
15156 impl<'a> ExportMemoryAllocateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self15157     pub fn handle_types(mut self, handle_types: ExternalMemoryHandleTypeFlags) -> Self {
15158         self.inner.handle_types = handle_types;
15159         self
15160     }
15161     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15162     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15163     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryAllocateInfo15164     pub fn build(self) -> ExportMemoryAllocateInfo {
15165         self.inner
15166     }
15167 }
15168 #[repr(C)]
15169 #[cfg_attr(feature = "debug", derive(Debug))]
15170 #[derive(Copy, Clone)]
15171 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryWin32HandleInfoKHR.html>"]
15172 pub struct ImportMemoryWin32HandleInfoKHR {
15173     pub s_type: StructureType,
15174     pub p_next: *const c_void,
15175     pub handle_type: ExternalMemoryHandleTypeFlags,
15176     pub handle: HANDLE,
15177     pub name: LPCWSTR,
15178 }
15179 impl ::std::default::Default for ImportMemoryWin32HandleInfoKHR {
default() -> Self15180     fn default() -> Self {
15181         Self {
15182             s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
15183             p_next: ::std::ptr::null(),
15184             handle_type: ExternalMemoryHandleTypeFlags::default(),
15185             handle: unsafe { ::std::mem::zeroed() },
15186             name: unsafe { ::std::mem::zeroed() },
15187         }
15188     }
15189 }
15190 impl ImportMemoryWin32HandleInfoKHR {
builder<'a>() -> ImportMemoryWin32HandleInfoKHRBuilder<'a>15191     pub fn builder<'a>() -> ImportMemoryWin32HandleInfoKHRBuilder<'a> {
15192         ImportMemoryWin32HandleInfoKHRBuilder {
15193             inner: Self::default(),
15194             marker: ::std::marker::PhantomData,
15195         }
15196     }
15197 }
15198 #[repr(transparent)]
15199 pub struct ImportMemoryWin32HandleInfoKHRBuilder<'a> {
15200     inner: ImportMemoryWin32HandleInfoKHR,
15201     marker: ::std::marker::PhantomData<&'a ()>,
15202 }
15203 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoKHRBuilder<'_> {}
15204 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryWin32HandleInfoKHR {}
15205 impl<'a> ::std::ops::Deref for ImportMemoryWin32HandleInfoKHRBuilder<'a> {
15206     type Target = ImportMemoryWin32HandleInfoKHR;
deref(&self) -> &Self::Target15207     fn deref(&self) -> &Self::Target {
15208         &self.inner
15209     }
15210 }
15211 impl<'a> ::std::ops::DerefMut for ImportMemoryWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15212     fn deref_mut(&mut self) -> &mut Self::Target {
15213         &mut self.inner
15214     }
15215 }
15216 impl<'a> ImportMemoryWin32HandleInfoKHRBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15217     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15218         self.inner.handle_type = handle_type;
15219         self
15220     }
handle(mut self, handle: HANDLE) -> Self15221     pub fn handle(mut self, handle: HANDLE) -> Self {
15222         self.inner.handle = handle;
15223         self
15224     }
name(mut self, name: LPCWSTR) -> Self15225     pub fn name(mut self, name: LPCWSTR) -> Self {
15226         self.inner.name = name;
15227         self
15228     }
15229     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15230     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15231     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryWin32HandleInfoKHR15232     pub fn build(self) -> ImportMemoryWin32HandleInfoKHR {
15233         self.inner
15234     }
15235 }
15236 #[repr(C)]
15237 #[cfg_attr(feature = "debug", derive(Debug))]
15238 #[derive(Copy, Clone)]
15239 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportMemoryWin32HandleInfoKHR.html>"]
15240 pub struct ExportMemoryWin32HandleInfoKHR {
15241     pub s_type: StructureType,
15242     pub p_next: *const c_void,
15243     pub p_attributes: *const SECURITY_ATTRIBUTES,
15244     pub dw_access: DWORD,
15245     pub name: LPCWSTR,
15246 }
15247 impl ::std::default::Default for ExportMemoryWin32HandleInfoKHR {
default() -> Self15248     fn default() -> Self {
15249         Self {
15250             s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
15251             p_next: ::std::ptr::null(),
15252             p_attributes: ::std::ptr::null(),
15253             dw_access: DWORD::default(),
15254             name: unsafe { ::std::mem::zeroed() },
15255         }
15256     }
15257 }
15258 impl ExportMemoryWin32HandleInfoKHR {
builder<'a>() -> ExportMemoryWin32HandleInfoKHRBuilder<'a>15259     pub fn builder<'a>() -> ExportMemoryWin32HandleInfoKHRBuilder<'a> {
15260         ExportMemoryWin32HandleInfoKHRBuilder {
15261             inner: Self::default(),
15262             marker: ::std::marker::PhantomData,
15263         }
15264     }
15265 }
15266 #[repr(transparent)]
15267 pub struct ExportMemoryWin32HandleInfoKHRBuilder<'a> {
15268     inner: ExportMemoryWin32HandleInfoKHR,
15269     marker: ::std::marker::PhantomData<&'a ()>,
15270 }
15271 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoKHRBuilder<'_> {}
15272 unsafe impl ExtendsMemoryAllocateInfo for ExportMemoryWin32HandleInfoKHR {}
15273 impl<'a> ::std::ops::Deref for ExportMemoryWin32HandleInfoKHRBuilder<'a> {
15274     type Target = ExportMemoryWin32HandleInfoKHR;
deref(&self) -> &Self::Target15275     fn deref(&self) -> &Self::Target {
15276         &self.inner
15277     }
15278 }
15279 impl<'a> ::std::ops::DerefMut for ExportMemoryWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15280     fn deref_mut(&mut self) -> &mut Self::Target {
15281         &mut self.inner
15282     }
15283 }
15284 impl<'a> ExportMemoryWin32HandleInfoKHRBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self15285     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
15286         self.inner.p_attributes = attributes;
15287         self
15288     }
dw_access(mut self, dw_access: DWORD) -> Self15289     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
15290         self.inner.dw_access = dw_access;
15291         self
15292     }
name(mut self, name: LPCWSTR) -> Self15293     pub fn name(mut self, name: LPCWSTR) -> Self {
15294         self.inner.name = name;
15295         self
15296     }
15297     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15298     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15299     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportMemoryWin32HandleInfoKHR15300     pub fn build(self) -> ExportMemoryWin32HandleInfoKHR {
15301         self.inner
15302     }
15303 }
15304 #[repr(C)]
15305 #[cfg_attr(feature = "debug", derive(Debug))]
15306 #[derive(Copy, Clone)]
15307 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>"]
15308 pub struct ImportMemoryZirconHandleInfoFUCHSIA {
15309     pub s_type: StructureType,
15310     pub p_next: *const c_void,
15311     pub handle_type: ExternalMemoryHandleTypeFlags,
15312     pub handle: zx_handle_t,
15313 }
15314 impl ::std::default::Default for ImportMemoryZirconHandleInfoFUCHSIA {
default() -> Self15315     fn default() -> Self {
15316         Self {
15317             s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
15318             p_next: ::std::ptr::null(),
15319             handle_type: ExternalMemoryHandleTypeFlags::default(),
15320             handle: zx_handle_t::default(),
15321         }
15322     }
15323 }
15324 impl ImportMemoryZirconHandleInfoFUCHSIA {
builder<'a>() -> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a>15325     pub fn builder<'a>() -> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
15326         ImportMemoryZirconHandleInfoFUCHSIABuilder {
15327             inner: Self::default(),
15328             marker: ::std::marker::PhantomData,
15329         }
15330     }
15331 }
15332 #[repr(transparent)]
15333 pub struct ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
15334     inner: ImportMemoryZirconHandleInfoFUCHSIA,
15335     marker: ::std::marker::PhantomData<&'a ()>,
15336 }
15337 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryZirconHandleInfoFUCHSIABuilder<'_> {}
15338 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryZirconHandleInfoFUCHSIA {}
15339 impl<'a> ::std::ops::Deref for ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
15340     type Target = ImportMemoryZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target15341     fn deref(&self) -> &Self::Target {
15342         &self.inner
15343     }
15344 }
15345 impl<'a> ::std::ops::DerefMut for ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15346     fn deref_mut(&mut self) -> &mut Self::Target {
15347         &mut self.inner
15348     }
15349 }
15350 impl<'a> ImportMemoryZirconHandleInfoFUCHSIABuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15351     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15352         self.inner.handle_type = handle_type;
15353         self
15354     }
handle(mut self, handle: zx_handle_t) -> Self15355     pub fn handle(mut self, handle: zx_handle_t) -> Self {
15356         self.inner.handle = handle;
15357         self
15358     }
15359     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15360     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15361     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryZirconHandleInfoFUCHSIA15362     pub fn build(self) -> ImportMemoryZirconHandleInfoFUCHSIA {
15363         self.inner
15364     }
15365 }
15366 #[repr(C)]
15367 #[cfg_attr(feature = "debug", derive(Debug))]
15368 #[derive(Copy, Clone)]
15369 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>"]
15370 pub struct MemoryZirconHandlePropertiesFUCHSIA {
15371     pub s_type: StructureType,
15372     pub p_next: *mut c_void,
15373     pub memory_type_bits: u32,
15374 }
15375 impl ::std::default::Default for MemoryZirconHandlePropertiesFUCHSIA {
default() -> Self15376     fn default() -> Self {
15377         Self {
15378             s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
15379             p_next: ::std::ptr::null_mut(),
15380             memory_type_bits: u32::default(),
15381         }
15382     }
15383 }
15384 impl MemoryZirconHandlePropertiesFUCHSIA {
builder<'a>() -> MemoryZirconHandlePropertiesFUCHSIABuilder<'a>15385     pub fn builder<'a>() -> MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
15386         MemoryZirconHandlePropertiesFUCHSIABuilder {
15387             inner: Self::default(),
15388             marker: ::std::marker::PhantomData,
15389         }
15390     }
15391 }
15392 #[repr(transparent)]
15393 pub struct MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
15394     inner: MemoryZirconHandlePropertiesFUCHSIA,
15395     marker: ::std::marker::PhantomData<&'a ()>,
15396 }
15397 impl<'a> ::std::ops::Deref for MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
15398     type Target = MemoryZirconHandlePropertiesFUCHSIA;
deref(&self) -> &Self::Target15399     fn deref(&self) -> &Self::Target {
15400         &self.inner
15401     }
15402 }
15403 impl<'a> ::std::ops::DerefMut for MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15404     fn deref_mut(&mut self) -> &mut Self::Target {
15405         &mut self.inner
15406     }
15407 }
15408 impl<'a> MemoryZirconHandlePropertiesFUCHSIABuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self15409     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
15410         self.inner.memory_type_bits = memory_type_bits;
15411         self
15412     }
15413     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15414     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15415     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryZirconHandlePropertiesFUCHSIA15416     pub fn build(self) -> MemoryZirconHandlePropertiesFUCHSIA {
15417         self.inner
15418     }
15419 }
15420 #[repr(C)]
15421 #[cfg_attr(feature = "debug", derive(Debug))]
15422 #[derive(Copy, Clone)]
15423 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>"]
15424 pub struct MemoryGetZirconHandleInfoFUCHSIA {
15425     pub s_type: StructureType,
15426     pub p_next: *const c_void,
15427     pub memory: DeviceMemory,
15428     pub handle_type: ExternalMemoryHandleTypeFlags,
15429 }
15430 impl ::std::default::Default for MemoryGetZirconHandleInfoFUCHSIA {
default() -> Self15431     fn default() -> Self {
15432         Self {
15433             s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
15434             p_next: ::std::ptr::null(),
15435             memory: DeviceMemory::default(),
15436             handle_type: ExternalMemoryHandleTypeFlags::default(),
15437         }
15438     }
15439 }
15440 impl MemoryGetZirconHandleInfoFUCHSIA {
builder<'a>() -> MemoryGetZirconHandleInfoFUCHSIABuilder<'a>15441     pub fn builder<'a>() -> MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
15442         MemoryGetZirconHandleInfoFUCHSIABuilder {
15443             inner: Self::default(),
15444             marker: ::std::marker::PhantomData,
15445         }
15446     }
15447 }
15448 #[repr(transparent)]
15449 pub struct MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
15450     inner: MemoryGetZirconHandleInfoFUCHSIA,
15451     marker: ::std::marker::PhantomData<&'a ()>,
15452 }
15453 impl<'a> ::std::ops::Deref for MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
15454     type Target = MemoryGetZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target15455     fn deref(&self) -> &Self::Target {
15456         &self.inner
15457     }
15458 }
15459 impl<'a> ::std::ops::DerefMut for MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15460     fn deref_mut(&mut self) -> &mut Self::Target {
15461         &mut self.inner
15462     }
15463 }
15464 impl<'a> MemoryGetZirconHandleInfoFUCHSIABuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self15465     pub fn memory(mut self, memory: DeviceMemory) -> Self {
15466         self.inner.memory = memory;
15467         self
15468     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15469     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15470         self.inner.handle_type = handle_type;
15471         self
15472     }
15473     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15474     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15475     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetZirconHandleInfoFUCHSIA15476     pub fn build(self) -> MemoryGetZirconHandleInfoFUCHSIA {
15477         self.inner
15478     }
15479 }
15480 #[repr(C)]
15481 #[cfg_attr(feature = "debug", derive(Debug))]
15482 #[derive(Copy, Clone)]
15483 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryWin32HandlePropertiesKHR.html>"]
15484 pub struct MemoryWin32HandlePropertiesKHR {
15485     pub s_type: StructureType,
15486     pub p_next: *mut c_void,
15487     pub memory_type_bits: u32,
15488 }
15489 impl ::std::default::Default for MemoryWin32HandlePropertiesKHR {
default() -> Self15490     fn default() -> Self {
15491         Self {
15492             s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
15493             p_next: ::std::ptr::null_mut(),
15494             memory_type_bits: u32::default(),
15495         }
15496     }
15497 }
15498 impl MemoryWin32HandlePropertiesKHR {
builder<'a>() -> MemoryWin32HandlePropertiesKHRBuilder<'a>15499     pub fn builder<'a>() -> MemoryWin32HandlePropertiesKHRBuilder<'a> {
15500         MemoryWin32HandlePropertiesKHRBuilder {
15501             inner: Self::default(),
15502             marker: ::std::marker::PhantomData,
15503         }
15504     }
15505 }
15506 #[repr(transparent)]
15507 pub struct MemoryWin32HandlePropertiesKHRBuilder<'a> {
15508     inner: MemoryWin32HandlePropertiesKHR,
15509     marker: ::std::marker::PhantomData<&'a ()>,
15510 }
15511 impl<'a> ::std::ops::Deref for MemoryWin32HandlePropertiesKHRBuilder<'a> {
15512     type Target = MemoryWin32HandlePropertiesKHR;
deref(&self) -> &Self::Target15513     fn deref(&self) -> &Self::Target {
15514         &self.inner
15515     }
15516 }
15517 impl<'a> ::std::ops::DerefMut for MemoryWin32HandlePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15518     fn deref_mut(&mut self) -> &mut Self::Target {
15519         &mut self.inner
15520     }
15521 }
15522 impl<'a> MemoryWin32HandlePropertiesKHRBuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self15523     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
15524         self.inner.memory_type_bits = memory_type_bits;
15525         self
15526     }
15527     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15528     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15529     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryWin32HandlePropertiesKHR15530     pub fn build(self) -> MemoryWin32HandlePropertiesKHR {
15531         self.inner
15532     }
15533 }
15534 #[repr(C)]
15535 #[cfg_attr(feature = "debug", derive(Debug))]
15536 #[derive(Copy, Clone)]
15537 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetWin32HandleInfoKHR.html>"]
15538 pub struct MemoryGetWin32HandleInfoKHR {
15539     pub s_type: StructureType,
15540     pub p_next: *const c_void,
15541     pub memory: DeviceMemory,
15542     pub handle_type: ExternalMemoryHandleTypeFlags,
15543 }
15544 impl ::std::default::Default for MemoryGetWin32HandleInfoKHR {
default() -> Self15545     fn default() -> Self {
15546         Self {
15547             s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
15548             p_next: ::std::ptr::null(),
15549             memory: DeviceMemory::default(),
15550             handle_type: ExternalMemoryHandleTypeFlags::default(),
15551         }
15552     }
15553 }
15554 impl MemoryGetWin32HandleInfoKHR {
builder<'a>() -> MemoryGetWin32HandleInfoKHRBuilder<'a>15555     pub fn builder<'a>() -> MemoryGetWin32HandleInfoKHRBuilder<'a> {
15556         MemoryGetWin32HandleInfoKHRBuilder {
15557             inner: Self::default(),
15558             marker: ::std::marker::PhantomData,
15559         }
15560     }
15561 }
15562 #[repr(transparent)]
15563 pub struct MemoryGetWin32HandleInfoKHRBuilder<'a> {
15564     inner: MemoryGetWin32HandleInfoKHR,
15565     marker: ::std::marker::PhantomData<&'a ()>,
15566 }
15567 impl<'a> ::std::ops::Deref for MemoryGetWin32HandleInfoKHRBuilder<'a> {
15568     type Target = MemoryGetWin32HandleInfoKHR;
deref(&self) -> &Self::Target15569     fn deref(&self) -> &Self::Target {
15570         &self.inner
15571     }
15572 }
15573 impl<'a> ::std::ops::DerefMut for MemoryGetWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15574     fn deref_mut(&mut self) -> &mut Self::Target {
15575         &mut self.inner
15576     }
15577 }
15578 impl<'a> MemoryGetWin32HandleInfoKHRBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self15579     pub fn memory(mut self, memory: DeviceMemory) -> Self {
15580         self.inner.memory = memory;
15581         self
15582     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15583     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15584         self.inner.handle_type = handle_type;
15585         self
15586     }
15587     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15588     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15589     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetWin32HandleInfoKHR15590     pub fn build(self) -> MemoryGetWin32HandleInfoKHR {
15591         self.inner
15592     }
15593 }
15594 #[repr(C)]
15595 #[cfg_attr(feature = "debug", derive(Debug))]
15596 #[derive(Copy, Clone)]
15597 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryFdInfoKHR.html>"]
15598 pub struct ImportMemoryFdInfoKHR {
15599     pub s_type: StructureType,
15600     pub p_next: *const c_void,
15601     pub handle_type: ExternalMemoryHandleTypeFlags,
15602     pub fd: c_int,
15603 }
15604 impl ::std::default::Default for ImportMemoryFdInfoKHR {
default() -> Self15605     fn default() -> Self {
15606         Self {
15607             s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
15608             p_next: ::std::ptr::null(),
15609             handle_type: ExternalMemoryHandleTypeFlags::default(),
15610             fd: c_int::default(),
15611         }
15612     }
15613 }
15614 impl ImportMemoryFdInfoKHR {
builder<'a>() -> ImportMemoryFdInfoKHRBuilder<'a>15615     pub fn builder<'a>() -> ImportMemoryFdInfoKHRBuilder<'a> {
15616         ImportMemoryFdInfoKHRBuilder {
15617             inner: Self::default(),
15618             marker: ::std::marker::PhantomData,
15619         }
15620     }
15621 }
15622 #[repr(transparent)]
15623 pub struct ImportMemoryFdInfoKHRBuilder<'a> {
15624     inner: ImportMemoryFdInfoKHR,
15625     marker: ::std::marker::PhantomData<&'a ()>,
15626 }
15627 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryFdInfoKHRBuilder<'_> {}
15628 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryFdInfoKHR {}
15629 impl<'a> ::std::ops::Deref for ImportMemoryFdInfoKHRBuilder<'a> {
15630     type Target = ImportMemoryFdInfoKHR;
deref(&self) -> &Self::Target15631     fn deref(&self) -> &Self::Target {
15632         &self.inner
15633     }
15634 }
15635 impl<'a> ::std::ops::DerefMut for ImportMemoryFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15636     fn deref_mut(&mut self) -> &mut Self::Target {
15637         &mut self.inner
15638     }
15639 }
15640 impl<'a> ImportMemoryFdInfoKHRBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15641     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15642         self.inner.handle_type = handle_type;
15643         self
15644     }
fd(mut self, fd: c_int) -> Self15645     pub fn fd(mut self, fd: c_int) -> Self {
15646         self.inner.fd = fd;
15647         self
15648     }
15649     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15650     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15651     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryFdInfoKHR15652     pub fn build(self) -> ImportMemoryFdInfoKHR {
15653         self.inner
15654     }
15655 }
15656 #[repr(C)]
15657 #[cfg_attr(feature = "debug", derive(Debug))]
15658 #[derive(Copy, Clone)]
15659 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryFdPropertiesKHR.html>"]
15660 pub struct MemoryFdPropertiesKHR {
15661     pub s_type: StructureType,
15662     pub p_next: *mut c_void,
15663     pub memory_type_bits: u32,
15664 }
15665 impl ::std::default::Default for MemoryFdPropertiesKHR {
default() -> Self15666     fn default() -> Self {
15667         Self {
15668             s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
15669             p_next: ::std::ptr::null_mut(),
15670             memory_type_bits: u32::default(),
15671         }
15672     }
15673 }
15674 impl MemoryFdPropertiesKHR {
builder<'a>() -> MemoryFdPropertiesKHRBuilder<'a>15675     pub fn builder<'a>() -> MemoryFdPropertiesKHRBuilder<'a> {
15676         MemoryFdPropertiesKHRBuilder {
15677             inner: Self::default(),
15678             marker: ::std::marker::PhantomData,
15679         }
15680     }
15681 }
15682 #[repr(transparent)]
15683 pub struct MemoryFdPropertiesKHRBuilder<'a> {
15684     inner: MemoryFdPropertiesKHR,
15685     marker: ::std::marker::PhantomData<&'a ()>,
15686 }
15687 impl<'a> ::std::ops::Deref for MemoryFdPropertiesKHRBuilder<'a> {
15688     type Target = MemoryFdPropertiesKHR;
deref(&self) -> &Self::Target15689     fn deref(&self) -> &Self::Target {
15690         &self.inner
15691     }
15692 }
15693 impl<'a> ::std::ops::DerefMut for MemoryFdPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15694     fn deref_mut(&mut self) -> &mut Self::Target {
15695         &mut self.inner
15696     }
15697 }
15698 impl<'a> MemoryFdPropertiesKHRBuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self15699     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
15700         self.inner.memory_type_bits = memory_type_bits;
15701         self
15702     }
15703     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15704     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15705     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryFdPropertiesKHR15706     pub fn build(self) -> MemoryFdPropertiesKHR {
15707         self.inner
15708     }
15709 }
15710 #[repr(C)]
15711 #[cfg_attr(feature = "debug", derive(Debug))]
15712 #[derive(Copy, Clone)]
15713 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetFdInfoKHR.html>"]
15714 pub struct MemoryGetFdInfoKHR {
15715     pub s_type: StructureType,
15716     pub p_next: *const c_void,
15717     pub memory: DeviceMemory,
15718     pub handle_type: ExternalMemoryHandleTypeFlags,
15719 }
15720 impl ::std::default::Default for MemoryGetFdInfoKHR {
default() -> Self15721     fn default() -> Self {
15722         Self {
15723             s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
15724             p_next: ::std::ptr::null(),
15725             memory: DeviceMemory::default(),
15726             handle_type: ExternalMemoryHandleTypeFlags::default(),
15727         }
15728     }
15729 }
15730 impl MemoryGetFdInfoKHR {
builder<'a>() -> MemoryGetFdInfoKHRBuilder<'a>15731     pub fn builder<'a>() -> MemoryGetFdInfoKHRBuilder<'a> {
15732         MemoryGetFdInfoKHRBuilder {
15733             inner: Self::default(),
15734             marker: ::std::marker::PhantomData,
15735         }
15736     }
15737 }
15738 #[repr(transparent)]
15739 pub struct MemoryGetFdInfoKHRBuilder<'a> {
15740     inner: MemoryGetFdInfoKHR,
15741     marker: ::std::marker::PhantomData<&'a ()>,
15742 }
15743 impl<'a> ::std::ops::Deref for MemoryGetFdInfoKHRBuilder<'a> {
15744     type Target = MemoryGetFdInfoKHR;
deref(&self) -> &Self::Target15745     fn deref(&self) -> &Self::Target {
15746         &self.inner
15747     }
15748 }
15749 impl<'a> ::std::ops::DerefMut for MemoryGetFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15750     fn deref_mut(&mut self) -> &mut Self::Target {
15751         &mut self.inner
15752     }
15753 }
15754 impl<'a> MemoryGetFdInfoKHRBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self15755     pub fn memory(mut self, memory: DeviceMemory) -> Self {
15756         self.inner.memory = memory;
15757         self
15758     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self15759     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
15760         self.inner.handle_type = handle_type;
15761         self
15762     }
15763     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15764     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15765     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetFdInfoKHR15766     pub fn build(self) -> MemoryGetFdInfoKHR {
15767         self.inner
15768     }
15769 }
15770 #[repr(C)]
15771 #[cfg_attr(feature = "debug", derive(Debug))]
15772 #[derive(Copy, Clone)]
15773 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>"]
15774 pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
15775     pub s_type: StructureType,
15776     pub p_next: *const c_void,
15777     pub acquire_count: u32,
15778     pub p_acquire_syncs: *const DeviceMemory,
15779     pub p_acquire_keys: *const u64,
15780     pub p_acquire_timeouts: *const u32,
15781     pub release_count: u32,
15782     pub p_release_syncs: *const DeviceMemory,
15783     pub p_release_keys: *const u64,
15784 }
15785 impl ::std::default::Default for Win32KeyedMutexAcquireReleaseInfoKHR {
default() -> Self15786     fn default() -> Self {
15787         Self {
15788             s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
15789             p_next: ::std::ptr::null(),
15790             acquire_count: u32::default(),
15791             p_acquire_syncs: ::std::ptr::null(),
15792             p_acquire_keys: ::std::ptr::null(),
15793             p_acquire_timeouts: ::std::ptr::null(),
15794             release_count: u32::default(),
15795             p_release_syncs: ::std::ptr::null(),
15796             p_release_keys: ::std::ptr::null(),
15797         }
15798     }
15799 }
15800 impl Win32KeyedMutexAcquireReleaseInfoKHR {
builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a>15801     pub fn builder<'a>() -> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15802         Win32KeyedMutexAcquireReleaseInfoKHRBuilder {
15803             inner: Self::default(),
15804             marker: ::std::marker::PhantomData,
15805         }
15806     }
15807 }
15808 #[repr(transparent)]
15809 pub struct Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15810     inner: Win32KeyedMutexAcquireReleaseInfoKHR,
15811     marker: ::std::marker::PhantomData<&'a ()>,
15812 }
15813 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'_> {}
15814 unsafe impl ExtendsSubmitInfo for Win32KeyedMutexAcquireReleaseInfoKHR {}
15815 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'_> {}
15816 unsafe impl ExtendsSubmitInfo2KHR for Win32KeyedMutexAcquireReleaseInfoKHR {}
15817 impl<'a> ::std::ops::Deref for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
15818     type Target = Win32KeyedMutexAcquireReleaseInfoKHR;
deref(&self) -> &Self::Target15819     fn deref(&self) -> &Self::Target {
15820         &self.inner
15821     }
15822 }
15823 impl<'a> ::std::ops::DerefMut for Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15824     fn deref_mut(&mut self) -> &mut Self::Target {
15825         &mut self.inner
15826     }
15827 }
15828 impl<'a> Win32KeyedMutexAcquireReleaseInfoKHRBuilder<'a> {
acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self15829     pub fn acquire_syncs(mut self, acquire_syncs: &'a [DeviceMemory]) -> Self {
15830         self.inner.acquire_count = acquire_syncs.len() as _;
15831         self.inner.p_acquire_syncs = acquire_syncs.as_ptr();
15832         self
15833     }
acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self15834     pub fn acquire_keys(mut self, acquire_keys: &'a [u64]) -> Self {
15835         self.inner.acquire_count = acquire_keys.len() as _;
15836         self.inner.p_acquire_keys = acquire_keys.as_ptr();
15837         self
15838     }
acquire_timeouts(mut self, acquire_timeouts: &'a [u32]) -> Self15839     pub fn acquire_timeouts(mut self, acquire_timeouts: &'a [u32]) -> Self {
15840         self.inner.acquire_count = acquire_timeouts.len() as _;
15841         self.inner.p_acquire_timeouts = acquire_timeouts.as_ptr();
15842         self
15843     }
release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self15844     pub fn release_syncs(mut self, release_syncs: &'a [DeviceMemory]) -> Self {
15845         self.inner.release_count = release_syncs.len() as _;
15846         self.inner.p_release_syncs = release_syncs.as_ptr();
15847         self
15848     }
release_keys(mut self, release_keys: &'a [u64]) -> Self15849     pub fn release_keys(mut self, release_keys: &'a [u64]) -> Self {
15850         self.inner.release_count = release_keys.len() as _;
15851         self.inner.p_release_keys = release_keys.as_ptr();
15852         self
15853     }
15854     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15855     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15856     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> Win32KeyedMutexAcquireReleaseInfoKHR15857     pub fn build(self) -> Win32KeyedMutexAcquireReleaseInfoKHR {
15858         self.inner
15859     }
15860 }
15861 #[repr(C)]
15862 #[cfg_attr(feature = "debug", derive(Debug))]
15863 #[derive(Copy, Clone)]
15864 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>"]
15865 pub struct PhysicalDeviceExternalSemaphoreInfo {
15866     pub s_type: StructureType,
15867     pub p_next: *const c_void,
15868     pub handle_type: ExternalSemaphoreHandleTypeFlags,
15869 }
15870 impl ::std::default::Default for PhysicalDeviceExternalSemaphoreInfo {
default() -> Self15871     fn default() -> Self {
15872         Self {
15873             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
15874             p_next: ::std::ptr::null(),
15875             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
15876         }
15877     }
15878 }
15879 impl PhysicalDeviceExternalSemaphoreInfo {
builder<'a>() -> PhysicalDeviceExternalSemaphoreInfoBuilder<'a>15880     pub fn builder<'a>() -> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15881         PhysicalDeviceExternalSemaphoreInfoBuilder {
15882             inner: Self::default(),
15883             marker: ::std::marker::PhantomData,
15884         }
15885     }
15886 }
15887 #[repr(transparent)]
15888 pub struct PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15889     inner: PhysicalDeviceExternalSemaphoreInfo,
15890     marker: ::std::marker::PhantomData<&'a ()>,
15891 }
15892 pub unsafe trait ExtendsPhysicalDeviceExternalSemaphoreInfo {}
15893 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
15894     type Target = PhysicalDeviceExternalSemaphoreInfo;
deref(&self) -> &Self::Target15895     fn deref(&self) -> &Self::Target {
15896         &self.inner
15897     }
15898 }
15899 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15900     fn deref_mut(&mut self) -> &mut Self::Target {
15901         &mut self.inner
15902     }
15903 }
15904 impl<'a> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> {
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self15905     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
15906         self.inner.handle_type = handle_type;
15907         self
15908     }
15909     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
15910     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
15911     #[doc = r" valid extension structs can be pushed into the chain."]
15912     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
15913     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceExternalSemaphoreInfo>( mut self, next: &'a mut T, ) -> Self15914     pub fn push_next<T: ExtendsPhysicalDeviceExternalSemaphoreInfo>(
15915         mut self,
15916         next: &'a mut T,
15917     ) -> Self {
15918         unsafe {
15919             let next_ptr = next as *mut T as *mut BaseOutStructure;
15920             let last_next = ptr_chain_iter(next).last().unwrap();
15921             (*last_next).p_next = self.inner.p_next as _;
15922             self.inner.p_next = next_ptr as _;
15923         }
15924         self
15925     }
15926     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
15927     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
15928     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalSemaphoreInfo15929     pub fn build(self) -> PhysicalDeviceExternalSemaphoreInfo {
15930         self.inner
15931     }
15932 }
15933 #[repr(C)]
15934 #[cfg_attr(feature = "debug", derive(Debug))]
15935 #[derive(Copy, Clone)]
15936 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalSemaphoreProperties.html>"]
15937 pub struct ExternalSemaphoreProperties {
15938     pub s_type: StructureType,
15939     pub p_next: *mut c_void,
15940     pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
15941     pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
15942     pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
15943 }
15944 impl ::std::default::Default for ExternalSemaphoreProperties {
default() -> Self15945     fn default() -> Self {
15946         Self {
15947             s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
15948             p_next: ::std::ptr::null_mut(),
15949             export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
15950             compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
15951             external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
15952         }
15953     }
15954 }
15955 impl ExternalSemaphoreProperties {
builder<'a>() -> ExternalSemaphorePropertiesBuilder<'a>15956     pub fn builder<'a>() -> ExternalSemaphorePropertiesBuilder<'a> {
15957         ExternalSemaphorePropertiesBuilder {
15958             inner: Self::default(),
15959             marker: ::std::marker::PhantomData,
15960         }
15961     }
15962 }
15963 #[repr(transparent)]
15964 pub struct ExternalSemaphorePropertiesBuilder<'a> {
15965     inner: ExternalSemaphoreProperties,
15966     marker: ::std::marker::PhantomData<&'a ()>,
15967 }
15968 impl<'a> ::std::ops::Deref for ExternalSemaphorePropertiesBuilder<'a> {
15969     type Target = ExternalSemaphoreProperties;
deref(&self) -> &Self::Target15970     fn deref(&self) -> &Self::Target {
15971         &self.inner
15972     }
15973 }
15974 impl<'a> ::std::ops::DerefMut for ExternalSemaphorePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target15975     fn deref_mut(&mut self) -> &mut Self::Target {
15976         &mut self.inner
15977     }
15978 }
15979 impl<'a> ExternalSemaphorePropertiesBuilder<'a> {
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags, ) -> Self15980     pub fn export_from_imported_handle_types(
15981         mut self,
15982         export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
15983     ) -> Self {
15984         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
15985         self
15986     }
compatible_handle_types( mut self, compatible_handle_types: ExternalSemaphoreHandleTypeFlags, ) -> Self15987     pub fn compatible_handle_types(
15988         mut self,
15989         compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
15990     ) -> Self {
15991         self.inner.compatible_handle_types = compatible_handle_types;
15992         self
15993     }
external_semaphore_features( mut self, external_semaphore_features: ExternalSemaphoreFeatureFlags, ) -> Self15994     pub fn external_semaphore_features(
15995         mut self,
15996         external_semaphore_features: ExternalSemaphoreFeatureFlags,
15997     ) -> Self {
15998         self.inner.external_semaphore_features = external_semaphore_features;
15999         self
16000     }
16001     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16002     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16003     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalSemaphoreProperties16004     pub fn build(self) -> ExternalSemaphoreProperties {
16005         self.inner
16006     }
16007 }
16008 #[repr(C)]
16009 #[cfg_attr(feature = "debug", derive(Debug))]
16010 #[derive(Copy, Clone)]
16011 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportSemaphoreCreateInfo.html>"]
16012 pub struct ExportSemaphoreCreateInfo {
16013     pub s_type: StructureType,
16014     pub p_next: *const c_void,
16015     pub handle_types: ExternalSemaphoreHandleTypeFlags,
16016 }
16017 impl ::std::default::Default for ExportSemaphoreCreateInfo {
default() -> Self16018     fn default() -> Self {
16019         Self {
16020             s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
16021             p_next: ::std::ptr::null(),
16022             handle_types: ExternalSemaphoreHandleTypeFlags::default(),
16023         }
16024     }
16025 }
16026 impl ExportSemaphoreCreateInfo {
builder<'a>() -> ExportSemaphoreCreateInfoBuilder<'a>16027     pub fn builder<'a>() -> ExportSemaphoreCreateInfoBuilder<'a> {
16028         ExportSemaphoreCreateInfoBuilder {
16029             inner: Self::default(),
16030             marker: ::std::marker::PhantomData,
16031         }
16032     }
16033 }
16034 #[repr(transparent)]
16035 pub struct ExportSemaphoreCreateInfoBuilder<'a> {
16036     inner: ExportSemaphoreCreateInfo,
16037     marker: ::std::marker::PhantomData<&'a ()>,
16038 }
16039 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreCreateInfoBuilder<'_> {}
16040 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreCreateInfo {}
16041 impl<'a> ::std::ops::Deref for ExportSemaphoreCreateInfoBuilder<'a> {
16042     type Target = ExportSemaphoreCreateInfo;
deref(&self) -> &Self::Target16043     fn deref(&self) -> &Self::Target {
16044         &self.inner
16045     }
16046 }
16047 impl<'a> ::std::ops::DerefMut for ExportSemaphoreCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16048     fn deref_mut(&mut self) -> &mut Self::Target {
16049         &mut self.inner
16050     }
16051 }
16052 impl<'a> ExportSemaphoreCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalSemaphoreHandleTypeFlags) -> Self16053     pub fn handle_types(mut self, handle_types: ExternalSemaphoreHandleTypeFlags) -> Self {
16054         self.inner.handle_types = handle_types;
16055         self
16056     }
16057     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16058     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16059     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportSemaphoreCreateInfo16060     pub fn build(self) -> ExportSemaphoreCreateInfo {
16061         self.inner
16062     }
16063 }
16064 #[repr(C)]
16065 #[cfg_attr(feature = "debug", derive(Debug))]
16066 #[derive(Copy, Clone)]
16067 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>"]
16068 pub struct ImportSemaphoreWin32HandleInfoKHR {
16069     pub s_type: StructureType,
16070     pub p_next: *const c_void,
16071     pub semaphore: Semaphore,
16072     pub flags: SemaphoreImportFlags,
16073     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16074     pub handle: HANDLE,
16075     pub name: LPCWSTR,
16076 }
16077 impl ::std::default::Default for ImportSemaphoreWin32HandleInfoKHR {
default() -> Self16078     fn default() -> Self {
16079         Self {
16080             s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
16081             p_next: ::std::ptr::null(),
16082             semaphore: Semaphore::default(),
16083             flags: SemaphoreImportFlags::default(),
16084             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16085             handle: unsafe { ::std::mem::zeroed() },
16086             name: unsafe { ::std::mem::zeroed() },
16087         }
16088     }
16089 }
16090 impl ImportSemaphoreWin32HandleInfoKHR {
builder<'a>() -> ImportSemaphoreWin32HandleInfoKHRBuilder<'a>16091     pub fn builder<'a>() -> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
16092         ImportSemaphoreWin32HandleInfoKHRBuilder {
16093             inner: Self::default(),
16094             marker: ::std::marker::PhantomData,
16095         }
16096     }
16097 }
16098 #[repr(transparent)]
16099 pub struct ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
16100     inner: ImportSemaphoreWin32HandleInfoKHR,
16101     marker: ::std::marker::PhantomData<&'a ()>,
16102 }
16103 impl<'a> ::std::ops::Deref for ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
16104     type Target = ImportSemaphoreWin32HandleInfoKHR;
deref(&self) -> &Self::Target16105     fn deref(&self) -> &Self::Target {
16106         &self.inner
16107     }
16108 }
16109 impl<'a> ::std::ops::DerefMut for ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16110     fn deref_mut(&mut self) -> &mut Self::Target {
16111         &mut self.inner
16112     }
16113 }
16114 impl<'a> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16115     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16116         self.inner.semaphore = semaphore;
16117         self
16118     }
flags(mut self, flags: SemaphoreImportFlags) -> Self16119     pub fn flags(mut self, flags: SemaphoreImportFlags) -> Self {
16120         self.inner.flags = flags;
16121         self
16122     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16123     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16124         self.inner.handle_type = handle_type;
16125         self
16126     }
handle(mut self, handle: HANDLE) -> Self16127     pub fn handle(mut self, handle: HANDLE) -> Self {
16128         self.inner.handle = handle;
16129         self
16130     }
name(mut self, name: LPCWSTR) -> Self16131     pub fn name(mut self, name: LPCWSTR) -> Self {
16132         self.inner.name = name;
16133         self
16134     }
16135     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16136     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16137     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportSemaphoreWin32HandleInfoKHR16138     pub fn build(self) -> ImportSemaphoreWin32HandleInfoKHR {
16139         self.inner
16140     }
16141 }
16142 #[repr(C)]
16143 #[cfg_attr(feature = "debug", derive(Debug))]
16144 #[derive(Copy, Clone)]
16145 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>"]
16146 pub struct ExportSemaphoreWin32HandleInfoKHR {
16147     pub s_type: StructureType,
16148     pub p_next: *const c_void,
16149     pub p_attributes: *const SECURITY_ATTRIBUTES,
16150     pub dw_access: DWORD,
16151     pub name: LPCWSTR,
16152 }
16153 impl ::std::default::Default for ExportSemaphoreWin32HandleInfoKHR {
default() -> Self16154     fn default() -> Self {
16155         Self {
16156             s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
16157             p_next: ::std::ptr::null(),
16158             p_attributes: ::std::ptr::null(),
16159             dw_access: DWORD::default(),
16160             name: unsafe { ::std::mem::zeroed() },
16161         }
16162     }
16163 }
16164 impl ExportSemaphoreWin32HandleInfoKHR {
builder<'a>() -> ExportSemaphoreWin32HandleInfoKHRBuilder<'a>16165     pub fn builder<'a>() -> ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
16166         ExportSemaphoreWin32HandleInfoKHRBuilder {
16167             inner: Self::default(),
16168             marker: ::std::marker::PhantomData,
16169         }
16170     }
16171 }
16172 #[repr(transparent)]
16173 pub struct ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
16174     inner: ExportSemaphoreWin32HandleInfoKHR,
16175     marker: ::std::marker::PhantomData<&'a ()>,
16176 }
16177 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreWin32HandleInfoKHRBuilder<'_> {}
16178 unsafe impl ExtendsSemaphoreCreateInfo for ExportSemaphoreWin32HandleInfoKHR {}
16179 impl<'a> ::std::ops::Deref for ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
16180     type Target = ExportSemaphoreWin32HandleInfoKHR;
deref(&self) -> &Self::Target16181     fn deref(&self) -> &Self::Target {
16182         &self.inner
16183     }
16184 }
16185 impl<'a> ::std::ops::DerefMut for ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16186     fn deref_mut(&mut self) -> &mut Self::Target {
16187         &mut self.inner
16188     }
16189 }
16190 impl<'a> ExportSemaphoreWin32HandleInfoKHRBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self16191     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
16192         self.inner.p_attributes = attributes;
16193         self
16194     }
dw_access(mut self, dw_access: DWORD) -> Self16195     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
16196         self.inner.dw_access = dw_access;
16197         self
16198     }
name(mut self, name: LPCWSTR) -> Self16199     pub fn name(mut self, name: LPCWSTR) -> Self {
16200         self.inner.name = name;
16201         self
16202     }
16203     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16204     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16205     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportSemaphoreWin32HandleInfoKHR16206     pub fn build(self) -> ExportSemaphoreWin32HandleInfoKHR {
16207         self.inner
16208     }
16209 }
16210 #[repr(C)]
16211 #[cfg_attr(feature = "debug", derive(Debug))]
16212 #[derive(Copy, Clone)]
16213 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkD3D12FenceSubmitInfoKHR.html>"]
16214 pub struct D3D12FenceSubmitInfoKHR {
16215     pub s_type: StructureType,
16216     pub p_next: *const c_void,
16217     pub wait_semaphore_values_count: u32,
16218     pub p_wait_semaphore_values: *const u64,
16219     pub signal_semaphore_values_count: u32,
16220     pub p_signal_semaphore_values: *const u64,
16221 }
16222 impl ::std::default::Default for D3D12FenceSubmitInfoKHR {
default() -> Self16223     fn default() -> Self {
16224         Self {
16225             s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
16226             p_next: ::std::ptr::null(),
16227             wait_semaphore_values_count: u32::default(),
16228             p_wait_semaphore_values: ::std::ptr::null(),
16229             signal_semaphore_values_count: u32::default(),
16230             p_signal_semaphore_values: ::std::ptr::null(),
16231         }
16232     }
16233 }
16234 impl D3D12FenceSubmitInfoKHR {
builder<'a>() -> D3D12FenceSubmitInfoKHRBuilder<'a>16235     pub fn builder<'a>() -> D3D12FenceSubmitInfoKHRBuilder<'a> {
16236         D3D12FenceSubmitInfoKHRBuilder {
16237             inner: Self::default(),
16238             marker: ::std::marker::PhantomData,
16239         }
16240     }
16241 }
16242 #[repr(transparent)]
16243 pub struct D3D12FenceSubmitInfoKHRBuilder<'a> {
16244     inner: D3D12FenceSubmitInfoKHR,
16245     marker: ::std::marker::PhantomData<&'a ()>,
16246 }
16247 unsafe impl ExtendsSubmitInfo for D3D12FenceSubmitInfoKHRBuilder<'_> {}
16248 unsafe impl ExtendsSubmitInfo for D3D12FenceSubmitInfoKHR {}
16249 impl<'a> ::std::ops::Deref for D3D12FenceSubmitInfoKHRBuilder<'a> {
16250     type Target = D3D12FenceSubmitInfoKHR;
deref(&self) -> &Self::Target16251     fn deref(&self) -> &Self::Target {
16252         &self.inner
16253     }
16254 }
16255 impl<'a> ::std::ops::DerefMut for D3D12FenceSubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16256     fn deref_mut(&mut self) -> &mut Self::Target {
16257         &mut self.inner
16258     }
16259 }
16260 impl<'a> D3D12FenceSubmitInfoKHRBuilder<'a> {
wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self16261     pub fn wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self {
16262         self.inner.wait_semaphore_values_count = wait_semaphore_values.len() as _;
16263         self.inner.p_wait_semaphore_values = wait_semaphore_values.as_ptr();
16264         self
16265     }
signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self16266     pub fn signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self {
16267         self.inner.signal_semaphore_values_count = signal_semaphore_values.len() as _;
16268         self.inner.p_signal_semaphore_values = signal_semaphore_values.as_ptr();
16269         self
16270     }
16271     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16272     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16273     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> D3D12FenceSubmitInfoKHR16274     pub fn build(self) -> D3D12FenceSubmitInfoKHR {
16275         self.inner
16276     }
16277 }
16278 #[repr(C)]
16279 #[cfg_attr(feature = "debug", derive(Debug))]
16280 #[derive(Copy, Clone)]
16281 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>"]
16282 pub struct SemaphoreGetWin32HandleInfoKHR {
16283     pub s_type: StructureType,
16284     pub p_next: *const c_void,
16285     pub semaphore: Semaphore,
16286     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16287 }
16288 impl ::std::default::Default for SemaphoreGetWin32HandleInfoKHR {
default() -> Self16289     fn default() -> Self {
16290         Self {
16291             s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
16292             p_next: ::std::ptr::null(),
16293             semaphore: Semaphore::default(),
16294             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16295         }
16296     }
16297 }
16298 impl SemaphoreGetWin32HandleInfoKHR {
builder<'a>() -> SemaphoreGetWin32HandleInfoKHRBuilder<'a>16299     pub fn builder<'a>() -> SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
16300         SemaphoreGetWin32HandleInfoKHRBuilder {
16301             inner: Self::default(),
16302             marker: ::std::marker::PhantomData,
16303         }
16304     }
16305 }
16306 #[repr(transparent)]
16307 pub struct SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
16308     inner: SemaphoreGetWin32HandleInfoKHR,
16309     marker: ::std::marker::PhantomData<&'a ()>,
16310 }
16311 impl<'a> ::std::ops::Deref for SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
16312     type Target = SemaphoreGetWin32HandleInfoKHR;
deref(&self) -> &Self::Target16313     fn deref(&self) -> &Self::Target {
16314         &self.inner
16315     }
16316 }
16317 impl<'a> ::std::ops::DerefMut for SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16318     fn deref_mut(&mut self) -> &mut Self::Target {
16319         &mut self.inner
16320     }
16321 }
16322 impl<'a> SemaphoreGetWin32HandleInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16323     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16324         self.inner.semaphore = semaphore;
16325         self
16326     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16327     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16328         self.inner.handle_type = handle_type;
16329         self
16330     }
16331     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16332     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16333     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreGetWin32HandleInfoKHR16334     pub fn build(self) -> SemaphoreGetWin32HandleInfoKHR {
16335         self.inner
16336     }
16337 }
16338 #[repr(C)]
16339 #[cfg_attr(feature = "debug", derive(Debug))]
16340 #[derive(Copy, Clone)]
16341 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportSemaphoreFdInfoKHR.html>"]
16342 pub struct ImportSemaphoreFdInfoKHR {
16343     pub s_type: StructureType,
16344     pub p_next: *const c_void,
16345     pub semaphore: Semaphore,
16346     pub flags: SemaphoreImportFlags,
16347     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16348     pub fd: c_int,
16349 }
16350 impl ::std::default::Default for ImportSemaphoreFdInfoKHR {
default() -> Self16351     fn default() -> Self {
16352         Self {
16353             s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
16354             p_next: ::std::ptr::null(),
16355             semaphore: Semaphore::default(),
16356             flags: SemaphoreImportFlags::default(),
16357             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16358             fd: c_int::default(),
16359         }
16360     }
16361 }
16362 impl ImportSemaphoreFdInfoKHR {
builder<'a>() -> ImportSemaphoreFdInfoKHRBuilder<'a>16363     pub fn builder<'a>() -> ImportSemaphoreFdInfoKHRBuilder<'a> {
16364         ImportSemaphoreFdInfoKHRBuilder {
16365             inner: Self::default(),
16366             marker: ::std::marker::PhantomData,
16367         }
16368     }
16369 }
16370 #[repr(transparent)]
16371 pub struct ImportSemaphoreFdInfoKHRBuilder<'a> {
16372     inner: ImportSemaphoreFdInfoKHR,
16373     marker: ::std::marker::PhantomData<&'a ()>,
16374 }
16375 impl<'a> ::std::ops::Deref for ImportSemaphoreFdInfoKHRBuilder<'a> {
16376     type Target = ImportSemaphoreFdInfoKHR;
deref(&self) -> &Self::Target16377     fn deref(&self) -> &Self::Target {
16378         &self.inner
16379     }
16380 }
16381 impl<'a> ::std::ops::DerefMut for ImportSemaphoreFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16382     fn deref_mut(&mut self) -> &mut Self::Target {
16383         &mut self.inner
16384     }
16385 }
16386 impl<'a> ImportSemaphoreFdInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16387     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16388         self.inner.semaphore = semaphore;
16389         self
16390     }
flags(mut self, flags: SemaphoreImportFlags) -> Self16391     pub fn flags(mut self, flags: SemaphoreImportFlags) -> Self {
16392         self.inner.flags = flags;
16393         self
16394     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16395     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16396         self.inner.handle_type = handle_type;
16397         self
16398     }
fd(mut self, fd: c_int) -> Self16399     pub fn fd(mut self, fd: c_int) -> Self {
16400         self.inner.fd = fd;
16401         self
16402     }
16403     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16404     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16405     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportSemaphoreFdInfoKHR16406     pub fn build(self) -> ImportSemaphoreFdInfoKHR {
16407         self.inner
16408     }
16409 }
16410 #[repr(C)]
16411 #[cfg_attr(feature = "debug", derive(Debug))]
16412 #[derive(Copy, Clone)]
16413 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreGetFdInfoKHR.html>"]
16414 pub struct SemaphoreGetFdInfoKHR {
16415     pub s_type: StructureType,
16416     pub p_next: *const c_void,
16417     pub semaphore: Semaphore,
16418     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16419 }
16420 impl ::std::default::Default for SemaphoreGetFdInfoKHR {
default() -> Self16421     fn default() -> Self {
16422         Self {
16423             s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
16424             p_next: ::std::ptr::null(),
16425             semaphore: Semaphore::default(),
16426             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16427         }
16428     }
16429 }
16430 impl SemaphoreGetFdInfoKHR {
builder<'a>() -> SemaphoreGetFdInfoKHRBuilder<'a>16431     pub fn builder<'a>() -> SemaphoreGetFdInfoKHRBuilder<'a> {
16432         SemaphoreGetFdInfoKHRBuilder {
16433             inner: Self::default(),
16434             marker: ::std::marker::PhantomData,
16435         }
16436     }
16437 }
16438 #[repr(transparent)]
16439 pub struct SemaphoreGetFdInfoKHRBuilder<'a> {
16440     inner: SemaphoreGetFdInfoKHR,
16441     marker: ::std::marker::PhantomData<&'a ()>,
16442 }
16443 impl<'a> ::std::ops::Deref for SemaphoreGetFdInfoKHRBuilder<'a> {
16444     type Target = SemaphoreGetFdInfoKHR;
deref(&self) -> &Self::Target16445     fn deref(&self) -> &Self::Target {
16446         &self.inner
16447     }
16448 }
16449 impl<'a> ::std::ops::DerefMut for SemaphoreGetFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16450     fn deref_mut(&mut self) -> &mut Self::Target {
16451         &mut self.inner
16452     }
16453 }
16454 impl<'a> SemaphoreGetFdInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16455     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16456         self.inner.semaphore = semaphore;
16457         self
16458     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16459     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16460         self.inner.handle_type = handle_type;
16461         self
16462     }
16463     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16464     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16465     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreGetFdInfoKHR16466     pub fn build(self) -> SemaphoreGetFdInfoKHR {
16467         self.inner
16468     }
16469 }
16470 #[repr(C)]
16471 #[cfg_attr(feature = "debug", derive(Debug))]
16472 #[derive(Copy, Clone)]
16473 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>"]
16474 pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
16475     pub s_type: StructureType,
16476     pub p_next: *const c_void,
16477     pub semaphore: Semaphore,
16478     pub flags: SemaphoreImportFlags,
16479     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16480     pub zircon_handle: zx_handle_t,
16481 }
16482 impl ::std::default::Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
default() -> Self16483     fn default() -> Self {
16484         Self {
16485             s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
16486             p_next: ::std::ptr::null(),
16487             semaphore: Semaphore::default(),
16488             flags: SemaphoreImportFlags::default(),
16489             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16490             zircon_handle: zx_handle_t::default(),
16491         }
16492     }
16493 }
16494 impl ImportSemaphoreZirconHandleInfoFUCHSIA {
builder<'a>() -> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a>16495     pub fn builder<'a>() -> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16496         ImportSemaphoreZirconHandleInfoFUCHSIABuilder {
16497             inner: Self::default(),
16498             marker: ::std::marker::PhantomData,
16499         }
16500     }
16501 }
16502 #[repr(transparent)]
16503 pub struct ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16504     inner: ImportSemaphoreZirconHandleInfoFUCHSIA,
16505     marker: ::std::marker::PhantomData<&'a ()>,
16506 }
16507 impl<'a> ::std::ops::Deref for ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
16508     type Target = ImportSemaphoreZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target16509     fn deref(&self) -> &Self::Target {
16510         &self.inner
16511     }
16512 }
16513 impl<'a> ::std::ops::DerefMut for ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16514     fn deref_mut(&mut self) -> &mut Self::Target {
16515         &mut self.inner
16516     }
16517 }
16518 impl<'a> ImportSemaphoreZirconHandleInfoFUCHSIABuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16519     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16520         self.inner.semaphore = semaphore;
16521         self
16522     }
flags(mut self, flags: SemaphoreImportFlags) -> Self16523     pub fn flags(mut self, flags: SemaphoreImportFlags) -> Self {
16524         self.inner.flags = flags;
16525         self
16526     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16527     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16528         self.inner.handle_type = handle_type;
16529         self
16530     }
zircon_handle(mut self, zircon_handle: zx_handle_t) -> Self16531     pub fn zircon_handle(mut self, zircon_handle: zx_handle_t) -> Self {
16532         self.inner.zircon_handle = zircon_handle;
16533         self
16534     }
16535     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16536     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16537     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportSemaphoreZirconHandleInfoFUCHSIA16538     pub fn build(self) -> ImportSemaphoreZirconHandleInfoFUCHSIA {
16539         self.inner
16540     }
16541 }
16542 #[repr(C)]
16543 #[cfg_attr(feature = "debug", derive(Debug))]
16544 #[derive(Copy, Clone)]
16545 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>"]
16546 pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
16547     pub s_type: StructureType,
16548     pub p_next: *const c_void,
16549     pub semaphore: Semaphore,
16550     pub handle_type: ExternalSemaphoreHandleTypeFlags,
16551 }
16552 impl ::std::default::Default for SemaphoreGetZirconHandleInfoFUCHSIA {
default() -> Self16553     fn default() -> Self {
16554         Self {
16555             s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
16556             p_next: ::std::ptr::null(),
16557             semaphore: Semaphore::default(),
16558             handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16559         }
16560     }
16561 }
16562 impl SemaphoreGetZirconHandleInfoFUCHSIA {
builder<'a>() -> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a>16563     pub fn builder<'a>() -> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16564         SemaphoreGetZirconHandleInfoFUCHSIABuilder {
16565             inner: Self::default(),
16566             marker: ::std::marker::PhantomData,
16567         }
16568     }
16569 }
16570 #[repr(transparent)]
16571 pub struct SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16572     inner: SemaphoreGetZirconHandleInfoFUCHSIA,
16573     marker: ::std::marker::PhantomData<&'a ()>,
16574 }
16575 impl<'a> ::std::ops::Deref for SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
16576     type Target = SemaphoreGetZirconHandleInfoFUCHSIA;
deref(&self) -> &Self::Target16577     fn deref(&self) -> &Self::Target {
16578         &self.inner
16579     }
16580 }
16581 impl<'a> ::std::ops::DerefMut for SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16582     fn deref_mut(&mut self) -> &mut Self::Target {
16583         &mut self.inner
16584     }
16585 }
16586 impl<'a> SemaphoreGetZirconHandleInfoFUCHSIABuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self16587     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
16588         self.inner.semaphore = semaphore;
16589         self
16590     }
handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self16591     pub fn handle_type(mut self, handle_type: ExternalSemaphoreHandleTypeFlags) -> Self {
16592         self.inner.handle_type = handle_type;
16593         self
16594     }
16595     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16596     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16597     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreGetZirconHandleInfoFUCHSIA16598     pub fn build(self) -> SemaphoreGetZirconHandleInfoFUCHSIA {
16599         self.inner
16600     }
16601 }
16602 #[repr(C)]
16603 #[cfg_attr(feature = "debug", derive(Debug))]
16604 #[derive(Copy, Clone)]
16605 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalFenceInfo.html>"]
16606 pub struct PhysicalDeviceExternalFenceInfo {
16607     pub s_type: StructureType,
16608     pub p_next: *const c_void,
16609     pub handle_type: ExternalFenceHandleTypeFlags,
16610 }
16611 impl ::std::default::Default for PhysicalDeviceExternalFenceInfo {
default() -> Self16612     fn default() -> Self {
16613         Self {
16614             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
16615             p_next: ::std::ptr::null(),
16616             handle_type: ExternalFenceHandleTypeFlags::default(),
16617         }
16618     }
16619 }
16620 impl PhysicalDeviceExternalFenceInfo {
builder<'a>() -> PhysicalDeviceExternalFenceInfoBuilder<'a>16621     pub fn builder<'a>() -> PhysicalDeviceExternalFenceInfoBuilder<'a> {
16622         PhysicalDeviceExternalFenceInfoBuilder {
16623             inner: Self::default(),
16624             marker: ::std::marker::PhantomData,
16625         }
16626     }
16627 }
16628 #[repr(transparent)]
16629 pub struct PhysicalDeviceExternalFenceInfoBuilder<'a> {
16630     inner: PhysicalDeviceExternalFenceInfo,
16631     marker: ::std::marker::PhantomData<&'a ()>,
16632 }
16633 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalFenceInfoBuilder<'a> {
16634     type Target = PhysicalDeviceExternalFenceInfo;
deref(&self) -> &Self::Target16635     fn deref(&self) -> &Self::Target {
16636         &self.inner
16637     }
16638 }
16639 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalFenceInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16640     fn deref_mut(&mut self) -> &mut Self::Target {
16641         &mut self.inner
16642     }
16643 }
16644 impl<'a> PhysicalDeviceExternalFenceInfoBuilder<'a> {
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16645     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16646         self.inner.handle_type = handle_type;
16647         self
16648     }
16649     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16650     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16651     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalFenceInfo16652     pub fn build(self) -> PhysicalDeviceExternalFenceInfo {
16653         self.inner
16654     }
16655 }
16656 #[repr(C)]
16657 #[cfg_attr(feature = "debug", derive(Debug))]
16658 #[derive(Copy, Clone)]
16659 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalFenceProperties.html>"]
16660 pub struct ExternalFenceProperties {
16661     pub s_type: StructureType,
16662     pub p_next: *mut c_void,
16663     pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
16664     pub compatible_handle_types: ExternalFenceHandleTypeFlags,
16665     pub external_fence_features: ExternalFenceFeatureFlags,
16666 }
16667 impl ::std::default::Default for ExternalFenceProperties {
default() -> Self16668     fn default() -> Self {
16669         Self {
16670             s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
16671             p_next: ::std::ptr::null_mut(),
16672             export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
16673             compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
16674             external_fence_features: ExternalFenceFeatureFlags::default(),
16675         }
16676     }
16677 }
16678 impl ExternalFenceProperties {
builder<'a>() -> ExternalFencePropertiesBuilder<'a>16679     pub fn builder<'a>() -> ExternalFencePropertiesBuilder<'a> {
16680         ExternalFencePropertiesBuilder {
16681             inner: Self::default(),
16682             marker: ::std::marker::PhantomData,
16683         }
16684     }
16685 }
16686 #[repr(transparent)]
16687 pub struct ExternalFencePropertiesBuilder<'a> {
16688     inner: ExternalFenceProperties,
16689     marker: ::std::marker::PhantomData<&'a ()>,
16690 }
16691 impl<'a> ::std::ops::Deref for ExternalFencePropertiesBuilder<'a> {
16692     type Target = ExternalFenceProperties;
deref(&self) -> &Self::Target16693     fn deref(&self) -> &Self::Target {
16694         &self.inner
16695     }
16696 }
16697 impl<'a> ::std::ops::DerefMut for ExternalFencePropertiesBuilder<'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> ExternalFencePropertiesBuilder<'a> {
export_from_imported_handle_types( mut self, export_from_imported_handle_types: ExternalFenceHandleTypeFlags, ) -> Self16703     pub fn export_from_imported_handle_types(
16704         mut self,
16705         export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
16706     ) -> Self {
16707         self.inner.export_from_imported_handle_types = export_from_imported_handle_types;
16708         self
16709     }
compatible_handle_types( mut self, compatible_handle_types: ExternalFenceHandleTypeFlags, ) -> Self16710     pub fn compatible_handle_types(
16711         mut self,
16712         compatible_handle_types: ExternalFenceHandleTypeFlags,
16713     ) -> Self {
16714         self.inner.compatible_handle_types = compatible_handle_types;
16715         self
16716     }
external_fence_features( mut self, external_fence_features: ExternalFenceFeatureFlags, ) -> Self16717     pub fn external_fence_features(
16718         mut self,
16719         external_fence_features: ExternalFenceFeatureFlags,
16720     ) -> Self {
16721         self.inner.external_fence_features = external_fence_features;
16722         self
16723     }
16724     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16725     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16726     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalFenceProperties16727     pub fn build(self) -> ExternalFenceProperties {
16728         self.inner
16729     }
16730 }
16731 #[repr(C)]
16732 #[cfg_attr(feature = "debug", derive(Debug))]
16733 #[derive(Copy, Clone)]
16734 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportFenceCreateInfo.html>"]
16735 pub struct ExportFenceCreateInfo {
16736     pub s_type: StructureType,
16737     pub p_next: *const c_void,
16738     pub handle_types: ExternalFenceHandleTypeFlags,
16739 }
16740 impl ::std::default::Default for ExportFenceCreateInfo {
default() -> Self16741     fn default() -> Self {
16742         Self {
16743             s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
16744             p_next: ::std::ptr::null(),
16745             handle_types: ExternalFenceHandleTypeFlags::default(),
16746         }
16747     }
16748 }
16749 impl ExportFenceCreateInfo {
builder<'a>() -> ExportFenceCreateInfoBuilder<'a>16750     pub fn builder<'a>() -> ExportFenceCreateInfoBuilder<'a> {
16751         ExportFenceCreateInfoBuilder {
16752             inner: Self::default(),
16753             marker: ::std::marker::PhantomData,
16754         }
16755     }
16756 }
16757 #[repr(transparent)]
16758 pub struct ExportFenceCreateInfoBuilder<'a> {
16759     inner: ExportFenceCreateInfo,
16760     marker: ::std::marker::PhantomData<&'a ()>,
16761 }
16762 unsafe impl ExtendsFenceCreateInfo for ExportFenceCreateInfoBuilder<'_> {}
16763 unsafe impl ExtendsFenceCreateInfo for ExportFenceCreateInfo {}
16764 impl<'a> ::std::ops::Deref for ExportFenceCreateInfoBuilder<'a> {
16765     type Target = ExportFenceCreateInfo;
deref(&self) -> &Self::Target16766     fn deref(&self) -> &Self::Target {
16767         &self.inner
16768     }
16769 }
16770 impl<'a> ::std::ops::DerefMut for ExportFenceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16771     fn deref_mut(&mut self) -> &mut Self::Target {
16772         &mut self.inner
16773     }
16774 }
16775 impl<'a> ExportFenceCreateInfoBuilder<'a> {
handle_types(mut self, handle_types: ExternalFenceHandleTypeFlags) -> Self16776     pub fn handle_types(mut self, handle_types: ExternalFenceHandleTypeFlags) -> Self {
16777         self.inner.handle_types = handle_types;
16778         self
16779     }
16780     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16781     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16782     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportFenceCreateInfo16783     pub fn build(self) -> ExportFenceCreateInfo {
16784         self.inner
16785     }
16786 }
16787 #[repr(C)]
16788 #[cfg_attr(feature = "debug", derive(Debug))]
16789 #[derive(Copy, Clone)]
16790 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportFenceWin32HandleInfoKHR.html>"]
16791 pub struct ImportFenceWin32HandleInfoKHR {
16792     pub s_type: StructureType,
16793     pub p_next: *const c_void,
16794     pub fence: Fence,
16795     pub flags: FenceImportFlags,
16796     pub handle_type: ExternalFenceHandleTypeFlags,
16797     pub handle: HANDLE,
16798     pub name: LPCWSTR,
16799 }
16800 impl ::std::default::Default for ImportFenceWin32HandleInfoKHR {
default() -> Self16801     fn default() -> Self {
16802         Self {
16803             s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
16804             p_next: ::std::ptr::null(),
16805             fence: Fence::default(),
16806             flags: FenceImportFlags::default(),
16807             handle_type: ExternalFenceHandleTypeFlags::default(),
16808             handle: unsafe { ::std::mem::zeroed() },
16809             name: unsafe { ::std::mem::zeroed() },
16810         }
16811     }
16812 }
16813 impl ImportFenceWin32HandleInfoKHR {
builder<'a>() -> ImportFenceWin32HandleInfoKHRBuilder<'a>16814     pub fn builder<'a>() -> ImportFenceWin32HandleInfoKHRBuilder<'a> {
16815         ImportFenceWin32HandleInfoKHRBuilder {
16816             inner: Self::default(),
16817             marker: ::std::marker::PhantomData,
16818         }
16819     }
16820 }
16821 #[repr(transparent)]
16822 pub struct ImportFenceWin32HandleInfoKHRBuilder<'a> {
16823     inner: ImportFenceWin32HandleInfoKHR,
16824     marker: ::std::marker::PhantomData<&'a ()>,
16825 }
16826 impl<'a> ::std::ops::Deref for ImportFenceWin32HandleInfoKHRBuilder<'a> {
16827     type Target = ImportFenceWin32HandleInfoKHR;
deref(&self) -> &Self::Target16828     fn deref(&self) -> &Self::Target {
16829         &self.inner
16830     }
16831 }
16832 impl<'a> ::std::ops::DerefMut for ImportFenceWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16833     fn deref_mut(&mut self) -> &mut Self::Target {
16834         &mut self.inner
16835     }
16836 }
16837 impl<'a> ImportFenceWin32HandleInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self16838     pub fn fence(mut self, fence: Fence) -> Self {
16839         self.inner.fence = fence;
16840         self
16841     }
flags(mut self, flags: FenceImportFlags) -> Self16842     pub fn flags(mut self, flags: FenceImportFlags) -> Self {
16843         self.inner.flags = flags;
16844         self
16845     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16846     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16847         self.inner.handle_type = handle_type;
16848         self
16849     }
handle(mut self, handle: HANDLE) -> Self16850     pub fn handle(mut self, handle: HANDLE) -> Self {
16851         self.inner.handle = handle;
16852         self
16853     }
name(mut self, name: LPCWSTR) -> Self16854     pub fn name(mut self, name: LPCWSTR) -> Self {
16855         self.inner.name = name;
16856         self
16857     }
16858     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16859     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16860     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportFenceWin32HandleInfoKHR16861     pub fn build(self) -> ImportFenceWin32HandleInfoKHR {
16862         self.inner
16863     }
16864 }
16865 #[repr(C)]
16866 #[cfg_attr(feature = "debug", derive(Debug))]
16867 #[derive(Copy, Clone)]
16868 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExportFenceWin32HandleInfoKHR.html>"]
16869 pub struct ExportFenceWin32HandleInfoKHR {
16870     pub s_type: StructureType,
16871     pub p_next: *const c_void,
16872     pub p_attributes: *const SECURITY_ATTRIBUTES,
16873     pub dw_access: DWORD,
16874     pub name: LPCWSTR,
16875 }
16876 impl ::std::default::Default for ExportFenceWin32HandleInfoKHR {
default() -> Self16877     fn default() -> Self {
16878         Self {
16879             s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
16880             p_next: ::std::ptr::null(),
16881             p_attributes: ::std::ptr::null(),
16882             dw_access: DWORD::default(),
16883             name: unsafe { ::std::mem::zeroed() },
16884         }
16885     }
16886 }
16887 impl ExportFenceWin32HandleInfoKHR {
builder<'a>() -> ExportFenceWin32HandleInfoKHRBuilder<'a>16888     pub fn builder<'a>() -> ExportFenceWin32HandleInfoKHRBuilder<'a> {
16889         ExportFenceWin32HandleInfoKHRBuilder {
16890             inner: Self::default(),
16891             marker: ::std::marker::PhantomData,
16892         }
16893     }
16894 }
16895 #[repr(transparent)]
16896 pub struct ExportFenceWin32HandleInfoKHRBuilder<'a> {
16897     inner: ExportFenceWin32HandleInfoKHR,
16898     marker: ::std::marker::PhantomData<&'a ()>,
16899 }
16900 unsafe impl ExtendsFenceCreateInfo for ExportFenceWin32HandleInfoKHRBuilder<'_> {}
16901 unsafe impl ExtendsFenceCreateInfo for ExportFenceWin32HandleInfoKHR {}
16902 impl<'a> ::std::ops::Deref for ExportFenceWin32HandleInfoKHRBuilder<'a> {
16903     type Target = ExportFenceWin32HandleInfoKHR;
deref(&self) -> &Self::Target16904     fn deref(&self) -> &Self::Target {
16905         &self.inner
16906     }
16907 }
16908 impl<'a> ::std::ops::DerefMut for ExportFenceWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16909     fn deref_mut(&mut self) -> &mut Self::Target {
16910         &mut self.inner
16911     }
16912 }
16913 impl<'a> ExportFenceWin32HandleInfoKHRBuilder<'a> {
attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self16914     pub fn attributes(mut self, attributes: &'a SECURITY_ATTRIBUTES) -> Self {
16915         self.inner.p_attributes = attributes;
16916         self
16917     }
dw_access(mut self, dw_access: DWORD) -> Self16918     pub fn dw_access(mut self, dw_access: DWORD) -> Self {
16919         self.inner.dw_access = dw_access;
16920         self
16921     }
name(mut self, name: LPCWSTR) -> Self16922     pub fn name(mut self, name: LPCWSTR) -> Self {
16923         self.inner.name = name;
16924         self
16925     }
16926     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16927     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16928     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExportFenceWin32HandleInfoKHR16929     pub fn build(self) -> ExportFenceWin32HandleInfoKHR {
16930         self.inner
16931     }
16932 }
16933 #[repr(C)]
16934 #[cfg_attr(feature = "debug", derive(Debug))]
16935 #[derive(Copy, Clone)]
16936 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceGetWin32HandleInfoKHR.html>"]
16937 pub struct FenceGetWin32HandleInfoKHR {
16938     pub s_type: StructureType,
16939     pub p_next: *const c_void,
16940     pub fence: Fence,
16941     pub handle_type: ExternalFenceHandleTypeFlags,
16942 }
16943 impl ::std::default::Default for FenceGetWin32HandleInfoKHR {
default() -> Self16944     fn default() -> Self {
16945         Self {
16946             s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
16947             p_next: ::std::ptr::null(),
16948             fence: Fence::default(),
16949             handle_type: ExternalFenceHandleTypeFlags::default(),
16950         }
16951     }
16952 }
16953 impl FenceGetWin32HandleInfoKHR {
builder<'a>() -> FenceGetWin32HandleInfoKHRBuilder<'a>16954     pub fn builder<'a>() -> FenceGetWin32HandleInfoKHRBuilder<'a> {
16955         FenceGetWin32HandleInfoKHRBuilder {
16956             inner: Self::default(),
16957             marker: ::std::marker::PhantomData,
16958         }
16959     }
16960 }
16961 #[repr(transparent)]
16962 pub struct FenceGetWin32HandleInfoKHRBuilder<'a> {
16963     inner: FenceGetWin32HandleInfoKHR,
16964     marker: ::std::marker::PhantomData<&'a ()>,
16965 }
16966 impl<'a> ::std::ops::Deref for FenceGetWin32HandleInfoKHRBuilder<'a> {
16967     type Target = FenceGetWin32HandleInfoKHR;
deref(&self) -> &Self::Target16968     fn deref(&self) -> &Self::Target {
16969         &self.inner
16970     }
16971 }
16972 impl<'a> ::std::ops::DerefMut for FenceGetWin32HandleInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target16973     fn deref_mut(&mut self) -> &mut Self::Target {
16974         &mut self.inner
16975     }
16976 }
16977 impl<'a> FenceGetWin32HandleInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self16978     pub fn fence(mut self, fence: Fence) -> Self {
16979         self.inner.fence = fence;
16980         self
16981     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self16982     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
16983         self.inner.handle_type = handle_type;
16984         self
16985     }
16986     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
16987     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
16988     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FenceGetWin32HandleInfoKHR16989     pub fn build(self) -> FenceGetWin32HandleInfoKHR {
16990         self.inner
16991     }
16992 }
16993 #[repr(C)]
16994 #[cfg_attr(feature = "debug", derive(Debug))]
16995 #[derive(Copy, Clone)]
16996 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportFenceFdInfoKHR.html>"]
16997 pub struct ImportFenceFdInfoKHR {
16998     pub s_type: StructureType,
16999     pub p_next: *const c_void,
17000     pub fence: Fence,
17001     pub flags: FenceImportFlags,
17002     pub handle_type: ExternalFenceHandleTypeFlags,
17003     pub fd: c_int,
17004 }
17005 impl ::std::default::Default for ImportFenceFdInfoKHR {
default() -> Self17006     fn default() -> Self {
17007         Self {
17008             s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
17009             p_next: ::std::ptr::null(),
17010             fence: Fence::default(),
17011             flags: FenceImportFlags::default(),
17012             handle_type: ExternalFenceHandleTypeFlags::default(),
17013             fd: c_int::default(),
17014         }
17015     }
17016 }
17017 impl ImportFenceFdInfoKHR {
builder<'a>() -> ImportFenceFdInfoKHRBuilder<'a>17018     pub fn builder<'a>() -> ImportFenceFdInfoKHRBuilder<'a> {
17019         ImportFenceFdInfoKHRBuilder {
17020             inner: Self::default(),
17021             marker: ::std::marker::PhantomData,
17022         }
17023     }
17024 }
17025 #[repr(transparent)]
17026 pub struct ImportFenceFdInfoKHRBuilder<'a> {
17027     inner: ImportFenceFdInfoKHR,
17028     marker: ::std::marker::PhantomData<&'a ()>,
17029 }
17030 impl<'a> ::std::ops::Deref for ImportFenceFdInfoKHRBuilder<'a> {
17031     type Target = ImportFenceFdInfoKHR;
deref(&self) -> &Self::Target17032     fn deref(&self) -> &Self::Target {
17033         &self.inner
17034     }
17035 }
17036 impl<'a> ::std::ops::DerefMut for ImportFenceFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17037     fn deref_mut(&mut self) -> &mut Self::Target {
17038         &mut self.inner
17039     }
17040 }
17041 impl<'a> ImportFenceFdInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self17042     pub fn fence(mut self, fence: Fence) -> Self {
17043         self.inner.fence = fence;
17044         self
17045     }
flags(mut self, flags: FenceImportFlags) -> Self17046     pub fn flags(mut self, flags: FenceImportFlags) -> Self {
17047         self.inner.flags = flags;
17048         self
17049     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self17050     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
17051         self.inner.handle_type = handle_type;
17052         self
17053     }
fd(mut self, fd: c_int) -> Self17054     pub fn fd(mut self, fd: c_int) -> Self {
17055         self.inner.fd = fd;
17056         self
17057     }
17058     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17059     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17060     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportFenceFdInfoKHR17061     pub fn build(self) -> ImportFenceFdInfoKHR {
17062         self.inner
17063     }
17064 }
17065 #[repr(C)]
17066 #[cfg_attr(feature = "debug", derive(Debug))]
17067 #[derive(Copy, Clone)]
17068 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceGetFdInfoKHR.html>"]
17069 pub struct FenceGetFdInfoKHR {
17070     pub s_type: StructureType,
17071     pub p_next: *const c_void,
17072     pub fence: Fence,
17073     pub handle_type: ExternalFenceHandleTypeFlags,
17074 }
17075 impl ::std::default::Default for FenceGetFdInfoKHR {
default() -> Self17076     fn default() -> Self {
17077         Self {
17078             s_type: StructureType::FENCE_GET_FD_INFO_KHR,
17079             p_next: ::std::ptr::null(),
17080             fence: Fence::default(),
17081             handle_type: ExternalFenceHandleTypeFlags::default(),
17082         }
17083     }
17084 }
17085 impl FenceGetFdInfoKHR {
builder<'a>() -> FenceGetFdInfoKHRBuilder<'a>17086     pub fn builder<'a>() -> FenceGetFdInfoKHRBuilder<'a> {
17087         FenceGetFdInfoKHRBuilder {
17088             inner: Self::default(),
17089             marker: ::std::marker::PhantomData,
17090         }
17091     }
17092 }
17093 #[repr(transparent)]
17094 pub struct FenceGetFdInfoKHRBuilder<'a> {
17095     inner: FenceGetFdInfoKHR,
17096     marker: ::std::marker::PhantomData<&'a ()>,
17097 }
17098 impl<'a> ::std::ops::Deref for FenceGetFdInfoKHRBuilder<'a> {
17099     type Target = FenceGetFdInfoKHR;
deref(&self) -> &Self::Target17100     fn deref(&self) -> &Self::Target {
17101         &self.inner
17102     }
17103 }
17104 impl<'a> ::std::ops::DerefMut for FenceGetFdInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17105     fn deref_mut(&mut self) -> &mut Self::Target {
17106         &mut self.inner
17107     }
17108 }
17109 impl<'a> FenceGetFdInfoKHRBuilder<'a> {
fence(mut self, fence: Fence) -> Self17110     pub fn fence(mut self, fence: Fence) -> Self {
17111         self.inner.fence = fence;
17112         self
17113     }
handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self17114     pub fn handle_type(mut self, handle_type: ExternalFenceHandleTypeFlags) -> Self {
17115         self.inner.handle_type = handle_type;
17116         self
17117     }
17118     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17119     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17120     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FenceGetFdInfoKHR17121     pub fn build(self) -> FenceGetFdInfoKHR {
17122         self.inner
17123     }
17124 }
17125 #[repr(C)]
17126 #[cfg_attr(feature = "debug", derive(Debug))]
17127 #[derive(Copy, Clone)]
17128 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiviewFeatures.html>"]
17129 pub struct PhysicalDeviceMultiviewFeatures {
17130     pub s_type: StructureType,
17131     pub p_next: *mut c_void,
17132     pub multiview: Bool32,
17133     pub multiview_geometry_shader: Bool32,
17134     pub multiview_tessellation_shader: Bool32,
17135 }
17136 impl ::std::default::Default for PhysicalDeviceMultiviewFeatures {
default() -> Self17137     fn default() -> Self {
17138         Self {
17139             s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
17140             p_next: ::std::ptr::null_mut(),
17141             multiview: Bool32::default(),
17142             multiview_geometry_shader: Bool32::default(),
17143             multiview_tessellation_shader: Bool32::default(),
17144         }
17145     }
17146 }
17147 impl PhysicalDeviceMultiviewFeatures {
builder<'a>() -> PhysicalDeviceMultiviewFeaturesBuilder<'a>17148     pub fn builder<'a>() -> PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17149         PhysicalDeviceMultiviewFeaturesBuilder {
17150             inner: Self::default(),
17151             marker: ::std::marker::PhantomData,
17152         }
17153     }
17154 }
17155 #[repr(transparent)]
17156 pub struct PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17157     inner: PhysicalDeviceMultiviewFeatures,
17158     marker: ::std::marker::PhantomData<&'a ()>,
17159 }
17160 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiviewFeaturesBuilder<'_> {}
17161 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiviewFeatures {}
17162 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiviewFeaturesBuilder<'_> {}
17163 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiviewFeatures {}
17164 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiviewFeaturesBuilder<'a> {
17165     type Target = PhysicalDeviceMultiviewFeatures;
deref(&self) -> &Self::Target17166     fn deref(&self) -> &Self::Target {
17167         &self.inner
17168     }
17169 }
17170 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiviewFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17171     fn deref_mut(&mut self) -> &mut Self::Target {
17172         &mut self.inner
17173     }
17174 }
17175 impl<'a> PhysicalDeviceMultiviewFeaturesBuilder<'a> {
multiview(mut self, multiview: bool) -> Self17176     pub fn multiview(mut self, multiview: bool) -> Self {
17177         self.inner.multiview = multiview.into();
17178         self
17179     }
multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self17180     pub fn multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self {
17181         self.inner.multiview_geometry_shader = multiview_geometry_shader.into();
17182         self
17183     }
multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self17184     pub fn multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self {
17185         self.inner.multiview_tessellation_shader = multiview_tessellation_shader.into();
17186         self
17187     }
17188     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17189     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17190     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiviewFeatures17191     pub fn build(self) -> PhysicalDeviceMultiviewFeatures {
17192         self.inner
17193     }
17194 }
17195 #[repr(C)]
17196 #[cfg_attr(feature = "debug", derive(Debug))]
17197 #[derive(Copy, Clone)]
17198 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiviewProperties.html>"]
17199 pub struct PhysicalDeviceMultiviewProperties {
17200     pub s_type: StructureType,
17201     pub p_next: *mut c_void,
17202     pub max_multiview_view_count: u32,
17203     pub max_multiview_instance_index: u32,
17204 }
17205 impl ::std::default::Default for PhysicalDeviceMultiviewProperties {
default() -> Self17206     fn default() -> Self {
17207         Self {
17208             s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
17209             p_next: ::std::ptr::null_mut(),
17210             max_multiview_view_count: u32::default(),
17211             max_multiview_instance_index: u32::default(),
17212         }
17213     }
17214 }
17215 impl PhysicalDeviceMultiviewProperties {
builder<'a>() -> PhysicalDeviceMultiviewPropertiesBuilder<'a>17216     pub fn builder<'a>() -> PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17217         PhysicalDeviceMultiviewPropertiesBuilder {
17218             inner: Self::default(),
17219             marker: ::std::marker::PhantomData,
17220         }
17221     }
17222 }
17223 #[repr(transparent)]
17224 pub struct PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17225     inner: PhysicalDeviceMultiviewProperties,
17226     marker: ::std::marker::PhantomData<&'a ()>,
17227 }
17228 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiviewPropertiesBuilder<'_> {}
17229 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMultiviewProperties {}
17230 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiviewPropertiesBuilder<'a> {
17231     type Target = PhysicalDeviceMultiviewProperties;
deref(&self) -> &Self::Target17232     fn deref(&self) -> &Self::Target {
17233         &self.inner
17234     }
17235 }
17236 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiviewPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17237     fn deref_mut(&mut self) -> &mut Self::Target {
17238         &mut self.inner
17239     }
17240 }
17241 impl<'a> PhysicalDeviceMultiviewPropertiesBuilder<'a> {
max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self17242     pub fn max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self {
17243         self.inner.max_multiview_view_count = max_multiview_view_count;
17244         self
17245     }
max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self17246     pub fn max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self {
17247         self.inner.max_multiview_instance_index = max_multiview_instance_index;
17248         self
17249     }
17250     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17251     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17252     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiviewProperties17253     pub fn build(self) -> PhysicalDeviceMultiviewProperties {
17254         self.inner
17255     }
17256 }
17257 #[repr(C)]
17258 #[cfg_attr(feature = "debug", derive(Debug))]
17259 #[derive(Copy, Clone)]
17260 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassMultiviewCreateInfo.html>"]
17261 pub struct RenderPassMultiviewCreateInfo {
17262     pub s_type: StructureType,
17263     pub p_next: *const c_void,
17264     pub subpass_count: u32,
17265     pub p_view_masks: *const u32,
17266     pub dependency_count: u32,
17267     pub p_view_offsets: *const i32,
17268     pub correlation_mask_count: u32,
17269     pub p_correlation_masks: *const u32,
17270 }
17271 impl ::std::default::Default for RenderPassMultiviewCreateInfo {
default() -> Self17272     fn default() -> Self {
17273         Self {
17274             s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
17275             p_next: ::std::ptr::null(),
17276             subpass_count: u32::default(),
17277             p_view_masks: ::std::ptr::null(),
17278             dependency_count: u32::default(),
17279             p_view_offsets: ::std::ptr::null(),
17280             correlation_mask_count: u32::default(),
17281             p_correlation_masks: ::std::ptr::null(),
17282         }
17283     }
17284 }
17285 impl RenderPassMultiviewCreateInfo {
builder<'a>() -> RenderPassMultiviewCreateInfoBuilder<'a>17286     pub fn builder<'a>() -> RenderPassMultiviewCreateInfoBuilder<'a> {
17287         RenderPassMultiviewCreateInfoBuilder {
17288             inner: Self::default(),
17289             marker: ::std::marker::PhantomData,
17290         }
17291     }
17292 }
17293 #[repr(transparent)]
17294 pub struct RenderPassMultiviewCreateInfoBuilder<'a> {
17295     inner: RenderPassMultiviewCreateInfo,
17296     marker: ::std::marker::PhantomData<&'a ()>,
17297 }
17298 unsafe impl ExtendsRenderPassCreateInfo for RenderPassMultiviewCreateInfoBuilder<'_> {}
17299 unsafe impl ExtendsRenderPassCreateInfo for RenderPassMultiviewCreateInfo {}
17300 impl<'a> ::std::ops::Deref for RenderPassMultiviewCreateInfoBuilder<'a> {
17301     type Target = RenderPassMultiviewCreateInfo;
deref(&self) -> &Self::Target17302     fn deref(&self) -> &Self::Target {
17303         &self.inner
17304     }
17305 }
17306 impl<'a> ::std::ops::DerefMut for RenderPassMultiviewCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17307     fn deref_mut(&mut self) -> &mut Self::Target {
17308         &mut self.inner
17309     }
17310 }
17311 impl<'a> RenderPassMultiviewCreateInfoBuilder<'a> {
view_masks(mut self, view_masks: &'a [u32]) -> Self17312     pub fn view_masks(mut self, view_masks: &'a [u32]) -> Self {
17313         self.inner.subpass_count = view_masks.len() as _;
17314         self.inner.p_view_masks = view_masks.as_ptr();
17315         self
17316     }
view_offsets(mut self, view_offsets: &'a [i32]) -> Self17317     pub fn view_offsets(mut self, view_offsets: &'a [i32]) -> Self {
17318         self.inner.dependency_count = view_offsets.len() as _;
17319         self.inner.p_view_offsets = view_offsets.as_ptr();
17320         self
17321     }
correlation_masks(mut self, correlation_masks: &'a [u32]) -> Self17322     pub fn correlation_masks(mut self, correlation_masks: &'a [u32]) -> Self {
17323         self.inner.correlation_mask_count = correlation_masks.len() as _;
17324         self.inner.p_correlation_masks = correlation_masks.as_ptr();
17325         self
17326     }
17327     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17328     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17329     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassMultiviewCreateInfo17330     pub fn build(self) -> RenderPassMultiviewCreateInfo {
17331         self.inner
17332     }
17333 }
17334 #[repr(C)]
17335 #[cfg_attr(feature = "debug", derive(Debug))]
17336 #[derive(Copy, Clone)]
17337 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilities2EXT.html>"]
17338 pub struct SurfaceCapabilities2EXT {
17339     pub s_type: StructureType,
17340     pub p_next: *mut c_void,
17341     pub min_image_count: u32,
17342     pub max_image_count: u32,
17343     pub current_extent: Extent2D,
17344     pub min_image_extent: Extent2D,
17345     pub max_image_extent: Extent2D,
17346     pub max_image_array_layers: u32,
17347     pub supported_transforms: SurfaceTransformFlagsKHR,
17348     pub current_transform: SurfaceTransformFlagsKHR,
17349     pub supported_composite_alpha: CompositeAlphaFlagsKHR,
17350     pub supported_usage_flags: ImageUsageFlags,
17351     pub supported_surface_counters: SurfaceCounterFlagsEXT,
17352 }
17353 impl ::std::default::Default for SurfaceCapabilities2EXT {
default() -> Self17354     fn default() -> Self {
17355         Self {
17356             s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
17357             p_next: ::std::ptr::null_mut(),
17358             min_image_count: u32::default(),
17359             max_image_count: u32::default(),
17360             current_extent: Extent2D::default(),
17361             min_image_extent: Extent2D::default(),
17362             max_image_extent: Extent2D::default(),
17363             max_image_array_layers: u32::default(),
17364             supported_transforms: SurfaceTransformFlagsKHR::default(),
17365             current_transform: SurfaceTransformFlagsKHR::default(),
17366             supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
17367             supported_usage_flags: ImageUsageFlags::default(),
17368             supported_surface_counters: SurfaceCounterFlagsEXT::default(),
17369         }
17370     }
17371 }
17372 impl SurfaceCapabilities2EXT {
builder<'a>() -> SurfaceCapabilities2EXTBuilder<'a>17373     pub fn builder<'a>() -> SurfaceCapabilities2EXTBuilder<'a> {
17374         SurfaceCapabilities2EXTBuilder {
17375             inner: Self::default(),
17376             marker: ::std::marker::PhantomData,
17377         }
17378     }
17379 }
17380 #[repr(transparent)]
17381 pub struct SurfaceCapabilities2EXTBuilder<'a> {
17382     inner: SurfaceCapabilities2EXT,
17383     marker: ::std::marker::PhantomData<&'a ()>,
17384 }
17385 impl<'a> ::std::ops::Deref for SurfaceCapabilities2EXTBuilder<'a> {
17386     type Target = SurfaceCapabilities2EXT;
deref(&self) -> &Self::Target17387     fn deref(&self) -> &Self::Target {
17388         &self.inner
17389     }
17390 }
17391 impl<'a> ::std::ops::DerefMut for SurfaceCapabilities2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17392     fn deref_mut(&mut self) -> &mut Self::Target {
17393         &mut self.inner
17394     }
17395 }
17396 impl<'a> SurfaceCapabilities2EXTBuilder<'a> {
min_image_count(mut self, min_image_count: u32) -> Self17397     pub fn min_image_count(mut self, min_image_count: u32) -> Self {
17398         self.inner.min_image_count = min_image_count;
17399         self
17400     }
max_image_count(mut self, max_image_count: u32) -> Self17401     pub fn max_image_count(mut self, max_image_count: u32) -> Self {
17402         self.inner.max_image_count = max_image_count;
17403         self
17404     }
current_extent(mut self, current_extent: Extent2D) -> Self17405     pub fn current_extent(mut self, current_extent: Extent2D) -> Self {
17406         self.inner.current_extent = current_extent;
17407         self
17408     }
min_image_extent(mut self, min_image_extent: Extent2D) -> Self17409     pub fn min_image_extent(mut self, min_image_extent: Extent2D) -> Self {
17410         self.inner.min_image_extent = min_image_extent;
17411         self
17412     }
max_image_extent(mut self, max_image_extent: Extent2D) -> Self17413     pub fn max_image_extent(mut self, max_image_extent: Extent2D) -> Self {
17414         self.inner.max_image_extent = max_image_extent;
17415         self
17416     }
max_image_array_layers(mut self, max_image_array_layers: u32) -> Self17417     pub fn max_image_array_layers(mut self, max_image_array_layers: u32) -> Self {
17418         self.inner.max_image_array_layers = max_image_array_layers;
17419         self
17420     }
supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self17421     pub fn supported_transforms(mut self, supported_transforms: SurfaceTransformFlagsKHR) -> Self {
17422         self.inner.supported_transforms = supported_transforms;
17423         self
17424     }
current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self17425     pub fn current_transform(mut self, current_transform: SurfaceTransformFlagsKHR) -> Self {
17426         self.inner.current_transform = current_transform;
17427         self
17428     }
supported_composite_alpha( mut self, supported_composite_alpha: CompositeAlphaFlagsKHR, ) -> Self17429     pub fn supported_composite_alpha(
17430         mut self,
17431         supported_composite_alpha: CompositeAlphaFlagsKHR,
17432     ) -> Self {
17433         self.inner.supported_composite_alpha = supported_composite_alpha;
17434         self
17435     }
supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self17436     pub fn supported_usage_flags(mut self, supported_usage_flags: ImageUsageFlags) -> Self {
17437         self.inner.supported_usage_flags = supported_usage_flags;
17438         self
17439     }
supported_surface_counters( mut self, supported_surface_counters: SurfaceCounterFlagsEXT, ) -> Self17440     pub fn supported_surface_counters(
17441         mut self,
17442         supported_surface_counters: SurfaceCounterFlagsEXT,
17443     ) -> Self {
17444         self.inner.supported_surface_counters = supported_surface_counters;
17445         self
17446     }
17447     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17448     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17449     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilities2EXT17450     pub fn build(self) -> SurfaceCapabilities2EXT {
17451         self.inner
17452     }
17453 }
17454 #[repr(C)]
17455 #[cfg_attr(feature = "debug", derive(Debug))]
17456 #[derive(Copy, Clone)]
17457 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPowerInfoEXT.html>"]
17458 pub struct DisplayPowerInfoEXT {
17459     pub s_type: StructureType,
17460     pub p_next: *const c_void,
17461     pub power_state: DisplayPowerStateEXT,
17462 }
17463 impl ::std::default::Default for DisplayPowerInfoEXT {
default() -> Self17464     fn default() -> Self {
17465         Self {
17466             s_type: StructureType::DISPLAY_POWER_INFO_EXT,
17467             p_next: ::std::ptr::null(),
17468             power_state: DisplayPowerStateEXT::default(),
17469         }
17470     }
17471 }
17472 impl DisplayPowerInfoEXT {
builder<'a>() -> DisplayPowerInfoEXTBuilder<'a>17473     pub fn builder<'a>() -> DisplayPowerInfoEXTBuilder<'a> {
17474         DisplayPowerInfoEXTBuilder {
17475             inner: Self::default(),
17476             marker: ::std::marker::PhantomData,
17477         }
17478     }
17479 }
17480 #[repr(transparent)]
17481 pub struct DisplayPowerInfoEXTBuilder<'a> {
17482     inner: DisplayPowerInfoEXT,
17483     marker: ::std::marker::PhantomData<&'a ()>,
17484 }
17485 impl<'a> ::std::ops::Deref for DisplayPowerInfoEXTBuilder<'a> {
17486     type Target = DisplayPowerInfoEXT;
deref(&self) -> &Self::Target17487     fn deref(&self) -> &Self::Target {
17488         &self.inner
17489     }
17490 }
17491 impl<'a> ::std::ops::DerefMut for DisplayPowerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17492     fn deref_mut(&mut self) -> &mut Self::Target {
17493         &mut self.inner
17494     }
17495 }
17496 impl<'a> DisplayPowerInfoEXTBuilder<'a> {
power_state(mut self, power_state: DisplayPowerStateEXT) -> Self17497     pub fn power_state(mut self, power_state: DisplayPowerStateEXT) -> Self {
17498         self.inner.power_state = power_state;
17499         self
17500     }
17501     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17502     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17503     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPowerInfoEXT17504     pub fn build(self) -> DisplayPowerInfoEXT {
17505         self.inner
17506     }
17507 }
17508 #[repr(C)]
17509 #[cfg_attr(feature = "debug", derive(Debug))]
17510 #[derive(Copy, Clone)]
17511 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceEventInfoEXT.html>"]
17512 pub struct DeviceEventInfoEXT {
17513     pub s_type: StructureType,
17514     pub p_next: *const c_void,
17515     pub device_event: DeviceEventTypeEXT,
17516 }
17517 impl ::std::default::Default for DeviceEventInfoEXT {
default() -> Self17518     fn default() -> Self {
17519         Self {
17520             s_type: StructureType::DEVICE_EVENT_INFO_EXT,
17521             p_next: ::std::ptr::null(),
17522             device_event: DeviceEventTypeEXT::default(),
17523         }
17524     }
17525 }
17526 impl DeviceEventInfoEXT {
builder<'a>() -> DeviceEventInfoEXTBuilder<'a>17527     pub fn builder<'a>() -> DeviceEventInfoEXTBuilder<'a> {
17528         DeviceEventInfoEXTBuilder {
17529             inner: Self::default(),
17530             marker: ::std::marker::PhantomData,
17531         }
17532     }
17533 }
17534 #[repr(transparent)]
17535 pub struct DeviceEventInfoEXTBuilder<'a> {
17536     inner: DeviceEventInfoEXT,
17537     marker: ::std::marker::PhantomData<&'a ()>,
17538 }
17539 impl<'a> ::std::ops::Deref for DeviceEventInfoEXTBuilder<'a> {
17540     type Target = DeviceEventInfoEXT;
deref(&self) -> &Self::Target17541     fn deref(&self) -> &Self::Target {
17542         &self.inner
17543     }
17544 }
17545 impl<'a> ::std::ops::DerefMut for DeviceEventInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17546     fn deref_mut(&mut self) -> &mut Self::Target {
17547         &mut self.inner
17548     }
17549 }
17550 impl<'a> DeviceEventInfoEXTBuilder<'a> {
device_event(mut self, device_event: DeviceEventTypeEXT) -> Self17551     pub fn device_event(mut self, device_event: DeviceEventTypeEXT) -> Self {
17552         self.inner.device_event = device_event;
17553         self
17554     }
17555     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17556     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17557     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceEventInfoEXT17558     pub fn build(self) -> DeviceEventInfoEXT {
17559         self.inner
17560     }
17561 }
17562 #[repr(C)]
17563 #[cfg_attr(feature = "debug", derive(Debug))]
17564 #[derive(Copy, Clone)]
17565 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayEventInfoEXT.html>"]
17566 pub struct DisplayEventInfoEXT {
17567     pub s_type: StructureType,
17568     pub p_next: *const c_void,
17569     pub display_event: DisplayEventTypeEXT,
17570 }
17571 impl ::std::default::Default for DisplayEventInfoEXT {
default() -> Self17572     fn default() -> Self {
17573         Self {
17574             s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
17575             p_next: ::std::ptr::null(),
17576             display_event: DisplayEventTypeEXT::default(),
17577         }
17578     }
17579 }
17580 impl DisplayEventInfoEXT {
builder<'a>() -> DisplayEventInfoEXTBuilder<'a>17581     pub fn builder<'a>() -> DisplayEventInfoEXTBuilder<'a> {
17582         DisplayEventInfoEXTBuilder {
17583             inner: Self::default(),
17584             marker: ::std::marker::PhantomData,
17585         }
17586     }
17587 }
17588 #[repr(transparent)]
17589 pub struct DisplayEventInfoEXTBuilder<'a> {
17590     inner: DisplayEventInfoEXT,
17591     marker: ::std::marker::PhantomData<&'a ()>,
17592 }
17593 impl<'a> ::std::ops::Deref for DisplayEventInfoEXTBuilder<'a> {
17594     type Target = DisplayEventInfoEXT;
deref(&self) -> &Self::Target17595     fn deref(&self) -> &Self::Target {
17596         &self.inner
17597     }
17598 }
17599 impl<'a> ::std::ops::DerefMut for DisplayEventInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17600     fn deref_mut(&mut self) -> &mut Self::Target {
17601         &mut self.inner
17602     }
17603 }
17604 impl<'a> DisplayEventInfoEXTBuilder<'a> {
display_event(mut self, display_event: DisplayEventTypeEXT) -> Self17605     pub fn display_event(mut self, display_event: DisplayEventTypeEXT) -> Self {
17606         self.inner.display_event = display_event;
17607         self
17608     }
17609     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17610     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17611     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayEventInfoEXT17612     pub fn build(self) -> DisplayEventInfoEXT {
17613         self.inner
17614     }
17615 }
17616 #[repr(C)]
17617 #[cfg_attr(feature = "debug", derive(Debug))]
17618 #[derive(Copy, Clone)]
17619 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainCounterCreateInfoEXT.html>"]
17620 pub struct SwapchainCounterCreateInfoEXT {
17621     pub s_type: StructureType,
17622     pub p_next: *const c_void,
17623     pub surface_counters: SurfaceCounterFlagsEXT,
17624 }
17625 impl ::std::default::Default for SwapchainCounterCreateInfoEXT {
default() -> Self17626     fn default() -> Self {
17627         Self {
17628             s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
17629             p_next: ::std::ptr::null(),
17630             surface_counters: SurfaceCounterFlagsEXT::default(),
17631         }
17632     }
17633 }
17634 impl SwapchainCounterCreateInfoEXT {
builder<'a>() -> SwapchainCounterCreateInfoEXTBuilder<'a>17635     pub fn builder<'a>() -> SwapchainCounterCreateInfoEXTBuilder<'a> {
17636         SwapchainCounterCreateInfoEXTBuilder {
17637             inner: Self::default(),
17638             marker: ::std::marker::PhantomData,
17639         }
17640     }
17641 }
17642 #[repr(transparent)]
17643 pub struct SwapchainCounterCreateInfoEXTBuilder<'a> {
17644     inner: SwapchainCounterCreateInfoEXT,
17645     marker: ::std::marker::PhantomData<&'a ()>,
17646 }
17647 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainCounterCreateInfoEXTBuilder<'_> {}
17648 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainCounterCreateInfoEXT {}
17649 impl<'a> ::std::ops::Deref for SwapchainCounterCreateInfoEXTBuilder<'a> {
17650     type Target = SwapchainCounterCreateInfoEXT;
deref(&self) -> &Self::Target17651     fn deref(&self) -> &Self::Target {
17652         &self.inner
17653     }
17654 }
17655 impl<'a> ::std::ops::DerefMut for SwapchainCounterCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17656     fn deref_mut(&mut self) -> &mut Self::Target {
17657         &mut self.inner
17658     }
17659 }
17660 impl<'a> SwapchainCounterCreateInfoEXTBuilder<'a> {
surface_counters(mut self, surface_counters: SurfaceCounterFlagsEXT) -> Self17661     pub fn surface_counters(mut self, surface_counters: SurfaceCounterFlagsEXT) -> Self {
17662         self.inner.surface_counters = surface_counters;
17663         self
17664     }
17665     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17666     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17667     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainCounterCreateInfoEXT17668     pub fn build(self) -> SwapchainCounterCreateInfoEXT {
17669         self.inner
17670     }
17671 }
17672 #[repr(C)]
17673 #[cfg_attr(feature = "debug", derive(Debug))]
17674 #[derive(Copy, Clone)]
17675 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceGroupProperties.html>"]
17676 pub struct PhysicalDeviceGroupProperties {
17677     pub s_type: StructureType,
17678     pub p_next: *mut c_void,
17679     pub physical_device_count: u32,
17680     pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
17681     pub subset_allocation: Bool32,
17682 }
17683 impl ::std::default::Default for PhysicalDeviceGroupProperties {
default() -> Self17684     fn default() -> Self {
17685         Self {
17686             s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
17687             p_next: ::std::ptr::null_mut(),
17688             physical_device_count: u32::default(),
17689             physical_devices: unsafe { ::std::mem::zeroed() },
17690             subset_allocation: Bool32::default(),
17691         }
17692     }
17693 }
17694 impl PhysicalDeviceGroupProperties {
builder<'a>() -> PhysicalDeviceGroupPropertiesBuilder<'a>17695     pub fn builder<'a>() -> PhysicalDeviceGroupPropertiesBuilder<'a> {
17696         PhysicalDeviceGroupPropertiesBuilder {
17697             inner: Self::default(),
17698             marker: ::std::marker::PhantomData,
17699         }
17700     }
17701 }
17702 #[repr(transparent)]
17703 pub struct PhysicalDeviceGroupPropertiesBuilder<'a> {
17704     inner: PhysicalDeviceGroupProperties,
17705     marker: ::std::marker::PhantomData<&'a ()>,
17706 }
17707 impl<'a> ::std::ops::Deref for PhysicalDeviceGroupPropertiesBuilder<'a> {
17708     type Target = PhysicalDeviceGroupProperties;
deref(&self) -> &Self::Target17709     fn deref(&self) -> &Self::Target {
17710         &self.inner
17711     }
17712 }
17713 impl<'a> ::std::ops::DerefMut for PhysicalDeviceGroupPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17714     fn deref_mut(&mut self) -> &mut Self::Target {
17715         &mut self.inner
17716     }
17717 }
17718 impl<'a> PhysicalDeviceGroupPropertiesBuilder<'a> {
physical_device_count(mut self, physical_device_count: u32) -> Self17719     pub fn physical_device_count(mut self, physical_device_count: u32) -> Self {
17720         self.inner.physical_device_count = physical_device_count;
17721         self
17722     }
physical_devices( mut self, physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE], ) -> Self17723     pub fn physical_devices(
17724         mut self,
17725         physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
17726     ) -> Self {
17727         self.inner.physical_devices = physical_devices;
17728         self
17729     }
subset_allocation(mut self, subset_allocation: bool) -> Self17730     pub fn subset_allocation(mut self, subset_allocation: bool) -> Self {
17731         self.inner.subset_allocation = subset_allocation.into();
17732         self
17733     }
17734     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17735     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17736     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceGroupProperties17737     pub fn build(self) -> PhysicalDeviceGroupProperties {
17738         self.inner
17739     }
17740 }
17741 #[repr(C)]
17742 #[cfg_attr(feature = "debug", derive(Debug))]
17743 #[derive(Copy, Clone)]
17744 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryAllocateFlagsInfo.html>"]
17745 pub struct MemoryAllocateFlagsInfo {
17746     pub s_type: StructureType,
17747     pub p_next: *const c_void,
17748     pub flags: MemoryAllocateFlags,
17749     pub device_mask: u32,
17750 }
17751 impl ::std::default::Default for MemoryAllocateFlagsInfo {
default() -> Self17752     fn default() -> Self {
17753         Self {
17754             s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
17755             p_next: ::std::ptr::null(),
17756             flags: MemoryAllocateFlags::default(),
17757             device_mask: u32::default(),
17758         }
17759     }
17760 }
17761 impl MemoryAllocateFlagsInfo {
builder<'a>() -> MemoryAllocateFlagsInfoBuilder<'a>17762     pub fn builder<'a>() -> MemoryAllocateFlagsInfoBuilder<'a> {
17763         MemoryAllocateFlagsInfoBuilder {
17764             inner: Self::default(),
17765             marker: ::std::marker::PhantomData,
17766         }
17767     }
17768 }
17769 #[repr(transparent)]
17770 pub struct MemoryAllocateFlagsInfoBuilder<'a> {
17771     inner: MemoryAllocateFlagsInfo,
17772     marker: ::std::marker::PhantomData<&'a ()>,
17773 }
17774 unsafe impl ExtendsMemoryAllocateInfo for MemoryAllocateFlagsInfoBuilder<'_> {}
17775 unsafe impl ExtendsMemoryAllocateInfo for MemoryAllocateFlagsInfo {}
17776 impl<'a> ::std::ops::Deref for MemoryAllocateFlagsInfoBuilder<'a> {
17777     type Target = MemoryAllocateFlagsInfo;
deref(&self) -> &Self::Target17778     fn deref(&self) -> &Self::Target {
17779         &self.inner
17780     }
17781 }
17782 impl<'a> ::std::ops::DerefMut for MemoryAllocateFlagsInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17783     fn deref_mut(&mut self) -> &mut Self::Target {
17784         &mut self.inner
17785     }
17786 }
17787 impl<'a> MemoryAllocateFlagsInfoBuilder<'a> {
flags(mut self, flags: MemoryAllocateFlags) -> Self17788     pub fn flags(mut self, flags: MemoryAllocateFlags) -> Self {
17789         self.inner.flags = flags;
17790         self
17791     }
device_mask(mut self, device_mask: u32) -> Self17792     pub fn device_mask(mut self, device_mask: u32) -> Self {
17793         self.inner.device_mask = device_mask;
17794         self
17795     }
17796     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17797     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17798     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryAllocateFlagsInfo17799     pub fn build(self) -> MemoryAllocateFlagsInfo {
17800         self.inner
17801     }
17802 }
17803 #[repr(C)]
17804 #[cfg_attr(feature = "debug", derive(Debug))]
17805 #[derive(Copy, Clone)]
17806 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindBufferMemoryInfo.html>"]
17807 pub struct BindBufferMemoryInfo {
17808     pub s_type: StructureType,
17809     pub p_next: *const c_void,
17810     pub buffer: Buffer,
17811     pub memory: DeviceMemory,
17812     pub memory_offset: DeviceSize,
17813 }
17814 impl ::std::default::Default for BindBufferMemoryInfo {
default() -> Self17815     fn default() -> Self {
17816         Self {
17817             s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
17818             p_next: ::std::ptr::null(),
17819             buffer: Buffer::default(),
17820             memory: DeviceMemory::default(),
17821             memory_offset: DeviceSize::default(),
17822         }
17823     }
17824 }
17825 impl BindBufferMemoryInfo {
builder<'a>() -> BindBufferMemoryInfoBuilder<'a>17826     pub fn builder<'a>() -> BindBufferMemoryInfoBuilder<'a> {
17827         BindBufferMemoryInfoBuilder {
17828             inner: Self::default(),
17829             marker: ::std::marker::PhantomData,
17830         }
17831     }
17832 }
17833 #[repr(transparent)]
17834 pub struct BindBufferMemoryInfoBuilder<'a> {
17835     inner: BindBufferMemoryInfo,
17836     marker: ::std::marker::PhantomData<&'a ()>,
17837 }
17838 pub unsafe trait ExtendsBindBufferMemoryInfo {}
17839 impl<'a> ::std::ops::Deref for BindBufferMemoryInfoBuilder<'a> {
17840     type Target = BindBufferMemoryInfo;
deref(&self) -> &Self::Target17841     fn deref(&self) -> &Self::Target {
17842         &self.inner
17843     }
17844 }
17845 impl<'a> ::std::ops::DerefMut for BindBufferMemoryInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17846     fn deref_mut(&mut self) -> &mut Self::Target {
17847         &mut self.inner
17848     }
17849 }
17850 impl<'a> BindBufferMemoryInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self17851     pub fn buffer(mut self, buffer: Buffer) -> Self {
17852         self.inner.buffer = buffer;
17853         self
17854     }
memory(mut self, memory: DeviceMemory) -> Self17855     pub fn memory(mut self, memory: DeviceMemory) -> Self {
17856         self.inner.memory = memory;
17857         self
17858     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self17859     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
17860         self.inner.memory_offset = memory_offset;
17861         self
17862     }
17863     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
17864     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
17865     #[doc = r" valid extension structs can be pushed into the chain."]
17866     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
17867     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBindBufferMemoryInfo>(mut self, next: &'a mut T) -> Self17868     pub fn push_next<T: ExtendsBindBufferMemoryInfo>(mut self, next: &'a mut T) -> Self {
17869         unsafe {
17870             let next_ptr = next as *mut T as *mut BaseOutStructure;
17871             let last_next = ptr_chain_iter(next).last().unwrap();
17872             (*last_next).p_next = self.inner.p_next as _;
17873             self.inner.p_next = next_ptr as _;
17874         }
17875         self
17876     }
17877     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17878     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17879     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindBufferMemoryInfo17880     pub fn build(self) -> BindBufferMemoryInfo {
17881         self.inner
17882     }
17883 }
17884 #[repr(C)]
17885 #[cfg_attr(feature = "debug", derive(Debug))]
17886 #[derive(Copy, Clone)]
17887 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindBufferMemoryDeviceGroupInfo.html>"]
17888 pub struct BindBufferMemoryDeviceGroupInfo {
17889     pub s_type: StructureType,
17890     pub p_next: *const c_void,
17891     pub device_index_count: u32,
17892     pub p_device_indices: *const u32,
17893 }
17894 impl ::std::default::Default for BindBufferMemoryDeviceGroupInfo {
default() -> Self17895     fn default() -> Self {
17896         Self {
17897             s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
17898             p_next: ::std::ptr::null(),
17899             device_index_count: u32::default(),
17900             p_device_indices: ::std::ptr::null(),
17901         }
17902     }
17903 }
17904 impl BindBufferMemoryDeviceGroupInfo {
builder<'a>() -> BindBufferMemoryDeviceGroupInfoBuilder<'a>17905     pub fn builder<'a>() -> BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17906         BindBufferMemoryDeviceGroupInfoBuilder {
17907             inner: Self::default(),
17908             marker: ::std::marker::PhantomData,
17909         }
17910     }
17911 }
17912 #[repr(transparent)]
17913 pub struct BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17914     inner: BindBufferMemoryDeviceGroupInfo,
17915     marker: ::std::marker::PhantomData<&'a ()>,
17916 }
17917 unsafe impl ExtendsBindBufferMemoryInfo for BindBufferMemoryDeviceGroupInfoBuilder<'_> {}
17918 unsafe impl ExtendsBindBufferMemoryInfo for BindBufferMemoryDeviceGroupInfo {}
17919 impl<'a> ::std::ops::Deref for BindBufferMemoryDeviceGroupInfoBuilder<'a> {
17920     type Target = BindBufferMemoryDeviceGroupInfo;
deref(&self) -> &Self::Target17921     fn deref(&self) -> &Self::Target {
17922         &self.inner
17923     }
17924 }
17925 impl<'a> ::std::ops::DerefMut for BindBufferMemoryDeviceGroupInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17926     fn deref_mut(&mut self) -> &mut Self::Target {
17927         &mut self.inner
17928     }
17929 }
17930 impl<'a> BindBufferMemoryDeviceGroupInfoBuilder<'a> {
device_indices(mut self, device_indices: &'a [u32]) -> Self17931     pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self {
17932         self.inner.device_index_count = device_indices.len() as _;
17933         self.inner.p_device_indices = device_indices.as_ptr();
17934         self
17935     }
17936     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
17937     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
17938     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindBufferMemoryDeviceGroupInfo17939     pub fn build(self) -> BindBufferMemoryDeviceGroupInfo {
17940         self.inner
17941     }
17942 }
17943 #[repr(C)]
17944 #[cfg_attr(feature = "debug", derive(Debug))]
17945 #[derive(Copy, Clone)]
17946 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImageMemoryInfo.html>"]
17947 pub struct BindImageMemoryInfo {
17948     pub s_type: StructureType,
17949     pub p_next: *const c_void,
17950     pub image: Image,
17951     pub memory: DeviceMemory,
17952     pub memory_offset: DeviceSize,
17953 }
17954 impl ::std::default::Default for BindImageMemoryInfo {
default() -> Self17955     fn default() -> Self {
17956         Self {
17957             s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
17958             p_next: ::std::ptr::null(),
17959             image: Image::default(),
17960             memory: DeviceMemory::default(),
17961             memory_offset: DeviceSize::default(),
17962         }
17963     }
17964 }
17965 impl BindImageMemoryInfo {
builder<'a>() -> BindImageMemoryInfoBuilder<'a>17966     pub fn builder<'a>() -> BindImageMemoryInfoBuilder<'a> {
17967         BindImageMemoryInfoBuilder {
17968             inner: Self::default(),
17969             marker: ::std::marker::PhantomData,
17970         }
17971     }
17972 }
17973 #[repr(transparent)]
17974 pub struct BindImageMemoryInfoBuilder<'a> {
17975     inner: BindImageMemoryInfo,
17976     marker: ::std::marker::PhantomData<&'a ()>,
17977 }
17978 pub unsafe trait ExtendsBindImageMemoryInfo {}
17979 impl<'a> ::std::ops::Deref for BindImageMemoryInfoBuilder<'a> {
17980     type Target = BindImageMemoryInfo;
deref(&self) -> &Self::Target17981     fn deref(&self) -> &Self::Target {
17982         &self.inner
17983     }
17984 }
17985 impl<'a> ::std::ops::DerefMut for BindImageMemoryInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target17986     fn deref_mut(&mut self) -> &mut Self::Target {
17987         &mut self.inner
17988     }
17989 }
17990 impl<'a> BindImageMemoryInfoBuilder<'a> {
image(mut self, image: Image) -> Self17991     pub fn image(mut self, image: Image) -> Self {
17992         self.inner.image = image;
17993         self
17994     }
memory(mut self, memory: DeviceMemory) -> Self17995     pub fn memory(mut self, memory: DeviceMemory) -> Self {
17996         self.inner.memory = memory;
17997         self
17998     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self17999     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
18000         self.inner.memory_offset = memory_offset;
18001         self
18002     }
18003     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
18004     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
18005     #[doc = r" valid extension structs can be pushed into the chain."]
18006     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
18007     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBindImageMemoryInfo>(mut self, next: &'a mut T) -> Self18008     pub fn push_next<T: ExtendsBindImageMemoryInfo>(mut self, next: &'a mut T) -> Self {
18009         unsafe {
18010             let next_ptr = next as *mut T as *mut BaseOutStructure;
18011             let last_next = ptr_chain_iter(next).last().unwrap();
18012             (*last_next).p_next = self.inner.p_next as _;
18013             self.inner.p_next = next_ptr as _;
18014         }
18015         self
18016     }
18017     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18018     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18019     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImageMemoryInfo18020     pub fn build(self) -> BindImageMemoryInfo {
18021         self.inner
18022     }
18023 }
18024 #[repr(C)]
18025 #[cfg_attr(feature = "debug", derive(Debug))]
18026 #[derive(Copy, Clone)]
18027 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImageMemoryDeviceGroupInfo.html>"]
18028 pub struct BindImageMemoryDeviceGroupInfo {
18029     pub s_type: StructureType,
18030     pub p_next: *const c_void,
18031     pub device_index_count: u32,
18032     pub p_device_indices: *const u32,
18033     pub split_instance_bind_region_count: u32,
18034     pub p_split_instance_bind_regions: *const Rect2D,
18035 }
18036 impl ::std::default::Default for BindImageMemoryDeviceGroupInfo {
default() -> Self18037     fn default() -> Self {
18038         Self {
18039             s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
18040             p_next: ::std::ptr::null(),
18041             device_index_count: u32::default(),
18042             p_device_indices: ::std::ptr::null(),
18043             split_instance_bind_region_count: u32::default(),
18044             p_split_instance_bind_regions: ::std::ptr::null(),
18045         }
18046     }
18047 }
18048 impl BindImageMemoryDeviceGroupInfo {
builder<'a>() -> BindImageMemoryDeviceGroupInfoBuilder<'a>18049     pub fn builder<'a>() -> BindImageMemoryDeviceGroupInfoBuilder<'a> {
18050         BindImageMemoryDeviceGroupInfoBuilder {
18051             inner: Self::default(),
18052             marker: ::std::marker::PhantomData,
18053         }
18054     }
18055 }
18056 #[repr(transparent)]
18057 pub struct BindImageMemoryDeviceGroupInfoBuilder<'a> {
18058     inner: BindImageMemoryDeviceGroupInfo,
18059     marker: ::std::marker::PhantomData<&'a ()>,
18060 }
18061 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemoryDeviceGroupInfoBuilder<'_> {}
18062 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemoryDeviceGroupInfo {}
18063 impl<'a> ::std::ops::Deref for BindImageMemoryDeviceGroupInfoBuilder<'a> {
18064     type Target = BindImageMemoryDeviceGroupInfo;
deref(&self) -> &Self::Target18065     fn deref(&self) -> &Self::Target {
18066         &self.inner
18067     }
18068 }
18069 impl<'a> ::std::ops::DerefMut for BindImageMemoryDeviceGroupInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18070     fn deref_mut(&mut self) -> &mut Self::Target {
18071         &mut self.inner
18072     }
18073 }
18074 impl<'a> BindImageMemoryDeviceGroupInfoBuilder<'a> {
device_indices(mut self, device_indices: &'a [u32]) -> Self18075     pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self {
18076         self.inner.device_index_count = device_indices.len() as _;
18077         self.inner.p_device_indices = device_indices.as_ptr();
18078         self
18079     }
split_instance_bind_regions( mut self, split_instance_bind_regions: &'a [Rect2D], ) -> Self18080     pub fn split_instance_bind_regions(
18081         mut self,
18082         split_instance_bind_regions: &'a [Rect2D],
18083     ) -> Self {
18084         self.inner.split_instance_bind_region_count = split_instance_bind_regions.len() as _;
18085         self.inner.p_split_instance_bind_regions = split_instance_bind_regions.as_ptr();
18086         self
18087     }
18088     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18089     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18090     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImageMemoryDeviceGroupInfo18091     pub fn build(self) -> BindImageMemoryDeviceGroupInfo {
18092         self.inner
18093     }
18094 }
18095 #[repr(C)]
18096 #[cfg_attr(feature = "debug", derive(Debug))]
18097 #[derive(Copy, Clone)]
18098 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupRenderPassBeginInfo.html>"]
18099 pub struct DeviceGroupRenderPassBeginInfo {
18100     pub s_type: StructureType,
18101     pub p_next: *const c_void,
18102     pub device_mask: u32,
18103     pub device_render_area_count: u32,
18104     pub p_device_render_areas: *const Rect2D,
18105 }
18106 impl ::std::default::Default for DeviceGroupRenderPassBeginInfo {
default() -> Self18107     fn default() -> Self {
18108         Self {
18109             s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
18110             p_next: ::std::ptr::null(),
18111             device_mask: u32::default(),
18112             device_render_area_count: u32::default(),
18113             p_device_render_areas: ::std::ptr::null(),
18114         }
18115     }
18116 }
18117 impl DeviceGroupRenderPassBeginInfo {
builder<'a>() -> DeviceGroupRenderPassBeginInfoBuilder<'a>18118     pub fn builder<'a>() -> DeviceGroupRenderPassBeginInfoBuilder<'a> {
18119         DeviceGroupRenderPassBeginInfoBuilder {
18120             inner: Self::default(),
18121             marker: ::std::marker::PhantomData,
18122         }
18123     }
18124 }
18125 #[repr(transparent)]
18126 pub struct DeviceGroupRenderPassBeginInfoBuilder<'a> {
18127     inner: DeviceGroupRenderPassBeginInfo,
18128     marker: ::std::marker::PhantomData<&'a ()>,
18129 }
18130 unsafe impl ExtendsRenderPassBeginInfo for DeviceGroupRenderPassBeginInfoBuilder<'_> {}
18131 unsafe impl ExtendsRenderPassBeginInfo for DeviceGroupRenderPassBeginInfo {}
18132 unsafe impl ExtendsRenderingInfoKHR for DeviceGroupRenderPassBeginInfoBuilder<'_> {}
18133 unsafe impl ExtendsRenderingInfoKHR for DeviceGroupRenderPassBeginInfo {}
18134 impl<'a> ::std::ops::Deref for DeviceGroupRenderPassBeginInfoBuilder<'a> {
18135     type Target = DeviceGroupRenderPassBeginInfo;
deref(&self) -> &Self::Target18136     fn deref(&self) -> &Self::Target {
18137         &self.inner
18138     }
18139 }
18140 impl<'a> ::std::ops::DerefMut for DeviceGroupRenderPassBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18141     fn deref_mut(&mut self) -> &mut Self::Target {
18142         &mut self.inner
18143     }
18144 }
18145 impl<'a> DeviceGroupRenderPassBeginInfoBuilder<'a> {
device_mask(mut self, device_mask: u32) -> Self18146     pub fn device_mask(mut self, device_mask: u32) -> Self {
18147         self.inner.device_mask = device_mask;
18148         self
18149     }
device_render_areas(mut self, device_render_areas: &'a [Rect2D]) -> Self18150     pub fn device_render_areas(mut self, device_render_areas: &'a [Rect2D]) -> Self {
18151         self.inner.device_render_area_count = device_render_areas.len() as _;
18152         self.inner.p_device_render_areas = device_render_areas.as_ptr();
18153         self
18154     }
18155     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18156     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18157     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupRenderPassBeginInfo18158     pub fn build(self) -> DeviceGroupRenderPassBeginInfo {
18159         self.inner
18160     }
18161 }
18162 #[repr(C)]
18163 #[cfg_attr(feature = "debug", derive(Debug))]
18164 #[derive(Copy, Clone)]
18165 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupCommandBufferBeginInfo.html>"]
18166 pub struct DeviceGroupCommandBufferBeginInfo {
18167     pub s_type: StructureType,
18168     pub p_next: *const c_void,
18169     pub device_mask: u32,
18170 }
18171 impl ::std::default::Default for DeviceGroupCommandBufferBeginInfo {
default() -> Self18172     fn default() -> Self {
18173         Self {
18174             s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
18175             p_next: ::std::ptr::null(),
18176             device_mask: u32::default(),
18177         }
18178     }
18179 }
18180 impl DeviceGroupCommandBufferBeginInfo {
builder<'a>() -> DeviceGroupCommandBufferBeginInfoBuilder<'a>18181     pub fn builder<'a>() -> DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18182         DeviceGroupCommandBufferBeginInfoBuilder {
18183             inner: Self::default(),
18184             marker: ::std::marker::PhantomData,
18185         }
18186     }
18187 }
18188 #[repr(transparent)]
18189 pub struct DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18190     inner: DeviceGroupCommandBufferBeginInfo,
18191     marker: ::std::marker::PhantomData<&'a ()>,
18192 }
18193 unsafe impl ExtendsCommandBufferBeginInfo for DeviceGroupCommandBufferBeginInfoBuilder<'_> {}
18194 unsafe impl ExtendsCommandBufferBeginInfo for DeviceGroupCommandBufferBeginInfo {}
18195 impl<'a> ::std::ops::Deref for DeviceGroupCommandBufferBeginInfoBuilder<'a> {
18196     type Target = DeviceGroupCommandBufferBeginInfo;
deref(&self) -> &Self::Target18197     fn deref(&self) -> &Self::Target {
18198         &self.inner
18199     }
18200 }
18201 impl<'a> ::std::ops::DerefMut for DeviceGroupCommandBufferBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18202     fn deref_mut(&mut self) -> &mut Self::Target {
18203         &mut self.inner
18204     }
18205 }
18206 impl<'a> DeviceGroupCommandBufferBeginInfoBuilder<'a> {
device_mask(mut self, device_mask: u32) -> Self18207     pub fn device_mask(mut self, device_mask: u32) -> Self {
18208         self.inner.device_mask = device_mask;
18209         self
18210     }
18211     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18212     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18213     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupCommandBufferBeginInfo18214     pub fn build(self) -> DeviceGroupCommandBufferBeginInfo {
18215         self.inner
18216     }
18217 }
18218 #[repr(C)]
18219 #[cfg_attr(feature = "debug", derive(Debug))]
18220 #[derive(Copy, Clone)]
18221 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupSubmitInfo.html>"]
18222 pub struct DeviceGroupSubmitInfo {
18223     pub s_type: StructureType,
18224     pub p_next: *const c_void,
18225     pub wait_semaphore_count: u32,
18226     pub p_wait_semaphore_device_indices: *const u32,
18227     pub command_buffer_count: u32,
18228     pub p_command_buffer_device_masks: *const u32,
18229     pub signal_semaphore_count: u32,
18230     pub p_signal_semaphore_device_indices: *const u32,
18231 }
18232 impl ::std::default::Default for DeviceGroupSubmitInfo {
default() -> Self18233     fn default() -> Self {
18234         Self {
18235             s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
18236             p_next: ::std::ptr::null(),
18237             wait_semaphore_count: u32::default(),
18238             p_wait_semaphore_device_indices: ::std::ptr::null(),
18239             command_buffer_count: u32::default(),
18240             p_command_buffer_device_masks: ::std::ptr::null(),
18241             signal_semaphore_count: u32::default(),
18242             p_signal_semaphore_device_indices: ::std::ptr::null(),
18243         }
18244     }
18245 }
18246 impl DeviceGroupSubmitInfo {
builder<'a>() -> DeviceGroupSubmitInfoBuilder<'a>18247     pub fn builder<'a>() -> DeviceGroupSubmitInfoBuilder<'a> {
18248         DeviceGroupSubmitInfoBuilder {
18249             inner: Self::default(),
18250             marker: ::std::marker::PhantomData,
18251         }
18252     }
18253 }
18254 #[repr(transparent)]
18255 pub struct DeviceGroupSubmitInfoBuilder<'a> {
18256     inner: DeviceGroupSubmitInfo,
18257     marker: ::std::marker::PhantomData<&'a ()>,
18258 }
18259 unsafe impl ExtendsSubmitInfo for DeviceGroupSubmitInfoBuilder<'_> {}
18260 unsafe impl ExtendsSubmitInfo for DeviceGroupSubmitInfo {}
18261 impl<'a> ::std::ops::Deref for DeviceGroupSubmitInfoBuilder<'a> {
18262     type Target = DeviceGroupSubmitInfo;
deref(&self) -> &Self::Target18263     fn deref(&self) -> &Self::Target {
18264         &self.inner
18265     }
18266 }
18267 impl<'a> ::std::ops::DerefMut for DeviceGroupSubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18268     fn deref_mut(&mut self) -> &mut Self::Target {
18269         &mut self.inner
18270     }
18271 }
18272 impl<'a> DeviceGroupSubmitInfoBuilder<'a> {
wait_semaphore_device_indices( mut self, wait_semaphore_device_indices: &'a [u32], ) -> Self18273     pub fn wait_semaphore_device_indices(
18274         mut self,
18275         wait_semaphore_device_indices: &'a [u32],
18276     ) -> Self {
18277         self.inner.wait_semaphore_count = wait_semaphore_device_indices.len() as _;
18278         self.inner.p_wait_semaphore_device_indices = wait_semaphore_device_indices.as_ptr();
18279         self
18280     }
command_buffer_device_masks(mut self, command_buffer_device_masks: &'a [u32]) -> Self18281     pub fn command_buffer_device_masks(mut self, command_buffer_device_masks: &'a [u32]) -> Self {
18282         self.inner.command_buffer_count = command_buffer_device_masks.len() as _;
18283         self.inner.p_command_buffer_device_masks = command_buffer_device_masks.as_ptr();
18284         self
18285     }
signal_semaphore_device_indices( mut self, signal_semaphore_device_indices: &'a [u32], ) -> Self18286     pub fn signal_semaphore_device_indices(
18287         mut self,
18288         signal_semaphore_device_indices: &'a [u32],
18289     ) -> Self {
18290         self.inner.signal_semaphore_count = signal_semaphore_device_indices.len() as _;
18291         self.inner.p_signal_semaphore_device_indices = signal_semaphore_device_indices.as_ptr();
18292         self
18293     }
18294     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18295     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18296     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupSubmitInfo18297     pub fn build(self) -> DeviceGroupSubmitInfo {
18298         self.inner
18299     }
18300 }
18301 #[repr(C)]
18302 #[cfg_attr(feature = "debug", derive(Debug))]
18303 #[derive(Copy, Clone)]
18304 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupBindSparseInfo.html>"]
18305 pub struct DeviceGroupBindSparseInfo {
18306     pub s_type: StructureType,
18307     pub p_next: *const c_void,
18308     pub resource_device_index: u32,
18309     pub memory_device_index: u32,
18310 }
18311 impl ::std::default::Default for DeviceGroupBindSparseInfo {
default() -> Self18312     fn default() -> Self {
18313         Self {
18314             s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
18315             p_next: ::std::ptr::null(),
18316             resource_device_index: u32::default(),
18317             memory_device_index: u32::default(),
18318         }
18319     }
18320 }
18321 impl DeviceGroupBindSparseInfo {
builder<'a>() -> DeviceGroupBindSparseInfoBuilder<'a>18322     pub fn builder<'a>() -> DeviceGroupBindSparseInfoBuilder<'a> {
18323         DeviceGroupBindSparseInfoBuilder {
18324             inner: Self::default(),
18325             marker: ::std::marker::PhantomData,
18326         }
18327     }
18328 }
18329 #[repr(transparent)]
18330 pub struct DeviceGroupBindSparseInfoBuilder<'a> {
18331     inner: DeviceGroupBindSparseInfo,
18332     marker: ::std::marker::PhantomData<&'a ()>,
18333 }
18334 unsafe impl ExtendsBindSparseInfo for DeviceGroupBindSparseInfoBuilder<'_> {}
18335 unsafe impl ExtendsBindSparseInfo for DeviceGroupBindSparseInfo {}
18336 impl<'a> ::std::ops::Deref for DeviceGroupBindSparseInfoBuilder<'a> {
18337     type Target = DeviceGroupBindSparseInfo;
deref(&self) -> &Self::Target18338     fn deref(&self) -> &Self::Target {
18339         &self.inner
18340     }
18341 }
18342 impl<'a> ::std::ops::DerefMut for DeviceGroupBindSparseInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18343     fn deref_mut(&mut self) -> &mut Self::Target {
18344         &mut self.inner
18345     }
18346 }
18347 impl<'a> DeviceGroupBindSparseInfoBuilder<'a> {
resource_device_index(mut self, resource_device_index: u32) -> Self18348     pub fn resource_device_index(mut self, resource_device_index: u32) -> Self {
18349         self.inner.resource_device_index = resource_device_index;
18350         self
18351     }
memory_device_index(mut self, memory_device_index: u32) -> Self18352     pub fn memory_device_index(mut self, memory_device_index: u32) -> Self {
18353         self.inner.memory_device_index = memory_device_index;
18354         self
18355     }
18356     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18357     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18358     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupBindSparseInfo18359     pub fn build(self) -> DeviceGroupBindSparseInfo {
18360         self.inner
18361     }
18362 }
18363 #[repr(C)]
18364 #[cfg_attr(feature = "debug", derive(Debug))]
18365 #[derive(Copy, Clone)]
18366 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>"]
18367 pub struct DeviceGroupPresentCapabilitiesKHR {
18368     pub s_type: StructureType,
18369     pub p_next: *mut c_void,
18370     pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE],
18371     pub modes: DeviceGroupPresentModeFlagsKHR,
18372 }
18373 impl ::std::default::Default for DeviceGroupPresentCapabilitiesKHR {
default() -> Self18374     fn default() -> Self {
18375         Self {
18376             s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
18377             p_next: ::std::ptr::null_mut(),
18378             present_mask: unsafe { ::std::mem::zeroed() },
18379             modes: DeviceGroupPresentModeFlagsKHR::default(),
18380         }
18381     }
18382 }
18383 impl DeviceGroupPresentCapabilitiesKHR {
builder<'a>() -> DeviceGroupPresentCapabilitiesKHRBuilder<'a>18384     pub fn builder<'a>() -> DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18385         DeviceGroupPresentCapabilitiesKHRBuilder {
18386             inner: Self::default(),
18387             marker: ::std::marker::PhantomData,
18388         }
18389     }
18390 }
18391 #[repr(transparent)]
18392 pub struct DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18393     inner: DeviceGroupPresentCapabilitiesKHR,
18394     marker: ::std::marker::PhantomData<&'a ()>,
18395 }
18396 impl<'a> ::std::ops::Deref for DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
18397     type Target = DeviceGroupPresentCapabilitiesKHR;
deref(&self) -> &Self::Target18398     fn deref(&self) -> &Self::Target {
18399         &self.inner
18400     }
18401 }
18402 impl<'a> ::std::ops::DerefMut for DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18403     fn deref_mut(&mut self) -> &mut Self::Target {
18404         &mut self.inner
18405     }
18406 }
18407 impl<'a> DeviceGroupPresentCapabilitiesKHRBuilder<'a> {
present_mask(mut self, present_mask: [u32; MAX_DEVICE_GROUP_SIZE]) -> Self18408     pub fn present_mask(mut self, present_mask: [u32; MAX_DEVICE_GROUP_SIZE]) -> Self {
18409         self.inner.present_mask = present_mask;
18410         self
18411     }
modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self18412     pub fn modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self {
18413         self.inner.modes = modes;
18414         self
18415     }
18416     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18417     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18418     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupPresentCapabilitiesKHR18419     pub fn build(self) -> DeviceGroupPresentCapabilitiesKHR {
18420         self.inner
18421     }
18422 }
18423 #[repr(C)]
18424 #[cfg_attr(feature = "debug", derive(Debug))]
18425 #[derive(Copy, Clone)]
18426 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSwapchainCreateInfoKHR.html>"]
18427 pub struct ImageSwapchainCreateInfoKHR {
18428     pub s_type: StructureType,
18429     pub p_next: *const c_void,
18430     pub swapchain: SwapchainKHR,
18431 }
18432 impl ::std::default::Default for ImageSwapchainCreateInfoKHR {
default() -> Self18433     fn default() -> Self {
18434         Self {
18435             s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
18436             p_next: ::std::ptr::null(),
18437             swapchain: SwapchainKHR::default(),
18438         }
18439     }
18440 }
18441 impl ImageSwapchainCreateInfoKHR {
builder<'a>() -> ImageSwapchainCreateInfoKHRBuilder<'a>18442     pub fn builder<'a>() -> ImageSwapchainCreateInfoKHRBuilder<'a> {
18443         ImageSwapchainCreateInfoKHRBuilder {
18444             inner: Self::default(),
18445             marker: ::std::marker::PhantomData,
18446         }
18447     }
18448 }
18449 #[repr(transparent)]
18450 pub struct ImageSwapchainCreateInfoKHRBuilder<'a> {
18451     inner: ImageSwapchainCreateInfoKHR,
18452     marker: ::std::marker::PhantomData<&'a ()>,
18453 }
18454 unsafe impl ExtendsImageCreateInfo for ImageSwapchainCreateInfoKHRBuilder<'_> {}
18455 unsafe impl ExtendsImageCreateInfo for ImageSwapchainCreateInfoKHR {}
18456 impl<'a> ::std::ops::Deref for ImageSwapchainCreateInfoKHRBuilder<'a> {
18457     type Target = ImageSwapchainCreateInfoKHR;
deref(&self) -> &Self::Target18458     fn deref(&self) -> &Self::Target {
18459         &self.inner
18460     }
18461 }
18462 impl<'a> ::std::ops::DerefMut for ImageSwapchainCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18463     fn deref_mut(&mut self) -> &mut Self::Target {
18464         &mut self.inner
18465     }
18466 }
18467 impl<'a> ImageSwapchainCreateInfoKHRBuilder<'a> {
swapchain(mut self, swapchain: SwapchainKHR) -> Self18468     pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self {
18469         self.inner.swapchain = swapchain;
18470         self
18471     }
18472     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18473     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18474     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSwapchainCreateInfoKHR18475     pub fn build(self) -> ImageSwapchainCreateInfoKHR {
18476         self.inner
18477     }
18478 }
18479 #[repr(C)]
18480 #[cfg_attr(feature = "debug", derive(Debug))]
18481 #[derive(Copy, Clone)]
18482 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImageMemorySwapchainInfoKHR.html>"]
18483 pub struct BindImageMemorySwapchainInfoKHR {
18484     pub s_type: StructureType,
18485     pub p_next: *const c_void,
18486     pub swapchain: SwapchainKHR,
18487     pub image_index: u32,
18488 }
18489 impl ::std::default::Default for BindImageMemorySwapchainInfoKHR {
default() -> Self18490     fn default() -> Self {
18491         Self {
18492             s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
18493             p_next: ::std::ptr::null(),
18494             swapchain: SwapchainKHR::default(),
18495             image_index: u32::default(),
18496         }
18497     }
18498 }
18499 impl BindImageMemorySwapchainInfoKHR {
builder<'a>() -> BindImageMemorySwapchainInfoKHRBuilder<'a>18500     pub fn builder<'a>() -> BindImageMemorySwapchainInfoKHRBuilder<'a> {
18501         BindImageMemorySwapchainInfoKHRBuilder {
18502             inner: Self::default(),
18503             marker: ::std::marker::PhantomData,
18504         }
18505     }
18506 }
18507 #[repr(transparent)]
18508 pub struct BindImageMemorySwapchainInfoKHRBuilder<'a> {
18509     inner: BindImageMemorySwapchainInfoKHR,
18510     marker: ::std::marker::PhantomData<&'a ()>,
18511 }
18512 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemorySwapchainInfoKHRBuilder<'_> {}
18513 unsafe impl ExtendsBindImageMemoryInfo for BindImageMemorySwapchainInfoKHR {}
18514 impl<'a> ::std::ops::Deref for BindImageMemorySwapchainInfoKHRBuilder<'a> {
18515     type Target = BindImageMemorySwapchainInfoKHR;
deref(&self) -> &Self::Target18516     fn deref(&self) -> &Self::Target {
18517         &self.inner
18518     }
18519 }
18520 impl<'a> ::std::ops::DerefMut for BindImageMemorySwapchainInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18521     fn deref_mut(&mut self) -> &mut Self::Target {
18522         &mut self.inner
18523     }
18524 }
18525 impl<'a> BindImageMemorySwapchainInfoKHRBuilder<'a> {
swapchain(mut self, swapchain: SwapchainKHR) -> Self18526     pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self {
18527         self.inner.swapchain = swapchain;
18528         self
18529     }
image_index(mut self, image_index: u32) -> Self18530     pub fn image_index(mut self, image_index: u32) -> Self {
18531         self.inner.image_index = image_index;
18532         self
18533     }
18534     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18535     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18536     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImageMemorySwapchainInfoKHR18537     pub fn build(self) -> BindImageMemorySwapchainInfoKHR {
18538         self.inner
18539     }
18540 }
18541 #[repr(C)]
18542 #[cfg_attr(feature = "debug", derive(Debug))]
18543 #[derive(Copy, Clone)]
18544 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAcquireNextImageInfoKHR.html>"]
18545 pub struct AcquireNextImageInfoKHR {
18546     pub s_type: StructureType,
18547     pub p_next: *const c_void,
18548     pub swapchain: SwapchainKHR,
18549     pub timeout: u64,
18550     pub semaphore: Semaphore,
18551     pub fence: Fence,
18552     pub device_mask: u32,
18553 }
18554 impl ::std::default::Default for AcquireNextImageInfoKHR {
default() -> Self18555     fn default() -> Self {
18556         Self {
18557             s_type: StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR,
18558             p_next: ::std::ptr::null(),
18559             swapchain: SwapchainKHR::default(),
18560             timeout: u64::default(),
18561             semaphore: Semaphore::default(),
18562             fence: Fence::default(),
18563             device_mask: u32::default(),
18564         }
18565     }
18566 }
18567 impl AcquireNextImageInfoKHR {
builder<'a>() -> AcquireNextImageInfoKHRBuilder<'a>18568     pub fn builder<'a>() -> AcquireNextImageInfoKHRBuilder<'a> {
18569         AcquireNextImageInfoKHRBuilder {
18570             inner: Self::default(),
18571             marker: ::std::marker::PhantomData,
18572         }
18573     }
18574 }
18575 #[repr(transparent)]
18576 pub struct AcquireNextImageInfoKHRBuilder<'a> {
18577     inner: AcquireNextImageInfoKHR,
18578     marker: ::std::marker::PhantomData<&'a ()>,
18579 }
18580 impl<'a> ::std::ops::Deref for AcquireNextImageInfoKHRBuilder<'a> {
18581     type Target = AcquireNextImageInfoKHR;
deref(&self) -> &Self::Target18582     fn deref(&self) -> &Self::Target {
18583         &self.inner
18584     }
18585 }
18586 impl<'a> ::std::ops::DerefMut for AcquireNextImageInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18587     fn deref_mut(&mut self) -> &mut Self::Target {
18588         &mut self.inner
18589     }
18590 }
18591 impl<'a> AcquireNextImageInfoKHRBuilder<'a> {
swapchain(mut self, swapchain: SwapchainKHR) -> Self18592     pub fn swapchain(mut self, swapchain: SwapchainKHR) -> Self {
18593         self.inner.swapchain = swapchain;
18594         self
18595     }
timeout(mut self, timeout: u64) -> Self18596     pub fn timeout(mut self, timeout: u64) -> Self {
18597         self.inner.timeout = timeout;
18598         self
18599     }
semaphore(mut self, semaphore: Semaphore) -> Self18600     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
18601         self.inner.semaphore = semaphore;
18602         self
18603     }
fence(mut self, fence: Fence) -> Self18604     pub fn fence(mut self, fence: Fence) -> Self {
18605         self.inner.fence = fence;
18606         self
18607     }
device_mask(mut self, device_mask: u32) -> Self18608     pub fn device_mask(mut self, device_mask: u32) -> Self {
18609         self.inner.device_mask = device_mask;
18610         self
18611     }
18612     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18613     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18614     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AcquireNextImageInfoKHR18615     pub fn build(self) -> AcquireNextImageInfoKHR {
18616         self.inner
18617     }
18618 }
18619 #[repr(C)]
18620 #[cfg_attr(feature = "debug", derive(Debug))]
18621 #[derive(Copy, Clone)]
18622 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupPresentInfoKHR.html>"]
18623 pub struct DeviceGroupPresentInfoKHR {
18624     pub s_type: StructureType,
18625     pub p_next: *const c_void,
18626     pub swapchain_count: u32,
18627     pub p_device_masks: *const u32,
18628     pub mode: DeviceGroupPresentModeFlagsKHR,
18629 }
18630 impl ::std::default::Default for DeviceGroupPresentInfoKHR {
default() -> Self18631     fn default() -> Self {
18632         Self {
18633             s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
18634             p_next: ::std::ptr::null(),
18635             swapchain_count: u32::default(),
18636             p_device_masks: ::std::ptr::null(),
18637             mode: DeviceGroupPresentModeFlagsKHR::default(),
18638         }
18639     }
18640 }
18641 impl DeviceGroupPresentInfoKHR {
builder<'a>() -> DeviceGroupPresentInfoKHRBuilder<'a>18642     pub fn builder<'a>() -> DeviceGroupPresentInfoKHRBuilder<'a> {
18643         DeviceGroupPresentInfoKHRBuilder {
18644             inner: Self::default(),
18645             marker: ::std::marker::PhantomData,
18646         }
18647     }
18648 }
18649 #[repr(transparent)]
18650 pub struct DeviceGroupPresentInfoKHRBuilder<'a> {
18651     inner: DeviceGroupPresentInfoKHR,
18652     marker: ::std::marker::PhantomData<&'a ()>,
18653 }
18654 unsafe impl ExtendsPresentInfoKHR for DeviceGroupPresentInfoKHRBuilder<'_> {}
18655 unsafe impl ExtendsPresentInfoKHR for DeviceGroupPresentInfoKHR {}
18656 impl<'a> ::std::ops::Deref for DeviceGroupPresentInfoKHRBuilder<'a> {
18657     type Target = DeviceGroupPresentInfoKHR;
deref(&self) -> &Self::Target18658     fn deref(&self) -> &Self::Target {
18659         &self.inner
18660     }
18661 }
18662 impl<'a> ::std::ops::DerefMut for DeviceGroupPresentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18663     fn deref_mut(&mut self) -> &mut Self::Target {
18664         &mut self.inner
18665     }
18666 }
18667 impl<'a> DeviceGroupPresentInfoKHRBuilder<'a> {
device_masks(mut self, device_masks: &'a [u32]) -> Self18668     pub fn device_masks(mut self, device_masks: &'a [u32]) -> Self {
18669         self.inner.swapchain_count = device_masks.len() as _;
18670         self.inner.p_device_masks = device_masks.as_ptr();
18671         self
18672     }
mode(mut self, mode: DeviceGroupPresentModeFlagsKHR) -> Self18673     pub fn mode(mut self, mode: DeviceGroupPresentModeFlagsKHR) -> Self {
18674         self.inner.mode = mode;
18675         self
18676     }
18677     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18678     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18679     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupPresentInfoKHR18680     pub fn build(self) -> DeviceGroupPresentInfoKHR {
18681         self.inner
18682     }
18683 }
18684 #[repr(C)]
18685 #[cfg_attr(feature = "debug", derive(Debug))]
18686 #[derive(Copy, Clone)]
18687 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupDeviceCreateInfo.html>"]
18688 pub struct DeviceGroupDeviceCreateInfo {
18689     pub s_type: StructureType,
18690     pub p_next: *const c_void,
18691     pub physical_device_count: u32,
18692     pub p_physical_devices: *const PhysicalDevice,
18693 }
18694 impl ::std::default::Default for DeviceGroupDeviceCreateInfo {
default() -> Self18695     fn default() -> Self {
18696         Self {
18697             s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
18698             p_next: ::std::ptr::null(),
18699             physical_device_count: u32::default(),
18700             p_physical_devices: ::std::ptr::null(),
18701         }
18702     }
18703 }
18704 impl DeviceGroupDeviceCreateInfo {
builder<'a>() -> DeviceGroupDeviceCreateInfoBuilder<'a>18705     pub fn builder<'a>() -> DeviceGroupDeviceCreateInfoBuilder<'a> {
18706         DeviceGroupDeviceCreateInfoBuilder {
18707             inner: Self::default(),
18708             marker: ::std::marker::PhantomData,
18709         }
18710     }
18711 }
18712 #[repr(transparent)]
18713 pub struct DeviceGroupDeviceCreateInfoBuilder<'a> {
18714     inner: DeviceGroupDeviceCreateInfo,
18715     marker: ::std::marker::PhantomData<&'a ()>,
18716 }
18717 unsafe impl ExtendsDeviceCreateInfo for DeviceGroupDeviceCreateInfoBuilder<'_> {}
18718 unsafe impl ExtendsDeviceCreateInfo for DeviceGroupDeviceCreateInfo {}
18719 impl<'a> ::std::ops::Deref for DeviceGroupDeviceCreateInfoBuilder<'a> {
18720     type Target = DeviceGroupDeviceCreateInfo;
deref(&self) -> &Self::Target18721     fn deref(&self) -> &Self::Target {
18722         &self.inner
18723     }
18724 }
18725 impl<'a> ::std::ops::DerefMut for DeviceGroupDeviceCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18726     fn deref_mut(&mut self) -> &mut Self::Target {
18727         &mut self.inner
18728     }
18729 }
18730 impl<'a> DeviceGroupDeviceCreateInfoBuilder<'a> {
physical_devices(mut self, physical_devices: &'a [PhysicalDevice]) -> Self18731     pub fn physical_devices(mut self, physical_devices: &'a [PhysicalDevice]) -> Self {
18732         self.inner.physical_device_count = physical_devices.len() as _;
18733         self.inner.p_physical_devices = physical_devices.as_ptr();
18734         self
18735     }
18736     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18737     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18738     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupDeviceCreateInfo18739     pub fn build(self) -> DeviceGroupDeviceCreateInfo {
18740         self.inner
18741     }
18742 }
18743 #[repr(C)]
18744 #[cfg_attr(feature = "debug", derive(Debug))]
18745 #[derive(Copy, Clone)]
18746 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>"]
18747 pub struct DeviceGroupSwapchainCreateInfoKHR {
18748     pub s_type: StructureType,
18749     pub p_next: *const c_void,
18750     pub modes: DeviceGroupPresentModeFlagsKHR,
18751 }
18752 impl ::std::default::Default for DeviceGroupSwapchainCreateInfoKHR {
default() -> Self18753     fn default() -> Self {
18754         Self {
18755             s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
18756             p_next: ::std::ptr::null(),
18757             modes: DeviceGroupPresentModeFlagsKHR::default(),
18758         }
18759     }
18760 }
18761 impl DeviceGroupSwapchainCreateInfoKHR {
builder<'a>() -> DeviceGroupSwapchainCreateInfoKHRBuilder<'a>18762     pub fn builder<'a>() -> DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18763         DeviceGroupSwapchainCreateInfoKHRBuilder {
18764             inner: Self::default(),
18765             marker: ::std::marker::PhantomData,
18766         }
18767     }
18768 }
18769 #[repr(transparent)]
18770 pub struct DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18771     inner: DeviceGroupSwapchainCreateInfoKHR,
18772     marker: ::std::marker::PhantomData<&'a ()>,
18773 }
18774 unsafe impl ExtendsSwapchainCreateInfoKHR for DeviceGroupSwapchainCreateInfoKHRBuilder<'_> {}
18775 unsafe impl ExtendsSwapchainCreateInfoKHR for DeviceGroupSwapchainCreateInfoKHR {}
18776 impl<'a> ::std::ops::Deref for DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
18777     type Target = DeviceGroupSwapchainCreateInfoKHR;
deref(&self) -> &Self::Target18778     fn deref(&self) -> &Self::Target {
18779         &self.inner
18780     }
18781 }
18782 impl<'a> ::std::ops::DerefMut for DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18783     fn deref_mut(&mut self) -> &mut Self::Target {
18784         &mut self.inner
18785     }
18786 }
18787 impl<'a> DeviceGroupSwapchainCreateInfoKHRBuilder<'a> {
modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self18788     pub fn modes(mut self, modes: DeviceGroupPresentModeFlagsKHR) -> Self {
18789         self.inner.modes = modes;
18790         self
18791     }
18792     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18793     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18794     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceGroupSwapchainCreateInfoKHR18795     pub fn build(self) -> DeviceGroupSwapchainCreateInfoKHR {
18796         self.inner
18797     }
18798 }
18799 #[repr(C)]
18800 #[cfg_attr(feature = "debug", derive(Debug))]
18801 #[derive(Copy, Clone, Default)]
18802 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateEntry.html>"]
18803 pub struct DescriptorUpdateTemplateEntry {
18804     pub dst_binding: u32,
18805     pub dst_array_element: u32,
18806     pub descriptor_count: u32,
18807     pub descriptor_type: DescriptorType,
18808     pub offset: usize,
18809     pub stride: usize,
18810 }
18811 impl DescriptorUpdateTemplateEntry {
builder<'a>() -> DescriptorUpdateTemplateEntryBuilder<'a>18812     pub fn builder<'a>() -> DescriptorUpdateTemplateEntryBuilder<'a> {
18813         DescriptorUpdateTemplateEntryBuilder {
18814             inner: Self::default(),
18815             marker: ::std::marker::PhantomData,
18816         }
18817     }
18818 }
18819 #[repr(transparent)]
18820 pub struct DescriptorUpdateTemplateEntryBuilder<'a> {
18821     inner: DescriptorUpdateTemplateEntry,
18822     marker: ::std::marker::PhantomData<&'a ()>,
18823 }
18824 impl<'a> ::std::ops::Deref for DescriptorUpdateTemplateEntryBuilder<'a> {
18825     type Target = DescriptorUpdateTemplateEntry;
deref(&self) -> &Self::Target18826     fn deref(&self) -> &Self::Target {
18827         &self.inner
18828     }
18829 }
18830 impl<'a> ::std::ops::DerefMut for DescriptorUpdateTemplateEntryBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18831     fn deref_mut(&mut self) -> &mut Self::Target {
18832         &mut self.inner
18833     }
18834 }
18835 impl<'a> DescriptorUpdateTemplateEntryBuilder<'a> {
dst_binding(mut self, dst_binding: u32) -> Self18836     pub fn dst_binding(mut self, dst_binding: u32) -> Self {
18837         self.inner.dst_binding = dst_binding;
18838         self
18839     }
dst_array_element(mut self, dst_array_element: u32) -> Self18840     pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
18841         self.inner.dst_array_element = dst_array_element;
18842         self
18843     }
descriptor_count(mut self, descriptor_count: u32) -> Self18844     pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
18845         self.inner.descriptor_count = descriptor_count;
18846         self
18847     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self18848     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
18849         self.inner.descriptor_type = descriptor_type;
18850         self
18851     }
offset(mut self, offset: usize) -> Self18852     pub fn offset(mut self, offset: usize) -> Self {
18853         self.inner.offset = offset;
18854         self
18855     }
stride(mut self, stride: usize) -> Self18856     pub fn stride(mut self, stride: usize) -> Self {
18857         self.inner.stride = stride;
18858         self
18859     }
18860     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18861     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18862     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorUpdateTemplateEntry18863     pub fn build(self) -> DescriptorUpdateTemplateEntry {
18864         self.inner
18865     }
18866 }
18867 #[repr(C)]
18868 #[cfg_attr(feature = "debug", derive(Debug))]
18869 #[derive(Copy, Clone)]
18870 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateCreateInfo.html>"]
18871 pub struct DescriptorUpdateTemplateCreateInfo {
18872     pub s_type: StructureType,
18873     pub p_next: *const c_void,
18874     pub flags: DescriptorUpdateTemplateCreateFlags,
18875     pub descriptor_update_entry_count: u32,
18876     pub p_descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
18877     pub template_type: DescriptorUpdateTemplateType,
18878     pub descriptor_set_layout: DescriptorSetLayout,
18879     pub pipeline_bind_point: PipelineBindPoint,
18880     pub pipeline_layout: PipelineLayout,
18881     pub set: u32,
18882 }
18883 impl ::std::default::Default for DescriptorUpdateTemplateCreateInfo {
default() -> Self18884     fn default() -> Self {
18885         Self {
18886             s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
18887             p_next: ::std::ptr::null(),
18888             flags: DescriptorUpdateTemplateCreateFlags::default(),
18889             descriptor_update_entry_count: u32::default(),
18890             p_descriptor_update_entries: ::std::ptr::null(),
18891             template_type: DescriptorUpdateTemplateType::default(),
18892             descriptor_set_layout: DescriptorSetLayout::default(),
18893             pipeline_bind_point: PipelineBindPoint::default(),
18894             pipeline_layout: PipelineLayout::default(),
18895             set: u32::default(),
18896         }
18897     }
18898 }
18899 impl DescriptorUpdateTemplateCreateInfo {
builder<'a>() -> DescriptorUpdateTemplateCreateInfoBuilder<'a>18900     pub fn builder<'a>() -> DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18901         DescriptorUpdateTemplateCreateInfoBuilder {
18902             inner: Self::default(),
18903             marker: ::std::marker::PhantomData,
18904         }
18905     }
18906 }
18907 #[repr(transparent)]
18908 pub struct DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18909     inner: DescriptorUpdateTemplateCreateInfo,
18910     marker: ::std::marker::PhantomData<&'a ()>,
18911 }
18912 impl<'a> ::std::ops::Deref for DescriptorUpdateTemplateCreateInfoBuilder<'a> {
18913     type Target = DescriptorUpdateTemplateCreateInfo;
deref(&self) -> &Self::Target18914     fn deref(&self) -> &Self::Target {
18915         &self.inner
18916     }
18917 }
18918 impl<'a> ::std::ops::DerefMut for DescriptorUpdateTemplateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18919     fn deref_mut(&mut self) -> &mut Self::Target {
18920         &mut self.inner
18921     }
18922 }
18923 impl<'a> DescriptorUpdateTemplateCreateInfoBuilder<'a> {
flags(mut self, flags: DescriptorUpdateTemplateCreateFlags) -> Self18924     pub fn flags(mut self, flags: DescriptorUpdateTemplateCreateFlags) -> Self {
18925         self.inner.flags = flags;
18926         self
18927     }
descriptor_update_entries( mut self, descriptor_update_entries: &'a [DescriptorUpdateTemplateEntry], ) -> Self18928     pub fn descriptor_update_entries(
18929         mut self,
18930         descriptor_update_entries: &'a [DescriptorUpdateTemplateEntry],
18931     ) -> Self {
18932         self.inner.descriptor_update_entry_count = descriptor_update_entries.len() as _;
18933         self.inner.p_descriptor_update_entries = descriptor_update_entries.as_ptr();
18934         self
18935     }
template_type(mut self, template_type: DescriptorUpdateTemplateType) -> Self18936     pub fn template_type(mut self, template_type: DescriptorUpdateTemplateType) -> Self {
18937         self.inner.template_type = template_type;
18938         self
18939     }
descriptor_set_layout(mut self, descriptor_set_layout: DescriptorSetLayout) -> Self18940     pub fn descriptor_set_layout(mut self, descriptor_set_layout: DescriptorSetLayout) -> Self {
18941         self.inner.descriptor_set_layout = descriptor_set_layout;
18942         self
18943     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self18944     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
18945         self.inner.pipeline_bind_point = pipeline_bind_point;
18946         self
18947     }
pipeline_layout(mut self, pipeline_layout: PipelineLayout) -> Self18948     pub fn pipeline_layout(mut self, pipeline_layout: PipelineLayout) -> Self {
18949         self.inner.pipeline_layout = pipeline_layout;
18950         self
18951     }
set(mut self, set: u32) -> Self18952     pub fn set(mut self, set: u32) -> Self {
18953         self.inner.set = set;
18954         self
18955     }
18956     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
18957     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
18958     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorUpdateTemplateCreateInfo18959     pub fn build(self) -> DescriptorUpdateTemplateCreateInfo {
18960         self.inner
18961     }
18962 }
18963 #[repr(C)]
18964 #[cfg_attr(feature = "debug", derive(Debug))]
18965 #[derive(Copy, Clone, Default)]
18966 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkXYColorEXT.html>"]
18967 pub struct XYColorEXT {
18968     pub x: f32,
18969     pub y: f32,
18970 }
18971 impl XYColorEXT {
builder<'a>() -> XYColorEXTBuilder<'a>18972     pub fn builder<'a>() -> XYColorEXTBuilder<'a> {
18973         XYColorEXTBuilder {
18974             inner: Self::default(),
18975             marker: ::std::marker::PhantomData,
18976         }
18977     }
18978 }
18979 #[repr(transparent)]
18980 pub struct XYColorEXTBuilder<'a> {
18981     inner: XYColorEXT,
18982     marker: ::std::marker::PhantomData<&'a ()>,
18983 }
18984 impl<'a> ::std::ops::Deref for XYColorEXTBuilder<'a> {
18985     type Target = XYColorEXT;
deref(&self) -> &Self::Target18986     fn deref(&self) -> &Self::Target {
18987         &self.inner
18988     }
18989 }
18990 impl<'a> ::std::ops::DerefMut for XYColorEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target18991     fn deref_mut(&mut self) -> &mut Self::Target {
18992         &mut self.inner
18993     }
18994 }
18995 impl<'a> XYColorEXTBuilder<'a> {
x(mut self, x: f32) -> Self18996     pub fn x(mut self, x: f32) -> Self {
18997         self.inner.x = x;
18998         self
18999     }
y(mut self, y: f32) -> Self19000     pub fn y(mut self, y: f32) -> Self {
19001         self.inner.y = y;
19002         self
19003     }
19004     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19005     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19006     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> XYColorEXT19007     pub fn build(self) -> XYColorEXT {
19008         self.inner
19009     }
19010 }
19011 #[repr(C)]
19012 #[cfg_attr(feature = "debug", derive(Debug))]
19013 #[derive(Copy, Clone)]
19014 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>"]
19015 pub struct PhysicalDevicePresentIdFeaturesKHR {
19016     pub s_type: StructureType,
19017     pub p_next: *mut c_void,
19018     pub present_id: Bool32,
19019 }
19020 impl ::std::default::Default for PhysicalDevicePresentIdFeaturesKHR {
default() -> Self19021     fn default() -> Self {
19022         Self {
19023             s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
19024             p_next: ::std::ptr::null_mut(),
19025             present_id: Bool32::default(),
19026         }
19027     }
19028 }
19029 impl PhysicalDevicePresentIdFeaturesKHR {
builder<'a>() -> PhysicalDevicePresentIdFeaturesKHRBuilder<'a>19030     pub fn builder<'a>() -> PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
19031         PhysicalDevicePresentIdFeaturesKHRBuilder {
19032             inner: Self::default(),
19033             marker: ::std::marker::PhantomData,
19034         }
19035     }
19036 }
19037 #[repr(transparent)]
19038 pub struct PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
19039     inner: PhysicalDevicePresentIdFeaturesKHR,
19040     marker: ::std::marker::PhantomData<&'a ()>,
19041 }
19042 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentIdFeaturesKHRBuilder<'_> {}
19043 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentIdFeaturesKHR {}
19044 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentIdFeaturesKHRBuilder<'_> {}
19045 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentIdFeaturesKHR {}
19046 impl<'a> ::std::ops::Deref for PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
19047     type Target = PhysicalDevicePresentIdFeaturesKHR;
deref(&self) -> &Self::Target19048     fn deref(&self) -> &Self::Target {
19049         &self.inner
19050     }
19051 }
19052 impl<'a> ::std::ops::DerefMut for PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19053     fn deref_mut(&mut self) -> &mut Self::Target {
19054         &mut self.inner
19055     }
19056 }
19057 impl<'a> PhysicalDevicePresentIdFeaturesKHRBuilder<'a> {
present_id(mut self, present_id: bool) -> Self19058     pub fn present_id(mut self, present_id: bool) -> Self {
19059         self.inner.present_id = present_id.into();
19060         self
19061     }
19062     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19063     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19064     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePresentIdFeaturesKHR19065     pub fn build(self) -> PhysicalDevicePresentIdFeaturesKHR {
19066         self.inner
19067     }
19068 }
19069 #[repr(C)]
19070 #[cfg_attr(feature = "debug", derive(Debug))]
19071 #[derive(Copy, Clone)]
19072 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentIdKHR.html>"]
19073 pub struct PresentIdKHR {
19074     pub s_type: StructureType,
19075     pub p_next: *const c_void,
19076     pub swapchain_count: u32,
19077     pub p_present_ids: *const u64,
19078 }
19079 impl ::std::default::Default for PresentIdKHR {
default() -> Self19080     fn default() -> Self {
19081         Self {
19082             s_type: StructureType::PRESENT_ID_KHR,
19083             p_next: ::std::ptr::null(),
19084             swapchain_count: u32::default(),
19085             p_present_ids: ::std::ptr::null(),
19086         }
19087     }
19088 }
19089 impl PresentIdKHR {
builder<'a>() -> PresentIdKHRBuilder<'a>19090     pub fn builder<'a>() -> PresentIdKHRBuilder<'a> {
19091         PresentIdKHRBuilder {
19092             inner: Self::default(),
19093             marker: ::std::marker::PhantomData,
19094         }
19095     }
19096 }
19097 #[repr(transparent)]
19098 pub struct PresentIdKHRBuilder<'a> {
19099     inner: PresentIdKHR,
19100     marker: ::std::marker::PhantomData<&'a ()>,
19101 }
19102 unsafe impl ExtendsPresentInfoKHR for PresentIdKHRBuilder<'_> {}
19103 unsafe impl ExtendsPresentInfoKHR for PresentIdKHR {}
19104 impl<'a> ::std::ops::Deref for PresentIdKHRBuilder<'a> {
19105     type Target = PresentIdKHR;
deref(&self) -> &Self::Target19106     fn deref(&self) -> &Self::Target {
19107         &self.inner
19108     }
19109 }
19110 impl<'a> ::std::ops::DerefMut for PresentIdKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19111     fn deref_mut(&mut self) -> &mut Self::Target {
19112         &mut self.inner
19113     }
19114 }
19115 impl<'a> PresentIdKHRBuilder<'a> {
present_ids(mut self, present_ids: &'a [u64]) -> Self19116     pub fn present_ids(mut self, present_ids: &'a [u64]) -> Self {
19117         self.inner.swapchain_count = present_ids.len() as _;
19118         self.inner.p_present_ids = present_ids.as_ptr();
19119         self
19120     }
19121     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19122     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19123     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentIdKHR19124     pub fn build(self) -> PresentIdKHR {
19125         self.inner
19126     }
19127 }
19128 #[repr(C)]
19129 #[cfg_attr(feature = "debug", derive(Debug))]
19130 #[derive(Copy, Clone)]
19131 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>"]
19132 pub struct PhysicalDevicePresentWaitFeaturesKHR {
19133     pub s_type: StructureType,
19134     pub p_next: *mut c_void,
19135     pub present_wait: Bool32,
19136 }
19137 impl ::std::default::Default for PhysicalDevicePresentWaitFeaturesKHR {
default() -> Self19138     fn default() -> Self {
19139         Self {
19140             s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
19141             p_next: ::std::ptr::null_mut(),
19142             present_wait: Bool32::default(),
19143         }
19144     }
19145 }
19146 impl PhysicalDevicePresentWaitFeaturesKHR {
builder<'a>() -> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a>19147     pub fn builder<'a>() -> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19148         PhysicalDevicePresentWaitFeaturesKHRBuilder {
19149             inner: Self::default(),
19150             marker: ::std::marker::PhantomData,
19151         }
19152     }
19153 }
19154 #[repr(transparent)]
19155 pub struct PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19156     inner: PhysicalDevicePresentWaitFeaturesKHR,
19157     marker: ::std::marker::PhantomData<&'a ()>,
19158 }
19159 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentWaitFeaturesKHRBuilder<'_> {}
19160 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePresentWaitFeaturesKHR {}
19161 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentWaitFeaturesKHRBuilder<'_> {}
19162 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePresentWaitFeaturesKHR {}
19163 impl<'a> ::std::ops::Deref for PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
19164     type Target = PhysicalDevicePresentWaitFeaturesKHR;
deref(&self) -> &Self::Target19165     fn deref(&self) -> &Self::Target {
19166         &self.inner
19167     }
19168 }
19169 impl<'a> ::std::ops::DerefMut for PhysicalDevicePresentWaitFeaturesKHRBuilder<'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> PhysicalDevicePresentWaitFeaturesKHRBuilder<'a> {
present_wait(mut self, present_wait: bool) -> Self19175     pub fn present_wait(mut self, present_wait: bool) -> Self {
19176         self.inner.present_wait = present_wait.into();
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) -> PhysicalDevicePresentWaitFeaturesKHR19182     pub fn build(self) -> PhysicalDevicePresentWaitFeaturesKHR {
19183         self.inner
19184     }
19185 }
19186 #[repr(C)]
19187 #[cfg_attr(feature = "debug", derive(Debug))]
19188 #[derive(Copy, Clone)]
19189 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkHdrMetadataEXT.html>"]
19190 pub struct HdrMetadataEXT {
19191     pub s_type: StructureType,
19192     pub p_next: *const c_void,
19193     pub display_primary_red: XYColorEXT,
19194     pub display_primary_green: XYColorEXT,
19195     pub display_primary_blue: XYColorEXT,
19196     pub white_point: XYColorEXT,
19197     pub max_luminance: f32,
19198     pub min_luminance: f32,
19199     pub max_content_light_level: f32,
19200     pub max_frame_average_light_level: f32,
19201 }
19202 impl ::std::default::Default for HdrMetadataEXT {
default() -> Self19203     fn default() -> Self {
19204         Self {
19205             s_type: StructureType::HDR_METADATA_EXT,
19206             p_next: ::std::ptr::null(),
19207             display_primary_red: XYColorEXT::default(),
19208             display_primary_green: XYColorEXT::default(),
19209             display_primary_blue: XYColorEXT::default(),
19210             white_point: XYColorEXT::default(),
19211             max_luminance: f32::default(),
19212             min_luminance: f32::default(),
19213             max_content_light_level: f32::default(),
19214             max_frame_average_light_level: f32::default(),
19215         }
19216     }
19217 }
19218 impl HdrMetadataEXT {
builder<'a>() -> HdrMetadataEXTBuilder<'a>19219     pub fn builder<'a>() -> HdrMetadataEXTBuilder<'a> {
19220         HdrMetadataEXTBuilder {
19221             inner: Self::default(),
19222             marker: ::std::marker::PhantomData,
19223         }
19224     }
19225 }
19226 #[repr(transparent)]
19227 pub struct HdrMetadataEXTBuilder<'a> {
19228     inner: HdrMetadataEXT,
19229     marker: ::std::marker::PhantomData<&'a ()>,
19230 }
19231 impl<'a> ::std::ops::Deref for HdrMetadataEXTBuilder<'a> {
19232     type Target = HdrMetadataEXT;
deref(&self) -> &Self::Target19233     fn deref(&self) -> &Self::Target {
19234         &self.inner
19235     }
19236 }
19237 impl<'a> ::std::ops::DerefMut for HdrMetadataEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19238     fn deref_mut(&mut self) -> &mut Self::Target {
19239         &mut self.inner
19240     }
19241 }
19242 impl<'a> HdrMetadataEXTBuilder<'a> {
display_primary_red(mut self, display_primary_red: XYColorEXT) -> Self19243     pub fn display_primary_red(mut self, display_primary_red: XYColorEXT) -> Self {
19244         self.inner.display_primary_red = display_primary_red;
19245         self
19246     }
display_primary_green(mut self, display_primary_green: XYColorEXT) -> Self19247     pub fn display_primary_green(mut self, display_primary_green: XYColorEXT) -> Self {
19248         self.inner.display_primary_green = display_primary_green;
19249         self
19250     }
display_primary_blue(mut self, display_primary_blue: XYColorEXT) -> Self19251     pub fn display_primary_blue(mut self, display_primary_blue: XYColorEXT) -> Self {
19252         self.inner.display_primary_blue = display_primary_blue;
19253         self
19254     }
white_point(mut self, white_point: XYColorEXT) -> Self19255     pub fn white_point(mut self, white_point: XYColorEXT) -> Self {
19256         self.inner.white_point = white_point;
19257         self
19258     }
max_luminance(mut self, max_luminance: f32) -> Self19259     pub fn max_luminance(mut self, max_luminance: f32) -> Self {
19260         self.inner.max_luminance = max_luminance;
19261         self
19262     }
min_luminance(mut self, min_luminance: f32) -> Self19263     pub fn min_luminance(mut self, min_luminance: f32) -> Self {
19264         self.inner.min_luminance = min_luminance;
19265         self
19266     }
max_content_light_level(mut self, max_content_light_level: f32) -> Self19267     pub fn max_content_light_level(mut self, max_content_light_level: f32) -> Self {
19268         self.inner.max_content_light_level = max_content_light_level;
19269         self
19270     }
max_frame_average_light_level(mut self, max_frame_average_light_level: f32) -> Self19271     pub fn max_frame_average_light_level(mut self, max_frame_average_light_level: f32) -> Self {
19272         self.inner.max_frame_average_light_level = max_frame_average_light_level;
19273         self
19274     }
19275     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19276     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19277     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> HdrMetadataEXT19278     pub fn build(self) -> HdrMetadataEXT {
19279         self.inner
19280     }
19281 }
19282 #[repr(C)]
19283 #[cfg_attr(feature = "debug", derive(Debug))]
19284 #[derive(Copy, Clone)]
19285 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>"]
19286 pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
19287     pub s_type: StructureType,
19288     pub p_next: *mut c_void,
19289     pub local_dimming_support: Bool32,
19290 }
19291 impl ::std::default::Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
default() -> Self19292     fn default() -> Self {
19293         Self {
19294             s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
19295             p_next: ::std::ptr::null_mut(),
19296             local_dimming_support: Bool32::default(),
19297         }
19298     }
19299 }
19300 impl DisplayNativeHdrSurfaceCapabilitiesAMD {
builder<'a>() -> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a>19301     pub fn builder<'a>() -> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
19302         DisplayNativeHdrSurfaceCapabilitiesAMDBuilder {
19303             inner: Self::default(),
19304             marker: ::std::marker::PhantomData,
19305         }
19306     }
19307 }
19308 #[repr(transparent)]
19309 pub struct DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
19310     inner: DisplayNativeHdrSurfaceCapabilitiesAMD,
19311     marker: ::std::marker::PhantomData<&'a ()>,
19312 }
19313 unsafe impl ExtendsSurfaceCapabilities2KHR for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'_> {}
19314 unsafe impl ExtendsSurfaceCapabilities2KHR for DisplayNativeHdrSurfaceCapabilitiesAMD {}
19315 impl<'a> ::std::ops::Deref for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
19316     type Target = DisplayNativeHdrSurfaceCapabilitiesAMD;
deref(&self) -> &Self::Target19317     fn deref(&self) -> &Self::Target {
19318         &self.inner
19319     }
19320 }
19321 impl<'a> ::std::ops::DerefMut for DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19322     fn deref_mut(&mut self) -> &mut Self::Target {
19323         &mut self.inner
19324     }
19325 }
19326 impl<'a> DisplayNativeHdrSurfaceCapabilitiesAMDBuilder<'a> {
local_dimming_support(mut self, local_dimming_support: bool) -> Self19327     pub fn local_dimming_support(mut self, local_dimming_support: bool) -> Self {
19328         self.inner.local_dimming_support = local_dimming_support.into();
19329         self
19330     }
19331     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19332     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19333     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayNativeHdrSurfaceCapabilitiesAMD19334     pub fn build(self) -> DisplayNativeHdrSurfaceCapabilitiesAMD {
19335         self.inner
19336     }
19337 }
19338 #[repr(C)]
19339 #[cfg_attr(feature = "debug", derive(Debug))]
19340 #[derive(Copy, Clone)]
19341 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>"]
19342 pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
19343     pub s_type: StructureType,
19344     pub p_next: *const c_void,
19345     pub local_dimming_enable: Bool32,
19346 }
19347 impl ::std::default::Default for SwapchainDisplayNativeHdrCreateInfoAMD {
default() -> Self19348     fn default() -> Self {
19349         Self {
19350             s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
19351             p_next: ::std::ptr::null(),
19352             local_dimming_enable: Bool32::default(),
19353         }
19354     }
19355 }
19356 impl SwapchainDisplayNativeHdrCreateInfoAMD {
builder<'a>() -> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a>19357     pub fn builder<'a>() -> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
19358         SwapchainDisplayNativeHdrCreateInfoAMDBuilder {
19359             inner: Self::default(),
19360             marker: ::std::marker::PhantomData,
19361         }
19362     }
19363 }
19364 #[repr(transparent)]
19365 pub struct SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
19366     inner: SwapchainDisplayNativeHdrCreateInfoAMD,
19367     marker: ::std::marker::PhantomData<&'a ()>,
19368 }
19369 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'_> {}
19370 unsafe impl ExtendsSwapchainCreateInfoKHR for SwapchainDisplayNativeHdrCreateInfoAMD {}
19371 impl<'a> ::std::ops::Deref for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
19372     type Target = SwapchainDisplayNativeHdrCreateInfoAMD;
deref(&self) -> &Self::Target19373     fn deref(&self) -> &Self::Target {
19374         &self.inner
19375     }
19376 }
19377 impl<'a> ::std::ops::DerefMut for SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19378     fn deref_mut(&mut self) -> &mut Self::Target {
19379         &mut self.inner
19380     }
19381 }
19382 impl<'a> SwapchainDisplayNativeHdrCreateInfoAMDBuilder<'a> {
local_dimming_enable(mut self, local_dimming_enable: bool) -> Self19383     pub fn local_dimming_enable(mut self, local_dimming_enable: bool) -> Self {
19384         self.inner.local_dimming_enable = local_dimming_enable.into();
19385         self
19386     }
19387     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19388     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19389     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainDisplayNativeHdrCreateInfoAMD19390     pub fn build(self) -> SwapchainDisplayNativeHdrCreateInfoAMD {
19391         self.inner
19392     }
19393 }
19394 #[repr(C)]
19395 #[cfg_attr(feature = "debug", derive(Debug))]
19396 #[derive(Copy, Clone, Default)]
19397 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRefreshCycleDurationGOOGLE.html>"]
19398 pub struct RefreshCycleDurationGOOGLE {
19399     pub refresh_duration: u64,
19400 }
19401 impl RefreshCycleDurationGOOGLE {
builder<'a>() -> RefreshCycleDurationGOOGLEBuilder<'a>19402     pub fn builder<'a>() -> RefreshCycleDurationGOOGLEBuilder<'a> {
19403         RefreshCycleDurationGOOGLEBuilder {
19404             inner: Self::default(),
19405             marker: ::std::marker::PhantomData,
19406         }
19407     }
19408 }
19409 #[repr(transparent)]
19410 pub struct RefreshCycleDurationGOOGLEBuilder<'a> {
19411     inner: RefreshCycleDurationGOOGLE,
19412     marker: ::std::marker::PhantomData<&'a ()>,
19413 }
19414 impl<'a> ::std::ops::Deref for RefreshCycleDurationGOOGLEBuilder<'a> {
19415     type Target = RefreshCycleDurationGOOGLE;
deref(&self) -> &Self::Target19416     fn deref(&self) -> &Self::Target {
19417         &self.inner
19418     }
19419 }
19420 impl<'a> ::std::ops::DerefMut for RefreshCycleDurationGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19421     fn deref_mut(&mut self) -> &mut Self::Target {
19422         &mut self.inner
19423     }
19424 }
19425 impl<'a> RefreshCycleDurationGOOGLEBuilder<'a> {
refresh_duration(mut self, refresh_duration: u64) -> Self19426     pub fn refresh_duration(mut self, refresh_duration: u64) -> Self {
19427         self.inner.refresh_duration = refresh_duration;
19428         self
19429     }
19430     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19431     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19432     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RefreshCycleDurationGOOGLE19433     pub fn build(self) -> RefreshCycleDurationGOOGLE {
19434         self.inner
19435     }
19436 }
19437 #[repr(C)]
19438 #[cfg_attr(feature = "debug", derive(Debug))]
19439 #[derive(Copy, Clone, Default)]
19440 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPastPresentationTimingGOOGLE.html>"]
19441 pub struct PastPresentationTimingGOOGLE {
19442     pub present_id: u32,
19443     pub desired_present_time: u64,
19444     pub actual_present_time: u64,
19445     pub earliest_present_time: u64,
19446     pub present_margin: u64,
19447 }
19448 impl PastPresentationTimingGOOGLE {
builder<'a>() -> PastPresentationTimingGOOGLEBuilder<'a>19449     pub fn builder<'a>() -> PastPresentationTimingGOOGLEBuilder<'a> {
19450         PastPresentationTimingGOOGLEBuilder {
19451             inner: Self::default(),
19452             marker: ::std::marker::PhantomData,
19453         }
19454     }
19455 }
19456 #[repr(transparent)]
19457 pub struct PastPresentationTimingGOOGLEBuilder<'a> {
19458     inner: PastPresentationTimingGOOGLE,
19459     marker: ::std::marker::PhantomData<&'a ()>,
19460 }
19461 impl<'a> ::std::ops::Deref for PastPresentationTimingGOOGLEBuilder<'a> {
19462     type Target = PastPresentationTimingGOOGLE;
deref(&self) -> &Self::Target19463     fn deref(&self) -> &Self::Target {
19464         &self.inner
19465     }
19466 }
19467 impl<'a> ::std::ops::DerefMut for PastPresentationTimingGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19468     fn deref_mut(&mut self) -> &mut Self::Target {
19469         &mut self.inner
19470     }
19471 }
19472 impl<'a> PastPresentationTimingGOOGLEBuilder<'a> {
present_id(mut self, present_id: u32) -> Self19473     pub fn present_id(mut self, present_id: u32) -> Self {
19474         self.inner.present_id = present_id;
19475         self
19476     }
desired_present_time(mut self, desired_present_time: u64) -> Self19477     pub fn desired_present_time(mut self, desired_present_time: u64) -> Self {
19478         self.inner.desired_present_time = desired_present_time;
19479         self
19480     }
actual_present_time(mut self, actual_present_time: u64) -> Self19481     pub fn actual_present_time(mut self, actual_present_time: u64) -> Self {
19482         self.inner.actual_present_time = actual_present_time;
19483         self
19484     }
earliest_present_time(mut self, earliest_present_time: u64) -> Self19485     pub fn earliest_present_time(mut self, earliest_present_time: u64) -> Self {
19486         self.inner.earliest_present_time = earliest_present_time;
19487         self
19488     }
present_margin(mut self, present_margin: u64) -> Self19489     pub fn present_margin(mut self, present_margin: u64) -> Self {
19490         self.inner.present_margin = present_margin;
19491         self
19492     }
19493     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19494     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19495     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PastPresentationTimingGOOGLE19496     pub fn build(self) -> PastPresentationTimingGOOGLE {
19497         self.inner
19498     }
19499 }
19500 #[repr(C)]
19501 #[cfg_attr(feature = "debug", derive(Debug))]
19502 #[derive(Copy, Clone)]
19503 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentTimesInfoGOOGLE.html>"]
19504 pub struct PresentTimesInfoGOOGLE {
19505     pub s_type: StructureType,
19506     pub p_next: *const c_void,
19507     pub swapchain_count: u32,
19508     pub p_times: *const PresentTimeGOOGLE,
19509 }
19510 impl ::std::default::Default for PresentTimesInfoGOOGLE {
default() -> Self19511     fn default() -> Self {
19512         Self {
19513             s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
19514             p_next: ::std::ptr::null(),
19515             swapchain_count: u32::default(),
19516             p_times: ::std::ptr::null(),
19517         }
19518     }
19519 }
19520 impl PresentTimesInfoGOOGLE {
builder<'a>() -> PresentTimesInfoGOOGLEBuilder<'a>19521     pub fn builder<'a>() -> PresentTimesInfoGOOGLEBuilder<'a> {
19522         PresentTimesInfoGOOGLEBuilder {
19523             inner: Self::default(),
19524             marker: ::std::marker::PhantomData,
19525         }
19526     }
19527 }
19528 #[repr(transparent)]
19529 pub struct PresentTimesInfoGOOGLEBuilder<'a> {
19530     inner: PresentTimesInfoGOOGLE,
19531     marker: ::std::marker::PhantomData<&'a ()>,
19532 }
19533 unsafe impl ExtendsPresentInfoKHR for PresentTimesInfoGOOGLEBuilder<'_> {}
19534 unsafe impl ExtendsPresentInfoKHR for PresentTimesInfoGOOGLE {}
19535 impl<'a> ::std::ops::Deref for PresentTimesInfoGOOGLEBuilder<'a> {
19536     type Target = PresentTimesInfoGOOGLE;
deref(&self) -> &Self::Target19537     fn deref(&self) -> &Self::Target {
19538         &self.inner
19539     }
19540 }
19541 impl<'a> ::std::ops::DerefMut for PresentTimesInfoGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19542     fn deref_mut(&mut self) -> &mut Self::Target {
19543         &mut self.inner
19544     }
19545 }
19546 impl<'a> PresentTimesInfoGOOGLEBuilder<'a> {
times(mut self, times: &'a [PresentTimeGOOGLE]) -> Self19547     pub fn times(mut self, times: &'a [PresentTimeGOOGLE]) -> Self {
19548         self.inner.swapchain_count = times.len() as _;
19549         self.inner.p_times = times.as_ptr();
19550         self
19551     }
19552     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19553     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19554     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentTimesInfoGOOGLE19555     pub fn build(self) -> PresentTimesInfoGOOGLE {
19556         self.inner
19557     }
19558 }
19559 #[repr(C)]
19560 #[cfg_attr(feature = "debug", derive(Debug))]
19561 #[derive(Copy, Clone, Default)]
19562 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentTimeGOOGLE.html>"]
19563 pub struct PresentTimeGOOGLE {
19564     pub present_id: u32,
19565     pub desired_present_time: u64,
19566 }
19567 impl PresentTimeGOOGLE {
builder<'a>() -> PresentTimeGOOGLEBuilder<'a>19568     pub fn builder<'a>() -> PresentTimeGOOGLEBuilder<'a> {
19569         PresentTimeGOOGLEBuilder {
19570             inner: Self::default(),
19571             marker: ::std::marker::PhantomData,
19572         }
19573     }
19574 }
19575 #[repr(transparent)]
19576 pub struct PresentTimeGOOGLEBuilder<'a> {
19577     inner: PresentTimeGOOGLE,
19578     marker: ::std::marker::PhantomData<&'a ()>,
19579 }
19580 impl<'a> ::std::ops::Deref for PresentTimeGOOGLEBuilder<'a> {
19581     type Target = PresentTimeGOOGLE;
deref(&self) -> &Self::Target19582     fn deref(&self) -> &Self::Target {
19583         &self.inner
19584     }
19585 }
19586 impl<'a> ::std::ops::DerefMut for PresentTimeGOOGLEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19587     fn deref_mut(&mut self) -> &mut Self::Target {
19588         &mut self.inner
19589     }
19590 }
19591 impl<'a> PresentTimeGOOGLEBuilder<'a> {
present_id(mut self, present_id: u32) -> Self19592     pub fn present_id(mut self, present_id: u32) -> Self {
19593         self.inner.present_id = present_id;
19594         self
19595     }
desired_present_time(mut self, desired_present_time: u64) -> Self19596     pub fn desired_present_time(mut self, desired_present_time: u64) -> Self {
19597         self.inner.desired_present_time = desired_present_time;
19598         self
19599     }
19600     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19601     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19602     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentTimeGOOGLE19603     pub fn build(self) -> PresentTimeGOOGLE {
19604         self.inner
19605     }
19606 }
19607 #[repr(C)]
19608 #[cfg_attr(feature = "debug", derive(Debug))]
19609 #[derive(Copy, Clone)]
19610 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIOSSurfaceCreateInfoMVK.html>"]
19611 pub struct IOSSurfaceCreateInfoMVK {
19612     pub s_type: StructureType,
19613     pub p_next: *const c_void,
19614     pub flags: IOSSurfaceCreateFlagsMVK,
19615     pub p_view: *const c_void,
19616 }
19617 impl ::std::default::Default for IOSSurfaceCreateInfoMVK {
default() -> Self19618     fn default() -> Self {
19619         Self {
19620             s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
19621             p_next: ::std::ptr::null(),
19622             flags: IOSSurfaceCreateFlagsMVK::default(),
19623             p_view: ::std::ptr::null(),
19624         }
19625     }
19626 }
19627 impl IOSSurfaceCreateInfoMVK {
builder<'a>() -> IOSSurfaceCreateInfoMVKBuilder<'a>19628     pub fn builder<'a>() -> IOSSurfaceCreateInfoMVKBuilder<'a> {
19629         IOSSurfaceCreateInfoMVKBuilder {
19630             inner: Self::default(),
19631             marker: ::std::marker::PhantomData,
19632         }
19633     }
19634 }
19635 #[repr(transparent)]
19636 pub struct IOSSurfaceCreateInfoMVKBuilder<'a> {
19637     inner: IOSSurfaceCreateInfoMVK,
19638     marker: ::std::marker::PhantomData<&'a ()>,
19639 }
19640 impl<'a> ::std::ops::Deref for IOSSurfaceCreateInfoMVKBuilder<'a> {
19641     type Target = IOSSurfaceCreateInfoMVK;
deref(&self) -> &Self::Target19642     fn deref(&self) -> &Self::Target {
19643         &self.inner
19644     }
19645 }
19646 impl<'a> ::std::ops::DerefMut for IOSSurfaceCreateInfoMVKBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19647     fn deref_mut(&mut self) -> &mut Self::Target {
19648         &mut self.inner
19649     }
19650 }
19651 impl<'a> IOSSurfaceCreateInfoMVKBuilder<'a> {
flags(mut self, flags: IOSSurfaceCreateFlagsMVK) -> Self19652     pub fn flags(mut self, flags: IOSSurfaceCreateFlagsMVK) -> Self {
19653         self.inner.flags = flags;
19654         self
19655     }
view(mut self, view: *const c_void) -> Self19656     pub fn view(mut self, view: *const c_void) -> Self {
19657         self.inner.p_view = view;
19658         self
19659     }
19660     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19661     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19662     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> IOSSurfaceCreateInfoMVK19663     pub fn build(self) -> IOSSurfaceCreateInfoMVK {
19664         self.inner
19665     }
19666 }
19667 #[repr(C)]
19668 #[cfg_attr(feature = "debug", derive(Debug))]
19669 #[derive(Copy, Clone)]
19670 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMacOSSurfaceCreateInfoMVK.html>"]
19671 pub struct MacOSSurfaceCreateInfoMVK {
19672     pub s_type: StructureType,
19673     pub p_next: *const c_void,
19674     pub flags: MacOSSurfaceCreateFlagsMVK,
19675     pub p_view: *const c_void,
19676 }
19677 impl ::std::default::Default for MacOSSurfaceCreateInfoMVK {
default() -> Self19678     fn default() -> Self {
19679         Self {
19680             s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
19681             p_next: ::std::ptr::null(),
19682             flags: MacOSSurfaceCreateFlagsMVK::default(),
19683             p_view: ::std::ptr::null(),
19684         }
19685     }
19686 }
19687 impl MacOSSurfaceCreateInfoMVK {
builder<'a>() -> MacOSSurfaceCreateInfoMVKBuilder<'a>19688     pub fn builder<'a>() -> MacOSSurfaceCreateInfoMVKBuilder<'a> {
19689         MacOSSurfaceCreateInfoMVKBuilder {
19690             inner: Self::default(),
19691             marker: ::std::marker::PhantomData,
19692         }
19693     }
19694 }
19695 #[repr(transparent)]
19696 pub struct MacOSSurfaceCreateInfoMVKBuilder<'a> {
19697     inner: MacOSSurfaceCreateInfoMVK,
19698     marker: ::std::marker::PhantomData<&'a ()>,
19699 }
19700 impl<'a> ::std::ops::Deref for MacOSSurfaceCreateInfoMVKBuilder<'a> {
19701     type Target = MacOSSurfaceCreateInfoMVK;
deref(&self) -> &Self::Target19702     fn deref(&self) -> &Self::Target {
19703         &self.inner
19704     }
19705 }
19706 impl<'a> ::std::ops::DerefMut for MacOSSurfaceCreateInfoMVKBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19707     fn deref_mut(&mut self) -> &mut Self::Target {
19708         &mut self.inner
19709     }
19710 }
19711 impl<'a> MacOSSurfaceCreateInfoMVKBuilder<'a> {
flags(mut self, flags: MacOSSurfaceCreateFlagsMVK) -> Self19712     pub fn flags(mut self, flags: MacOSSurfaceCreateFlagsMVK) -> Self {
19713         self.inner.flags = flags;
19714         self
19715     }
view(mut self, view: *const c_void) -> Self19716     pub fn view(mut self, view: *const c_void) -> Self {
19717         self.inner.p_view = view;
19718         self
19719     }
19720     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19721     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19722     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MacOSSurfaceCreateInfoMVK19723     pub fn build(self) -> MacOSSurfaceCreateInfoMVK {
19724         self.inner
19725     }
19726 }
19727 #[repr(C)]
19728 #[cfg_attr(feature = "debug", derive(Debug))]
19729 #[derive(Copy, Clone)]
19730 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMetalSurfaceCreateInfoEXT.html>"]
19731 pub struct MetalSurfaceCreateInfoEXT {
19732     pub s_type: StructureType,
19733     pub p_next: *const c_void,
19734     pub flags: MetalSurfaceCreateFlagsEXT,
19735     pub p_layer: *const CAMetalLayer,
19736 }
19737 impl ::std::default::Default for MetalSurfaceCreateInfoEXT {
default() -> Self19738     fn default() -> Self {
19739         Self {
19740             s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
19741             p_next: ::std::ptr::null(),
19742             flags: MetalSurfaceCreateFlagsEXT::default(),
19743             p_layer: ::std::ptr::null(),
19744         }
19745     }
19746 }
19747 impl MetalSurfaceCreateInfoEXT {
builder<'a>() -> MetalSurfaceCreateInfoEXTBuilder<'a>19748     pub fn builder<'a>() -> MetalSurfaceCreateInfoEXTBuilder<'a> {
19749         MetalSurfaceCreateInfoEXTBuilder {
19750             inner: Self::default(),
19751             marker: ::std::marker::PhantomData,
19752         }
19753     }
19754 }
19755 #[repr(transparent)]
19756 pub struct MetalSurfaceCreateInfoEXTBuilder<'a> {
19757     inner: MetalSurfaceCreateInfoEXT,
19758     marker: ::std::marker::PhantomData<&'a ()>,
19759 }
19760 impl<'a> ::std::ops::Deref for MetalSurfaceCreateInfoEXTBuilder<'a> {
19761     type Target = MetalSurfaceCreateInfoEXT;
deref(&self) -> &Self::Target19762     fn deref(&self) -> &Self::Target {
19763         &self.inner
19764     }
19765 }
19766 impl<'a> ::std::ops::DerefMut for MetalSurfaceCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19767     fn deref_mut(&mut self) -> &mut Self::Target {
19768         &mut self.inner
19769     }
19770 }
19771 impl<'a> MetalSurfaceCreateInfoEXTBuilder<'a> {
flags(mut self, flags: MetalSurfaceCreateFlagsEXT) -> Self19772     pub fn flags(mut self, flags: MetalSurfaceCreateFlagsEXT) -> Self {
19773         self.inner.flags = flags;
19774         self
19775     }
layer(mut self, layer: *const CAMetalLayer) -> Self19776     pub fn layer(mut self, layer: *const CAMetalLayer) -> Self {
19777         self.inner.p_layer = layer;
19778         self
19779     }
19780     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19781     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19782     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MetalSurfaceCreateInfoEXT19783     pub fn build(self) -> MetalSurfaceCreateInfoEXT {
19784         self.inner
19785     }
19786 }
19787 #[repr(C)]
19788 #[cfg_attr(feature = "debug", derive(Debug))]
19789 #[derive(Copy, Clone, Default)]
19790 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewportWScalingNV.html>"]
19791 pub struct ViewportWScalingNV {
19792     pub xcoeff: f32,
19793     pub ycoeff: f32,
19794 }
19795 impl ViewportWScalingNV {
builder<'a>() -> ViewportWScalingNVBuilder<'a>19796     pub fn builder<'a>() -> ViewportWScalingNVBuilder<'a> {
19797         ViewportWScalingNVBuilder {
19798             inner: Self::default(),
19799             marker: ::std::marker::PhantomData,
19800         }
19801     }
19802 }
19803 #[repr(transparent)]
19804 pub struct ViewportWScalingNVBuilder<'a> {
19805     inner: ViewportWScalingNV,
19806     marker: ::std::marker::PhantomData<&'a ()>,
19807 }
19808 impl<'a> ::std::ops::Deref for ViewportWScalingNVBuilder<'a> {
19809     type Target = ViewportWScalingNV;
deref(&self) -> &Self::Target19810     fn deref(&self) -> &Self::Target {
19811         &self.inner
19812     }
19813 }
19814 impl<'a> ::std::ops::DerefMut for ViewportWScalingNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19815     fn deref_mut(&mut self) -> &mut Self::Target {
19816         &mut self.inner
19817     }
19818 }
19819 impl<'a> ViewportWScalingNVBuilder<'a> {
xcoeff(mut self, xcoeff: f32) -> Self19820     pub fn xcoeff(mut self, xcoeff: f32) -> Self {
19821         self.inner.xcoeff = xcoeff;
19822         self
19823     }
ycoeff(mut self, ycoeff: f32) -> Self19824     pub fn ycoeff(mut self, ycoeff: f32) -> Self {
19825         self.inner.ycoeff = ycoeff;
19826         self
19827     }
19828     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19829     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19830     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ViewportWScalingNV19831     pub fn build(self) -> ViewportWScalingNV {
19832         self.inner
19833     }
19834 }
19835 #[repr(C)]
19836 #[cfg_attr(feature = "debug", derive(Debug))]
19837 #[derive(Copy, Clone)]
19838 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>"]
19839 pub struct PipelineViewportWScalingStateCreateInfoNV {
19840     pub s_type: StructureType,
19841     pub p_next: *const c_void,
19842     pub viewport_w_scaling_enable: Bool32,
19843     pub viewport_count: u32,
19844     pub p_viewport_w_scalings: *const ViewportWScalingNV,
19845 }
19846 impl ::std::default::Default for PipelineViewportWScalingStateCreateInfoNV {
default() -> Self19847     fn default() -> Self {
19848         Self {
19849             s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
19850             p_next: ::std::ptr::null(),
19851             viewport_w_scaling_enable: Bool32::default(),
19852             viewport_count: u32::default(),
19853             p_viewport_w_scalings: ::std::ptr::null(),
19854         }
19855     }
19856 }
19857 impl PipelineViewportWScalingStateCreateInfoNV {
builder<'a>() -> PipelineViewportWScalingStateCreateInfoNVBuilder<'a>19858     pub fn builder<'a>() -> PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
19859         PipelineViewportWScalingStateCreateInfoNVBuilder {
19860             inner: Self::default(),
19861             marker: ::std::marker::PhantomData,
19862         }
19863     }
19864 }
19865 #[repr(transparent)]
19866 pub struct PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
19867     inner: PipelineViewportWScalingStateCreateInfoNV,
19868     marker: ::std::marker::PhantomData<&'a ()>,
19869 }
19870 unsafe impl ExtendsPipelineViewportStateCreateInfo
19871     for PipelineViewportWScalingStateCreateInfoNVBuilder<'_>
19872 {
19873 }
19874 unsafe impl ExtendsPipelineViewportStateCreateInfo for PipelineViewportWScalingStateCreateInfoNV {}
19875 impl<'a> ::std::ops::Deref for PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
19876     type Target = PipelineViewportWScalingStateCreateInfoNV;
deref(&self) -> &Self::Target19877     fn deref(&self) -> &Self::Target {
19878         &self.inner
19879     }
19880 }
19881 impl<'a> ::std::ops::DerefMut for PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19882     fn deref_mut(&mut self) -> &mut Self::Target {
19883         &mut self.inner
19884     }
19885 }
19886 impl<'a> PipelineViewportWScalingStateCreateInfoNVBuilder<'a> {
viewport_w_scaling_enable(mut self, viewport_w_scaling_enable: bool) -> Self19887     pub fn viewport_w_scaling_enable(mut self, viewport_w_scaling_enable: bool) -> Self {
19888         self.inner.viewport_w_scaling_enable = viewport_w_scaling_enable.into();
19889         self
19890     }
viewport_w_scalings(mut self, viewport_w_scalings: &'a [ViewportWScalingNV]) -> Self19891     pub fn viewport_w_scalings(mut self, viewport_w_scalings: &'a [ViewportWScalingNV]) -> Self {
19892         self.inner.viewport_count = viewport_w_scalings.len() as _;
19893         self.inner.p_viewport_w_scalings = viewport_w_scalings.as_ptr();
19894         self
19895     }
19896     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19897     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19898     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportWScalingStateCreateInfoNV19899     pub fn build(self) -> PipelineViewportWScalingStateCreateInfoNV {
19900         self.inner
19901     }
19902 }
19903 #[repr(C)]
19904 #[cfg_attr(feature = "debug", derive(Debug))]
19905 #[derive(Copy, Clone, Default)]
19906 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewportSwizzleNV.html>"]
19907 pub struct ViewportSwizzleNV {
19908     pub x: ViewportCoordinateSwizzleNV,
19909     pub y: ViewportCoordinateSwizzleNV,
19910     pub z: ViewportCoordinateSwizzleNV,
19911     pub w: ViewportCoordinateSwizzleNV,
19912 }
19913 impl ViewportSwizzleNV {
builder<'a>() -> ViewportSwizzleNVBuilder<'a>19914     pub fn builder<'a>() -> ViewportSwizzleNVBuilder<'a> {
19915         ViewportSwizzleNVBuilder {
19916             inner: Self::default(),
19917             marker: ::std::marker::PhantomData,
19918         }
19919     }
19920 }
19921 #[repr(transparent)]
19922 pub struct ViewportSwizzleNVBuilder<'a> {
19923     inner: ViewportSwizzleNV,
19924     marker: ::std::marker::PhantomData<&'a ()>,
19925 }
19926 impl<'a> ::std::ops::Deref for ViewportSwizzleNVBuilder<'a> {
19927     type Target = ViewportSwizzleNV;
deref(&self) -> &Self::Target19928     fn deref(&self) -> &Self::Target {
19929         &self.inner
19930     }
19931 }
19932 impl<'a> ::std::ops::DerefMut for ViewportSwizzleNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target19933     fn deref_mut(&mut self) -> &mut Self::Target {
19934         &mut self.inner
19935     }
19936 }
19937 impl<'a> ViewportSwizzleNVBuilder<'a> {
x(mut self, x: ViewportCoordinateSwizzleNV) -> Self19938     pub fn x(mut self, x: ViewportCoordinateSwizzleNV) -> Self {
19939         self.inner.x = x;
19940         self
19941     }
y(mut self, y: ViewportCoordinateSwizzleNV) -> Self19942     pub fn y(mut self, y: ViewportCoordinateSwizzleNV) -> Self {
19943         self.inner.y = y;
19944         self
19945     }
z(mut self, z: ViewportCoordinateSwizzleNV) -> Self19946     pub fn z(mut self, z: ViewportCoordinateSwizzleNV) -> Self {
19947         self.inner.z = z;
19948         self
19949     }
w(mut self, w: ViewportCoordinateSwizzleNV) -> Self19950     pub fn w(mut self, w: ViewportCoordinateSwizzleNV) -> Self {
19951         self.inner.w = w;
19952         self
19953     }
19954     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
19955     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
19956     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ViewportSwizzleNV19957     pub fn build(self) -> ViewportSwizzleNV {
19958         self.inner
19959     }
19960 }
19961 #[repr(C)]
19962 #[cfg_attr(feature = "debug", derive(Debug))]
19963 #[derive(Copy, Clone)]
19964 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>"]
19965 pub struct PipelineViewportSwizzleStateCreateInfoNV {
19966     pub s_type: StructureType,
19967     pub p_next: *const c_void,
19968     pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
19969     pub viewport_count: u32,
19970     pub p_viewport_swizzles: *const ViewportSwizzleNV,
19971 }
19972 impl ::std::default::Default for PipelineViewportSwizzleStateCreateInfoNV {
default() -> Self19973     fn default() -> Self {
19974         Self {
19975             s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
19976             p_next: ::std::ptr::null(),
19977             flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
19978             viewport_count: u32::default(),
19979             p_viewport_swizzles: ::std::ptr::null(),
19980         }
19981     }
19982 }
19983 impl PipelineViewportSwizzleStateCreateInfoNV {
builder<'a>() -> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a>19984     pub fn builder<'a>() -> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
19985         PipelineViewportSwizzleStateCreateInfoNVBuilder {
19986             inner: Self::default(),
19987             marker: ::std::marker::PhantomData,
19988         }
19989     }
19990 }
19991 #[repr(transparent)]
19992 pub struct PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
19993     inner: PipelineViewportSwizzleStateCreateInfoNV,
19994     marker: ::std::marker::PhantomData<&'a ()>,
19995 }
19996 unsafe impl ExtendsPipelineViewportStateCreateInfo
19997     for PipelineViewportSwizzleStateCreateInfoNVBuilder<'_>
19998 {
19999 }
20000 unsafe impl ExtendsPipelineViewportStateCreateInfo for PipelineViewportSwizzleStateCreateInfoNV {}
20001 impl<'a> ::std::ops::Deref for PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
20002     type Target = PipelineViewportSwizzleStateCreateInfoNV;
deref(&self) -> &Self::Target20003     fn deref(&self) -> &Self::Target {
20004         &self.inner
20005     }
20006 }
20007 impl<'a> ::std::ops::DerefMut for PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20008     fn deref_mut(&mut self) -> &mut Self::Target {
20009         &mut self.inner
20010     }
20011 }
20012 impl<'a> PipelineViewportSwizzleStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineViewportSwizzleStateCreateFlagsNV) -> Self20013     pub fn flags(mut self, flags: PipelineViewportSwizzleStateCreateFlagsNV) -> Self {
20014         self.inner.flags = flags;
20015         self
20016     }
viewport_swizzles(mut self, viewport_swizzles: &'a [ViewportSwizzleNV]) -> Self20017     pub fn viewport_swizzles(mut self, viewport_swizzles: &'a [ViewportSwizzleNV]) -> Self {
20018         self.inner.viewport_count = viewport_swizzles.len() as _;
20019         self.inner.p_viewport_swizzles = viewport_swizzles.as_ptr();
20020         self
20021     }
20022     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20023     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20024     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportSwizzleStateCreateInfoNV20025     pub fn build(self) -> PipelineViewportSwizzleStateCreateInfoNV {
20026         self.inner
20027     }
20028 }
20029 #[repr(C)]
20030 #[cfg_attr(feature = "debug", derive(Debug))]
20031 #[derive(Copy, Clone)]
20032 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>"]
20033 pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
20034     pub s_type: StructureType,
20035     pub p_next: *mut c_void,
20036     pub max_discard_rectangles: u32,
20037 }
20038 impl ::std::default::Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
default() -> Self20039     fn default() -> Self {
20040         Self {
20041             s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
20042             p_next: ::std::ptr::null_mut(),
20043             max_discard_rectangles: u32::default(),
20044         }
20045     }
20046 }
20047 impl PhysicalDeviceDiscardRectanglePropertiesEXT {
builder<'a>() -> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a>20048     pub fn builder<'a>() -> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20049         PhysicalDeviceDiscardRectanglePropertiesEXTBuilder {
20050             inner: Self::default(),
20051             marker: ::std::marker::PhantomData,
20052         }
20053     }
20054 }
20055 #[repr(transparent)]
20056 pub struct PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20057     inner: PhysicalDeviceDiscardRectanglePropertiesEXT,
20058     marker: ::std::marker::PhantomData<&'a ()>,
20059 }
20060 unsafe impl ExtendsPhysicalDeviceProperties2
20061     for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'_>
20062 {
20063 }
20064 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDiscardRectanglePropertiesEXT {}
20065 impl<'a> ::std::ops::Deref for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
20066     type Target = PhysicalDeviceDiscardRectanglePropertiesEXT;
deref(&self) -> &Self::Target20067     fn deref(&self) -> &Self::Target {
20068         &self.inner
20069     }
20070 }
20071 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20072     fn deref_mut(&mut self) -> &mut Self::Target {
20073         &mut self.inner
20074     }
20075 }
20076 impl<'a> PhysicalDeviceDiscardRectanglePropertiesEXTBuilder<'a> {
max_discard_rectangles(mut self, max_discard_rectangles: u32) -> Self20077     pub fn max_discard_rectangles(mut self, max_discard_rectangles: u32) -> Self {
20078         self.inner.max_discard_rectangles = max_discard_rectangles;
20079         self
20080     }
20081     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20082     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20083     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDiscardRectanglePropertiesEXT20084     pub fn build(self) -> PhysicalDeviceDiscardRectanglePropertiesEXT {
20085         self.inner
20086     }
20087 }
20088 #[repr(C)]
20089 #[cfg_attr(feature = "debug", derive(Debug))]
20090 #[derive(Copy, Clone)]
20091 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>"]
20092 pub struct PipelineDiscardRectangleStateCreateInfoEXT {
20093     pub s_type: StructureType,
20094     pub p_next: *const c_void,
20095     pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
20096     pub discard_rectangle_mode: DiscardRectangleModeEXT,
20097     pub discard_rectangle_count: u32,
20098     pub p_discard_rectangles: *const Rect2D,
20099 }
20100 impl ::std::default::Default for PipelineDiscardRectangleStateCreateInfoEXT {
default() -> Self20101     fn default() -> Self {
20102         Self {
20103             s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
20104             p_next: ::std::ptr::null(),
20105             flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
20106             discard_rectangle_mode: DiscardRectangleModeEXT::default(),
20107             discard_rectangle_count: u32::default(),
20108             p_discard_rectangles: ::std::ptr::null(),
20109         }
20110     }
20111 }
20112 impl PipelineDiscardRectangleStateCreateInfoEXT {
builder<'a>() -> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a>20113     pub fn builder<'a>() -> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20114         PipelineDiscardRectangleStateCreateInfoEXTBuilder {
20115             inner: Self::default(),
20116             marker: ::std::marker::PhantomData,
20117         }
20118     }
20119 }
20120 #[repr(transparent)]
20121 pub struct PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20122     inner: PipelineDiscardRectangleStateCreateInfoEXT,
20123     marker: ::std::marker::PhantomData<&'a ()>,
20124 }
20125 unsafe impl ExtendsGraphicsPipelineCreateInfo
20126     for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'_>
20127 {
20128 }
20129 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineDiscardRectangleStateCreateInfoEXT {}
20130 impl<'a> ::std::ops::Deref for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
20131     type Target = PipelineDiscardRectangleStateCreateInfoEXT;
deref(&self) -> &Self::Target20132     fn deref(&self) -> &Self::Target {
20133         &self.inner
20134     }
20135 }
20136 impl<'a> ::std::ops::DerefMut for PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20137     fn deref_mut(&mut self) -> &mut Self::Target {
20138         &mut self.inner
20139     }
20140 }
20141 impl<'a> PipelineDiscardRectangleStateCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineDiscardRectangleStateCreateFlagsEXT) -> Self20142     pub fn flags(mut self, flags: PipelineDiscardRectangleStateCreateFlagsEXT) -> Self {
20143         self.inner.flags = flags;
20144         self
20145     }
discard_rectangle_mode( mut self, discard_rectangle_mode: DiscardRectangleModeEXT, ) -> Self20146     pub fn discard_rectangle_mode(
20147         mut self,
20148         discard_rectangle_mode: DiscardRectangleModeEXT,
20149     ) -> Self {
20150         self.inner.discard_rectangle_mode = discard_rectangle_mode;
20151         self
20152     }
discard_rectangles(mut self, discard_rectangles: &'a [Rect2D]) -> Self20153     pub fn discard_rectangles(mut self, discard_rectangles: &'a [Rect2D]) -> Self {
20154         self.inner.discard_rectangle_count = discard_rectangles.len() as _;
20155         self.inner.p_discard_rectangles = discard_rectangles.as_ptr();
20156         self
20157     }
20158     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20159     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20160     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineDiscardRectangleStateCreateInfoEXT20161     pub fn build(self) -> PipelineDiscardRectangleStateCreateInfoEXT {
20162         self.inner
20163     }
20164 }
20165 #[repr(C)]
20166 #[cfg_attr(feature = "debug", derive(Debug))]
20167 #[derive(Copy, Clone)]
20168 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>"]
20169 pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
20170     pub s_type: StructureType,
20171     pub p_next: *mut c_void,
20172     pub per_view_position_all_components: Bool32,
20173 }
20174 impl ::std::default::Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
default() -> Self20175     fn default() -> Self {
20176         Self {
20177             s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
20178             p_next: ::std::ptr::null_mut(),
20179             per_view_position_all_components: Bool32::default(),
20180         }
20181     }
20182 }
20183 impl PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
builder<'a>() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a>20184     pub fn builder<'a>() -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
20185         PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder {
20186             inner: Self::default(),
20187             marker: ::std::marker::PhantomData,
20188         }
20189     }
20190 }
20191 #[repr(transparent)]
20192 pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
20193     inner: PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
20194     marker: ::std::marker::PhantomData<&'a ()>,
20195 }
20196 unsafe impl ExtendsPhysicalDeviceProperties2
20197     for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'_>
20198 {
20199 }
20200 unsafe impl ExtendsPhysicalDeviceProperties2
20201     for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
20202 {
20203 }
20204 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
20205     type Target = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
deref(&self) -> &Self::Target20206     fn deref(&self) -> &Self::Target {
20207         &self.inner
20208     }
20209 }
20210 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20211     fn deref_mut(&mut self) -> &mut Self::Target {
20212         &mut self.inner
20213     }
20214 }
20215 impl<'a> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXBuilder<'a> {
per_view_position_all_components( mut self, per_view_position_all_components: bool, ) -> Self20216     pub fn per_view_position_all_components(
20217         mut self,
20218         per_view_position_all_components: bool,
20219     ) -> Self {
20220         self.inner.per_view_position_all_components = per_view_position_all_components.into();
20221         self
20222     }
20223     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20224     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20225     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX20226     pub fn build(self) -> PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
20227         self.inner
20228     }
20229 }
20230 #[repr(C)]
20231 #[cfg_attr(feature = "debug", derive(Debug))]
20232 #[derive(Copy, Clone, Default)]
20233 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInputAttachmentAspectReference.html>"]
20234 pub struct InputAttachmentAspectReference {
20235     pub subpass: u32,
20236     pub input_attachment_index: u32,
20237     pub aspect_mask: ImageAspectFlags,
20238 }
20239 impl InputAttachmentAspectReference {
builder<'a>() -> InputAttachmentAspectReferenceBuilder<'a>20240     pub fn builder<'a>() -> InputAttachmentAspectReferenceBuilder<'a> {
20241         InputAttachmentAspectReferenceBuilder {
20242             inner: Self::default(),
20243             marker: ::std::marker::PhantomData,
20244         }
20245     }
20246 }
20247 #[repr(transparent)]
20248 pub struct InputAttachmentAspectReferenceBuilder<'a> {
20249     inner: InputAttachmentAspectReference,
20250     marker: ::std::marker::PhantomData<&'a ()>,
20251 }
20252 impl<'a> ::std::ops::Deref for InputAttachmentAspectReferenceBuilder<'a> {
20253     type Target = InputAttachmentAspectReference;
deref(&self) -> &Self::Target20254     fn deref(&self) -> &Self::Target {
20255         &self.inner
20256     }
20257 }
20258 impl<'a> ::std::ops::DerefMut for InputAttachmentAspectReferenceBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20259     fn deref_mut(&mut self) -> &mut Self::Target {
20260         &mut self.inner
20261     }
20262 }
20263 impl<'a> InputAttachmentAspectReferenceBuilder<'a> {
subpass(mut self, subpass: u32) -> Self20264     pub fn subpass(mut self, subpass: u32) -> Self {
20265         self.inner.subpass = subpass;
20266         self
20267     }
input_attachment_index(mut self, input_attachment_index: u32) -> Self20268     pub fn input_attachment_index(mut self, input_attachment_index: u32) -> Self {
20269         self.inner.input_attachment_index = input_attachment_index;
20270         self
20271     }
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self20272     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
20273         self.inner.aspect_mask = aspect_mask;
20274         self
20275     }
20276     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20277     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20278     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> InputAttachmentAspectReference20279     pub fn build(self) -> InputAttachmentAspectReference {
20280         self.inner
20281     }
20282 }
20283 #[repr(C)]
20284 #[cfg_attr(feature = "debug", derive(Debug))]
20285 #[derive(Copy, Clone)]
20286 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>"]
20287 pub struct RenderPassInputAttachmentAspectCreateInfo {
20288     pub s_type: StructureType,
20289     pub p_next: *const c_void,
20290     pub aspect_reference_count: u32,
20291     pub p_aspect_references: *const InputAttachmentAspectReference,
20292 }
20293 impl ::std::default::Default for RenderPassInputAttachmentAspectCreateInfo {
default() -> Self20294     fn default() -> Self {
20295         Self {
20296             s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
20297             p_next: ::std::ptr::null(),
20298             aspect_reference_count: u32::default(),
20299             p_aspect_references: ::std::ptr::null(),
20300         }
20301     }
20302 }
20303 impl RenderPassInputAttachmentAspectCreateInfo {
builder<'a>() -> RenderPassInputAttachmentAspectCreateInfoBuilder<'a>20304     pub fn builder<'a>() -> RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20305         RenderPassInputAttachmentAspectCreateInfoBuilder {
20306             inner: Self::default(),
20307             marker: ::std::marker::PhantomData,
20308         }
20309     }
20310 }
20311 #[repr(transparent)]
20312 pub struct RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20313     inner: RenderPassInputAttachmentAspectCreateInfo,
20314     marker: ::std::marker::PhantomData<&'a ()>,
20315 }
20316 unsafe impl ExtendsRenderPassCreateInfo for RenderPassInputAttachmentAspectCreateInfoBuilder<'_> {}
20317 unsafe impl ExtendsRenderPassCreateInfo for RenderPassInputAttachmentAspectCreateInfo {}
20318 impl<'a> ::std::ops::Deref for RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
20319     type Target = RenderPassInputAttachmentAspectCreateInfo;
deref(&self) -> &Self::Target20320     fn deref(&self) -> &Self::Target {
20321         &self.inner
20322     }
20323 }
20324 impl<'a> ::std::ops::DerefMut for RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20325     fn deref_mut(&mut self) -> &mut Self::Target {
20326         &mut self.inner
20327     }
20328 }
20329 impl<'a> RenderPassInputAttachmentAspectCreateInfoBuilder<'a> {
aspect_references( mut self, aspect_references: &'a [InputAttachmentAspectReference], ) -> Self20330     pub fn aspect_references(
20331         mut self,
20332         aspect_references: &'a [InputAttachmentAspectReference],
20333     ) -> Self {
20334         self.inner.aspect_reference_count = aspect_references.len() as _;
20335         self.inner.p_aspect_references = aspect_references.as_ptr();
20336         self
20337     }
20338     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20339     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20340     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassInputAttachmentAspectCreateInfo20341     pub fn build(self) -> RenderPassInputAttachmentAspectCreateInfo {
20342         self.inner
20343     }
20344 }
20345 #[repr(C)]
20346 #[cfg_attr(feature = "debug", derive(Debug))]
20347 #[derive(Copy, Clone)]
20348 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>"]
20349 pub struct PhysicalDeviceSurfaceInfo2KHR {
20350     pub s_type: StructureType,
20351     pub p_next: *const c_void,
20352     pub surface: SurfaceKHR,
20353 }
20354 impl ::std::default::Default for PhysicalDeviceSurfaceInfo2KHR {
default() -> Self20355     fn default() -> Self {
20356         Self {
20357             s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
20358             p_next: ::std::ptr::null(),
20359             surface: SurfaceKHR::default(),
20360         }
20361     }
20362 }
20363 impl PhysicalDeviceSurfaceInfo2KHR {
builder<'a>() -> PhysicalDeviceSurfaceInfo2KHRBuilder<'a>20364     pub fn builder<'a>() -> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20365         PhysicalDeviceSurfaceInfo2KHRBuilder {
20366             inner: Self::default(),
20367             marker: ::std::marker::PhantomData,
20368         }
20369     }
20370 }
20371 #[repr(transparent)]
20372 pub struct PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20373     inner: PhysicalDeviceSurfaceInfo2KHR,
20374     marker: ::std::marker::PhantomData<&'a ()>,
20375 }
20376 pub unsafe trait ExtendsPhysicalDeviceSurfaceInfo2KHR {}
20377 impl<'a> ::std::ops::Deref for PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
20378     type Target = PhysicalDeviceSurfaceInfo2KHR;
deref(&self) -> &Self::Target20379     fn deref(&self) -> &Self::Target {
20380         &self.inner
20381     }
20382 }
20383 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20384     fn deref_mut(&mut self) -> &mut Self::Target {
20385         &mut self.inner
20386     }
20387 }
20388 impl<'a> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> {
surface(mut self, surface: SurfaceKHR) -> Self20389     pub fn surface(mut self, surface: SurfaceKHR) -> Self {
20390         self.inner.surface = surface;
20391         self
20392     }
20393     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
20394     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
20395     #[doc = r" valid extension structs can be pushed into the chain."]
20396     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
20397     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsPhysicalDeviceSurfaceInfo2KHR>(mut self, next: &'a mut T) -> Self20398     pub fn push_next<T: ExtendsPhysicalDeviceSurfaceInfo2KHR>(mut self, next: &'a mut T) -> Self {
20399         unsafe {
20400             let next_ptr = next as *mut T as *mut BaseOutStructure;
20401             let last_next = ptr_chain_iter(next).last().unwrap();
20402             (*last_next).p_next = self.inner.p_next as _;
20403             self.inner.p_next = next_ptr as _;
20404         }
20405         self
20406     }
20407     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20408     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20409     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSurfaceInfo2KHR20410     pub fn build(self) -> PhysicalDeviceSurfaceInfo2KHR {
20411         self.inner
20412     }
20413 }
20414 #[repr(C)]
20415 #[cfg_attr(feature = "debug", derive(Debug))]
20416 #[derive(Copy, Clone)]
20417 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilities2KHR.html>"]
20418 pub struct SurfaceCapabilities2KHR {
20419     pub s_type: StructureType,
20420     pub p_next: *mut c_void,
20421     pub surface_capabilities: SurfaceCapabilitiesKHR,
20422 }
20423 impl ::std::default::Default for SurfaceCapabilities2KHR {
default() -> Self20424     fn default() -> Self {
20425         Self {
20426             s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
20427             p_next: ::std::ptr::null_mut(),
20428             surface_capabilities: SurfaceCapabilitiesKHR::default(),
20429         }
20430     }
20431 }
20432 impl SurfaceCapabilities2KHR {
builder<'a>() -> SurfaceCapabilities2KHRBuilder<'a>20433     pub fn builder<'a>() -> SurfaceCapabilities2KHRBuilder<'a> {
20434         SurfaceCapabilities2KHRBuilder {
20435             inner: Self::default(),
20436             marker: ::std::marker::PhantomData,
20437         }
20438     }
20439 }
20440 #[repr(transparent)]
20441 pub struct SurfaceCapabilities2KHRBuilder<'a> {
20442     inner: SurfaceCapabilities2KHR,
20443     marker: ::std::marker::PhantomData<&'a ()>,
20444 }
20445 pub unsafe trait ExtendsSurfaceCapabilities2KHR {}
20446 impl<'a> ::std::ops::Deref for SurfaceCapabilities2KHRBuilder<'a> {
20447     type Target = SurfaceCapabilities2KHR;
deref(&self) -> &Self::Target20448     fn deref(&self) -> &Self::Target {
20449         &self.inner
20450     }
20451 }
20452 impl<'a> ::std::ops::DerefMut for SurfaceCapabilities2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20453     fn deref_mut(&mut self) -> &mut Self::Target {
20454         &mut self.inner
20455     }
20456 }
20457 impl<'a> SurfaceCapabilities2KHRBuilder<'a> {
surface_capabilities(mut self, surface_capabilities: SurfaceCapabilitiesKHR) -> Self20458     pub fn surface_capabilities(mut self, surface_capabilities: SurfaceCapabilitiesKHR) -> Self {
20459         self.inner.surface_capabilities = surface_capabilities;
20460         self
20461     }
20462     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
20463     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
20464     #[doc = r" valid extension structs can be pushed into the chain."]
20465     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
20466     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSurfaceCapabilities2KHR>(mut self, next: &'a mut T) -> Self20467     pub fn push_next<T: ExtendsSurfaceCapabilities2KHR>(mut self, next: &'a mut T) -> Self {
20468         unsafe {
20469             let next_ptr = next as *mut T as *mut BaseOutStructure;
20470             let last_next = ptr_chain_iter(next).last().unwrap();
20471             (*last_next).p_next = self.inner.p_next as _;
20472             self.inner.p_next = next_ptr as _;
20473         }
20474         self
20475     }
20476     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20477     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20478     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilities2KHR20479     pub fn build(self) -> SurfaceCapabilities2KHR {
20480         self.inner
20481     }
20482 }
20483 #[repr(C)]
20484 #[cfg_attr(feature = "debug", derive(Debug))]
20485 #[derive(Copy, Clone)]
20486 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFormat2KHR.html>"]
20487 pub struct SurfaceFormat2KHR {
20488     pub s_type: StructureType,
20489     pub p_next: *mut c_void,
20490     pub surface_format: SurfaceFormatKHR,
20491 }
20492 impl ::std::default::Default for SurfaceFormat2KHR {
default() -> Self20493     fn default() -> Self {
20494         Self {
20495             s_type: StructureType::SURFACE_FORMAT_2_KHR,
20496             p_next: ::std::ptr::null_mut(),
20497             surface_format: SurfaceFormatKHR::default(),
20498         }
20499     }
20500 }
20501 impl SurfaceFormat2KHR {
builder<'a>() -> SurfaceFormat2KHRBuilder<'a>20502     pub fn builder<'a>() -> SurfaceFormat2KHRBuilder<'a> {
20503         SurfaceFormat2KHRBuilder {
20504             inner: Self::default(),
20505             marker: ::std::marker::PhantomData,
20506         }
20507     }
20508 }
20509 #[repr(transparent)]
20510 pub struct SurfaceFormat2KHRBuilder<'a> {
20511     inner: SurfaceFormat2KHR,
20512     marker: ::std::marker::PhantomData<&'a ()>,
20513 }
20514 impl<'a> ::std::ops::Deref for SurfaceFormat2KHRBuilder<'a> {
20515     type Target = SurfaceFormat2KHR;
deref(&self) -> &Self::Target20516     fn deref(&self) -> &Self::Target {
20517         &self.inner
20518     }
20519 }
20520 impl<'a> ::std::ops::DerefMut for SurfaceFormat2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20521     fn deref_mut(&mut self) -> &mut Self::Target {
20522         &mut self.inner
20523     }
20524 }
20525 impl<'a> SurfaceFormat2KHRBuilder<'a> {
surface_format(mut self, surface_format: SurfaceFormatKHR) -> Self20526     pub fn surface_format(mut self, surface_format: SurfaceFormatKHR) -> Self {
20527         self.inner.surface_format = surface_format;
20528         self
20529     }
20530     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20531     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20532     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFormat2KHR20533     pub fn build(self) -> SurfaceFormat2KHR {
20534         self.inner
20535     }
20536 }
20537 #[repr(C)]
20538 #[cfg_attr(feature = "debug", derive(Debug))]
20539 #[derive(Copy, Clone)]
20540 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayProperties2KHR.html>"]
20541 pub struct DisplayProperties2KHR {
20542     pub s_type: StructureType,
20543     pub p_next: *mut c_void,
20544     pub display_properties: DisplayPropertiesKHR,
20545 }
20546 impl ::std::default::Default for DisplayProperties2KHR {
default() -> Self20547     fn default() -> Self {
20548         Self {
20549             s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
20550             p_next: ::std::ptr::null_mut(),
20551             display_properties: DisplayPropertiesKHR::default(),
20552         }
20553     }
20554 }
20555 impl DisplayProperties2KHR {
builder<'a>() -> DisplayProperties2KHRBuilder<'a>20556     pub fn builder<'a>() -> DisplayProperties2KHRBuilder<'a> {
20557         DisplayProperties2KHRBuilder {
20558             inner: Self::default(),
20559             marker: ::std::marker::PhantomData,
20560         }
20561     }
20562 }
20563 #[repr(transparent)]
20564 pub struct DisplayProperties2KHRBuilder<'a> {
20565     inner: DisplayProperties2KHR,
20566     marker: ::std::marker::PhantomData<&'a ()>,
20567 }
20568 impl<'a> ::std::ops::Deref for DisplayProperties2KHRBuilder<'a> {
20569     type Target = DisplayProperties2KHR;
deref(&self) -> &Self::Target20570     fn deref(&self) -> &Self::Target {
20571         &self.inner
20572     }
20573 }
20574 impl<'a> ::std::ops::DerefMut for DisplayProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20575     fn deref_mut(&mut self) -> &mut Self::Target {
20576         &mut self.inner
20577     }
20578 }
20579 impl<'a> DisplayProperties2KHRBuilder<'a> {
display_properties(mut self, display_properties: DisplayPropertiesKHR) -> Self20580     pub fn display_properties(mut self, display_properties: DisplayPropertiesKHR) -> Self {
20581         self.inner.display_properties = display_properties;
20582         self
20583     }
20584     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20585     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20586     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayProperties2KHR20587     pub fn build(self) -> DisplayProperties2KHR {
20588         self.inner
20589     }
20590 }
20591 #[repr(C)]
20592 #[cfg_attr(feature = "debug", derive(Debug))]
20593 #[derive(Copy, Clone)]
20594 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneProperties2KHR.html>"]
20595 pub struct DisplayPlaneProperties2KHR {
20596     pub s_type: StructureType,
20597     pub p_next: *mut c_void,
20598     pub display_plane_properties: DisplayPlanePropertiesKHR,
20599 }
20600 impl ::std::default::Default for DisplayPlaneProperties2KHR {
default() -> Self20601     fn default() -> Self {
20602         Self {
20603             s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
20604             p_next: ::std::ptr::null_mut(),
20605             display_plane_properties: DisplayPlanePropertiesKHR::default(),
20606         }
20607     }
20608 }
20609 impl DisplayPlaneProperties2KHR {
builder<'a>() -> DisplayPlaneProperties2KHRBuilder<'a>20610     pub fn builder<'a>() -> DisplayPlaneProperties2KHRBuilder<'a> {
20611         DisplayPlaneProperties2KHRBuilder {
20612             inner: Self::default(),
20613             marker: ::std::marker::PhantomData,
20614         }
20615     }
20616 }
20617 #[repr(transparent)]
20618 pub struct DisplayPlaneProperties2KHRBuilder<'a> {
20619     inner: DisplayPlaneProperties2KHR,
20620     marker: ::std::marker::PhantomData<&'a ()>,
20621 }
20622 impl<'a> ::std::ops::Deref for DisplayPlaneProperties2KHRBuilder<'a> {
20623     type Target = DisplayPlaneProperties2KHR;
deref(&self) -> &Self::Target20624     fn deref(&self) -> &Self::Target {
20625         &self.inner
20626     }
20627 }
20628 impl<'a> ::std::ops::DerefMut for DisplayPlaneProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20629     fn deref_mut(&mut self) -> &mut Self::Target {
20630         &mut self.inner
20631     }
20632 }
20633 impl<'a> DisplayPlaneProperties2KHRBuilder<'a> {
display_plane_properties( mut self, display_plane_properties: DisplayPlanePropertiesKHR, ) -> Self20634     pub fn display_plane_properties(
20635         mut self,
20636         display_plane_properties: DisplayPlanePropertiesKHR,
20637     ) -> Self {
20638         self.inner.display_plane_properties = display_plane_properties;
20639         self
20640     }
20641     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20642     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20643     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneProperties2KHR20644     pub fn build(self) -> DisplayPlaneProperties2KHR {
20645         self.inner
20646     }
20647 }
20648 #[repr(C)]
20649 #[cfg_attr(feature = "debug", derive(Debug))]
20650 #[derive(Copy, Clone)]
20651 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayModeProperties2KHR.html>"]
20652 pub struct DisplayModeProperties2KHR {
20653     pub s_type: StructureType,
20654     pub p_next: *mut c_void,
20655     pub display_mode_properties: DisplayModePropertiesKHR,
20656 }
20657 impl ::std::default::Default for DisplayModeProperties2KHR {
default() -> Self20658     fn default() -> Self {
20659         Self {
20660             s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
20661             p_next: ::std::ptr::null_mut(),
20662             display_mode_properties: DisplayModePropertiesKHR::default(),
20663         }
20664     }
20665 }
20666 impl DisplayModeProperties2KHR {
builder<'a>() -> DisplayModeProperties2KHRBuilder<'a>20667     pub fn builder<'a>() -> DisplayModeProperties2KHRBuilder<'a> {
20668         DisplayModeProperties2KHRBuilder {
20669             inner: Self::default(),
20670             marker: ::std::marker::PhantomData,
20671         }
20672     }
20673 }
20674 #[repr(transparent)]
20675 pub struct DisplayModeProperties2KHRBuilder<'a> {
20676     inner: DisplayModeProperties2KHR,
20677     marker: ::std::marker::PhantomData<&'a ()>,
20678 }
20679 impl<'a> ::std::ops::Deref for DisplayModeProperties2KHRBuilder<'a> {
20680     type Target = DisplayModeProperties2KHR;
deref(&self) -> &Self::Target20681     fn deref(&self) -> &Self::Target {
20682         &self.inner
20683     }
20684 }
20685 impl<'a> ::std::ops::DerefMut for DisplayModeProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20686     fn deref_mut(&mut self) -> &mut Self::Target {
20687         &mut self.inner
20688     }
20689 }
20690 impl<'a> DisplayModeProperties2KHRBuilder<'a> {
display_mode_properties( mut self, display_mode_properties: DisplayModePropertiesKHR, ) -> Self20691     pub fn display_mode_properties(
20692         mut self,
20693         display_mode_properties: DisplayModePropertiesKHR,
20694     ) -> Self {
20695         self.inner.display_mode_properties = display_mode_properties;
20696         self
20697     }
20698     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20699     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20700     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayModeProperties2KHR20701     pub fn build(self) -> DisplayModeProperties2KHR {
20702         self.inner
20703     }
20704 }
20705 #[repr(C)]
20706 #[cfg_attr(feature = "debug", derive(Debug))]
20707 #[derive(Copy, Clone)]
20708 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneInfo2KHR.html>"]
20709 pub struct DisplayPlaneInfo2KHR {
20710     pub s_type: StructureType,
20711     pub p_next: *const c_void,
20712     pub mode: DisplayModeKHR,
20713     pub plane_index: u32,
20714 }
20715 impl ::std::default::Default for DisplayPlaneInfo2KHR {
default() -> Self20716     fn default() -> Self {
20717         Self {
20718             s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
20719             p_next: ::std::ptr::null(),
20720             mode: DisplayModeKHR::default(),
20721             plane_index: u32::default(),
20722         }
20723     }
20724 }
20725 impl DisplayPlaneInfo2KHR {
builder<'a>() -> DisplayPlaneInfo2KHRBuilder<'a>20726     pub fn builder<'a>() -> DisplayPlaneInfo2KHRBuilder<'a> {
20727         DisplayPlaneInfo2KHRBuilder {
20728             inner: Self::default(),
20729             marker: ::std::marker::PhantomData,
20730         }
20731     }
20732 }
20733 #[repr(transparent)]
20734 pub struct DisplayPlaneInfo2KHRBuilder<'a> {
20735     inner: DisplayPlaneInfo2KHR,
20736     marker: ::std::marker::PhantomData<&'a ()>,
20737 }
20738 impl<'a> ::std::ops::Deref for DisplayPlaneInfo2KHRBuilder<'a> {
20739     type Target = DisplayPlaneInfo2KHR;
deref(&self) -> &Self::Target20740     fn deref(&self) -> &Self::Target {
20741         &self.inner
20742     }
20743 }
20744 impl<'a> ::std::ops::DerefMut for DisplayPlaneInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20745     fn deref_mut(&mut self) -> &mut Self::Target {
20746         &mut self.inner
20747     }
20748 }
20749 impl<'a> DisplayPlaneInfo2KHRBuilder<'a> {
mode(mut self, mode: DisplayModeKHR) -> Self20750     pub fn mode(mut self, mode: DisplayModeKHR) -> Self {
20751         self.inner.mode = mode;
20752         self
20753     }
plane_index(mut self, plane_index: u32) -> Self20754     pub fn plane_index(mut self, plane_index: u32) -> Self {
20755         self.inner.plane_index = plane_index;
20756         self
20757     }
20758     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20759     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20760     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneInfo2KHR20761     pub fn build(self) -> DisplayPlaneInfo2KHR {
20762         self.inner
20763     }
20764 }
20765 #[repr(C)]
20766 #[cfg_attr(feature = "debug", derive(Debug))]
20767 #[derive(Copy, Clone)]
20768 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPlaneCapabilities2KHR.html>"]
20769 pub struct DisplayPlaneCapabilities2KHR {
20770     pub s_type: StructureType,
20771     pub p_next: *mut c_void,
20772     pub capabilities: DisplayPlaneCapabilitiesKHR,
20773 }
20774 impl ::std::default::Default for DisplayPlaneCapabilities2KHR {
default() -> Self20775     fn default() -> Self {
20776         Self {
20777             s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
20778             p_next: ::std::ptr::null_mut(),
20779             capabilities: DisplayPlaneCapabilitiesKHR::default(),
20780         }
20781     }
20782 }
20783 impl DisplayPlaneCapabilities2KHR {
builder<'a>() -> DisplayPlaneCapabilities2KHRBuilder<'a>20784     pub fn builder<'a>() -> DisplayPlaneCapabilities2KHRBuilder<'a> {
20785         DisplayPlaneCapabilities2KHRBuilder {
20786             inner: Self::default(),
20787             marker: ::std::marker::PhantomData,
20788         }
20789     }
20790 }
20791 #[repr(transparent)]
20792 pub struct DisplayPlaneCapabilities2KHRBuilder<'a> {
20793     inner: DisplayPlaneCapabilities2KHR,
20794     marker: ::std::marker::PhantomData<&'a ()>,
20795 }
20796 impl<'a> ::std::ops::Deref for DisplayPlaneCapabilities2KHRBuilder<'a> {
20797     type Target = DisplayPlaneCapabilities2KHR;
deref(&self) -> &Self::Target20798     fn deref(&self) -> &Self::Target {
20799         &self.inner
20800     }
20801 }
20802 impl<'a> ::std::ops::DerefMut for DisplayPlaneCapabilities2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20803     fn deref_mut(&mut self) -> &mut Self::Target {
20804         &mut self.inner
20805     }
20806 }
20807 impl<'a> DisplayPlaneCapabilities2KHRBuilder<'a> {
capabilities(mut self, capabilities: DisplayPlaneCapabilitiesKHR) -> Self20808     pub fn capabilities(mut self, capabilities: DisplayPlaneCapabilitiesKHR) -> Self {
20809         self.inner.capabilities = capabilities;
20810         self
20811     }
20812     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20813     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20814     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DisplayPlaneCapabilities2KHR20815     pub fn build(self) -> DisplayPlaneCapabilities2KHR {
20816         self.inner
20817     }
20818 }
20819 #[repr(C)]
20820 #[cfg_attr(feature = "debug", derive(Debug))]
20821 #[derive(Copy, Clone)]
20822 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>"]
20823 pub struct SharedPresentSurfaceCapabilitiesKHR {
20824     pub s_type: StructureType,
20825     pub p_next: *mut c_void,
20826     pub shared_present_supported_usage_flags: ImageUsageFlags,
20827 }
20828 impl ::std::default::Default for SharedPresentSurfaceCapabilitiesKHR {
default() -> Self20829     fn default() -> Self {
20830         Self {
20831             s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
20832             p_next: ::std::ptr::null_mut(),
20833             shared_present_supported_usage_flags: ImageUsageFlags::default(),
20834         }
20835     }
20836 }
20837 impl SharedPresentSurfaceCapabilitiesKHR {
builder<'a>() -> SharedPresentSurfaceCapabilitiesKHRBuilder<'a>20838     pub fn builder<'a>() -> SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
20839         SharedPresentSurfaceCapabilitiesKHRBuilder {
20840             inner: Self::default(),
20841             marker: ::std::marker::PhantomData,
20842         }
20843     }
20844 }
20845 #[repr(transparent)]
20846 pub struct SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
20847     inner: SharedPresentSurfaceCapabilitiesKHR,
20848     marker: ::std::marker::PhantomData<&'a ()>,
20849 }
20850 unsafe impl ExtendsSurfaceCapabilities2KHR for SharedPresentSurfaceCapabilitiesKHRBuilder<'_> {}
20851 unsafe impl ExtendsSurfaceCapabilities2KHR for SharedPresentSurfaceCapabilitiesKHR {}
20852 impl<'a> ::std::ops::Deref for SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
20853     type Target = SharedPresentSurfaceCapabilitiesKHR;
deref(&self) -> &Self::Target20854     fn deref(&self) -> &Self::Target {
20855         &self.inner
20856     }
20857 }
20858 impl<'a> ::std::ops::DerefMut for SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20859     fn deref_mut(&mut self) -> &mut Self::Target {
20860         &mut self.inner
20861     }
20862 }
20863 impl<'a> SharedPresentSurfaceCapabilitiesKHRBuilder<'a> {
shared_present_supported_usage_flags( mut self, shared_present_supported_usage_flags: ImageUsageFlags, ) -> Self20864     pub fn shared_present_supported_usage_flags(
20865         mut self,
20866         shared_present_supported_usage_flags: ImageUsageFlags,
20867     ) -> Self {
20868         self.inner.shared_present_supported_usage_flags = shared_present_supported_usage_flags;
20869         self
20870     }
20871     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20872     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20873     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SharedPresentSurfaceCapabilitiesKHR20874     pub fn build(self) -> SharedPresentSurfaceCapabilitiesKHR {
20875         self.inner
20876     }
20877 }
20878 #[repr(C)]
20879 #[cfg_attr(feature = "debug", derive(Debug))]
20880 #[derive(Copy, Clone)]
20881 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice16BitStorageFeatures.html>"]
20882 pub struct PhysicalDevice16BitStorageFeatures {
20883     pub s_type: StructureType,
20884     pub p_next: *mut c_void,
20885     pub storage_buffer16_bit_access: Bool32,
20886     pub uniform_and_storage_buffer16_bit_access: Bool32,
20887     pub storage_push_constant16: Bool32,
20888     pub storage_input_output16: Bool32,
20889 }
20890 impl ::std::default::Default for PhysicalDevice16BitStorageFeatures {
default() -> Self20891     fn default() -> Self {
20892         Self {
20893             s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
20894             p_next: ::std::ptr::null_mut(),
20895             storage_buffer16_bit_access: Bool32::default(),
20896             uniform_and_storage_buffer16_bit_access: Bool32::default(),
20897             storage_push_constant16: Bool32::default(),
20898             storage_input_output16: Bool32::default(),
20899         }
20900     }
20901 }
20902 impl PhysicalDevice16BitStorageFeatures {
builder<'a>() -> PhysicalDevice16BitStorageFeaturesBuilder<'a>20903     pub fn builder<'a>() -> PhysicalDevice16BitStorageFeaturesBuilder<'a> {
20904         PhysicalDevice16BitStorageFeaturesBuilder {
20905             inner: Self::default(),
20906             marker: ::std::marker::PhantomData,
20907         }
20908     }
20909 }
20910 #[repr(transparent)]
20911 pub struct PhysicalDevice16BitStorageFeaturesBuilder<'a> {
20912     inner: PhysicalDevice16BitStorageFeatures,
20913     marker: ::std::marker::PhantomData<&'a ()>,
20914 }
20915 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice16BitStorageFeaturesBuilder<'_> {}
20916 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice16BitStorageFeatures {}
20917 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice16BitStorageFeaturesBuilder<'_> {}
20918 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice16BitStorageFeatures {}
20919 impl<'a> ::std::ops::Deref for PhysicalDevice16BitStorageFeaturesBuilder<'a> {
20920     type Target = PhysicalDevice16BitStorageFeatures;
deref(&self) -> &Self::Target20921     fn deref(&self) -> &Self::Target {
20922         &self.inner
20923     }
20924 }
20925 impl<'a> ::std::ops::DerefMut for PhysicalDevice16BitStorageFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target20926     fn deref_mut(&mut self) -> &mut Self::Target {
20927         &mut self.inner
20928     }
20929 }
20930 impl<'a> PhysicalDevice16BitStorageFeaturesBuilder<'a> {
storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self20931     pub fn storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self {
20932         self.inner.storage_buffer16_bit_access = storage_buffer16_bit_access.into();
20933         self
20934     }
uniform_and_storage_buffer16_bit_access( mut self, uniform_and_storage_buffer16_bit_access: bool, ) -> Self20935     pub fn uniform_and_storage_buffer16_bit_access(
20936         mut self,
20937         uniform_and_storage_buffer16_bit_access: bool,
20938     ) -> Self {
20939         self.inner.uniform_and_storage_buffer16_bit_access =
20940             uniform_and_storage_buffer16_bit_access.into();
20941         self
20942     }
storage_push_constant16(mut self, storage_push_constant16: bool) -> Self20943     pub fn storage_push_constant16(mut self, storage_push_constant16: bool) -> Self {
20944         self.inner.storage_push_constant16 = storage_push_constant16.into();
20945         self
20946     }
storage_input_output16(mut self, storage_input_output16: bool) -> Self20947     pub fn storage_input_output16(mut self, storage_input_output16: bool) -> Self {
20948         self.inner.storage_input_output16 = storage_input_output16.into();
20949         self
20950     }
20951     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
20952     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
20953     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevice16BitStorageFeatures20954     pub fn build(self) -> PhysicalDevice16BitStorageFeatures {
20955         self.inner
20956     }
20957 }
20958 #[repr(C)]
20959 #[cfg_attr(feature = "debug", derive(Debug))]
20960 #[derive(Copy, Clone)]
20961 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html>"]
20962 pub struct PhysicalDeviceSubgroupProperties {
20963     pub s_type: StructureType,
20964     pub p_next: *mut c_void,
20965     pub subgroup_size: u32,
20966     pub supported_stages: ShaderStageFlags,
20967     pub supported_operations: SubgroupFeatureFlags,
20968     pub quad_operations_in_all_stages: Bool32,
20969 }
20970 impl ::std::default::Default for PhysicalDeviceSubgroupProperties {
default() -> Self20971     fn default() -> Self {
20972         Self {
20973             s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
20974             p_next: ::std::ptr::null_mut(),
20975             subgroup_size: u32::default(),
20976             supported_stages: ShaderStageFlags::default(),
20977             supported_operations: SubgroupFeatureFlags::default(),
20978             quad_operations_in_all_stages: Bool32::default(),
20979         }
20980     }
20981 }
20982 impl PhysicalDeviceSubgroupProperties {
builder<'a>() -> PhysicalDeviceSubgroupPropertiesBuilder<'a>20983     pub fn builder<'a>() -> PhysicalDeviceSubgroupPropertiesBuilder<'a> {
20984         PhysicalDeviceSubgroupPropertiesBuilder {
20985             inner: Self::default(),
20986             marker: ::std::marker::PhantomData,
20987         }
20988     }
20989 }
20990 #[repr(transparent)]
20991 pub struct PhysicalDeviceSubgroupPropertiesBuilder<'a> {
20992     inner: PhysicalDeviceSubgroupProperties,
20993     marker: ::std::marker::PhantomData<&'a ()>,
20994 }
20995 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupPropertiesBuilder<'_> {}
20996 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupProperties {}
20997 impl<'a> ::std::ops::Deref for PhysicalDeviceSubgroupPropertiesBuilder<'a> {
20998     type Target = PhysicalDeviceSubgroupProperties;
deref(&self) -> &Self::Target20999     fn deref(&self) -> &Self::Target {
21000         &self.inner
21001     }
21002 }
21003 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubgroupPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21004     fn deref_mut(&mut self) -> &mut Self::Target {
21005         &mut self.inner
21006     }
21007 }
21008 impl<'a> PhysicalDeviceSubgroupPropertiesBuilder<'a> {
subgroup_size(mut self, subgroup_size: u32) -> Self21009     pub fn subgroup_size(mut self, subgroup_size: u32) -> Self {
21010         self.inner.subgroup_size = subgroup_size;
21011         self
21012     }
supported_stages(mut self, supported_stages: ShaderStageFlags) -> Self21013     pub fn supported_stages(mut self, supported_stages: ShaderStageFlags) -> Self {
21014         self.inner.supported_stages = supported_stages;
21015         self
21016     }
supported_operations(mut self, supported_operations: SubgroupFeatureFlags) -> Self21017     pub fn supported_operations(mut self, supported_operations: SubgroupFeatureFlags) -> Self {
21018         self.inner.supported_operations = supported_operations;
21019         self
21020     }
quad_operations_in_all_stages(mut self, quad_operations_in_all_stages: bool) -> Self21021     pub fn quad_operations_in_all_stages(mut self, quad_operations_in_all_stages: bool) -> Self {
21022         self.inner.quad_operations_in_all_stages = quad_operations_in_all_stages.into();
21023         self
21024     }
21025     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21026     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21027     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubgroupProperties21028     pub fn build(self) -> PhysicalDeviceSubgroupProperties {
21029         self.inner
21030     }
21031 }
21032 #[repr(C)]
21033 #[cfg_attr(feature = "debug", derive(Debug))]
21034 #[derive(Copy, Clone)]
21035 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>"]
21036 pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21037     pub s_type: StructureType,
21038     pub p_next: *mut c_void,
21039     pub shader_subgroup_extended_types: Bool32,
21040 }
21041 impl ::std::default::Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
default() -> Self21042     fn default() -> Self {
21043         Self {
21044             s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
21045             p_next: ::std::ptr::null_mut(),
21046             shader_subgroup_extended_types: Bool32::default(),
21047         }
21048     }
21049 }
21050 impl PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
builder<'a>() -> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a>21051     pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
21052         PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder {
21053             inner: Self::default(),
21054             marker: ::std::marker::PhantomData,
21055         }
21056     }
21057 }
21058 #[repr(transparent)]
21059 pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
21060     inner: PhysicalDeviceShaderSubgroupExtendedTypesFeatures,
21061     marker: ::std::marker::PhantomData<&'a ()>,
21062 }
21063 unsafe impl ExtendsPhysicalDeviceFeatures2
21064     for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'_>
21065 {
21066 }
21067 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21068 unsafe impl ExtendsDeviceCreateInfo
21069     for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'_>
21070 {
21071 }
21072 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21073 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
21074     type Target = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
deref(&self) -> &Self::Target21075     fn deref(&self) -> &Self::Target {
21076         &self.inner
21077     }
21078 }
21079 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21080     fn deref_mut(&mut self) -> &mut Self::Target {
21081         &mut self.inner
21082     }
21083 }
21084 impl<'a> PhysicalDeviceShaderSubgroupExtendedTypesFeaturesBuilder<'a> {
shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self21085     pub fn shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self {
21086         self.inner.shader_subgroup_extended_types = shader_subgroup_extended_types.into();
21087         self
21088     }
21089     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21090     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21091     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSubgroupExtendedTypesFeatures21092     pub fn build(self) -> PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21093         self.inner
21094     }
21095 }
21096 #[repr(C)]
21097 #[cfg_attr(feature = "debug", derive(Debug))]
21098 #[derive(Copy, Clone)]
21099 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryRequirementsInfo2.html>"]
21100 pub struct BufferMemoryRequirementsInfo2 {
21101     pub s_type: StructureType,
21102     pub p_next: *const c_void,
21103     pub buffer: Buffer,
21104 }
21105 impl ::std::default::Default for BufferMemoryRequirementsInfo2 {
default() -> Self21106     fn default() -> Self {
21107         Self {
21108             s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
21109             p_next: ::std::ptr::null(),
21110             buffer: Buffer::default(),
21111         }
21112     }
21113 }
21114 impl BufferMemoryRequirementsInfo2 {
builder<'a>() -> BufferMemoryRequirementsInfo2Builder<'a>21115     pub fn builder<'a>() -> BufferMemoryRequirementsInfo2Builder<'a> {
21116         BufferMemoryRequirementsInfo2Builder {
21117             inner: Self::default(),
21118             marker: ::std::marker::PhantomData,
21119         }
21120     }
21121 }
21122 #[repr(transparent)]
21123 pub struct BufferMemoryRequirementsInfo2Builder<'a> {
21124     inner: BufferMemoryRequirementsInfo2,
21125     marker: ::std::marker::PhantomData<&'a ()>,
21126 }
21127 impl<'a> ::std::ops::Deref for BufferMemoryRequirementsInfo2Builder<'a> {
21128     type Target = BufferMemoryRequirementsInfo2;
deref(&self) -> &Self::Target21129     fn deref(&self) -> &Self::Target {
21130         &self.inner
21131     }
21132 }
21133 impl<'a> ::std::ops::DerefMut for BufferMemoryRequirementsInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target21134     fn deref_mut(&mut self) -> &mut Self::Target {
21135         &mut self.inner
21136     }
21137 }
21138 impl<'a> BufferMemoryRequirementsInfo2Builder<'a> {
buffer(mut self, buffer: Buffer) -> Self21139     pub fn buffer(mut self, buffer: Buffer) -> Self {
21140         self.inner.buffer = buffer;
21141         self
21142     }
21143     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21144     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21145     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferMemoryRequirementsInfo221146     pub fn build(self) -> BufferMemoryRequirementsInfo2 {
21147         self.inner
21148     }
21149 }
21150 #[repr(C)]
21151 #[cfg_attr(feature = "debug", derive(Debug))]
21152 #[derive(Copy, Clone)]
21153 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceBufferMemoryRequirementsKHR.html>"]
21154 pub struct DeviceBufferMemoryRequirementsKHR {
21155     pub s_type: StructureType,
21156     pub p_next: *const c_void,
21157     pub p_create_info: *const BufferCreateInfo,
21158 }
21159 impl ::std::default::Default for DeviceBufferMemoryRequirementsKHR {
default() -> Self21160     fn default() -> Self {
21161         Self {
21162             s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR,
21163             p_next: ::std::ptr::null(),
21164             p_create_info: ::std::ptr::null(),
21165         }
21166     }
21167 }
21168 impl DeviceBufferMemoryRequirementsKHR {
builder<'a>() -> DeviceBufferMemoryRequirementsKHRBuilder<'a>21169     pub fn builder<'a>() -> DeviceBufferMemoryRequirementsKHRBuilder<'a> {
21170         DeviceBufferMemoryRequirementsKHRBuilder {
21171             inner: Self::default(),
21172             marker: ::std::marker::PhantomData,
21173         }
21174     }
21175 }
21176 #[repr(transparent)]
21177 pub struct DeviceBufferMemoryRequirementsKHRBuilder<'a> {
21178     inner: DeviceBufferMemoryRequirementsKHR,
21179     marker: ::std::marker::PhantomData<&'a ()>,
21180 }
21181 impl<'a> ::std::ops::Deref for DeviceBufferMemoryRequirementsKHRBuilder<'a> {
21182     type Target = DeviceBufferMemoryRequirementsKHR;
deref(&self) -> &Self::Target21183     fn deref(&self) -> &Self::Target {
21184         &self.inner
21185     }
21186 }
21187 impl<'a> ::std::ops::DerefMut for DeviceBufferMemoryRequirementsKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21188     fn deref_mut(&mut self) -> &mut Self::Target {
21189         &mut self.inner
21190     }
21191 }
21192 impl<'a> DeviceBufferMemoryRequirementsKHRBuilder<'a> {
create_info(mut self, create_info: &'a BufferCreateInfo) -> Self21193     pub fn create_info(mut self, create_info: &'a BufferCreateInfo) -> Self {
21194         self.inner.p_create_info = create_info;
21195         self
21196     }
21197     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21198     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21199     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceBufferMemoryRequirementsKHR21200     pub fn build(self) -> DeviceBufferMemoryRequirementsKHR {
21201         self.inner
21202     }
21203 }
21204 #[repr(C)]
21205 #[cfg_attr(feature = "debug", derive(Debug))]
21206 #[derive(Copy, Clone)]
21207 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryRequirementsInfo2.html>"]
21208 pub struct ImageMemoryRequirementsInfo2 {
21209     pub s_type: StructureType,
21210     pub p_next: *const c_void,
21211     pub image: Image,
21212 }
21213 impl ::std::default::Default for ImageMemoryRequirementsInfo2 {
default() -> Self21214     fn default() -> Self {
21215         Self {
21216             s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
21217             p_next: ::std::ptr::null(),
21218             image: Image::default(),
21219         }
21220     }
21221 }
21222 impl ImageMemoryRequirementsInfo2 {
builder<'a>() -> ImageMemoryRequirementsInfo2Builder<'a>21223     pub fn builder<'a>() -> ImageMemoryRequirementsInfo2Builder<'a> {
21224         ImageMemoryRequirementsInfo2Builder {
21225             inner: Self::default(),
21226             marker: ::std::marker::PhantomData,
21227         }
21228     }
21229 }
21230 #[repr(transparent)]
21231 pub struct ImageMemoryRequirementsInfo2Builder<'a> {
21232     inner: ImageMemoryRequirementsInfo2,
21233     marker: ::std::marker::PhantomData<&'a ()>,
21234 }
21235 pub unsafe trait ExtendsImageMemoryRequirementsInfo2 {}
21236 impl<'a> ::std::ops::Deref for ImageMemoryRequirementsInfo2Builder<'a> {
21237     type Target = ImageMemoryRequirementsInfo2;
deref(&self) -> &Self::Target21238     fn deref(&self) -> &Self::Target {
21239         &self.inner
21240     }
21241 }
21242 impl<'a> ::std::ops::DerefMut for ImageMemoryRequirementsInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target21243     fn deref_mut(&mut self) -> &mut Self::Target {
21244         &mut self.inner
21245     }
21246 }
21247 impl<'a> ImageMemoryRequirementsInfo2Builder<'a> {
image(mut self, image: Image) -> Self21248     pub fn image(mut self, image: Image) -> Self {
21249         self.inner.image = image;
21250         self
21251     }
21252     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
21253     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
21254     #[doc = r" valid extension structs can be pushed into the chain."]
21255     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
21256     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageMemoryRequirementsInfo2>(mut self, next: &'a mut T) -> Self21257     pub fn push_next<T: ExtendsImageMemoryRequirementsInfo2>(mut self, next: &'a mut T) -> Self {
21258         unsafe {
21259             let next_ptr = next as *mut T as *mut BaseOutStructure;
21260             let last_next = ptr_chain_iter(next).last().unwrap();
21261             (*last_next).p_next = self.inner.p_next as _;
21262             self.inner.p_next = next_ptr as _;
21263         }
21264         self
21265     }
21266     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21267     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21268     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageMemoryRequirementsInfo221269     pub fn build(self) -> ImageMemoryRequirementsInfo2 {
21270         self.inner
21271     }
21272 }
21273 #[repr(C)]
21274 #[cfg_attr(feature = "debug", derive(Debug))]
21275 #[derive(Copy, Clone)]
21276 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSparseMemoryRequirementsInfo2.html>"]
21277 pub struct ImageSparseMemoryRequirementsInfo2 {
21278     pub s_type: StructureType,
21279     pub p_next: *const c_void,
21280     pub image: Image,
21281 }
21282 impl ::std::default::Default for ImageSparseMemoryRequirementsInfo2 {
default() -> Self21283     fn default() -> Self {
21284         Self {
21285             s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
21286             p_next: ::std::ptr::null(),
21287             image: Image::default(),
21288         }
21289     }
21290 }
21291 impl ImageSparseMemoryRequirementsInfo2 {
builder<'a>() -> ImageSparseMemoryRequirementsInfo2Builder<'a>21292     pub fn builder<'a>() -> ImageSparseMemoryRequirementsInfo2Builder<'a> {
21293         ImageSparseMemoryRequirementsInfo2Builder {
21294             inner: Self::default(),
21295             marker: ::std::marker::PhantomData,
21296         }
21297     }
21298 }
21299 #[repr(transparent)]
21300 pub struct ImageSparseMemoryRequirementsInfo2Builder<'a> {
21301     inner: ImageSparseMemoryRequirementsInfo2,
21302     marker: ::std::marker::PhantomData<&'a ()>,
21303 }
21304 impl<'a> ::std::ops::Deref for ImageSparseMemoryRequirementsInfo2Builder<'a> {
21305     type Target = ImageSparseMemoryRequirementsInfo2;
deref(&self) -> &Self::Target21306     fn deref(&self) -> &Self::Target {
21307         &self.inner
21308     }
21309 }
21310 impl<'a> ::std::ops::DerefMut for ImageSparseMemoryRequirementsInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target21311     fn deref_mut(&mut self) -> &mut Self::Target {
21312         &mut self.inner
21313     }
21314 }
21315 impl<'a> ImageSparseMemoryRequirementsInfo2Builder<'a> {
image(mut self, image: Image) -> Self21316     pub fn image(mut self, image: Image) -> Self {
21317         self.inner.image = image;
21318         self
21319     }
21320     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21321     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21322     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageSparseMemoryRequirementsInfo221323     pub fn build(self) -> ImageSparseMemoryRequirementsInfo2 {
21324         self.inner
21325     }
21326 }
21327 #[repr(C)]
21328 #[cfg_attr(feature = "debug", derive(Debug))]
21329 #[derive(Copy, Clone)]
21330 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceImageMemoryRequirementsKHR.html>"]
21331 pub struct DeviceImageMemoryRequirementsKHR {
21332     pub s_type: StructureType,
21333     pub p_next: *const c_void,
21334     pub p_create_info: *const ImageCreateInfo,
21335     pub plane_aspect: ImageAspectFlags,
21336 }
21337 impl ::std::default::Default for DeviceImageMemoryRequirementsKHR {
default() -> Self21338     fn default() -> Self {
21339         Self {
21340             s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR,
21341             p_next: ::std::ptr::null(),
21342             p_create_info: ::std::ptr::null(),
21343             plane_aspect: ImageAspectFlags::default(),
21344         }
21345     }
21346 }
21347 impl DeviceImageMemoryRequirementsKHR {
builder<'a>() -> DeviceImageMemoryRequirementsKHRBuilder<'a>21348     pub fn builder<'a>() -> DeviceImageMemoryRequirementsKHRBuilder<'a> {
21349         DeviceImageMemoryRequirementsKHRBuilder {
21350             inner: Self::default(),
21351             marker: ::std::marker::PhantomData,
21352         }
21353     }
21354 }
21355 #[repr(transparent)]
21356 pub struct DeviceImageMemoryRequirementsKHRBuilder<'a> {
21357     inner: DeviceImageMemoryRequirementsKHR,
21358     marker: ::std::marker::PhantomData<&'a ()>,
21359 }
21360 impl<'a> ::std::ops::Deref for DeviceImageMemoryRequirementsKHRBuilder<'a> {
21361     type Target = DeviceImageMemoryRequirementsKHR;
deref(&self) -> &Self::Target21362     fn deref(&self) -> &Self::Target {
21363         &self.inner
21364     }
21365 }
21366 impl<'a> ::std::ops::DerefMut for DeviceImageMemoryRequirementsKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21367     fn deref_mut(&mut self) -> &mut Self::Target {
21368         &mut self.inner
21369     }
21370 }
21371 impl<'a> DeviceImageMemoryRequirementsKHRBuilder<'a> {
create_info(mut self, create_info: &'a ImageCreateInfo) -> Self21372     pub fn create_info(mut self, create_info: &'a ImageCreateInfo) -> Self {
21373         self.inner.p_create_info = create_info;
21374         self
21375     }
plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self21376     pub fn plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self {
21377         self.inner.plane_aspect = plane_aspect;
21378         self
21379     }
21380     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21381     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21382     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceImageMemoryRequirementsKHR21383     pub fn build(self) -> DeviceImageMemoryRequirementsKHR {
21384         self.inner
21385     }
21386 }
21387 #[repr(C)]
21388 #[cfg_attr(feature = "debug", derive(Debug))]
21389 #[derive(Copy, Clone)]
21390 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryRequirements2.html>"]
21391 pub struct MemoryRequirements2 {
21392     pub s_type: StructureType,
21393     pub p_next: *mut c_void,
21394     pub memory_requirements: MemoryRequirements,
21395 }
21396 impl ::std::default::Default for MemoryRequirements2 {
default() -> Self21397     fn default() -> Self {
21398         Self {
21399             s_type: StructureType::MEMORY_REQUIREMENTS_2,
21400             p_next: ::std::ptr::null_mut(),
21401             memory_requirements: MemoryRequirements::default(),
21402         }
21403     }
21404 }
21405 impl MemoryRequirements2 {
builder<'a>() -> MemoryRequirements2Builder<'a>21406     pub fn builder<'a>() -> MemoryRequirements2Builder<'a> {
21407         MemoryRequirements2Builder {
21408             inner: Self::default(),
21409             marker: ::std::marker::PhantomData,
21410         }
21411     }
21412 }
21413 #[repr(transparent)]
21414 pub struct MemoryRequirements2Builder<'a> {
21415     inner: MemoryRequirements2,
21416     marker: ::std::marker::PhantomData<&'a ()>,
21417 }
21418 pub unsafe trait ExtendsMemoryRequirements2 {}
21419 impl<'a> ::std::ops::Deref for MemoryRequirements2Builder<'a> {
21420     type Target = MemoryRequirements2;
deref(&self) -> &Self::Target21421     fn deref(&self) -> &Self::Target {
21422         &self.inner
21423     }
21424 }
21425 impl<'a> ::std::ops::DerefMut for MemoryRequirements2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target21426     fn deref_mut(&mut self) -> &mut Self::Target {
21427         &mut self.inner
21428     }
21429 }
21430 impl<'a> MemoryRequirements2Builder<'a> {
memory_requirements(mut self, memory_requirements: MemoryRequirements) -> Self21431     pub fn memory_requirements(mut self, memory_requirements: MemoryRequirements) -> Self {
21432         self.inner.memory_requirements = memory_requirements;
21433         self
21434     }
21435     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
21436     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
21437     #[doc = r" valid extension structs can be pushed into the chain."]
21438     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
21439     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsMemoryRequirements2>(mut self, next: &'a mut T) -> Self21440     pub fn push_next<T: ExtendsMemoryRequirements2>(mut self, next: &'a mut T) -> Self {
21441         unsafe {
21442             let next_ptr = next as *mut T as *mut BaseOutStructure;
21443             let last_next = ptr_chain_iter(next).last().unwrap();
21444             (*last_next).p_next = self.inner.p_next as _;
21445             self.inner.p_next = next_ptr as _;
21446         }
21447         self
21448     }
21449     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21450     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21451     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryRequirements221452     pub fn build(self) -> MemoryRequirements2 {
21453         self.inner
21454     }
21455 }
21456 #[repr(C)]
21457 #[cfg_attr(feature = "debug", derive(Debug))]
21458 #[derive(Copy, Clone)]
21459 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryRequirements2.html>"]
21460 pub struct SparseImageMemoryRequirements2 {
21461     pub s_type: StructureType,
21462     pub p_next: *mut c_void,
21463     pub memory_requirements: SparseImageMemoryRequirements,
21464 }
21465 impl ::std::default::Default for SparseImageMemoryRequirements2 {
default() -> Self21466     fn default() -> Self {
21467         Self {
21468             s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
21469             p_next: ::std::ptr::null_mut(),
21470             memory_requirements: SparseImageMemoryRequirements::default(),
21471         }
21472     }
21473 }
21474 impl SparseImageMemoryRequirements2 {
builder<'a>() -> SparseImageMemoryRequirements2Builder<'a>21475     pub fn builder<'a>() -> SparseImageMemoryRequirements2Builder<'a> {
21476         SparseImageMemoryRequirements2Builder {
21477             inner: Self::default(),
21478             marker: ::std::marker::PhantomData,
21479         }
21480     }
21481 }
21482 #[repr(transparent)]
21483 pub struct SparseImageMemoryRequirements2Builder<'a> {
21484     inner: SparseImageMemoryRequirements2,
21485     marker: ::std::marker::PhantomData<&'a ()>,
21486 }
21487 impl<'a> ::std::ops::Deref for SparseImageMemoryRequirements2Builder<'a> {
21488     type Target = SparseImageMemoryRequirements2;
deref(&self) -> &Self::Target21489     fn deref(&self) -> &Self::Target {
21490         &self.inner
21491     }
21492 }
21493 impl<'a> ::std::ops::DerefMut for SparseImageMemoryRequirements2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target21494     fn deref_mut(&mut self) -> &mut Self::Target {
21495         &mut self.inner
21496     }
21497 }
21498 impl<'a> SparseImageMemoryRequirements2Builder<'a> {
memory_requirements( mut self, memory_requirements: SparseImageMemoryRequirements, ) -> Self21499     pub fn memory_requirements(
21500         mut self,
21501         memory_requirements: SparseImageMemoryRequirements,
21502     ) -> Self {
21503         self.inner.memory_requirements = memory_requirements;
21504         self
21505     }
21506     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21507     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21508     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SparseImageMemoryRequirements221509     pub fn build(self) -> SparseImageMemoryRequirements2 {
21510         self.inner
21511     }
21512 }
21513 #[repr(C)]
21514 #[cfg_attr(feature = "debug", derive(Debug))]
21515 #[derive(Copy, Clone)]
21516 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePointClippingProperties.html>"]
21517 pub struct PhysicalDevicePointClippingProperties {
21518     pub s_type: StructureType,
21519     pub p_next: *mut c_void,
21520     pub point_clipping_behavior: PointClippingBehavior,
21521 }
21522 impl ::std::default::Default for PhysicalDevicePointClippingProperties {
default() -> Self21523     fn default() -> Self {
21524         Self {
21525             s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
21526             p_next: ::std::ptr::null_mut(),
21527             point_clipping_behavior: PointClippingBehavior::default(),
21528         }
21529     }
21530 }
21531 impl PhysicalDevicePointClippingProperties {
builder<'a>() -> PhysicalDevicePointClippingPropertiesBuilder<'a>21532     pub fn builder<'a>() -> PhysicalDevicePointClippingPropertiesBuilder<'a> {
21533         PhysicalDevicePointClippingPropertiesBuilder {
21534             inner: Self::default(),
21535             marker: ::std::marker::PhantomData,
21536         }
21537     }
21538 }
21539 #[repr(transparent)]
21540 pub struct PhysicalDevicePointClippingPropertiesBuilder<'a> {
21541     inner: PhysicalDevicePointClippingProperties,
21542     marker: ::std::marker::PhantomData<&'a ()>,
21543 }
21544 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePointClippingPropertiesBuilder<'_> {}
21545 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePointClippingProperties {}
21546 impl<'a> ::std::ops::Deref for PhysicalDevicePointClippingPropertiesBuilder<'a> {
21547     type Target = PhysicalDevicePointClippingProperties;
deref(&self) -> &Self::Target21548     fn deref(&self) -> &Self::Target {
21549         &self.inner
21550     }
21551 }
21552 impl<'a> ::std::ops::DerefMut for PhysicalDevicePointClippingPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21553     fn deref_mut(&mut self) -> &mut Self::Target {
21554         &mut self.inner
21555     }
21556 }
21557 impl<'a> PhysicalDevicePointClippingPropertiesBuilder<'a> {
point_clipping_behavior( mut self, point_clipping_behavior: PointClippingBehavior, ) -> Self21558     pub fn point_clipping_behavior(
21559         mut self,
21560         point_clipping_behavior: PointClippingBehavior,
21561     ) -> Self {
21562         self.inner.point_clipping_behavior = point_clipping_behavior;
21563         self
21564     }
21565     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21566     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21567     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePointClippingProperties21568     pub fn build(self) -> PhysicalDevicePointClippingProperties {
21569         self.inner
21570     }
21571 }
21572 #[repr(C)]
21573 #[cfg_attr(feature = "debug", derive(Debug))]
21574 #[derive(Copy, Clone)]
21575 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryDedicatedRequirements.html>"]
21576 pub struct MemoryDedicatedRequirements {
21577     pub s_type: StructureType,
21578     pub p_next: *mut c_void,
21579     pub prefers_dedicated_allocation: Bool32,
21580     pub requires_dedicated_allocation: Bool32,
21581 }
21582 impl ::std::default::Default for MemoryDedicatedRequirements {
default() -> Self21583     fn default() -> Self {
21584         Self {
21585             s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
21586             p_next: ::std::ptr::null_mut(),
21587             prefers_dedicated_allocation: Bool32::default(),
21588             requires_dedicated_allocation: Bool32::default(),
21589         }
21590     }
21591 }
21592 impl MemoryDedicatedRequirements {
builder<'a>() -> MemoryDedicatedRequirementsBuilder<'a>21593     pub fn builder<'a>() -> MemoryDedicatedRequirementsBuilder<'a> {
21594         MemoryDedicatedRequirementsBuilder {
21595             inner: Self::default(),
21596             marker: ::std::marker::PhantomData,
21597         }
21598     }
21599 }
21600 #[repr(transparent)]
21601 pub struct MemoryDedicatedRequirementsBuilder<'a> {
21602     inner: MemoryDedicatedRequirements,
21603     marker: ::std::marker::PhantomData<&'a ()>,
21604 }
21605 unsafe impl ExtendsMemoryRequirements2 for MemoryDedicatedRequirementsBuilder<'_> {}
21606 unsafe impl ExtendsMemoryRequirements2 for MemoryDedicatedRequirements {}
21607 impl<'a> ::std::ops::Deref for MemoryDedicatedRequirementsBuilder<'a> {
21608     type Target = MemoryDedicatedRequirements;
deref(&self) -> &Self::Target21609     fn deref(&self) -> &Self::Target {
21610         &self.inner
21611     }
21612 }
21613 impl<'a> ::std::ops::DerefMut for MemoryDedicatedRequirementsBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21614     fn deref_mut(&mut self) -> &mut Self::Target {
21615         &mut self.inner
21616     }
21617 }
21618 impl<'a> MemoryDedicatedRequirementsBuilder<'a> {
prefers_dedicated_allocation(mut self, prefers_dedicated_allocation: bool) -> Self21619     pub fn prefers_dedicated_allocation(mut self, prefers_dedicated_allocation: bool) -> Self {
21620         self.inner.prefers_dedicated_allocation = prefers_dedicated_allocation.into();
21621         self
21622     }
requires_dedicated_allocation(mut self, requires_dedicated_allocation: bool) -> Self21623     pub fn requires_dedicated_allocation(mut self, requires_dedicated_allocation: bool) -> Self {
21624         self.inner.requires_dedicated_allocation = requires_dedicated_allocation.into();
21625         self
21626     }
21627     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21628     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21629     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryDedicatedRequirements21630     pub fn build(self) -> MemoryDedicatedRequirements {
21631         self.inner
21632     }
21633 }
21634 #[repr(C)]
21635 #[cfg_attr(feature = "debug", derive(Debug))]
21636 #[derive(Copy, Clone)]
21637 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryDedicatedAllocateInfo.html>"]
21638 pub struct MemoryDedicatedAllocateInfo {
21639     pub s_type: StructureType,
21640     pub p_next: *const c_void,
21641     pub image: Image,
21642     pub buffer: Buffer,
21643 }
21644 impl ::std::default::Default for MemoryDedicatedAllocateInfo {
default() -> Self21645     fn default() -> Self {
21646         Self {
21647             s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
21648             p_next: ::std::ptr::null(),
21649             image: Image::default(),
21650             buffer: Buffer::default(),
21651         }
21652     }
21653 }
21654 impl MemoryDedicatedAllocateInfo {
builder<'a>() -> MemoryDedicatedAllocateInfoBuilder<'a>21655     pub fn builder<'a>() -> MemoryDedicatedAllocateInfoBuilder<'a> {
21656         MemoryDedicatedAllocateInfoBuilder {
21657             inner: Self::default(),
21658             marker: ::std::marker::PhantomData,
21659         }
21660     }
21661 }
21662 #[repr(transparent)]
21663 pub struct MemoryDedicatedAllocateInfoBuilder<'a> {
21664     inner: MemoryDedicatedAllocateInfo,
21665     marker: ::std::marker::PhantomData<&'a ()>,
21666 }
21667 unsafe impl ExtendsMemoryAllocateInfo for MemoryDedicatedAllocateInfoBuilder<'_> {}
21668 unsafe impl ExtendsMemoryAllocateInfo for MemoryDedicatedAllocateInfo {}
21669 impl<'a> ::std::ops::Deref for MemoryDedicatedAllocateInfoBuilder<'a> {
21670     type Target = MemoryDedicatedAllocateInfo;
deref(&self) -> &Self::Target21671     fn deref(&self) -> &Self::Target {
21672         &self.inner
21673     }
21674 }
21675 impl<'a> ::std::ops::DerefMut for MemoryDedicatedAllocateInfoBuilder<'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> MemoryDedicatedAllocateInfoBuilder<'a> {
image(mut self, image: Image) -> Self21681     pub fn image(mut self, image: Image) -> Self {
21682         self.inner.image = image;
21683         self
21684     }
buffer(mut self, buffer: Buffer) -> Self21685     pub fn buffer(mut self, buffer: Buffer) -> Self {
21686         self.inner.buffer = buffer;
21687         self
21688     }
21689     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21690     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21691     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryDedicatedAllocateInfo21692     pub fn build(self) -> MemoryDedicatedAllocateInfo {
21693         self.inner
21694     }
21695 }
21696 #[repr(C)]
21697 #[cfg_attr(feature = "debug", derive(Debug))]
21698 #[derive(Copy, Clone)]
21699 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewUsageCreateInfo.html>"]
21700 pub struct ImageViewUsageCreateInfo {
21701     pub s_type: StructureType,
21702     pub p_next: *const c_void,
21703     pub usage: ImageUsageFlags,
21704 }
21705 impl ::std::default::Default for ImageViewUsageCreateInfo {
default() -> Self21706     fn default() -> Self {
21707         Self {
21708             s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
21709             p_next: ::std::ptr::null(),
21710             usage: ImageUsageFlags::default(),
21711         }
21712     }
21713 }
21714 impl ImageViewUsageCreateInfo {
builder<'a>() -> ImageViewUsageCreateInfoBuilder<'a>21715     pub fn builder<'a>() -> ImageViewUsageCreateInfoBuilder<'a> {
21716         ImageViewUsageCreateInfoBuilder {
21717             inner: Self::default(),
21718             marker: ::std::marker::PhantomData,
21719         }
21720     }
21721 }
21722 #[repr(transparent)]
21723 pub struct ImageViewUsageCreateInfoBuilder<'a> {
21724     inner: ImageViewUsageCreateInfo,
21725     marker: ::std::marker::PhantomData<&'a ()>,
21726 }
21727 unsafe impl ExtendsImageViewCreateInfo for ImageViewUsageCreateInfoBuilder<'_> {}
21728 unsafe impl ExtendsImageViewCreateInfo for ImageViewUsageCreateInfo {}
21729 impl<'a> ::std::ops::Deref for ImageViewUsageCreateInfoBuilder<'a> {
21730     type Target = ImageViewUsageCreateInfo;
deref(&self) -> &Self::Target21731     fn deref(&self) -> &Self::Target {
21732         &self.inner
21733     }
21734 }
21735 impl<'a> ::std::ops::DerefMut for ImageViewUsageCreateInfoBuilder<'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> ImageViewUsageCreateInfoBuilder<'a> {
usage(mut self, usage: ImageUsageFlags) -> Self21741     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
21742         self.inner.usage = usage;
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) -> ImageViewUsageCreateInfo21748     pub fn build(self) -> ImageViewUsageCreateInfo {
21749         self.inner
21750     }
21751 }
21752 #[repr(C)]
21753 #[cfg_attr(feature = "debug", derive(Debug))]
21754 #[derive(Copy, Clone)]
21755 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>"]
21756 pub struct PipelineTessellationDomainOriginStateCreateInfo {
21757     pub s_type: StructureType,
21758     pub p_next: *const c_void,
21759     pub domain_origin: TessellationDomainOrigin,
21760 }
21761 impl ::std::default::Default for PipelineTessellationDomainOriginStateCreateInfo {
default() -> Self21762     fn default() -> Self {
21763         Self {
21764             s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
21765             p_next: ::std::ptr::null(),
21766             domain_origin: TessellationDomainOrigin::default(),
21767         }
21768     }
21769 }
21770 impl PipelineTessellationDomainOriginStateCreateInfo {
builder<'a>() -> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a>21771     pub fn builder<'a>() -> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
21772         PipelineTessellationDomainOriginStateCreateInfoBuilder {
21773             inner: Self::default(),
21774             marker: ::std::marker::PhantomData,
21775         }
21776     }
21777 }
21778 #[repr(transparent)]
21779 pub struct PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
21780     inner: PipelineTessellationDomainOriginStateCreateInfo,
21781     marker: ::std::marker::PhantomData<&'a ()>,
21782 }
21783 unsafe impl ExtendsPipelineTessellationStateCreateInfo
21784     for PipelineTessellationDomainOriginStateCreateInfoBuilder<'_>
21785 {
21786 }
21787 unsafe impl ExtendsPipelineTessellationStateCreateInfo
21788     for PipelineTessellationDomainOriginStateCreateInfo
21789 {
21790 }
21791 impl<'a> ::std::ops::Deref for PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
21792     type Target = PipelineTessellationDomainOriginStateCreateInfo;
deref(&self) -> &Self::Target21793     fn deref(&self) -> &Self::Target {
21794         &self.inner
21795     }
21796 }
21797 impl<'a> ::std::ops::DerefMut for PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21798     fn deref_mut(&mut self) -> &mut Self::Target {
21799         &mut self.inner
21800     }
21801 }
21802 impl<'a> PipelineTessellationDomainOriginStateCreateInfoBuilder<'a> {
domain_origin(mut self, domain_origin: TessellationDomainOrigin) -> Self21803     pub fn domain_origin(mut self, domain_origin: TessellationDomainOrigin) -> Self {
21804         self.inner.domain_origin = domain_origin;
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) -> PipelineTessellationDomainOriginStateCreateInfo21810     pub fn build(self) -> PipelineTessellationDomainOriginStateCreateInfo {
21811         self.inner
21812     }
21813 }
21814 #[repr(C)]
21815 #[cfg_attr(feature = "debug", derive(Debug))]
21816 #[derive(Copy, Clone)]
21817 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversionInfo.html>"]
21818 pub struct SamplerYcbcrConversionInfo {
21819     pub s_type: StructureType,
21820     pub p_next: *const c_void,
21821     pub conversion: SamplerYcbcrConversion,
21822 }
21823 impl ::std::default::Default for SamplerYcbcrConversionInfo {
default() -> Self21824     fn default() -> Self {
21825         Self {
21826             s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
21827             p_next: ::std::ptr::null(),
21828             conversion: SamplerYcbcrConversion::default(),
21829         }
21830     }
21831 }
21832 impl SamplerYcbcrConversionInfo {
builder<'a>() -> SamplerYcbcrConversionInfoBuilder<'a>21833     pub fn builder<'a>() -> SamplerYcbcrConversionInfoBuilder<'a> {
21834         SamplerYcbcrConversionInfoBuilder {
21835             inner: Self::default(),
21836             marker: ::std::marker::PhantomData,
21837         }
21838     }
21839 }
21840 #[repr(transparent)]
21841 pub struct SamplerYcbcrConversionInfoBuilder<'a> {
21842     inner: SamplerYcbcrConversionInfo,
21843     marker: ::std::marker::PhantomData<&'a ()>,
21844 }
21845 unsafe impl ExtendsSamplerCreateInfo for SamplerYcbcrConversionInfoBuilder<'_> {}
21846 unsafe impl ExtendsSamplerCreateInfo for SamplerYcbcrConversionInfo {}
21847 unsafe impl ExtendsImageViewCreateInfo for SamplerYcbcrConversionInfoBuilder<'_> {}
21848 unsafe impl ExtendsImageViewCreateInfo for SamplerYcbcrConversionInfo {}
21849 impl<'a> ::std::ops::Deref for SamplerYcbcrConversionInfoBuilder<'a> {
21850     type Target = SamplerYcbcrConversionInfo;
deref(&self) -> &Self::Target21851     fn deref(&self) -> &Self::Target {
21852         &self.inner
21853     }
21854 }
21855 impl<'a> ::std::ops::DerefMut for SamplerYcbcrConversionInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21856     fn deref_mut(&mut self) -> &mut Self::Target {
21857         &mut self.inner
21858     }
21859 }
21860 impl<'a> SamplerYcbcrConversionInfoBuilder<'a> {
conversion(mut self, conversion: SamplerYcbcrConversion) -> Self21861     pub fn conversion(mut self, conversion: SamplerYcbcrConversion) -> Self {
21862         self.inner.conversion = conversion;
21863         self
21864     }
21865     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21866     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21867     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerYcbcrConversionInfo21868     pub fn build(self) -> SamplerYcbcrConversionInfo {
21869         self.inner
21870     }
21871 }
21872 #[repr(C)]
21873 #[cfg_attr(feature = "debug", derive(Debug))]
21874 #[derive(Copy, Clone)]
21875 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversionCreateInfo.html>"]
21876 pub struct SamplerYcbcrConversionCreateInfo {
21877     pub s_type: StructureType,
21878     pub p_next: *const c_void,
21879     pub format: Format,
21880     pub ycbcr_model: SamplerYcbcrModelConversion,
21881     pub ycbcr_range: SamplerYcbcrRange,
21882     pub components: ComponentMapping,
21883     pub x_chroma_offset: ChromaLocation,
21884     pub y_chroma_offset: ChromaLocation,
21885     pub chroma_filter: Filter,
21886     pub force_explicit_reconstruction: Bool32,
21887 }
21888 impl ::std::default::Default for SamplerYcbcrConversionCreateInfo {
default() -> Self21889     fn default() -> Self {
21890         Self {
21891             s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
21892             p_next: ::std::ptr::null(),
21893             format: Format::default(),
21894             ycbcr_model: SamplerYcbcrModelConversion::default(),
21895             ycbcr_range: SamplerYcbcrRange::default(),
21896             components: ComponentMapping::default(),
21897             x_chroma_offset: ChromaLocation::default(),
21898             y_chroma_offset: ChromaLocation::default(),
21899             chroma_filter: Filter::default(),
21900             force_explicit_reconstruction: Bool32::default(),
21901         }
21902     }
21903 }
21904 impl SamplerYcbcrConversionCreateInfo {
builder<'a>() -> SamplerYcbcrConversionCreateInfoBuilder<'a>21905     pub fn builder<'a>() -> SamplerYcbcrConversionCreateInfoBuilder<'a> {
21906         SamplerYcbcrConversionCreateInfoBuilder {
21907             inner: Self::default(),
21908             marker: ::std::marker::PhantomData,
21909         }
21910     }
21911 }
21912 #[repr(transparent)]
21913 pub struct SamplerYcbcrConversionCreateInfoBuilder<'a> {
21914     inner: SamplerYcbcrConversionCreateInfo,
21915     marker: ::std::marker::PhantomData<&'a ()>,
21916 }
21917 pub unsafe trait ExtendsSamplerYcbcrConversionCreateInfo {}
21918 impl<'a> ::std::ops::Deref for SamplerYcbcrConversionCreateInfoBuilder<'a> {
21919     type Target = SamplerYcbcrConversionCreateInfo;
deref(&self) -> &Self::Target21920     fn deref(&self) -> &Self::Target {
21921         &self.inner
21922     }
21923 }
21924 impl<'a> ::std::ops::DerefMut for SamplerYcbcrConversionCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target21925     fn deref_mut(&mut self) -> &mut Self::Target {
21926         &mut self.inner
21927     }
21928 }
21929 impl<'a> SamplerYcbcrConversionCreateInfoBuilder<'a> {
format(mut self, format: Format) -> Self21930     pub fn format(mut self, format: Format) -> Self {
21931         self.inner.format = format;
21932         self
21933     }
ycbcr_model(mut self, ycbcr_model: SamplerYcbcrModelConversion) -> Self21934     pub fn ycbcr_model(mut self, ycbcr_model: SamplerYcbcrModelConversion) -> Self {
21935         self.inner.ycbcr_model = ycbcr_model;
21936         self
21937     }
ycbcr_range(mut self, ycbcr_range: SamplerYcbcrRange) -> Self21938     pub fn ycbcr_range(mut self, ycbcr_range: SamplerYcbcrRange) -> Self {
21939         self.inner.ycbcr_range = ycbcr_range;
21940         self
21941     }
components(mut self, components: ComponentMapping) -> Self21942     pub fn components(mut self, components: ComponentMapping) -> Self {
21943         self.inner.components = components;
21944         self
21945     }
x_chroma_offset(mut self, x_chroma_offset: ChromaLocation) -> Self21946     pub fn x_chroma_offset(mut self, x_chroma_offset: ChromaLocation) -> Self {
21947         self.inner.x_chroma_offset = x_chroma_offset;
21948         self
21949     }
y_chroma_offset(mut self, y_chroma_offset: ChromaLocation) -> Self21950     pub fn y_chroma_offset(mut self, y_chroma_offset: ChromaLocation) -> Self {
21951         self.inner.y_chroma_offset = y_chroma_offset;
21952         self
21953     }
chroma_filter(mut self, chroma_filter: Filter) -> Self21954     pub fn chroma_filter(mut self, chroma_filter: Filter) -> Self {
21955         self.inner.chroma_filter = chroma_filter;
21956         self
21957     }
force_explicit_reconstruction(mut self, force_explicit_reconstruction: bool) -> Self21958     pub fn force_explicit_reconstruction(mut self, force_explicit_reconstruction: bool) -> Self {
21959         self.inner.force_explicit_reconstruction = force_explicit_reconstruction.into();
21960         self
21961     }
21962     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
21963     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
21964     #[doc = r" valid extension structs can be pushed into the chain."]
21965     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
21966     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSamplerYcbcrConversionCreateInfo>( mut self, next: &'a mut T, ) -> Self21967     pub fn push_next<T: ExtendsSamplerYcbcrConversionCreateInfo>(
21968         mut self,
21969         next: &'a mut T,
21970     ) -> Self {
21971         unsafe {
21972             let next_ptr = next as *mut T as *mut BaseOutStructure;
21973             let last_next = ptr_chain_iter(next).last().unwrap();
21974             (*last_next).p_next = self.inner.p_next as _;
21975             self.inner.p_next = next_ptr as _;
21976         }
21977         self
21978     }
21979     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
21980     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
21981     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerYcbcrConversionCreateInfo21982     pub fn build(self) -> SamplerYcbcrConversionCreateInfo {
21983         self.inner
21984     }
21985 }
21986 #[repr(C)]
21987 #[cfg_attr(feature = "debug", derive(Debug))]
21988 #[derive(Copy, Clone)]
21989 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindImagePlaneMemoryInfo.html>"]
21990 pub struct BindImagePlaneMemoryInfo {
21991     pub s_type: StructureType,
21992     pub p_next: *const c_void,
21993     pub plane_aspect: ImageAspectFlags,
21994 }
21995 impl ::std::default::Default for BindImagePlaneMemoryInfo {
default() -> Self21996     fn default() -> Self {
21997         Self {
21998             s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
21999             p_next: ::std::ptr::null(),
22000             plane_aspect: ImageAspectFlags::default(),
22001         }
22002     }
22003 }
22004 impl BindImagePlaneMemoryInfo {
builder<'a>() -> BindImagePlaneMemoryInfoBuilder<'a>22005     pub fn builder<'a>() -> BindImagePlaneMemoryInfoBuilder<'a> {
22006         BindImagePlaneMemoryInfoBuilder {
22007             inner: Self::default(),
22008             marker: ::std::marker::PhantomData,
22009         }
22010     }
22011 }
22012 #[repr(transparent)]
22013 pub struct BindImagePlaneMemoryInfoBuilder<'a> {
22014     inner: BindImagePlaneMemoryInfo,
22015     marker: ::std::marker::PhantomData<&'a ()>,
22016 }
22017 unsafe impl ExtendsBindImageMemoryInfo for BindImagePlaneMemoryInfoBuilder<'_> {}
22018 unsafe impl ExtendsBindImageMemoryInfo for BindImagePlaneMemoryInfo {}
22019 impl<'a> ::std::ops::Deref for BindImagePlaneMemoryInfoBuilder<'a> {
22020     type Target = BindImagePlaneMemoryInfo;
deref(&self) -> &Self::Target22021     fn deref(&self) -> &Self::Target {
22022         &self.inner
22023     }
22024 }
22025 impl<'a> ::std::ops::DerefMut for BindImagePlaneMemoryInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22026     fn deref_mut(&mut self) -> &mut Self::Target {
22027         &mut self.inner
22028     }
22029 }
22030 impl<'a> BindImagePlaneMemoryInfoBuilder<'a> {
plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self22031     pub fn plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self {
22032         self.inner.plane_aspect = plane_aspect;
22033         self
22034     }
22035     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22036     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22037     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindImagePlaneMemoryInfo22038     pub fn build(self) -> BindImagePlaneMemoryInfo {
22039         self.inner
22040     }
22041 }
22042 #[repr(C)]
22043 #[cfg_attr(feature = "debug", derive(Debug))]
22044 #[derive(Copy, Clone)]
22045 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImagePlaneMemoryRequirementsInfo.html>"]
22046 pub struct ImagePlaneMemoryRequirementsInfo {
22047     pub s_type: StructureType,
22048     pub p_next: *const c_void,
22049     pub plane_aspect: ImageAspectFlags,
22050 }
22051 impl ::std::default::Default for ImagePlaneMemoryRequirementsInfo {
default() -> Self22052     fn default() -> Self {
22053         Self {
22054             s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
22055             p_next: ::std::ptr::null(),
22056             plane_aspect: ImageAspectFlags::default(),
22057         }
22058     }
22059 }
22060 impl ImagePlaneMemoryRequirementsInfo {
builder<'a>() -> ImagePlaneMemoryRequirementsInfoBuilder<'a>22061     pub fn builder<'a>() -> ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22062         ImagePlaneMemoryRequirementsInfoBuilder {
22063             inner: Self::default(),
22064             marker: ::std::marker::PhantomData,
22065         }
22066     }
22067 }
22068 #[repr(transparent)]
22069 pub struct ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22070     inner: ImagePlaneMemoryRequirementsInfo,
22071     marker: ::std::marker::PhantomData<&'a ()>,
22072 }
22073 unsafe impl ExtendsImageMemoryRequirementsInfo2 for ImagePlaneMemoryRequirementsInfoBuilder<'_> {}
22074 unsafe impl ExtendsImageMemoryRequirementsInfo2 for ImagePlaneMemoryRequirementsInfo {}
22075 impl<'a> ::std::ops::Deref for ImagePlaneMemoryRequirementsInfoBuilder<'a> {
22076     type Target = ImagePlaneMemoryRequirementsInfo;
deref(&self) -> &Self::Target22077     fn deref(&self) -> &Self::Target {
22078         &self.inner
22079     }
22080 }
22081 impl<'a> ::std::ops::DerefMut for ImagePlaneMemoryRequirementsInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22082     fn deref_mut(&mut self) -> &mut Self::Target {
22083         &mut self.inner
22084     }
22085 }
22086 impl<'a> ImagePlaneMemoryRequirementsInfoBuilder<'a> {
plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self22087     pub fn plane_aspect(mut self, plane_aspect: ImageAspectFlags) -> Self {
22088         self.inner.plane_aspect = plane_aspect;
22089         self
22090     }
22091     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22092     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22093     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImagePlaneMemoryRequirementsInfo22094     pub fn build(self) -> ImagePlaneMemoryRequirementsInfo {
22095         self.inner
22096     }
22097 }
22098 #[repr(C)]
22099 #[cfg_attr(feature = "debug", derive(Debug))]
22100 #[derive(Copy, Clone)]
22101 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>"]
22102 pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
22103     pub s_type: StructureType,
22104     pub p_next: *mut c_void,
22105     pub sampler_ycbcr_conversion: Bool32,
22106 }
22107 impl ::std::default::Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
default() -> Self22108     fn default() -> Self {
22109         Self {
22110             s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
22111             p_next: ::std::ptr::null_mut(),
22112             sampler_ycbcr_conversion: Bool32::default(),
22113         }
22114     }
22115 }
22116 impl PhysicalDeviceSamplerYcbcrConversionFeatures {
builder<'a>() -> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a>22117     pub fn builder<'a>() -> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22118         PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder {
22119             inner: Self::default(),
22120             marker: ::std::marker::PhantomData,
22121         }
22122     }
22123 }
22124 #[repr(transparent)]
22125 pub struct PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22126     inner: PhysicalDeviceSamplerYcbcrConversionFeatures,
22127     marker: ::std::marker::PhantomData<&'a ()>,
22128 }
22129 unsafe impl ExtendsPhysicalDeviceFeatures2
22130     for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'_>
22131 {
22132 }
22133 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSamplerYcbcrConversionFeatures {}
22134 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'_> {}
22135 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSamplerYcbcrConversionFeatures {}
22136 impl<'a> ::std::ops::Deref for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
22137     type Target = PhysicalDeviceSamplerYcbcrConversionFeatures;
deref(&self) -> &Self::Target22138     fn deref(&self) -> &Self::Target {
22139         &self.inner
22140     }
22141 }
22142 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22143     fn deref_mut(&mut self) -> &mut Self::Target {
22144         &mut self.inner
22145     }
22146 }
22147 impl<'a> PhysicalDeviceSamplerYcbcrConversionFeaturesBuilder<'a> {
sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self22148     pub fn sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self {
22149         self.inner.sampler_ycbcr_conversion = sampler_ycbcr_conversion.into();
22150         self
22151     }
22152     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22153     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22154     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSamplerYcbcrConversionFeatures22155     pub fn build(self) -> PhysicalDeviceSamplerYcbcrConversionFeatures {
22156         self.inner
22157     }
22158 }
22159 #[repr(C)]
22160 #[cfg_attr(feature = "debug", derive(Debug))]
22161 #[derive(Copy, Clone)]
22162 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>"]
22163 pub struct SamplerYcbcrConversionImageFormatProperties {
22164     pub s_type: StructureType,
22165     pub p_next: *mut c_void,
22166     pub combined_image_sampler_descriptor_count: u32,
22167 }
22168 impl ::std::default::Default for SamplerYcbcrConversionImageFormatProperties {
default() -> Self22169     fn default() -> Self {
22170         Self {
22171             s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
22172             p_next: ::std::ptr::null_mut(),
22173             combined_image_sampler_descriptor_count: u32::default(),
22174         }
22175     }
22176 }
22177 impl SamplerYcbcrConversionImageFormatProperties {
builder<'a>() -> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a>22178     pub fn builder<'a>() -> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22179         SamplerYcbcrConversionImageFormatPropertiesBuilder {
22180             inner: Self::default(),
22181             marker: ::std::marker::PhantomData,
22182         }
22183     }
22184 }
22185 #[repr(transparent)]
22186 pub struct SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22187     inner: SamplerYcbcrConversionImageFormatProperties,
22188     marker: ::std::marker::PhantomData<&'a ()>,
22189 }
22190 unsafe impl ExtendsImageFormatProperties2
22191     for SamplerYcbcrConversionImageFormatPropertiesBuilder<'_>
22192 {
22193 }
22194 unsafe impl ExtendsImageFormatProperties2 for SamplerYcbcrConversionImageFormatProperties {}
22195 impl<'a> ::std::ops::Deref for SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
22196     type Target = SamplerYcbcrConversionImageFormatProperties;
deref(&self) -> &Self::Target22197     fn deref(&self) -> &Self::Target {
22198         &self.inner
22199     }
22200 }
22201 impl<'a> ::std::ops::DerefMut for SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22202     fn deref_mut(&mut self) -> &mut Self::Target {
22203         &mut self.inner
22204     }
22205 }
22206 impl<'a> SamplerYcbcrConversionImageFormatPropertiesBuilder<'a> {
combined_image_sampler_descriptor_count( mut self, combined_image_sampler_descriptor_count: u32, ) -> Self22207     pub fn combined_image_sampler_descriptor_count(
22208         mut self,
22209         combined_image_sampler_descriptor_count: u32,
22210     ) -> Self {
22211         self.inner.combined_image_sampler_descriptor_count =
22212             combined_image_sampler_descriptor_count;
22213         self
22214     }
22215     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22216     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22217     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerYcbcrConversionImageFormatProperties22218     pub fn build(self) -> SamplerYcbcrConversionImageFormatProperties {
22219         self.inner
22220     }
22221 }
22222 #[repr(C)]
22223 #[cfg_attr(feature = "debug", derive(Debug))]
22224 #[derive(Copy, Clone)]
22225 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTextureLODGatherFormatPropertiesAMD.html>"]
22226 pub struct TextureLODGatherFormatPropertiesAMD {
22227     pub s_type: StructureType,
22228     pub p_next: *mut c_void,
22229     pub supports_texture_gather_lod_bias_amd: Bool32,
22230 }
22231 impl ::std::default::Default for TextureLODGatherFormatPropertiesAMD {
default() -> Self22232     fn default() -> Self {
22233         Self {
22234             s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
22235             p_next: ::std::ptr::null_mut(),
22236             supports_texture_gather_lod_bias_amd: Bool32::default(),
22237         }
22238     }
22239 }
22240 impl TextureLODGatherFormatPropertiesAMD {
builder<'a>() -> TextureLODGatherFormatPropertiesAMDBuilder<'a>22241     pub fn builder<'a>() -> TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22242         TextureLODGatherFormatPropertiesAMDBuilder {
22243             inner: Self::default(),
22244             marker: ::std::marker::PhantomData,
22245         }
22246     }
22247 }
22248 #[repr(transparent)]
22249 pub struct TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22250     inner: TextureLODGatherFormatPropertiesAMD,
22251     marker: ::std::marker::PhantomData<&'a ()>,
22252 }
22253 unsafe impl ExtendsImageFormatProperties2 for TextureLODGatherFormatPropertiesAMDBuilder<'_> {}
22254 unsafe impl ExtendsImageFormatProperties2 for TextureLODGatherFormatPropertiesAMD {}
22255 impl<'a> ::std::ops::Deref for TextureLODGatherFormatPropertiesAMDBuilder<'a> {
22256     type Target = TextureLODGatherFormatPropertiesAMD;
deref(&self) -> &Self::Target22257     fn deref(&self) -> &Self::Target {
22258         &self.inner
22259     }
22260 }
22261 impl<'a> ::std::ops::DerefMut for TextureLODGatherFormatPropertiesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22262     fn deref_mut(&mut self) -> &mut Self::Target {
22263         &mut self.inner
22264     }
22265 }
22266 impl<'a> TextureLODGatherFormatPropertiesAMDBuilder<'a> {
supports_texture_gather_lod_bias_amd( mut self, supports_texture_gather_lod_bias_amd: bool, ) -> Self22267     pub fn supports_texture_gather_lod_bias_amd(
22268         mut self,
22269         supports_texture_gather_lod_bias_amd: bool,
22270     ) -> Self {
22271         self.inner.supports_texture_gather_lod_bias_amd =
22272             supports_texture_gather_lod_bias_amd.into();
22273         self
22274     }
22275     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22276     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22277     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> TextureLODGatherFormatPropertiesAMD22278     pub fn build(self) -> TextureLODGatherFormatPropertiesAMD {
22279         self.inner
22280     }
22281 }
22282 #[repr(C)]
22283 #[cfg_attr(feature = "debug", derive(Debug))]
22284 #[derive(Copy, Clone)]
22285 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkConditionalRenderingBeginInfoEXT.html>"]
22286 pub struct ConditionalRenderingBeginInfoEXT {
22287     pub s_type: StructureType,
22288     pub p_next: *const c_void,
22289     pub buffer: Buffer,
22290     pub offset: DeviceSize,
22291     pub flags: ConditionalRenderingFlagsEXT,
22292 }
22293 impl ::std::default::Default for ConditionalRenderingBeginInfoEXT {
default() -> Self22294     fn default() -> Self {
22295         Self {
22296             s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
22297             p_next: ::std::ptr::null(),
22298             buffer: Buffer::default(),
22299             offset: DeviceSize::default(),
22300             flags: ConditionalRenderingFlagsEXT::default(),
22301         }
22302     }
22303 }
22304 impl ConditionalRenderingBeginInfoEXT {
builder<'a>() -> ConditionalRenderingBeginInfoEXTBuilder<'a>22305     pub fn builder<'a>() -> ConditionalRenderingBeginInfoEXTBuilder<'a> {
22306         ConditionalRenderingBeginInfoEXTBuilder {
22307             inner: Self::default(),
22308             marker: ::std::marker::PhantomData,
22309         }
22310     }
22311 }
22312 #[repr(transparent)]
22313 pub struct ConditionalRenderingBeginInfoEXTBuilder<'a> {
22314     inner: ConditionalRenderingBeginInfoEXT,
22315     marker: ::std::marker::PhantomData<&'a ()>,
22316 }
22317 impl<'a> ::std::ops::Deref for ConditionalRenderingBeginInfoEXTBuilder<'a> {
22318     type Target = ConditionalRenderingBeginInfoEXT;
deref(&self) -> &Self::Target22319     fn deref(&self) -> &Self::Target {
22320         &self.inner
22321     }
22322 }
22323 impl<'a> ::std::ops::DerefMut for ConditionalRenderingBeginInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22324     fn deref_mut(&mut self) -> &mut Self::Target {
22325         &mut self.inner
22326     }
22327 }
22328 impl<'a> ConditionalRenderingBeginInfoEXTBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self22329     pub fn buffer(mut self, buffer: Buffer) -> Self {
22330         self.inner.buffer = buffer;
22331         self
22332     }
offset(mut self, offset: DeviceSize) -> Self22333     pub fn offset(mut self, offset: DeviceSize) -> Self {
22334         self.inner.offset = offset;
22335         self
22336     }
flags(mut self, flags: ConditionalRenderingFlagsEXT) -> Self22337     pub fn flags(mut self, flags: ConditionalRenderingFlagsEXT) -> Self {
22338         self.inner.flags = flags;
22339         self
22340     }
22341     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22342     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22343     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ConditionalRenderingBeginInfoEXT22344     pub fn build(self) -> ConditionalRenderingBeginInfoEXT {
22345         self.inner
22346     }
22347 }
22348 #[repr(C)]
22349 #[cfg_attr(feature = "debug", derive(Debug))]
22350 #[derive(Copy, Clone)]
22351 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkProtectedSubmitInfo.html>"]
22352 pub struct ProtectedSubmitInfo {
22353     pub s_type: StructureType,
22354     pub p_next: *const c_void,
22355     pub protected_submit: Bool32,
22356 }
22357 impl ::std::default::Default for ProtectedSubmitInfo {
default() -> Self22358     fn default() -> Self {
22359         Self {
22360             s_type: StructureType::PROTECTED_SUBMIT_INFO,
22361             p_next: ::std::ptr::null(),
22362             protected_submit: Bool32::default(),
22363         }
22364     }
22365 }
22366 impl ProtectedSubmitInfo {
builder<'a>() -> ProtectedSubmitInfoBuilder<'a>22367     pub fn builder<'a>() -> ProtectedSubmitInfoBuilder<'a> {
22368         ProtectedSubmitInfoBuilder {
22369             inner: Self::default(),
22370             marker: ::std::marker::PhantomData,
22371         }
22372     }
22373 }
22374 #[repr(transparent)]
22375 pub struct ProtectedSubmitInfoBuilder<'a> {
22376     inner: ProtectedSubmitInfo,
22377     marker: ::std::marker::PhantomData<&'a ()>,
22378 }
22379 unsafe impl ExtendsSubmitInfo for ProtectedSubmitInfoBuilder<'_> {}
22380 unsafe impl ExtendsSubmitInfo for ProtectedSubmitInfo {}
22381 impl<'a> ::std::ops::Deref for ProtectedSubmitInfoBuilder<'a> {
22382     type Target = ProtectedSubmitInfo;
deref(&self) -> &Self::Target22383     fn deref(&self) -> &Self::Target {
22384         &self.inner
22385     }
22386 }
22387 impl<'a> ::std::ops::DerefMut for ProtectedSubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22388     fn deref_mut(&mut self) -> &mut Self::Target {
22389         &mut self.inner
22390     }
22391 }
22392 impl<'a> ProtectedSubmitInfoBuilder<'a> {
protected_submit(mut self, protected_submit: bool) -> Self22393     pub fn protected_submit(mut self, protected_submit: bool) -> Self {
22394         self.inner.protected_submit = protected_submit.into();
22395         self
22396     }
22397     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22398     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22399     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ProtectedSubmitInfo22400     pub fn build(self) -> ProtectedSubmitInfo {
22401         self.inner
22402     }
22403 }
22404 #[repr(C)]
22405 #[cfg_attr(feature = "debug", derive(Debug))]
22406 #[derive(Copy, Clone)]
22407 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>"]
22408 pub struct PhysicalDeviceProtectedMemoryFeatures {
22409     pub s_type: StructureType,
22410     pub p_next: *mut c_void,
22411     pub protected_memory: Bool32,
22412 }
22413 impl ::std::default::Default for PhysicalDeviceProtectedMemoryFeatures {
default() -> Self22414     fn default() -> Self {
22415         Self {
22416             s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
22417             p_next: ::std::ptr::null_mut(),
22418             protected_memory: Bool32::default(),
22419         }
22420     }
22421 }
22422 impl PhysicalDeviceProtectedMemoryFeatures {
builder<'a>() -> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a>22423     pub fn builder<'a>() -> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22424         PhysicalDeviceProtectedMemoryFeaturesBuilder {
22425             inner: Self::default(),
22426             marker: ::std::marker::PhantomData,
22427         }
22428     }
22429 }
22430 #[repr(transparent)]
22431 pub struct PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22432     inner: PhysicalDeviceProtectedMemoryFeatures,
22433     marker: ::std::marker::PhantomData<&'a ()>,
22434 }
22435 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProtectedMemoryFeaturesBuilder<'_> {}
22436 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProtectedMemoryFeatures {}
22437 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProtectedMemoryFeaturesBuilder<'_> {}
22438 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProtectedMemoryFeatures {}
22439 impl<'a> ::std::ops::Deref for PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
22440     type Target = PhysicalDeviceProtectedMemoryFeatures;
deref(&self) -> &Self::Target22441     fn deref(&self) -> &Self::Target {
22442         &self.inner
22443     }
22444 }
22445 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22446     fn deref_mut(&mut self) -> &mut Self::Target {
22447         &mut self.inner
22448     }
22449 }
22450 impl<'a> PhysicalDeviceProtectedMemoryFeaturesBuilder<'a> {
protected_memory(mut self, protected_memory: bool) -> Self22451     pub fn protected_memory(mut self, protected_memory: bool) -> Self {
22452         self.inner.protected_memory = protected_memory.into();
22453         self
22454     }
22455     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22456     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22457     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProtectedMemoryFeatures22458     pub fn build(self) -> PhysicalDeviceProtectedMemoryFeatures {
22459         self.inner
22460     }
22461 }
22462 #[repr(C)]
22463 #[cfg_attr(feature = "debug", derive(Debug))]
22464 #[derive(Copy, Clone)]
22465 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>"]
22466 pub struct PhysicalDeviceProtectedMemoryProperties {
22467     pub s_type: StructureType,
22468     pub p_next: *mut c_void,
22469     pub protected_no_fault: Bool32,
22470 }
22471 impl ::std::default::Default for PhysicalDeviceProtectedMemoryProperties {
default() -> Self22472     fn default() -> Self {
22473         Self {
22474             s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
22475             p_next: ::std::ptr::null_mut(),
22476             protected_no_fault: Bool32::default(),
22477         }
22478     }
22479 }
22480 impl PhysicalDeviceProtectedMemoryProperties {
builder<'a>() -> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a>22481     pub fn builder<'a>() -> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22482         PhysicalDeviceProtectedMemoryPropertiesBuilder {
22483             inner: Self::default(),
22484             marker: ::std::marker::PhantomData,
22485         }
22486     }
22487 }
22488 #[repr(transparent)]
22489 pub struct PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22490     inner: PhysicalDeviceProtectedMemoryProperties,
22491     marker: ::std::marker::PhantomData<&'a ()>,
22492 }
22493 unsafe impl ExtendsPhysicalDeviceProperties2
22494     for PhysicalDeviceProtectedMemoryPropertiesBuilder<'_>
22495 {
22496 }
22497 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceProtectedMemoryProperties {}
22498 impl<'a> ::std::ops::Deref for PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
22499     type Target = PhysicalDeviceProtectedMemoryProperties;
deref(&self) -> &Self::Target22500     fn deref(&self) -> &Self::Target {
22501         &self.inner
22502     }
22503 }
22504 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22505     fn deref_mut(&mut self) -> &mut Self::Target {
22506         &mut self.inner
22507     }
22508 }
22509 impl<'a> PhysicalDeviceProtectedMemoryPropertiesBuilder<'a> {
protected_no_fault(mut self, protected_no_fault: bool) -> Self22510     pub fn protected_no_fault(mut self, protected_no_fault: bool) -> Self {
22511         self.inner.protected_no_fault = protected_no_fault.into();
22512         self
22513     }
22514     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22515     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22516     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProtectedMemoryProperties22517     pub fn build(self) -> PhysicalDeviceProtectedMemoryProperties {
22518         self.inner
22519     }
22520 }
22521 #[repr(C)]
22522 #[cfg_attr(feature = "debug", derive(Debug))]
22523 #[derive(Copy, Clone)]
22524 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueInfo2.html>"]
22525 pub struct DeviceQueueInfo2 {
22526     pub s_type: StructureType,
22527     pub p_next: *const c_void,
22528     pub flags: DeviceQueueCreateFlags,
22529     pub queue_family_index: u32,
22530     pub queue_index: u32,
22531 }
22532 impl ::std::default::Default for DeviceQueueInfo2 {
default() -> Self22533     fn default() -> Self {
22534         Self {
22535             s_type: StructureType::DEVICE_QUEUE_INFO_2,
22536             p_next: ::std::ptr::null(),
22537             flags: DeviceQueueCreateFlags::default(),
22538             queue_family_index: u32::default(),
22539             queue_index: u32::default(),
22540         }
22541     }
22542 }
22543 impl DeviceQueueInfo2 {
builder<'a>() -> DeviceQueueInfo2Builder<'a>22544     pub fn builder<'a>() -> DeviceQueueInfo2Builder<'a> {
22545         DeviceQueueInfo2Builder {
22546             inner: Self::default(),
22547             marker: ::std::marker::PhantomData,
22548         }
22549     }
22550 }
22551 #[repr(transparent)]
22552 pub struct DeviceQueueInfo2Builder<'a> {
22553     inner: DeviceQueueInfo2,
22554     marker: ::std::marker::PhantomData<&'a ()>,
22555 }
22556 impl<'a> ::std::ops::Deref for DeviceQueueInfo2Builder<'a> {
22557     type Target = DeviceQueueInfo2;
deref(&self) -> &Self::Target22558     fn deref(&self) -> &Self::Target {
22559         &self.inner
22560     }
22561 }
22562 impl<'a> ::std::ops::DerefMut for DeviceQueueInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target22563     fn deref_mut(&mut self) -> &mut Self::Target {
22564         &mut self.inner
22565     }
22566 }
22567 impl<'a> DeviceQueueInfo2Builder<'a> {
flags(mut self, flags: DeviceQueueCreateFlags) -> Self22568     pub fn flags(mut self, flags: DeviceQueueCreateFlags) -> Self {
22569         self.inner.flags = flags;
22570         self
22571     }
queue_family_index(mut self, queue_family_index: u32) -> Self22572     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
22573         self.inner.queue_family_index = queue_family_index;
22574         self
22575     }
queue_index(mut self, queue_index: u32) -> Self22576     pub fn queue_index(mut self, queue_index: u32) -> Self {
22577         self.inner.queue_index = queue_index;
22578         self
22579     }
22580     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22581     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22582     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceQueueInfo222583     pub fn build(self) -> DeviceQueueInfo2 {
22584         self.inner
22585     }
22586 }
22587 #[repr(C)]
22588 #[cfg_attr(feature = "debug", derive(Debug))]
22589 #[derive(Copy, Clone)]
22590 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>"]
22591 pub struct PipelineCoverageToColorStateCreateInfoNV {
22592     pub s_type: StructureType,
22593     pub p_next: *const c_void,
22594     pub flags: PipelineCoverageToColorStateCreateFlagsNV,
22595     pub coverage_to_color_enable: Bool32,
22596     pub coverage_to_color_location: u32,
22597 }
22598 impl ::std::default::Default for PipelineCoverageToColorStateCreateInfoNV {
default() -> Self22599     fn default() -> Self {
22600         Self {
22601             s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
22602             p_next: ::std::ptr::null(),
22603             flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
22604             coverage_to_color_enable: Bool32::default(),
22605             coverage_to_color_location: u32::default(),
22606         }
22607     }
22608 }
22609 impl PipelineCoverageToColorStateCreateInfoNV {
builder<'a>() -> PipelineCoverageToColorStateCreateInfoNVBuilder<'a>22610     pub fn builder<'a>() -> PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22611         PipelineCoverageToColorStateCreateInfoNVBuilder {
22612             inner: Self::default(),
22613             marker: ::std::marker::PhantomData,
22614         }
22615     }
22616 }
22617 #[repr(transparent)]
22618 pub struct PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22619     inner: PipelineCoverageToColorStateCreateInfoNV,
22620     marker: ::std::marker::PhantomData<&'a ()>,
22621 }
22622 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
22623     for PipelineCoverageToColorStateCreateInfoNVBuilder<'_>
22624 {
22625 }
22626 unsafe impl ExtendsPipelineMultisampleStateCreateInfo for PipelineCoverageToColorStateCreateInfoNV {}
22627 impl<'a> ::std::ops::Deref for PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
22628     type Target = PipelineCoverageToColorStateCreateInfoNV;
deref(&self) -> &Self::Target22629     fn deref(&self) -> &Self::Target {
22630         &self.inner
22631     }
22632 }
22633 impl<'a> ::std::ops::DerefMut for PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22634     fn deref_mut(&mut self) -> &mut Self::Target {
22635         &mut self.inner
22636     }
22637 }
22638 impl<'a> PipelineCoverageToColorStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCoverageToColorStateCreateFlagsNV) -> Self22639     pub fn flags(mut self, flags: PipelineCoverageToColorStateCreateFlagsNV) -> Self {
22640         self.inner.flags = flags;
22641         self
22642     }
coverage_to_color_enable(mut self, coverage_to_color_enable: bool) -> Self22643     pub fn coverage_to_color_enable(mut self, coverage_to_color_enable: bool) -> Self {
22644         self.inner.coverage_to_color_enable = coverage_to_color_enable.into();
22645         self
22646     }
coverage_to_color_location(mut self, coverage_to_color_location: u32) -> Self22647     pub fn coverage_to_color_location(mut self, coverage_to_color_location: u32) -> Self {
22648         self.inner.coverage_to_color_location = coverage_to_color_location;
22649         self
22650     }
22651     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22652     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22653     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCoverageToColorStateCreateInfoNV22654     pub fn build(self) -> PipelineCoverageToColorStateCreateInfoNV {
22655         self.inner
22656     }
22657 }
22658 #[repr(C)]
22659 #[cfg_attr(feature = "debug", derive(Debug))]
22660 #[derive(Copy, Clone)]
22661 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>"]
22662 pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
22663     pub s_type: StructureType,
22664     pub p_next: *mut c_void,
22665     pub filter_minmax_single_component_formats: Bool32,
22666     pub filter_minmax_image_component_mapping: Bool32,
22667 }
22668 impl ::std::default::Default for PhysicalDeviceSamplerFilterMinmaxProperties {
default() -> Self22669     fn default() -> Self {
22670         Self {
22671             s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
22672             p_next: ::std::ptr::null_mut(),
22673             filter_minmax_single_component_formats: Bool32::default(),
22674             filter_minmax_image_component_mapping: Bool32::default(),
22675         }
22676     }
22677 }
22678 impl PhysicalDeviceSamplerFilterMinmaxProperties {
builder<'a>() -> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a>22679     pub fn builder<'a>() -> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22680         PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder {
22681             inner: Self::default(),
22682             marker: ::std::marker::PhantomData,
22683         }
22684     }
22685 }
22686 #[repr(transparent)]
22687 pub struct PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22688     inner: PhysicalDeviceSamplerFilterMinmaxProperties,
22689     marker: ::std::marker::PhantomData<&'a ()>,
22690 }
22691 unsafe impl ExtendsPhysicalDeviceProperties2
22692     for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'_>
22693 {
22694 }
22695 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSamplerFilterMinmaxProperties {}
22696 impl<'a> ::std::ops::Deref for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
22697     type Target = PhysicalDeviceSamplerFilterMinmaxProperties;
deref(&self) -> &Self::Target22698     fn deref(&self) -> &Self::Target {
22699         &self.inner
22700     }
22701 }
22702 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22703     fn deref_mut(&mut self) -> &mut Self::Target {
22704         &mut self.inner
22705     }
22706 }
22707 impl<'a> PhysicalDeviceSamplerFilterMinmaxPropertiesBuilder<'a> {
filter_minmax_single_component_formats( mut self, filter_minmax_single_component_formats: bool, ) -> Self22708     pub fn filter_minmax_single_component_formats(
22709         mut self,
22710         filter_minmax_single_component_formats: bool,
22711     ) -> Self {
22712         self.inner.filter_minmax_single_component_formats =
22713             filter_minmax_single_component_formats.into();
22714         self
22715     }
filter_minmax_image_component_mapping( mut self, filter_minmax_image_component_mapping: bool, ) -> Self22716     pub fn filter_minmax_image_component_mapping(
22717         mut self,
22718         filter_minmax_image_component_mapping: bool,
22719     ) -> Self {
22720         self.inner.filter_minmax_image_component_mapping =
22721             filter_minmax_image_component_mapping.into();
22722         self
22723     }
22724     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22725     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22726     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSamplerFilterMinmaxProperties22727     pub fn build(self) -> PhysicalDeviceSamplerFilterMinmaxProperties {
22728         self.inner
22729     }
22730 }
22731 #[repr(C)]
22732 #[cfg_attr(feature = "debug", derive(Debug))]
22733 #[derive(Copy, Clone, Default)]
22734 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleLocationEXT.html>"]
22735 pub struct SampleLocationEXT {
22736     pub x: f32,
22737     pub y: f32,
22738 }
22739 impl SampleLocationEXT {
builder<'a>() -> SampleLocationEXTBuilder<'a>22740     pub fn builder<'a>() -> SampleLocationEXTBuilder<'a> {
22741         SampleLocationEXTBuilder {
22742             inner: Self::default(),
22743             marker: ::std::marker::PhantomData,
22744         }
22745     }
22746 }
22747 #[repr(transparent)]
22748 pub struct SampleLocationEXTBuilder<'a> {
22749     inner: SampleLocationEXT,
22750     marker: ::std::marker::PhantomData<&'a ()>,
22751 }
22752 impl<'a> ::std::ops::Deref for SampleLocationEXTBuilder<'a> {
22753     type Target = SampleLocationEXT;
deref(&self) -> &Self::Target22754     fn deref(&self) -> &Self::Target {
22755         &self.inner
22756     }
22757 }
22758 impl<'a> ::std::ops::DerefMut for SampleLocationEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22759     fn deref_mut(&mut self) -> &mut Self::Target {
22760         &mut self.inner
22761     }
22762 }
22763 impl<'a> SampleLocationEXTBuilder<'a> {
x(mut self, x: f32) -> Self22764     pub fn x(mut self, x: f32) -> Self {
22765         self.inner.x = x;
22766         self
22767     }
y(mut self, y: f32) -> Self22768     pub fn y(mut self, y: f32) -> Self {
22769         self.inner.y = y;
22770         self
22771     }
22772     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22773     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22774     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SampleLocationEXT22775     pub fn build(self) -> SampleLocationEXT {
22776         self.inner
22777     }
22778 }
22779 #[repr(C)]
22780 #[cfg_attr(feature = "debug", derive(Debug))]
22781 #[derive(Copy, Clone)]
22782 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleLocationsInfoEXT.html>"]
22783 pub struct SampleLocationsInfoEXT {
22784     pub s_type: StructureType,
22785     pub p_next: *const c_void,
22786     pub sample_locations_per_pixel: SampleCountFlags,
22787     pub sample_location_grid_size: Extent2D,
22788     pub sample_locations_count: u32,
22789     pub p_sample_locations: *const SampleLocationEXT,
22790 }
22791 impl ::std::default::Default for SampleLocationsInfoEXT {
default() -> Self22792     fn default() -> Self {
22793         Self {
22794             s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
22795             p_next: ::std::ptr::null(),
22796             sample_locations_per_pixel: SampleCountFlags::default(),
22797             sample_location_grid_size: Extent2D::default(),
22798             sample_locations_count: u32::default(),
22799             p_sample_locations: ::std::ptr::null(),
22800         }
22801     }
22802 }
22803 impl SampleLocationsInfoEXT {
builder<'a>() -> SampleLocationsInfoEXTBuilder<'a>22804     pub fn builder<'a>() -> SampleLocationsInfoEXTBuilder<'a> {
22805         SampleLocationsInfoEXTBuilder {
22806             inner: Self::default(),
22807             marker: ::std::marker::PhantomData,
22808         }
22809     }
22810 }
22811 #[repr(transparent)]
22812 pub struct SampleLocationsInfoEXTBuilder<'a> {
22813     inner: SampleLocationsInfoEXT,
22814     marker: ::std::marker::PhantomData<&'a ()>,
22815 }
22816 unsafe impl ExtendsImageMemoryBarrier for SampleLocationsInfoEXTBuilder<'_> {}
22817 unsafe impl ExtendsImageMemoryBarrier for SampleLocationsInfoEXT {}
22818 unsafe impl ExtendsImageMemoryBarrier2KHR for SampleLocationsInfoEXTBuilder<'_> {}
22819 unsafe impl ExtendsImageMemoryBarrier2KHR for SampleLocationsInfoEXT {}
22820 impl<'a> ::std::ops::Deref for SampleLocationsInfoEXTBuilder<'a> {
22821     type Target = SampleLocationsInfoEXT;
deref(&self) -> &Self::Target22822     fn deref(&self) -> &Self::Target {
22823         &self.inner
22824     }
22825 }
22826 impl<'a> ::std::ops::DerefMut for SampleLocationsInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22827     fn deref_mut(&mut self) -> &mut Self::Target {
22828         &mut self.inner
22829     }
22830 }
22831 impl<'a> SampleLocationsInfoEXTBuilder<'a> {
sample_locations_per_pixel( mut self, sample_locations_per_pixel: SampleCountFlags, ) -> Self22832     pub fn sample_locations_per_pixel(
22833         mut self,
22834         sample_locations_per_pixel: SampleCountFlags,
22835     ) -> Self {
22836         self.inner.sample_locations_per_pixel = sample_locations_per_pixel;
22837         self
22838     }
sample_location_grid_size(mut self, sample_location_grid_size: Extent2D) -> Self22839     pub fn sample_location_grid_size(mut self, sample_location_grid_size: Extent2D) -> Self {
22840         self.inner.sample_location_grid_size = sample_location_grid_size;
22841         self
22842     }
sample_locations(mut self, sample_locations: &'a [SampleLocationEXT]) -> Self22843     pub fn sample_locations(mut self, sample_locations: &'a [SampleLocationEXT]) -> Self {
22844         self.inner.sample_locations_count = sample_locations.len() as _;
22845         self.inner.p_sample_locations = sample_locations.as_ptr();
22846         self
22847     }
22848     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22849     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22850     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SampleLocationsInfoEXT22851     pub fn build(self) -> SampleLocationsInfoEXT {
22852         self.inner
22853     }
22854 }
22855 #[repr(C)]
22856 #[cfg_attr(feature = "debug", derive(Debug))]
22857 #[derive(Copy, Clone, Default)]
22858 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentSampleLocationsEXT.html>"]
22859 pub struct AttachmentSampleLocationsEXT {
22860     pub attachment_index: u32,
22861     pub sample_locations_info: SampleLocationsInfoEXT,
22862 }
22863 impl AttachmentSampleLocationsEXT {
builder<'a>() -> AttachmentSampleLocationsEXTBuilder<'a>22864     pub fn builder<'a>() -> AttachmentSampleLocationsEXTBuilder<'a> {
22865         AttachmentSampleLocationsEXTBuilder {
22866             inner: Self::default(),
22867             marker: ::std::marker::PhantomData,
22868         }
22869     }
22870 }
22871 #[repr(transparent)]
22872 pub struct AttachmentSampleLocationsEXTBuilder<'a> {
22873     inner: AttachmentSampleLocationsEXT,
22874     marker: ::std::marker::PhantomData<&'a ()>,
22875 }
22876 impl<'a> ::std::ops::Deref for AttachmentSampleLocationsEXTBuilder<'a> {
22877     type Target = AttachmentSampleLocationsEXT;
deref(&self) -> &Self::Target22878     fn deref(&self) -> &Self::Target {
22879         &self.inner
22880     }
22881 }
22882 impl<'a> ::std::ops::DerefMut for AttachmentSampleLocationsEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22883     fn deref_mut(&mut self) -> &mut Self::Target {
22884         &mut self.inner
22885     }
22886 }
22887 impl<'a> AttachmentSampleLocationsEXTBuilder<'a> {
attachment_index(mut self, attachment_index: u32) -> Self22888     pub fn attachment_index(mut self, attachment_index: u32) -> Self {
22889         self.inner.attachment_index = attachment_index;
22890         self
22891     }
sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self22892     pub fn sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self {
22893         self.inner.sample_locations_info = sample_locations_info;
22894         self
22895     }
22896     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22897     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22898     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentSampleLocationsEXT22899     pub fn build(self) -> AttachmentSampleLocationsEXT {
22900         self.inner
22901     }
22902 }
22903 #[repr(C)]
22904 #[cfg_attr(feature = "debug", derive(Debug))]
22905 #[derive(Copy, Clone, Default)]
22906 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassSampleLocationsEXT.html>"]
22907 pub struct SubpassSampleLocationsEXT {
22908     pub subpass_index: u32,
22909     pub sample_locations_info: SampleLocationsInfoEXT,
22910 }
22911 impl SubpassSampleLocationsEXT {
builder<'a>() -> SubpassSampleLocationsEXTBuilder<'a>22912     pub fn builder<'a>() -> SubpassSampleLocationsEXTBuilder<'a> {
22913         SubpassSampleLocationsEXTBuilder {
22914             inner: Self::default(),
22915             marker: ::std::marker::PhantomData,
22916         }
22917     }
22918 }
22919 #[repr(transparent)]
22920 pub struct SubpassSampleLocationsEXTBuilder<'a> {
22921     inner: SubpassSampleLocationsEXT,
22922     marker: ::std::marker::PhantomData<&'a ()>,
22923 }
22924 impl<'a> ::std::ops::Deref for SubpassSampleLocationsEXTBuilder<'a> {
22925     type Target = SubpassSampleLocationsEXT;
deref(&self) -> &Self::Target22926     fn deref(&self) -> &Self::Target {
22927         &self.inner
22928     }
22929 }
22930 impl<'a> ::std::ops::DerefMut for SubpassSampleLocationsEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22931     fn deref_mut(&mut self) -> &mut Self::Target {
22932         &mut self.inner
22933     }
22934 }
22935 impl<'a> SubpassSampleLocationsEXTBuilder<'a> {
subpass_index(mut self, subpass_index: u32) -> Self22936     pub fn subpass_index(mut self, subpass_index: u32) -> Self {
22937         self.inner.subpass_index = subpass_index;
22938         self
22939     }
sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self22940     pub fn sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self {
22941         self.inner.sample_locations_info = sample_locations_info;
22942         self
22943     }
22944     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
22945     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
22946     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassSampleLocationsEXT22947     pub fn build(self) -> SubpassSampleLocationsEXT {
22948         self.inner
22949     }
22950 }
22951 #[repr(C)]
22952 #[cfg_attr(feature = "debug", derive(Debug))]
22953 #[derive(Copy, Clone)]
22954 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>"]
22955 pub struct RenderPassSampleLocationsBeginInfoEXT {
22956     pub s_type: StructureType,
22957     pub p_next: *const c_void,
22958     pub attachment_initial_sample_locations_count: u32,
22959     pub p_attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
22960     pub post_subpass_sample_locations_count: u32,
22961     pub p_post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
22962 }
22963 impl ::std::default::Default for RenderPassSampleLocationsBeginInfoEXT {
default() -> Self22964     fn default() -> Self {
22965         Self {
22966             s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
22967             p_next: ::std::ptr::null(),
22968             attachment_initial_sample_locations_count: u32::default(),
22969             p_attachment_initial_sample_locations: ::std::ptr::null(),
22970             post_subpass_sample_locations_count: u32::default(),
22971             p_post_subpass_sample_locations: ::std::ptr::null(),
22972         }
22973     }
22974 }
22975 impl RenderPassSampleLocationsBeginInfoEXT {
builder<'a>() -> RenderPassSampleLocationsBeginInfoEXTBuilder<'a>22976     pub fn builder<'a>() -> RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
22977         RenderPassSampleLocationsBeginInfoEXTBuilder {
22978             inner: Self::default(),
22979             marker: ::std::marker::PhantomData,
22980         }
22981     }
22982 }
22983 #[repr(transparent)]
22984 pub struct RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
22985     inner: RenderPassSampleLocationsBeginInfoEXT,
22986     marker: ::std::marker::PhantomData<&'a ()>,
22987 }
22988 unsafe impl ExtendsRenderPassBeginInfo for RenderPassSampleLocationsBeginInfoEXTBuilder<'_> {}
22989 unsafe impl ExtendsRenderPassBeginInfo for RenderPassSampleLocationsBeginInfoEXT {}
22990 impl<'a> ::std::ops::Deref for RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
22991     type Target = RenderPassSampleLocationsBeginInfoEXT;
deref(&self) -> &Self::Target22992     fn deref(&self) -> &Self::Target {
22993         &self.inner
22994     }
22995 }
22996 impl<'a> ::std::ops::DerefMut for RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target22997     fn deref_mut(&mut self) -> &mut Self::Target {
22998         &mut self.inner
22999     }
23000 }
23001 impl<'a> RenderPassSampleLocationsBeginInfoEXTBuilder<'a> {
attachment_initial_sample_locations( mut self, attachment_initial_sample_locations: &'a [AttachmentSampleLocationsEXT], ) -> Self23002     pub fn attachment_initial_sample_locations(
23003         mut self,
23004         attachment_initial_sample_locations: &'a [AttachmentSampleLocationsEXT],
23005     ) -> Self {
23006         self.inner.attachment_initial_sample_locations_count =
23007             attachment_initial_sample_locations.len() as _;
23008         self.inner.p_attachment_initial_sample_locations =
23009             attachment_initial_sample_locations.as_ptr();
23010         self
23011     }
post_subpass_sample_locations( mut self, post_subpass_sample_locations: &'a [SubpassSampleLocationsEXT], ) -> Self23012     pub fn post_subpass_sample_locations(
23013         mut self,
23014         post_subpass_sample_locations: &'a [SubpassSampleLocationsEXT],
23015     ) -> Self {
23016         self.inner.post_subpass_sample_locations_count = post_subpass_sample_locations.len() as _;
23017         self.inner.p_post_subpass_sample_locations = post_subpass_sample_locations.as_ptr();
23018         self
23019     }
23020     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23021     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23022     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassSampleLocationsBeginInfoEXT23023     pub fn build(self) -> RenderPassSampleLocationsBeginInfoEXT {
23024         self.inner
23025     }
23026 }
23027 #[repr(C)]
23028 #[cfg_attr(feature = "debug", derive(Debug))]
23029 #[derive(Copy, Clone)]
23030 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>"]
23031 pub struct PipelineSampleLocationsStateCreateInfoEXT {
23032     pub s_type: StructureType,
23033     pub p_next: *const c_void,
23034     pub sample_locations_enable: Bool32,
23035     pub sample_locations_info: SampleLocationsInfoEXT,
23036 }
23037 impl ::std::default::Default for PipelineSampleLocationsStateCreateInfoEXT {
default() -> Self23038     fn default() -> Self {
23039         Self {
23040             s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
23041             p_next: ::std::ptr::null(),
23042             sample_locations_enable: Bool32::default(),
23043             sample_locations_info: SampleLocationsInfoEXT::default(),
23044         }
23045     }
23046 }
23047 impl PipelineSampleLocationsStateCreateInfoEXT {
builder<'a>() -> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a>23048     pub fn builder<'a>() -> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23049         PipelineSampleLocationsStateCreateInfoEXTBuilder {
23050             inner: Self::default(),
23051             marker: ::std::marker::PhantomData,
23052         }
23053     }
23054 }
23055 #[repr(transparent)]
23056 pub struct PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23057     inner: PipelineSampleLocationsStateCreateInfoEXT,
23058     marker: ::std::marker::PhantomData<&'a ()>,
23059 }
23060 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
23061     for PipelineSampleLocationsStateCreateInfoEXTBuilder<'_>
23062 {
23063 }
23064 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
23065     for PipelineSampleLocationsStateCreateInfoEXT
23066 {
23067 }
23068 impl<'a> ::std::ops::Deref for PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
23069     type Target = PipelineSampleLocationsStateCreateInfoEXT;
deref(&self) -> &Self::Target23070     fn deref(&self) -> &Self::Target {
23071         &self.inner
23072     }
23073 }
23074 impl<'a> ::std::ops::DerefMut for PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23075     fn deref_mut(&mut self) -> &mut Self::Target {
23076         &mut self.inner
23077     }
23078 }
23079 impl<'a> PipelineSampleLocationsStateCreateInfoEXTBuilder<'a> {
sample_locations_enable(mut self, sample_locations_enable: bool) -> Self23080     pub fn sample_locations_enable(mut self, sample_locations_enable: bool) -> Self {
23081         self.inner.sample_locations_enable = sample_locations_enable.into();
23082         self
23083     }
sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self23084     pub fn sample_locations_info(mut self, sample_locations_info: SampleLocationsInfoEXT) -> Self {
23085         self.inner.sample_locations_info = sample_locations_info;
23086         self
23087     }
23088     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23089     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23090     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineSampleLocationsStateCreateInfoEXT23091     pub fn build(self) -> PipelineSampleLocationsStateCreateInfoEXT {
23092         self.inner
23093     }
23094 }
23095 #[repr(C)]
23096 #[cfg_attr(feature = "debug", derive(Debug))]
23097 #[derive(Copy, Clone)]
23098 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>"]
23099 pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
23100     pub s_type: StructureType,
23101     pub p_next: *mut c_void,
23102     pub sample_location_sample_counts: SampleCountFlags,
23103     pub max_sample_location_grid_size: Extent2D,
23104     pub sample_location_coordinate_range: [f32; 2],
23105     pub sample_location_sub_pixel_bits: u32,
23106     pub variable_sample_locations: Bool32,
23107 }
23108 impl ::std::default::Default for PhysicalDeviceSampleLocationsPropertiesEXT {
default() -> Self23109     fn default() -> Self {
23110         Self {
23111             s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
23112             p_next: ::std::ptr::null_mut(),
23113             sample_location_sample_counts: SampleCountFlags::default(),
23114             max_sample_location_grid_size: Extent2D::default(),
23115             sample_location_coordinate_range: unsafe { ::std::mem::zeroed() },
23116             sample_location_sub_pixel_bits: u32::default(),
23117             variable_sample_locations: Bool32::default(),
23118         }
23119     }
23120 }
23121 impl PhysicalDeviceSampleLocationsPropertiesEXT {
builder<'a>() -> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a>23122     pub fn builder<'a>() -> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23123         PhysicalDeviceSampleLocationsPropertiesEXTBuilder {
23124             inner: Self::default(),
23125             marker: ::std::marker::PhantomData,
23126         }
23127     }
23128 }
23129 #[repr(transparent)]
23130 pub struct PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23131     inner: PhysicalDeviceSampleLocationsPropertiesEXT,
23132     marker: ::std::marker::PhantomData<&'a ()>,
23133 }
23134 unsafe impl ExtendsPhysicalDeviceProperties2
23135     for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'_>
23136 {
23137 }
23138 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSampleLocationsPropertiesEXT {}
23139 impl<'a> ::std::ops::Deref for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
23140     type Target = PhysicalDeviceSampleLocationsPropertiesEXT;
deref(&self) -> &Self::Target23141     fn deref(&self) -> &Self::Target {
23142         &self.inner
23143     }
23144 }
23145 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23146     fn deref_mut(&mut self) -> &mut Self::Target {
23147         &mut self.inner
23148     }
23149 }
23150 impl<'a> PhysicalDeviceSampleLocationsPropertiesEXTBuilder<'a> {
sample_location_sample_counts( mut self, sample_location_sample_counts: SampleCountFlags, ) -> Self23151     pub fn sample_location_sample_counts(
23152         mut self,
23153         sample_location_sample_counts: SampleCountFlags,
23154     ) -> Self {
23155         self.inner.sample_location_sample_counts = sample_location_sample_counts;
23156         self
23157     }
max_sample_location_grid_size( mut self, max_sample_location_grid_size: Extent2D, ) -> Self23158     pub fn max_sample_location_grid_size(
23159         mut self,
23160         max_sample_location_grid_size: Extent2D,
23161     ) -> Self {
23162         self.inner.max_sample_location_grid_size = max_sample_location_grid_size;
23163         self
23164     }
sample_location_coordinate_range( mut self, sample_location_coordinate_range: [f32; 2], ) -> Self23165     pub fn sample_location_coordinate_range(
23166         mut self,
23167         sample_location_coordinate_range: [f32; 2],
23168     ) -> Self {
23169         self.inner.sample_location_coordinate_range = sample_location_coordinate_range;
23170         self
23171     }
sample_location_sub_pixel_bits(mut self, sample_location_sub_pixel_bits: u32) -> Self23172     pub fn sample_location_sub_pixel_bits(mut self, sample_location_sub_pixel_bits: u32) -> Self {
23173         self.inner.sample_location_sub_pixel_bits = sample_location_sub_pixel_bits;
23174         self
23175     }
variable_sample_locations(mut self, variable_sample_locations: bool) -> Self23176     pub fn variable_sample_locations(mut self, variable_sample_locations: bool) -> Self {
23177         self.inner.variable_sample_locations = variable_sample_locations.into();
23178         self
23179     }
23180     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23181     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23182     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSampleLocationsPropertiesEXT23183     pub fn build(self) -> PhysicalDeviceSampleLocationsPropertiesEXT {
23184         self.inner
23185     }
23186 }
23187 #[repr(C)]
23188 #[cfg_attr(feature = "debug", derive(Debug))]
23189 #[derive(Copy, Clone)]
23190 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMultisamplePropertiesEXT.html>"]
23191 pub struct MultisamplePropertiesEXT {
23192     pub s_type: StructureType,
23193     pub p_next: *mut c_void,
23194     pub max_sample_location_grid_size: Extent2D,
23195 }
23196 impl ::std::default::Default for MultisamplePropertiesEXT {
default() -> Self23197     fn default() -> Self {
23198         Self {
23199             s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
23200             p_next: ::std::ptr::null_mut(),
23201             max_sample_location_grid_size: Extent2D::default(),
23202         }
23203     }
23204 }
23205 impl MultisamplePropertiesEXT {
builder<'a>() -> MultisamplePropertiesEXTBuilder<'a>23206     pub fn builder<'a>() -> MultisamplePropertiesEXTBuilder<'a> {
23207         MultisamplePropertiesEXTBuilder {
23208             inner: Self::default(),
23209             marker: ::std::marker::PhantomData,
23210         }
23211     }
23212 }
23213 #[repr(transparent)]
23214 pub struct MultisamplePropertiesEXTBuilder<'a> {
23215     inner: MultisamplePropertiesEXT,
23216     marker: ::std::marker::PhantomData<&'a ()>,
23217 }
23218 impl<'a> ::std::ops::Deref for MultisamplePropertiesEXTBuilder<'a> {
23219     type Target = MultisamplePropertiesEXT;
deref(&self) -> &Self::Target23220     fn deref(&self) -> &Self::Target {
23221         &self.inner
23222     }
23223 }
23224 impl<'a> ::std::ops::DerefMut for MultisamplePropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23225     fn deref_mut(&mut self) -> &mut Self::Target {
23226         &mut self.inner
23227     }
23228 }
23229 impl<'a> MultisamplePropertiesEXTBuilder<'a> {
max_sample_location_grid_size( mut self, max_sample_location_grid_size: Extent2D, ) -> Self23230     pub fn max_sample_location_grid_size(
23231         mut self,
23232         max_sample_location_grid_size: Extent2D,
23233     ) -> Self {
23234         self.inner.max_sample_location_grid_size = max_sample_location_grid_size;
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) -> MultisamplePropertiesEXT23240     pub fn build(self) -> MultisamplePropertiesEXT {
23241         self.inner
23242     }
23243 }
23244 #[repr(C)]
23245 #[cfg_attr(feature = "debug", derive(Debug))]
23246 #[derive(Copy, Clone)]
23247 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerReductionModeCreateInfo.html>"]
23248 pub struct SamplerReductionModeCreateInfo {
23249     pub s_type: StructureType,
23250     pub p_next: *const c_void,
23251     pub reduction_mode: SamplerReductionMode,
23252 }
23253 impl ::std::default::Default for SamplerReductionModeCreateInfo {
default() -> Self23254     fn default() -> Self {
23255         Self {
23256             s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
23257             p_next: ::std::ptr::null(),
23258             reduction_mode: SamplerReductionMode::default(),
23259         }
23260     }
23261 }
23262 impl SamplerReductionModeCreateInfo {
builder<'a>() -> SamplerReductionModeCreateInfoBuilder<'a>23263     pub fn builder<'a>() -> SamplerReductionModeCreateInfoBuilder<'a> {
23264         SamplerReductionModeCreateInfoBuilder {
23265             inner: Self::default(),
23266             marker: ::std::marker::PhantomData,
23267         }
23268     }
23269 }
23270 #[repr(transparent)]
23271 pub struct SamplerReductionModeCreateInfoBuilder<'a> {
23272     inner: SamplerReductionModeCreateInfo,
23273     marker: ::std::marker::PhantomData<&'a ()>,
23274 }
23275 unsafe impl ExtendsSamplerCreateInfo for SamplerReductionModeCreateInfoBuilder<'_> {}
23276 unsafe impl ExtendsSamplerCreateInfo for SamplerReductionModeCreateInfo {}
23277 impl<'a> ::std::ops::Deref for SamplerReductionModeCreateInfoBuilder<'a> {
23278     type Target = SamplerReductionModeCreateInfo;
deref(&self) -> &Self::Target23279     fn deref(&self) -> &Self::Target {
23280         &self.inner
23281     }
23282 }
23283 impl<'a> ::std::ops::DerefMut for SamplerReductionModeCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23284     fn deref_mut(&mut self) -> &mut Self::Target {
23285         &mut self.inner
23286     }
23287 }
23288 impl<'a> SamplerReductionModeCreateInfoBuilder<'a> {
reduction_mode(mut self, reduction_mode: SamplerReductionMode) -> Self23289     pub fn reduction_mode(mut self, reduction_mode: SamplerReductionMode) -> Self {
23290         self.inner.reduction_mode = reduction_mode;
23291         self
23292     }
23293     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23294     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23295     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerReductionModeCreateInfo23296     pub fn build(self) -> SamplerReductionModeCreateInfo {
23297         self.inner
23298     }
23299 }
23300 #[repr(C)]
23301 #[cfg_attr(feature = "debug", derive(Debug))]
23302 #[derive(Copy, Clone)]
23303 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>"]
23304 pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
23305     pub s_type: StructureType,
23306     pub p_next: *mut c_void,
23307     pub advanced_blend_coherent_operations: Bool32,
23308 }
23309 impl ::std::default::Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
default() -> Self23310     fn default() -> Self {
23311         Self {
23312             s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
23313             p_next: ::std::ptr::null_mut(),
23314             advanced_blend_coherent_operations: Bool32::default(),
23315         }
23316     }
23317 }
23318 impl PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
builder<'a>() -> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a>23319     pub fn builder<'a>() -> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23320         PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder {
23321             inner: Self::default(),
23322             marker: ::std::marker::PhantomData,
23323         }
23324     }
23325 }
23326 #[repr(transparent)]
23327 pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23328     inner: PhysicalDeviceBlendOperationAdvancedFeaturesEXT,
23329     marker: ::std::marker::PhantomData<&'a ()>,
23330 }
23331 unsafe impl ExtendsPhysicalDeviceFeatures2
23332     for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'_>
23333 {
23334 }
23335 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
23336 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'_> {}
23337 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
23338 impl<'a> ::std::ops::Deref for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
23339     type Target = PhysicalDeviceBlendOperationAdvancedFeaturesEXT;
deref(&self) -> &Self::Target23340     fn deref(&self) -> &Self::Target {
23341         &self.inner
23342     }
23343 }
23344 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23345     fn deref_mut(&mut self) -> &mut Self::Target {
23346         &mut self.inner
23347     }
23348 }
23349 impl<'a> PhysicalDeviceBlendOperationAdvancedFeaturesEXTBuilder<'a> {
advanced_blend_coherent_operations( mut self, advanced_blend_coherent_operations: bool, ) -> Self23350     pub fn advanced_blend_coherent_operations(
23351         mut self,
23352         advanced_blend_coherent_operations: bool,
23353     ) -> Self {
23354         self.inner.advanced_blend_coherent_operations = advanced_blend_coherent_operations.into();
23355         self
23356     }
23357     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23358     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23359     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBlendOperationAdvancedFeaturesEXT23360     pub fn build(self) -> PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
23361         self.inner
23362     }
23363 }
23364 #[repr(C)]
23365 #[cfg_attr(feature = "debug", derive(Debug))]
23366 #[derive(Copy, Clone)]
23367 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>"]
23368 pub struct PhysicalDeviceMultiDrawFeaturesEXT {
23369     pub s_type: StructureType,
23370     pub p_next: *mut c_void,
23371     pub multi_draw: Bool32,
23372 }
23373 impl ::std::default::Default for PhysicalDeviceMultiDrawFeaturesEXT {
default() -> Self23374     fn default() -> Self {
23375         Self {
23376             s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
23377             p_next: ::std::ptr::null_mut(),
23378             multi_draw: Bool32::default(),
23379         }
23380     }
23381 }
23382 impl PhysicalDeviceMultiDrawFeaturesEXT {
builder<'a>() -> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a>23383     pub fn builder<'a>() -> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23384         PhysicalDeviceMultiDrawFeaturesEXTBuilder {
23385             inner: Self::default(),
23386             marker: ::std::marker::PhantomData,
23387         }
23388     }
23389 }
23390 #[repr(transparent)]
23391 pub struct PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23392     inner: PhysicalDeviceMultiDrawFeaturesEXT,
23393     marker: ::std::marker::PhantomData<&'a ()>,
23394 }
23395 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'_> {}
23396 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMultiDrawFeaturesEXT {}
23397 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'_> {}
23398 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMultiDrawFeaturesEXT {}
23399 impl<'a> ::std::ops::Deref for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
23400     type Target = PhysicalDeviceMultiDrawFeaturesEXT;
deref(&self) -> &Self::Target23401     fn deref(&self) -> &Self::Target {
23402         &self.inner
23403     }
23404 }
23405 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23406     fn deref_mut(&mut self) -> &mut Self::Target {
23407         &mut self.inner
23408     }
23409 }
23410 impl<'a> PhysicalDeviceMultiDrawFeaturesEXTBuilder<'a> {
multi_draw(mut self, multi_draw: bool) -> Self23411     pub fn multi_draw(mut self, multi_draw: bool) -> Self {
23412         self.inner.multi_draw = multi_draw.into();
23413         self
23414     }
23415     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23416     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23417     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMultiDrawFeaturesEXT23418     pub fn build(self) -> PhysicalDeviceMultiDrawFeaturesEXT {
23419         self.inner
23420     }
23421 }
23422 #[repr(C)]
23423 #[cfg_attr(feature = "debug", derive(Debug))]
23424 #[derive(Copy, Clone)]
23425 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>"]
23426 pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
23427     pub s_type: StructureType,
23428     pub p_next: *mut c_void,
23429     pub advanced_blend_max_color_attachments: u32,
23430     pub advanced_blend_independent_blend: Bool32,
23431     pub advanced_blend_non_premultiplied_src_color: Bool32,
23432     pub advanced_blend_non_premultiplied_dst_color: Bool32,
23433     pub advanced_blend_correlated_overlap: Bool32,
23434     pub advanced_blend_all_operations: Bool32,
23435 }
23436 impl ::std::default::Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
default() -> Self23437     fn default() -> Self {
23438         Self {
23439             s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
23440             p_next: ::std::ptr::null_mut(),
23441             advanced_blend_max_color_attachments: u32::default(),
23442             advanced_blend_independent_blend: Bool32::default(),
23443             advanced_blend_non_premultiplied_src_color: Bool32::default(),
23444             advanced_blend_non_premultiplied_dst_color: Bool32::default(),
23445             advanced_blend_correlated_overlap: Bool32::default(),
23446             advanced_blend_all_operations: Bool32::default(),
23447         }
23448     }
23449 }
23450 impl PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
builder<'a>() -> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a>23451     pub fn builder<'a>() -> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23452         PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder {
23453             inner: Self::default(),
23454             marker: ::std::marker::PhantomData,
23455         }
23456     }
23457 }
23458 #[repr(transparent)]
23459 pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23460     inner: PhysicalDeviceBlendOperationAdvancedPropertiesEXT,
23461     marker: ::std::marker::PhantomData<&'a ()>,
23462 }
23463 unsafe impl ExtendsPhysicalDeviceProperties2
23464     for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'_>
23465 {
23466 }
23467 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
23468 impl<'a> ::std::ops::Deref for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
23469     type Target = PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
deref(&self) -> &Self::Target23470     fn deref(&self) -> &Self::Target {
23471         &self.inner
23472     }
23473 }
23474 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23475     fn deref_mut(&mut self) -> &mut Self::Target {
23476         &mut self.inner
23477     }
23478 }
23479 impl<'a> PhysicalDeviceBlendOperationAdvancedPropertiesEXTBuilder<'a> {
advanced_blend_max_color_attachments( mut self, advanced_blend_max_color_attachments: u32, ) -> Self23480     pub fn advanced_blend_max_color_attachments(
23481         mut self,
23482         advanced_blend_max_color_attachments: u32,
23483     ) -> Self {
23484         self.inner.advanced_blend_max_color_attachments = advanced_blend_max_color_attachments;
23485         self
23486     }
advanced_blend_independent_blend( mut self, advanced_blend_independent_blend: bool, ) -> Self23487     pub fn advanced_blend_independent_blend(
23488         mut self,
23489         advanced_blend_independent_blend: bool,
23490     ) -> Self {
23491         self.inner.advanced_blend_independent_blend = advanced_blend_independent_blend.into();
23492         self
23493     }
advanced_blend_non_premultiplied_src_color( mut self, advanced_blend_non_premultiplied_src_color: bool, ) -> Self23494     pub fn advanced_blend_non_premultiplied_src_color(
23495         mut self,
23496         advanced_blend_non_premultiplied_src_color: bool,
23497     ) -> Self {
23498         self.inner.advanced_blend_non_premultiplied_src_color =
23499             advanced_blend_non_premultiplied_src_color.into();
23500         self
23501     }
advanced_blend_non_premultiplied_dst_color( mut self, advanced_blend_non_premultiplied_dst_color: bool, ) -> Self23502     pub fn advanced_blend_non_premultiplied_dst_color(
23503         mut self,
23504         advanced_blend_non_premultiplied_dst_color: bool,
23505     ) -> Self {
23506         self.inner.advanced_blend_non_premultiplied_dst_color =
23507             advanced_blend_non_premultiplied_dst_color.into();
23508         self
23509     }
advanced_blend_correlated_overlap( mut self, advanced_blend_correlated_overlap: bool, ) -> Self23510     pub fn advanced_blend_correlated_overlap(
23511         mut self,
23512         advanced_blend_correlated_overlap: bool,
23513     ) -> Self {
23514         self.inner.advanced_blend_correlated_overlap = advanced_blend_correlated_overlap.into();
23515         self
23516     }
advanced_blend_all_operations(mut self, advanced_blend_all_operations: bool) -> Self23517     pub fn advanced_blend_all_operations(mut self, advanced_blend_all_operations: bool) -> Self {
23518         self.inner.advanced_blend_all_operations = advanced_blend_all_operations.into();
23519         self
23520     }
23521     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23522     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23523     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBlendOperationAdvancedPropertiesEXT23524     pub fn build(self) -> PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
23525         self.inner
23526     }
23527 }
23528 #[repr(C)]
23529 #[cfg_attr(feature = "debug", derive(Debug))]
23530 #[derive(Copy, Clone)]
23531 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>"]
23532 pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
23533     pub s_type: StructureType,
23534     pub p_next: *const c_void,
23535     pub src_premultiplied: Bool32,
23536     pub dst_premultiplied: Bool32,
23537     pub blend_overlap: BlendOverlapEXT,
23538 }
23539 impl ::std::default::Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
default() -> Self23540     fn default() -> Self {
23541         Self {
23542             s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
23543             p_next: ::std::ptr::null(),
23544             src_premultiplied: Bool32::default(),
23545             dst_premultiplied: Bool32::default(),
23546             blend_overlap: BlendOverlapEXT::default(),
23547         }
23548     }
23549 }
23550 impl PipelineColorBlendAdvancedStateCreateInfoEXT {
builder<'a>() -> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a>23551     pub fn builder<'a>() -> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23552         PipelineColorBlendAdvancedStateCreateInfoEXTBuilder {
23553             inner: Self::default(),
23554             marker: ::std::marker::PhantomData,
23555         }
23556     }
23557 }
23558 #[repr(transparent)]
23559 pub struct PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23560     inner: PipelineColorBlendAdvancedStateCreateInfoEXT,
23561     marker: ::std::marker::PhantomData<&'a ()>,
23562 }
23563 unsafe impl ExtendsPipelineColorBlendStateCreateInfo
23564     for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'_>
23565 {
23566 }
23567 unsafe impl ExtendsPipelineColorBlendStateCreateInfo
23568     for PipelineColorBlendAdvancedStateCreateInfoEXT
23569 {
23570 }
23571 impl<'a> ::std::ops::Deref for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
23572     type Target = PipelineColorBlendAdvancedStateCreateInfoEXT;
deref(&self) -> &Self::Target23573     fn deref(&self) -> &Self::Target {
23574         &self.inner
23575     }
23576 }
23577 impl<'a> ::std::ops::DerefMut for PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23578     fn deref_mut(&mut self) -> &mut Self::Target {
23579         &mut self.inner
23580     }
23581 }
23582 impl<'a> PipelineColorBlendAdvancedStateCreateInfoEXTBuilder<'a> {
src_premultiplied(mut self, src_premultiplied: bool) -> Self23583     pub fn src_premultiplied(mut self, src_premultiplied: bool) -> Self {
23584         self.inner.src_premultiplied = src_premultiplied.into();
23585         self
23586     }
dst_premultiplied(mut self, dst_premultiplied: bool) -> Self23587     pub fn dst_premultiplied(mut self, dst_premultiplied: bool) -> Self {
23588         self.inner.dst_premultiplied = dst_premultiplied.into();
23589         self
23590     }
blend_overlap(mut self, blend_overlap: BlendOverlapEXT) -> Self23591     pub fn blend_overlap(mut self, blend_overlap: BlendOverlapEXT) -> Self {
23592         self.inner.blend_overlap = blend_overlap;
23593         self
23594     }
23595     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23596     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23597     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorBlendAdvancedStateCreateInfoEXT23598     pub fn build(self) -> PipelineColorBlendAdvancedStateCreateInfoEXT {
23599         self.inner
23600     }
23601 }
23602 #[repr(C)]
23603 #[cfg_attr(feature = "debug", derive(Debug))]
23604 #[derive(Copy, Clone)]
23605 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>"]
23606 pub struct PhysicalDeviceInlineUniformBlockFeaturesEXT {
23607     pub s_type: StructureType,
23608     pub p_next: *mut c_void,
23609     pub inline_uniform_block: Bool32,
23610     pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
23611 }
23612 impl ::std::default::Default for PhysicalDeviceInlineUniformBlockFeaturesEXT {
default() -> Self23613     fn default() -> Self {
23614         Self {
23615             s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
23616             p_next: ::std::ptr::null_mut(),
23617             inline_uniform_block: Bool32::default(),
23618             descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
23619         }
23620     }
23621 }
23622 impl PhysicalDeviceInlineUniformBlockFeaturesEXT {
builder<'a>() -> PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a>23623     pub fn builder<'a>() -> PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
23624         PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder {
23625             inner: Self::default(),
23626             marker: ::std::marker::PhantomData,
23627         }
23628     }
23629 }
23630 #[repr(transparent)]
23631 pub struct PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
23632     inner: PhysicalDeviceInlineUniformBlockFeaturesEXT,
23633     marker: ::std::marker::PhantomData<&'a ()>,
23634 }
23635 unsafe impl ExtendsPhysicalDeviceFeatures2
23636     for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'_>
23637 {
23638 }
23639 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInlineUniformBlockFeaturesEXT {}
23640 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'_> {}
23641 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInlineUniformBlockFeaturesEXT {}
23642 impl<'a> ::std::ops::Deref for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
23643     type Target = PhysicalDeviceInlineUniformBlockFeaturesEXT;
deref(&self) -> &Self::Target23644     fn deref(&self) -> &Self::Target {
23645         &self.inner
23646     }
23647 }
23648 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23649     fn deref_mut(&mut self) -> &mut Self::Target {
23650         &mut self.inner
23651     }
23652 }
23653 impl<'a> PhysicalDeviceInlineUniformBlockFeaturesEXTBuilder<'a> {
inline_uniform_block(mut self, inline_uniform_block: bool) -> Self23654     pub fn inline_uniform_block(mut self, inline_uniform_block: bool) -> Self {
23655         self.inner.inline_uniform_block = inline_uniform_block.into();
23656         self
23657     }
descriptor_binding_inline_uniform_block_update_after_bind( mut self, descriptor_binding_inline_uniform_block_update_after_bind: bool, ) -> Self23658     pub fn descriptor_binding_inline_uniform_block_update_after_bind(
23659         mut self,
23660         descriptor_binding_inline_uniform_block_update_after_bind: bool,
23661     ) -> Self {
23662         self.inner
23663             .descriptor_binding_inline_uniform_block_update_after_bind =
23664             descriptor_binding_inline_uniform_block_update_after_bind.into();
23665         self
23666     }
23667     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23668     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23669     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInlineUniformBlockFeaturesEXT23670     pub fn build(self) -> PhysicalDeviceInlineUniformBlockFeaturesEXT {
23671         self.inner
23672     }
23673 }
23674 #[repr(C)]
23675 #[cfg_attr(feature = "debug", derive(Debug))]
23676 #[derive(Copy, Clone)]
23677 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>"]
23678 pub struct PhysicalDeviceInlineUniformBlockPropertiesEXT {
23679     pub s_type: StructureType,
23680     pub p_next: *mut c_void,
23681     pub max_inline_uniform_block_size: u32,
23682     pub max_per_stage_descriptor_inline_uniform_blocks: u32,
23683     pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
23684     pub max_descriptor_set_inline_uniform_blocks: u32,
23685     pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
23686 }
23687 impl ::std::default::Default for PhysicalDeviceInlineUniformBlockPropertiesEXT {
default() -> Self23688     fn default() -> Self {
23689         Self {
23690             s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,
23691             p_next: ::std::ptr::null_mut(),
23692             max_inline_uniform_block_size: u32::default(),
23693             max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
23694             max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
23695             max_descriptor_set_inline_uniform_blocks: u32::default(),
23696             max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
23697         }
23698     }
23699 }
23700 impl PhysicalDeviceInlineUniformBlockPropertiesEXT {
builder<'a>() -> PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a>23701     pub fn builder<'a>() -> PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
23702         PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder {
23703             inner: Self::default(),
23704             marker: ::std::marker::PhantomData,
23705         }
23706     }
23707 }
23708 #[repr(transparent)]
23709 pub struct PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
23710     inner: PhysicalDeviceInlineUniformBlockPropertiesEXT,
23711     marker: ::std::marker::PhantomData<&'a ()>,
23712 }
23713 unsafe impl ExtendsPhysicalDeviceProperties2
23714     for PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'_>
23715 {
23716 }
23717 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceInlineUniformBlockPropertiesEXT {}
23718 impl<'a> ::std::ops::Deref for PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
23719     type Target = PhysicalDeviceInlineUniformBlockPropertiesEXT;
deref(&self) -> &Self::Target23720     fn deref(&self) -> &Self::Target {
23721         &self.inner
23722     }
23723 }
23724 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23725     fn deref_mut(&mut self) -> &mut Self::Target {
23726         &mut self.inner
23727     }
23728 }
23729 impl<'a> PhysicalDeviceInlineUniformBlockPropertiesEXTBuilder<'a> {
max_inline_uniform_block_size(mut self, max_inline_uniform_block_size: u32) -> Self23730     pub fn max_inline_uniform_block_size(mut self, max_inline_uniform_block_size: u32) -> Self {
23731         self.inner.max_inline_uniform_block_size = max_inline_uniform_block_size;
23732         self
23733     }
max_per_stage_descriptor_inline_uniform_blocks( mut self, max_per_stage_descriptor_inline_uniform_blocks: u32, ) -> Self23734     pub fn max_per_stage_descriptor_inline_uniform_blocks(
23735         mut self,
23736         max_per_stage_descriptor_inline_uniform_blocks: u32,
23737     ) -> Self {
23738         self.inner.max_per_stage_descriptor_inline_uniform_blocks =
23739             max_per_stage_descriptor_inline_uniform_blocks;
23740         self
23741     }
max_per_stage_descriptor_update_after_bind_inline_uniform_blocks( mut self, max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32, ) -> Self23742     pub fn max_per_stage_descriptor_update_after_bind_inline_uniform_blocks(
23743         mut self,
23744         max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
23745     ) -> Self {
23746         self.inner
23747             .max_per_stage_descriptor_update_after_bind_inline_uniform_blocks =
23748             max_per_stage_descriptor_update_after_bind_inline_uniform_blocks;
23749         self
23750     }
max_descriptor_set_inline_uniform_blocks( mut self, max_descriptor_set_inline_uniform_blocks: u32, ) -> Self23751     pub fn max_descriptor_set_inline_uniform_blocks(
23752         mut self,
23753         max_descriptor_set_inline_uniform_blocks: u32,
23754     ) -> Self {
23755         self.inner.max_descriptor_set_inline_uniform_blocks =
23756             max_descriptor_set_inline_uniform_blocks;
23757         self
23758     }
max_descriptor_set_update_after_bind_inline_uniform_blocks( mut self, max_descriptor_set_update_after_bind_inline_uniform_blocks: u32, ) -> Self23759     pub fn max_descriptor_set_update_after_bind_inline_uniform_blocks(
23760         mut self,
23761         max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
23762     ) -> Self {
23763         self.inner
23764             .max_descriptor_set_update_after_bind_inline_uniform_blocks =
23765             max_descriptor_set_update_after_bind_inline_uniform_blocks;
23766         self
23767     }
23768     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23769     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23770     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInlineUniformBlockPropertiesEXT23771     pub fn build(self) -> PhysicalDeviceInlineUniformBlockPropertiesEXT {
23772         self.inner
23773     }
23774 }
23775 #[repr(C)]
23776 #[cfg_attr(feature = "debug", derive(Debug))]
23777 #[derive(Copy, Clone)]
23778 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>"]
23779 pub struct WriteDescriptorSetInlineUniformBlockEXT {
23780     pub s_type: StructureType,
23781     pub p_next: *const c_void,
23782     pub data_size: u32,
23783     pub p_data: *const c_void,
23784 }
23785 impl ::std::default::Default for WriteDescriptorSetInlineUniformBlockEXT {
default() -> Self23786     fn default() -> Self {
23787         Self {
23788             s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,
23789             p_next: ::std::ptr::null(),
23790             data_size: u32::default(),
23791             p_data: ::std::ptr::null(),
23792         }
23793     }
23794 }
23795 impl WriteDescriptorSetInlineUniformBlockEXT {
builder<'a>() -> WriteDescriptorSetInlineUniformBlockEXTBuilder<'a>23796     pub fn builder<'a>() -> WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
23797         WriteDescriptorSetInlineUniformBlockEXTBuilder {
23798             inner: Self::default(),
23799             marker: ::std::marker::PhantomData,
23800         }
23801     }
23802 }
23803 #[repr(transparent)]
23804 pub struct WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
23805     inner: WriteDescriptorSetInlineUniformBlockEXT,
23806     marker: ::std::marker::PhantomData<&'a ()>,
23807 }
23808 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetInlineUniformBlockEXTBuilder<'_> {}
23809 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetInlineUniformBlockEXT {}
23810 impl<'a> ::std::ops::Deref for WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
23811     type Target = WriteDescriptorSetInlineUniformBlockEXT;
deref(&self) -> &Self::Target23812     fn deref(&self) -> &Self::Target {
23813         &self.inner
23814     }
23815 }
23816 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23817     fn deref_mut(&mut self) -> &mut Self::Target {
23818         &mut self.inner
23819     }
23820 }
23821 impl<'a> WriteDescriptorSetInlineUniformBlockEXTBuilder<'a> {
data(mut self, data: &'a [u8]) -> Self23822     pub fn data(mut self, data: &'a [u8]) -> Self {
23823         self.inner.data_size = data.len() as _;
23824         self.inner.p_data = data.as_ptr() as *const c_void;
23825         self
23826     }
23827     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23828     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23829     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSetInlineUniformBlockEXT23830     pub fn build(self) -> WriteDescriptorSetInlineUniformBlockEXT {
23831         self.inner
23832     }
23833 }
23834 #[repr(C)]
23835 #[cfg_attr(feature = "debug", derive(Debug))]
23836 #[derive(Copy, Clone)]
23837 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>"]
23838 pub struct DescriptorPoolInlineUniformBlockCreateInfoEXT {
23839     pub s_type: StructureType,
23840     pub p_next: *const c_void,
23841     pub max_inline_uniform_block_bindings: u32,
23842 }
23843 impl ::std::default::Default for DescriptorPoolInlineUniformBlockCreateInfoEXT {
default() -> Self23844     fn default() -> Self {
23845         Self {
23846             s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,
23847             p_next: ::std::ptr::null(),
23848             max_inline_uniform_block_bindings: u32::default(),
23849         }
23850     }
23851 }
23852 impl DescriptorPoolInlineUniformBlockCreateInfoEXT {
builder<'a>() -> DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a>23853     pub fn builder<'a>() -> DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
23854         DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder {
23855             inner: Self::default(),
23856             marker: ::std::marker::PhantomData,
23857         }
23858     }
23859 }
23860 #[repr(transparent)]
23861 pub struct DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
23862     inner: DescriptorPoolInlineUniformBlockCreateInfoEXT,
23863     marker: ::std::marker::PhantomData<&'a ()>,
23864 }
23865 unsafe impl ExtendsDescriptorPoolCreateInfo
23866     for DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'_>
23867 {
23868 }
23869 unsafe impl ExtendsDescriptorPoolCreateInfo for DescriptorPoolInlineUniformBlockCreateInfoEXT {}
23870 impl<'a> ::std::ops::Deref for DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
23871     type Target = DescriptorPoolInlineUniformBlockCreateInfoEXT;
deref(&self) -> &Self::Target23872     fn deref(&self) -> &Self::Target {
23873         &self.inner
23874     }
23875 }
23876 impl<'a> ::std::ops::DerefMut for DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23877     fn deref_mut(&mut self) -> &mut Self::Target {
23878         &mut self.inner
23879     }
23880 }
23881 impl<'a> DescriptorPoolInlineUniformBlockCreateInfoEXTBuilder<'a> {
max_inline_uniform_block_bindings( mut self, max_inline_uniform_block_bindings: u32, ) -> Self23882     pub fn max_inline_uniform_block_bindings(
23883         mut self,
23884         max_inline_uniform_block_bindings: u32,
23885     ) -> Self {
23886         self.inner.max_inline_uniform_block_bindings = max_inline_uniform_block_bindings;
23887         self
23888     }
23889     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23890     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23891     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorPoolInlineUniformBlockCreateInfoEXT23892     pub fn build(self) -> DescriptorPoolInlineUniformBlockCreateInfoEXT {
23893         self.inner
23894     }
23895 }
23896 #[repr(C)]
23897 #[cfg_attr(feature = "debug", derive(Debug))]
23898 #[derive(Copy, Clone)]
23899 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>"]
23900 pub struct PipelineCoverageModulationStateCreateInfoNV {
23901     pub s_type: StructureType,
23902     pub p_next: *const c_void,
23903     pub flags: PipelineCoverageModulationStateCreateFlagsNV,
23904     pub coverage_modulation_mode: CoverageModulationModeNV,
23905     pub coverage_modulation_table_enable: Bool32,
23906     pub coverage_modulation_table_count: u32,
23907     pub p_coverage_modulation_table: *const f32,
23908 }
23909 impl ::std::default::Default for PipelineCoverageModulationStateCreateInfoNV {
default() -> Self23910     fn default() -> Self {
23911         Self {
23912             s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
23913             p_next: ::std::ptr::null(),
23914             flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
23915             coverage_modulation_mode: CoverageModulationModeNV::default(),
23916             coverage_modulation_table_enable: Bool32::default(),
23917             coverage_modulation_table_count: u32::default(),
23918             p_coverage_modulation_table: ::std::ptr::null(),
23919         }
23920     }
23921 }
23922 impl PipelineCoverageModulationStateCreateInfoNV {
builder<'a>() -> PipelineCoverageModulationStateCreateInfoNVBuilder<'a>23923     pub fn builder<'a>() -> PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23924         PipelineCoverageModulationStateCreateInfoNVBuilder {
23925             inner: Self::default(),
23926             marker: ::std::marker::PhantomData,
23927         }
23928     }
23929 }
23930 #[repr(transparent)]
23931 pub struct PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23932     inner: PipelineCoverageModulationStateCreateInfoNV,
23933     marker: ::std::marker::PhantomData<&'a ()>,
23934 }
23935 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
23936     for PipelineCoverageModulationStateCreateInfoNVBuilder<'_>
23937 {
23938 }
23939 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
23940     for PipelineCoverageModulationStateCreateInfoNV
23941 {
23942 }
23943 impl<'a> ::std::ops::Deref for PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
23944     type Target = PipelineCoverageModulationStateCreateInfoNV;
deref(&self) -> &Self::Target23945     fn deref(&self) -> &Self::Target {
23946         &self.inner
23947     }
23948 }
23949 impl<'a> ::std::ops::DerefMut for PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target23950     fn deref_mut(&mut self) -> &mut Self::Target {
23951         &mut self.inner
23952     }
23953 }
23954 impl<'a> PipelineCoverageModulationStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCoverageModulationStateCreateFlagsNV) -> Self23955     pub fn flags(mut self, flags: PipelineCoverageModulationStateCreateFlagsNV) -> Self {
23956         self.inner.flags = flags;
23957         self
23958     }
coverage_modulation_mode( mut self, coverage_modulation_mode: CoverageModulationModeNV, ) -> Self23959     pub fn coverage_modulation_mode(
23960         mut self,
23961         coverage_modulation_mode: CoverageModulationModeNV,
23962     ) -> Self {
23963         self.inner.coverage_modulation_mode = coverage_modulation_mode;
23964         self
23965     }
coverage_modulation_table_enable( mut self, coverage_modulation_table_enable: bool, ) -> Self23966     pub fn coverage_modulation_table_enable(
23967         mut self,
23968         coverage_modulation_table_enable: bool,
23969     ) -> Self {
23970         self.inner.coverage_modulation_table_enable = coverage_modulation_table_enable.into();
23971         self
23972     }
coverage_modulation_table(mut self, coverage_modulation_table: &'a [f32]) -> Self23973     pub fn coverage_modulation_table(mut self, coverage_modulation_table: &'a [f32]) -> Self {
23974         self.inner.coverage_modulation_table_count = coverage_modulation_table.len() as _;
23975         self.inner.p_coverage_modulation_table = coverage_modulation_table.as_ptr();
23976         self
23977     }
23978     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
23979     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
23980     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCoverageModulationStateCreateInfoNV23981     pub fn build(self) -> PipelineCoverageModulationStateCreateInfoNV {
23982         self.inner
23983     }
23984 }
23985 #[repr(C)]
23986 #[cfg_attr(feature = "debug", derive(Debug))]
23987 #[derive(Copy, Clone)]
23988 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatListCreateInfo.html>"]
23989 pub struct ImageFormatListCreateInfo {
23990     pub s_type: StructureType,
23991     pub p_next: *const c_void,
23992     pub view_format_count: u32,
23993     pub p_view_formats: *const Format,
23994 }
23995 impl ::std::default::Default for ImageFormatListCreateInfo {
default() -> Self23996     fn default() -> Self {
23997         Self {
23998             s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
23999             p_next: ::std::ptr::null(),
24000             view_format_count: u32::default(),
24001             p_view_formats: ::std::ptr::null(),
24002         }
24003     }
24004 }
24005 impl ImageFormatListCreateInfo {
builder<'a>() -> ImageFormatListCreateInfoBuilder<'a>24006     pub fn builder<'a>() -> ImageFormatListCreateInfoBuilder<'a> {
24007         ImageFormatListCreateInfoBuilder {
24008             inner: Self::default(),
24009             marker: ::std::marker::PhantomData,
24010         }
24011     }
24012 }
24013 #[repr(transparent)]
24014 pub struct ImageFormatListCreateInfoBuilder<'a> {
24015     inner: ImageFormatListCreateInfo,
24016     marker: ::std::marker::PhantomData<&'a ()>,
24017 }
24018 unsafe impl ExtendsImageCreateInfo for ImageFormatListCreateInfoBuilder<'_> {}
24019 unsafe impl ExtendsImageCreateInfo for ImageFormatListCreateInfo {}
24020 unsafe impl ExtendsSwapchainCreateInfoKHR for ImageFormatListCreateInfoBuilder<'_> {}
24021 unsafe impl ExtendsSwapchainCreateInfoKHR for ImageFormatListCreateInfo {}
24022 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageFormatListCreateInfoBuilder<'_> {}
24023 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageFormatListCreateInfo {}
24024 impl<'a> ::std::ops::Deref for ImageFormatListCreateInfoBuilder<'a> {
24025     type Target = ImageFormatListCreateInfo;
deref(&self) -> &Self::Target24026     fn deref(&self) -> &Self::Target {
24027         &self.inner
24028     }
24029 }
24030 impl<'a> ::std::ops::DerefMut for ImageFormatListCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24031     fn deref_mut(&mut self) -> &mut Self::Target {
24032         &mut self.inner
24033     }
24034 }
24035 impl<'a> ImageFormatListCreateInfoBuilder<'a> {
view_formats(mut self, view_formats: &'a [Format]) -> Self24036     pub fn view_formats(mut self, view_formats: &'a [Format]) -> Self {
24037         self.inner.view_format_count = view_formats.len() as _;
24038         self.inner.p_view_formats = view_formats.as_ptr();
24039         self
24040     }
24041     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24042     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24043     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageFormatListCreateInfo24044     pub fn build(self) -> ImageFormatListCreateInfo {
24045         self.inner
24046     }
24047 }
24048 #[repr(C)]
24049 #[cfg_attr(feature = "debug", derive(Debug))]
24050 #[derive(Copy, Clone)]
24051 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheCreateInfoEXT.html>"]
24052 pub struct ValidationCacheCreateInfoEXT {
24053     pub s_type: StructureType,
24054     pub p_next: *const c_void,
24055     pub flags: ValidationCacheCreateFlagsEXT,
24056     pub initial_data_size: usize,
24057     pub p_initial_data: *const c_void,
24058 }
24059 impl ::std::default::Default for ValidationCacheCreateInfoEXT {
default() -> Self24060     fn default() -> Self {
24061         Self {
24062             s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
24063             p_next: ::std::ptr::null(),
24064             flags: ValidationCacheCreateFlagsEXT::default(),
24065             initial_data_size: usize::default(),
24066             p_initial_data: ::std::ptr::null(),
24067         }
24068     }
24069 }
24070 impl ValidationCacheCreateInfoEXT {
builder<'a>() -> ValidationCacheCreateInfoEXTBuilder<'a>24071     pub fn builder<'a>() -> ValidationCacheCreateInfoEXTBuilder<'a> {
24072         ValidationCacheCreateInfoEXTBuilder {
24073             inner: Self::default(),
24074             marker: ::std::marker::PhantomData,
24075         }
24076     }
24077 }
24078 #[repr(transparent)]
24079 pub struct ValidationCacheCreateInfoEXTBuilder<'a> {
24080     inner: ValidationCacheCreateInfoEXT,
24081     marker: ::std::marker::PhantomData<&'a ()>,
24082 }
24083 impl<'a> ::std::ops::Deref for ValidationCacheCreateInfoEXTBuilder<'a> {
24084     type Target = ValidationCacheCreateInfoEXT;
deref(&self) -> &Self::Target24085     fn deref(&self) -> &Self::Target {
24086         &self.inner
24087     }
24088 }
24089 impl<'a> ::std::ops::DerefMut for ValidationCacheCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24090     fn deref_mut(&mut self) -> &mut Self::Target {
24091         &mut self.inner
24092     }
24093 }
24094 impl<'a> ValidationCacheCreateInfoEXTBuilder<'a> {
flags(mut self, flags: ValidationCacheCreateFlagsEXT) -> Self24095     pub fn flags(mut self, flags: ValidationCacheCreateFlagsEXT) -> Self {
24096         self.inner.flags = flags;
24097         self
24098     }
initial_data(mut self, initial_data: &'a [u8]) -> Self24099     pub fn initial_data(mut self, initial_data: &'a [u8]) -> Self {
24100         self.inner.initial_data_size = initial_data.len() as _;
24101         self.inner.p_initial_data = initial_data.as_ptr() as *const c_void;
24102         self
24103     }
24104     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24105     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24106     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ValidationCacheCreateInfoEXT24107     pub fn build(self) -> ValidationCacheCreateInfoEXT {
24108         self.inner
24109     }
24110 }
24111 #[repr(C)]
24112 #[cfg_attr(feature = "debug", derive(Debug))]
24113 #[derive(Copy, Clone)]
24114 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>"]
24115 pub struct ShaderModuleValidationCacheCreateInfoEXT {
24116     pub s_type: StructureType,
24117     pub p_next: *const c_void,
24118     pub validation_cache: ValidationCacheEXT,
24119 }
24120 impl ::std::default::Default for ShaderModuleValidationCacheCreateInfoEXT {
default() -> Self24121     fn default() -> Self {
24122         Self {
24123             s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
24124             p_next: ::std::ptr::null(),
24125             validation_cache: ValidationCacheEXT::default(),
24126         }
24127     }
24128 }
24129 impl ShaderModuleValidationCacheCreateInfoEXT {
builder<'a>() -> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a>24130     pub fn builder<'a>() -> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24131         ShaderModuleValidationCacheCreateInfoEXTBuilder {
24132             inner: Self::default(),
24133             marker: ::std::marker::PhantomData,
24134         }
24135     }
24136 }
24137 #[repr(transparent)]
24138 pub struct ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24139     inner: ShaderModuleValidationCacheCreateInfoEXT,
24140     marker: ::std::marker::PhantomData<&'a ()>,
24141 }
24142 unsafe impl ExtendsShaderModuleCreateInfo for ShaderModuleValidationCacheCreateInfoEXTBuilder<'_> {}
24143 unsafe impl ExtendsShaderModuleCreateInfo for ShaderModuleValidationCacheCreateInfoEXT {}
24144 impl<'a> ::std::ops::Deref for ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
24145     type Target = ShaderModuleValidationCacheCreateInfoEXT;
deref(&self) -> &Self::Target24146     fn deref(&self) -> &Self::Target {
24147         &self.inner
24148     }
24149 }
24150 impl<'a> ::std::ops::DerefMut for ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24151     fn deref_mut(&mut self) -> &mut Self::Target {
24152         &mut self.inner
24153     }
24154 }
24155 impl<'a> ShaderModuleValidationCacheCreateInfoEXTBuilder<'a> {
validation_cache(mut self, validation_cache: ValidationCacheEXT) -> Self24156     pub fn validation_cache(mut self, validation_cache: ValidationCacheEXT) -> Self {
24157         self.inner.validation_cache = validation_cache;
24158         self
24159     }
24160     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24161     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24162     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderModuleValidationCacheCreateInfoEXT24163     pub fn build(self) -> ShaderModuleValidationCacheCreateInfoEXT {
24164         self.inner
24165     }
24166 }
24167 #[repr(C)]
24168 #[cfg_attr(feature = "debug", derive(Debug))]
24169 #[derive(Copy, Clone)]
24170 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMaintenance3Properties.html>"]
24171 pub struct PhysicalDeviceMaintenance3Properties {
24172     pub s_type: StructureType,
24173     pub p_next: *mut c_void,
24174     pub max_per_set_descriptors: u32,
24175     pub max_memory_allocation_size: DeviceSize,
24176 }
24177 impl ::std::default::Default for PhysicalDeviceMaintenance3Properties {
default() -> Self24178     fn default() -> Self {
24179         Self {
24180             s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
24181             p_next: ::std::ptr::null_mut(),
24182             max_per_set_descriptors: u32::default(),
24183             max_memory_allocation_size: DeviceSize::default(),
24184         }
24185     }
24186 }
24187 impl PhysicalDeviceMaintenance3Properties {
builder<'a>() -> PhysicalDeviceMaintenance3PropertiesBuilder<'a>24188     pub fn builder<'a>() -> PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24189         PhysicalDeviceMaintenance3PropertiesBuilder {
24190             inner: Self::default(),
24191             marker: ::std::marker::PhantomData,
24192         }
24193     }
24194 }
24195 #[repr(transparent)]
24196 pub struct PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24197     inner: PhysicalDeviceMaintenance3Properties,
24198     marker: ::std::marker::PhantomData<&'a ()>,
24199 }
24200 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance3PropertiesBuilder<'_> {}
24201 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance3Properties {}
24202 impl<'a> ::std::ops::Deref for PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
24203     type Target = PhysicalDeviceMaintenance3Properties;
deref(&self) -> &Self::Target24204     fn deref(&self) -> &Self::Target {
24205         &self.inner
24206     }
24207 }
24208 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24209     fn deref_mut(&mut self) -> &mut Self::Target {
24210         &mut self.inner
24211     }
24212 }
24213 impl<'a> PhysicalDeviceMaintenance3PropertiesBuilder<'a> {
max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self24214     pub fn max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self {
24215         self.inner.max_per_set_descriptors = max_per_set_descriptors;
24216         self
24217     }
max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self24218     pub fn max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self {
24219         self.inner.max_memory_allocation_size = max_memory_allocation_size;
24220         self
24221     }
24222     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24223     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24224     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMaintenance3Properties24225     pub fn build(self) -> PhysicalDeviceMaintenance3Properties {
24226         self.inner
24227     }
24228 }
24229 #[repr(C)]
24230 #[cfg_attr(feature = "debug", derive(Debug))]
24231 #[derive(Copy, Clone)]
24232 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>"]
24233 pub struct PhysicalDeviceMaintenance4FeaturesKHR {
24234     pub s_type: StructureType,
24235     pub p_next: *mut c_void,
24236     pub maintenance4: Bool32,
24237 }
24238 impl ::std::default::Default for PhysicalDeviceMaintenance4FeaturesKHR {
default() -> Self24239     fn default() -> Self {
24240         Self {
24241             s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR,
24242             p_next: ::std::ptr::null_mut(),
24243             maintenance4: Bool32::default(),
24244         }
24245     }
24246 }
24247 impl PhysicalDeviceMaintenance4FeaturesKHR {
builder<'a>() -> PhysicalDeviceMaintenance4FeaturesKHRBuilder<'a>24248     pub fn builder<'a>() -> PhysicalDeviceMaintenance4FeaturesKHRBuilder<'a> {
24249         PhysicalDeviceMaintenance4FeaturesKHRBuilder {
24250             inner: Self::default(),
24251             marker: ::std::marker::PhantomData,
24252         }
24253     }
24254 }
24255 #[repr(transparent)]
24256 pub struct PhysicalDeviceMaintenance4FeaturesKHRBuilder<'a> {
24257     inner: PhysicalDeviceMaintenance4FeaturesKHR,
24258     marker: ::std::marker::PhantomData<&'a ()>,
24259 }
24260 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMaintenance4FeaturesKHRBuilder<'_> {}
24261 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMaintenance4FeaturesKHR {}
24262 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMaintenance4FeaturesKHRBuilder<'_> {}
24263 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMaintenance4FeaturesKHR {}
24264 impl<'a> ::std::ops::Deref for PhysicalDeviceMaintenance4FeaturesKHRBuilder<'a> {
24265     type Target = PhysicalDeviceMaintenance4FeaturesKHR;
deref(&self) -> &Self::Target24266     fn deref(&self) -> &Self::Target {
24267         &self.inner
24268     }
24269 }
24270 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMaintenance4FeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24271     fn deref_mut(&mut self) -> &mut Self::Target {
24272         &mut self.inner
24273     }
24274 }
24275 impl<'a> PhysicalDeviceMaintenance4FeaturesKHRBuilder<'a> {
maintenance4(mut self, maintenance4: bool) -> Self24276     pub fn maintenance4(mut self, maintenance4: bool) -> Self {
24277         self.inner.maintenance4 = maintenance4.into();
24278         self
24279     }
24280     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24281     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24282     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMaintenance4FeaturesKHR24283     pub fn build(self) -> PhysicalDeviceMaintenance4FeaturesKHR {
24284         self.inner
24285     }
24286 }
24287 #[repr(C)]
24288 #[cfg_attr(feature = "debug", derive(Debug))]
24289 #[derive(Copy, Clone)]
24290 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>"]
24291 pub struct PhysicalDeviceMaintenance4PropertiesKHR {
24292     pub s_type: StructureType,
24293     pub p_next: *mut c_void,
24294     pub max_buffer_size: DeviceSize,
24295 }
24296 impl ::std::default::Default for PhysicalDeviceMaintenance4PropertiesKHR {
default() -> Self24297     fn default() -> Self {
24298         Self {
24299             s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR,
24300             p_next: ::std::ptr::null_mut(),
24301             max_buffer_size: DeviceSize::default(),
24302         }
24303     }
24304 }
24305 impl PhysicalDeviceMaintenance4PropertiesKHR {
builder<'a>() -> PhysicalDeviceMaintenance4PropertiesKHRBuilder<'a>24306     pub fn builder<'a>() -> PhysicalDeviceMaintenance4PropertiesKHRBuilder<'a> {
24307         PhysicalDeviceMaintenance4PropertiesKHRBuilder {
24308             inner: Self::default(),
24309             marker: ::std::marker::PhantomData,
24310         }
24311     }
24312 }
24313 #[repr(transparent)]
24314 pub struct PhysicalDeviceMaintenance4PropertiesKHRBuilder<'a> {
24315     inner: PhysicalDeviceMaintenance4PropertiesKHR,
24316     marker: ::std::marker::PhantomData<&'a ()>,
24317 }
24318 unsafe impl ExtendsPhysicalDeviceProperties2
24319     for PhysicalDeviceMaintenance4PropertiesKHRBuilder<'_>
24320 {
24321 }
24322 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMaintenance4PropertiesKHR {}
24323 impl<'a> ::std::ops::Deref for PhysicalDeviceMaintenance4PropertiesKHRBuilder<'a> {
24324     type Target = PhysicalDeviceMaintenance4PropertiesKHR;
deref(&self) -> &Self::Target24325     fn deref(&self) -> &Self::Target {
24326         &self.inner
24327     }
24328 }
24329 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMaintenance4PropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24330     fn deref_mut(&mut self) -> &mut Self::Target {
24331         &mut self.inner
24332     }
24333 }
24334 impl<'a> PhysicalDeviceMaintenance4PropertiesKHRBuilder<'a> {
max_buffer_size(mut self, max_buffer_size: DeviceSize) -> Self24335     pub fn max_buffer_size(mut self, max_buffer_size: DeviceSize) -> Self {
24336         self.inner.max_buffer_size = max_buffer_size;
24337         self
24338     }
24339     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24340     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24341     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMaintenance4PropertiesKHR24342     pub fn build(self) -> PhysicalDeviceMaintenance4PropertiesKHR {
24343         self.inner
24344     }
24345 }
24346 #[repr(C)]
24347 #[cfg_attr(feature = "debug", derive(Debug))]
24348 #[derive(Copy, Clone)]
24349 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutSupport.html>"]
24350 pub struct DescriptorSetLayoutSupport {
24351     pub s_type: StructureType,
24352     pub p_next: *mut c_void,
24353     pub supported: Bool32,
24354 }
24355 impl ::std::default::Default for DescriptorSetLayoutSupport {
default() -> Self24356     fn default() -> Self {
24357         Self {
24358             s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
24359             p_next: ::std::ptr::null_mut(),
24360             supported: Bool32::default(),
24361         }
24362     }
24363 }
24364 impl DescriptorSetLayoutSupport {
builder<'a>() -> DescriptorSetLayoutSupportBuilder<'a>24365     pub fn builder<'a>() -> DescriptorSetLayoutSupportBuilder<'a> {
24366         DescriptorSetLayoutSupportBuilder {
24367             inner: Self::default(),
24368             marker: ::std::marker::PhantomData,
24369         }
24370     }
24371 }
24372 #[repr(transparent)]
24373 pub struct DescriptorSetLayoutSupportBuilder<'a> {
24374     inner: DescriptorSetLayoutSupport,
24375     marker: ::std::marker::PhantomData<&'a ()>,
24376 }
24377 pub unsafe trait ExtendsDescriptorSetLayoutSupport {}
24378 impl<'a> ::std::ops::Deref for DescriptorSetLayoutSupportBuilder<'a> {
24379     type Target = DescriptorSetLayoutSupport;
deref(&self) -> &Self::Target24380     fn deref(&self) -> &Self::Target {
24381         &self.inner
24382     }
24383 }
24384 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutSupportBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24385     fn deref_mut(&mut self) -> &mut Self::Target {
24386         &mut self.inner
24387     }
24388 }
24389 impl<'a> DescriptorSetLayoutSupportBuilder<'a> {
supported(mut self, supported: bool) -> Self24390     pub fn supported(mut self, supported: bool) -> Self {
24391         self.inner.supported = supported.into();
24392         self
24393     }
24394     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
24395     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
24396     #[doc = r" valid extension structs can be pushed into the chain."]
24397     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
24398     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsDescriptorSetLayoutSupport>(mut self, next: &'a mut T) -> Self24399     pub fn push_next<T: ExtendsDescriptorSetLayoutSupport>(mut self, next: &'a mut T) -> Self {
24400         unsafe {
24401             let next_ptr = next as *mut T as *mut BaseOutStructure;
24402             let last_next = ptr_chain_iter(next).last().unwrap();
24403             (*last_next).p_next = self.inner.p_next as _;
24404             self.inner.p_next = next_ptr as _;
24405         }
24406         self
24407     }
24408     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24409     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24410     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutSupport24411     pub fn build(self) -> DescriptorSetLayoutSupport {
24412         self.inner
24413     }
24414 }
24415 #[repr(C)]
24416 #[cfg_attr(feature = "debug", derive(Debug))]
24417 #[derive(Copy, Clone)]
24418 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>"]
24419 pub struct PhysicalDeviceShaderDrawParametersFeatures {
24420     pub s_type: StructureType,
24421     pub p_next: *mut c_void,
24422     pub shader_draw_parameters: Bool32,
24423 }
24424 impl ::std::default::Default for PhysicalDeviceShaderDrawParametersFeatures {
default() -> Self24425     fn default() -> Self {
24426         Self {
24427             s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
24428             p_next: ::std::ptr::null_mut(),
24429             shader_draw_parameters: Bool32::default(),
24430         }
24431     }
24432 }
24433 impl PhysicalDeviceShaderDrawParametersFeatures {
builder<'a>() -> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a>24434     pub fn builder<'a>() -> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
24435         PhysicalDeviceShaderDrawParametersFeaturesBuilder {
24436             inner: Self::default(),
24437             marker: ::std::marker::PhantomData,
24438         }
24439     }
24440 }
24441 #[repr(transparent)]
24442 pub struct PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
24443     inner: PhysicalDeviceShaderDrawParametersFeatures,
24444     marker: ::std::marker::PhantomData<&'a ()>,
24445 }
24446 unsafe impl ExtendsPhysicalDeviceFeatures2
24447     for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'_>
24448 {
24449 }
24450 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderDrawParametersFeatures {}
24451 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'_> {}
24452 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDrawParametersFeatures {}
24453 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
24454     type Target = PhysicalDeviceShaderDrawParametersFeatures;
deref(&self) -> &Self::Target24455     fn deref(&self) -> &Self::Target {
24456         &self.inner
24457     }
24458 }
24459 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24460     fn deref_mut(&mut self) -> &mut Self::Target {
24461         &mut self.inner
24462     }
24463 }
24464 impl<'a> PhysicalDeviceShaderDrawParametersFeaturesBuilder<'a> {
shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self24465     pub fn shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self {
24466         self.inner.shader_draw_parameters = shader_draw_parameters.into();
24467         self
24468     }
24469     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24470     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24471     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderDrawParametersFeatures24472     pub fn build(self) -> PhysicalDeviceShaderDrawParametersFeatures {
24473         self.inner
24474     }
24475 }
24476 #[repr(C)]
24477 #[cfg_attr(feature = "debug", derive(Debug))]
24478 #[derive(Copy, Clone)]
24479 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>"]
24480 pub struct PhysicalDeviceShaderFloat16Int8Features {
24481     pub s_type: StructureType,
24482     pub p_next: *mut c_void,
24483     pub shader_float16: Bool32,
24484     pub shader_int8: Bool32,
24485 }
24486 impl ::std::default::Default for PhysicalDeviceShaderFloat16Int8Features {
default() -> Self24487     fn default() -> Self {
24488         Self {
24489             s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
24490             p_next: ::std::ptr::null_mut(),
24491             shader_float16: Bool32::default(),
24492             shader_int8: Bool32::default(),
24493         }
24494     }
24495 }
24496 impl PhysicalDeviceShaderFloat16Int8Features {
builder<'a>() -> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a>24497     pub fn builder<'a>() -> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
24498         PhysicalDeviceShaderFloat16Int8FeaturesBuilder {
24499             inner: Self::default(),
24500             marker: ::std::marker::PhantomData,
24501         }
24502     }
24503 }
24504 #[repr(transparent)]
24505 pub struct PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
24506     inner: PhysicalDeviceShaderFloat16Int8Features,
24507     marker: ::std::marker::PhantomData<&'a ()>,
24508 }
24509 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'_> {}
24510 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderFloat16Int8Features {}
24511 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'_> {}
24512 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderFloat16Int8Features {}
24513 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
24514     type Target = PhysicalDeviceShaderFloat16Int8Features;
deref(&self) -> &Self::Target24515     fn deref(&self) -> &Self::Target {
24516         &self.inner
24517     }
24518 }
24519 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24520     fn deref_mut(&mut self) -> &mut Self::Target {
24521         &mut self.inner
24522     }
24523 }
24524 impl<'a> PhysicalDeviceShaderFloat16Int8FeaturesBuilder<'a> {
shader_float16(mut self, shader_float16: bool) -> Self24525     pub fn shader_float16(mut self, shader_float16: bool) -> Self {
24526         self.inner.shader_float16 = shader_float16.into();
24527         self
24528     }
shader_int8(mut self, shader_int8: bool) -> Self24529     pub fn shader_int8(mut self, shader_int8: bool) -> Self {
24530         self.inner.shader_int8 = shader_int8.into();
24531         self
24532     }
24533     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24534     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24535     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderFloat16Int8Features24536     pub fn build(self) -> PhysicalDeviceShaderFloat16Int8Features {
24537         self.inner
24538     }
24539 }
24540 #[repr(C)]
24541 #[cfg_attr(feature = "debug", derive(Debug))]
24542 #[derive(Copy, Clone)]
24543 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFloatControlsProperties.html>"]
24544 pub struct PhysicalDeviceFloatControlsProperties {
24545     pub s_type: StructureType,
24546     pub p_next: *mut c_void,
24547     pub denorm_behavior_independence: ShaderFloatControlsIndependence,
24548     pub rounding_mode_independence: ShaderFloatControlsIndependence,
24549     pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
24550     pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
24551     pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
24552     pub shader_denorm_preserve_float16: Bool32,
24553     pub shader_denorm_preserve_float32: Bool32,
24554     pub shader_denorm_preserve_float64: Bool32,
24555     pub shader_denorm_flush_to_zero_float16: Bool32,
24556     pub shader_denorm_flush_to_zero_float32: Bool32,
24557     pub shader_denorm_flush_to_zero_float64: Bool32,
24558     pub shader_rounding_mode_rte_float16: Bool32,
24559     pub shader_rounding_mode_rte_float32: Bool32,
24560     pub shader_rounding_mode_rte_float64: Bool32,
24561     pub shader_rounding_mode_rtz_float16: Bool32,
24562     pub shader_rounding_mode_rtz_float32: Bool32,
24563     pub shader_rounding_mode_rtz_float64: Bool32,
24564 }
24565 impl ::std::default::Default for PhysicalDeviceFloatControlsProperties {
default() -> Self24566     fn default() -> Self {
24567         Self {
24568             s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
24569             p_next: ::std::ptr::null_mut(),
24570             denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
24571             rounding_mode_independence: ShaderFloatControlsIndependence::default(),
24572             shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
24573             shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
24574             shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
24575             shader_denorm_preserve_float16: Bool32::default(),
24576             shader_denorm_preserve_float32: Bool32::default(),
24577             shader_denorm_preserve_float64: Bool32::default(),
24578             shader_denorm_flush_to_zero_float16: Bool32::default(),
24579             shader_denorm_flush_to_zero_float32: Bool32::default(),
24580             shader_denorm_flush_to_zero_float64: Bool32::default(),
24581             shader_rounding_mode_rte_float16: Bool32::default(),
24582             shader_rounding_mode_rte_float32: Bool32::default(),
24583             shader_rounding_mode_rte_float64: Bool32::default(),
24584             shader_rounding_mode_rtz_float16: Bool32::default(),
24585             shader_rounding_mode_rtz_float32: Bool32::default(),
24586             shader_rounding_mode_rtz_float64: Bool32::default(),
24587         }
24588     }
24589 }
24590 impl PhysicalDeviceFloatControlsProperties {
builder<'a>() -> PhysicalDeviceFloatControlsPropertiesBuilder<'a>24591     pub fn builder<'a>() -> PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
24592         PhysicalDeviceFloatControlsPropertiesBuilder {
24593             inner: Self::default(),
24594             marker: ::std::marker::PhantomData,
24595         }
24596     }
24597 }
24598 #[repr(transparent)]
24599 pub struct PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
24600     inner: PhysicalDeviceFloatControlsProperties,
24601     marker: ::std::marker::PhantomData<&'a ()>,
24602 }
24603 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFloatControlsPropertiesBuilder<'_> {}
24604 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFloatControlsProperties {}
24605 impl<'a> ::std::ops::Deref for PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
24606     type Target = PhysicalDeviceFloatControlsProperties;
deref(&self) -> &Self::Target24607     fn deref(&self) -> &Self::Target {
24608         &self.inner
24609     }
24610 }
24611 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24612     fn deref_mut(&mut self) -> &mut Self::Target {
24613         &mut self.inner
24614     }
24615 }
24616 impl<'a> PhysicalDeviceFloatControlsPropertiesBuilder<'a> {
denorm_behavior_independence( mut self, denorm_behavior_independence: ShaderFloatControlsIndependence, ) -> Self24617     pub fn denorm_behavior_independence(
24618         mut self,
24619         denorm_behavior_independence: ShaderFloatControlsIndependence,
24620     ) -> Self {
24621         self.inner.denorm_behavior_independence = denorm_behavior_independence;
24622         self
24623     }
rounding_mode_independence( mut self, rounding_mode_independence: ShaderFloatControlsIndependence, ) -> Self24624     pub fn rounding_mode_independence(
24625         mut self,
24626         rounding_mode_independence: ShaderFloatControlsIndependence,
24627     ) -> Self {
24628         self.inner.rounding_mode_independence = rounding_mode_independence;
24629         self
24630     }
shader_signed_zero_inf_nan_preserve_float16( mut self, shader_signed_zero_inf_nan_preserve_float16: bool, ) -> Self24631     pub fn shader_signed_zero_inf_nan_preserve_float16(
24632         mut self,
24633         shader_signed_zero_inf_nan_preserve_float16: bool,
24634     ) -> Self {
24635         self.inner.shader_signed_zero_inf_nan_preserve_float16 =
24636             shader_signed_zero_inf_nan_preserve_float16.into();
24637         self
24638     }
shader_signed_zero_inf_nan_preserve_float32( mut self, shader_signed_zero_inf_nan_preserve_float32: bool, ) -> Self24639     pub fn shader_signed_zero_inf_nan_preserve_float32(
24640         mut self,
24641         shader_signed_zero_inf_nan_preserve_float32: bool,
24642     ) -> Self {
24643         self.inner.shader_signed_zero_inf_nan_preserve_float32 =
24644             shader_signed_zero_inf_nan_preserve_float32.into();
24645         self
24646     }
shader_signed_zero_inf_nan_preserve_float64( mut self, shader_signed_zero_inf_nan_preserve_float64: bool, ) -> Self24647     pub fn shader_signed_zero_inf_nan_preserve_float64(
24648         mut self,
24649         shader_signed_zero_inf_nan_preserve_float64: bool,
24650     ) -> Self {
24651         self.inner.shader_signed_zero_inf_nan_preserve_float64 =
24652             shader_signed_zero_inf_nan_preserve_float64.into();
24653         self
24654     }
shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self24655     pub fn shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self {
24656         self.inner.shader_denorm_preserve_float16 = shader_denorm_preserve_float16.into();
24657         self
24658     }
shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self24659     pub fn shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self {
24660         self.inner.shader_denorm_preserve_float32 = shader_denorm_preserve_float32.into();
24661         self
24662     }
shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self24663     pub fn shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self {
24664         self.inner.shader_denorm_preserve_float64 = shader_denorm_preserve_float64.into();
24665         self
24666     }
shader_denorm_flush_to_zero_float16( mut self, shader_denorm_flush_to_zero_float16: bool, ) -> Self24667     pub fn shader_denorm_flush_to_zero_float16(
24668         mut self,
24669         shader_denorm_flush_to_zero_float16: bool,
24670     ) -> Self {
24671         self.inner.shader_denorm_flush_to_zero_float16 = shader_denorm_flush_to_zero_float16.into();
24672         self
24673     }
shader_denorm_flush_to_zero_float32( mut self, shader_denorm_flush_to_zero_float32: bool, ) -> Self24674     pub fn shader_denorm_flush_to_zero_float32(
24675         mut self,
24676         shader_denorm_flush_to_zero_float32: bool,
24677     ) -> Self {
24678         self.inner.shader_denorm_flush_to_zero_float32 = shader_denorm_flush_to_zero_float32.into();
24679         self
24680     }
shader_denorm_flush_to_zero_float64( mut self, shader_denorm_flush_to_zero_float64: bool, ) -> Self24681     pub fn shader_denorm_flush_to_zero_float64(
24682         mut self,
24683         shader_denorm_flush_to_zero_float64: bool,
24684     ) -> Self {
24685         self.inner.shader_denorm_flush_to_zero_float64 = shader_denorm_flush_to_zero_float64.into();
24686         self
24687     }
shader_rounding_mode_rte_float16( mut self, shader_rounding_mode_rte_float16: bool, ) -> Self24688     pub fn shader_rounding_mode_rte_float16(
24689         mut self,
24690         shader_rounding_mode_rte_float16: bool,
24691     ) -> Self {
24692         self.inner.shader_rounding_mode_rte_float16 = shader_rounding_mode_rte_float16.into();
24693         self
24694     }
shader_rounding_mode_rte_float32( mut self, shader_rounding_mode_rte_float32: bool, ) -> Self24695     pub fn shader_rounding_mode_rte_float32(
24696         mut self,
24697         shader_rounding_mode_rte_float32: bool,
24698     ) -> Self {
24699         self.inner.shader_rounding_mode_rte_float32 = shader_rounding_mode_rte_float32.into();
24700         self
24701     }
shader_rounding_mode_rte_float64( mut self, shader_rounding_mode_rte_float64: bool, ) -> Self24702     pub fn shader_rounding_mode_rte_float64(
24703         mut self,
24704         shader_rounding_mode_rte_float64: bool,
24705     ) -> Self {
24706         self.inner.shader_rounding_mode_rte_float64 = shader_rounding_mode_rte_float64.into();
24707         self
24708     }
shader_rounding_mode_rtz_float16( mut self, shader_rounding_mode_rtz_float16: bool, ) -> Self24709     pub fn shader_rounding_mode_rtz_float16(
24710         mut self,
24711         shader_rounding_mode_rtz_float16: bool,
24712     ) -> Self {
24713         self.inner.shader_rounding_mode_rtz_float16 = shader_rounding_mode_rtz_float16.into();
24714         self
24715     }
shader_rounding_mode_rtz_float32( mut self, shader_rounding_mode_rtz_float32: bool, ) -> Self24716     pub fn shader_rounding_mode_rtz_float32(
24717         mut self,
24718         shader_rounding_mode_rtz_float32: bool,
24719     ) -> Self {
24720         self.inner.shader_rounding_mode_rtz_float32 = shader_rounding_mode_rtz_float32.into();
24721         self
24722     }
shader_rounding_mode_rtz_float64( mut self, shader_rounding_mode_rtz_float64: bool, ) -> Self24723     pub fn shader_rounding_mode_rtz_float64(
24724         mut self,
24725         shader_rounding_mode_rtz_float64: bool,
24726     ) -> Self {
24727         self.inner.shader_rounding_mode_rtz_float64 = shader_rounding_mode_rtz_float64.into();
24728         self
24729     }
24730     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24731     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24732     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFloatControlsProperties24733     pub fn build(self) -> PhysicalDeviceFloatControlsProperties {
24734         self.inner
24735     }
24736 }
24737 #[repr(C)]
24738 #[cfg_attr(feature = "debug", derive(Debug))]
24739 #[derive(Copy, Clone)]
24740 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>"]
24741 pub struct PhysicalDeviceHostQueryResetFeatures {
24742     pub s_type: StructureType,
24743     pub p_next: *mut c_void,
24744     pub host_query_reset: Bool32,
24745 }
24746 impl ::std::default::Default for PhysicalDeviceHostQueryResetFeatures {
default() -> Self24747     fn default() -> Self {
24748         Self {
24749             s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
24750             p_next: ::std::ptr::null_mut(),
24751             host_query_reset: Bool32::default(),
24752         }
24753     }
24754 }
24755 impl PhysicalDeviceHostQueryResetFeatures {
builder<'a>() -> PhysicalDeviceHostQueryResetFeaturesBuilder<'a>24756     pub fn builder<'a>() -> PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
24757         PhysicalDeviceHostQueryResetFeaturesBuilder {
24758             inner: Self::default(),
24759             marker: ::std::marker::PhantomData,
24760         }
24761     }
24762 }
24763 #[repr(transparent)]
24764 pub struct PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
24765     inner: PhysicalDeviceHostQueryResetFeatures,
24766     marker: ::std::marker::PhantomData<&'a ()>,
24767 }
24768 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceHostQueryResetFeaturesBuilder<'_> {}
24769 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceHostQueryResetFeatures {}
24770 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceHostQueryResetFeaturesBuilder<'_> {}
24771 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceHostQueryResetFeatures {}
24772 impl<'a> ::std::ops::Deref for PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
24773     type Target = PhysicalDeviceHostQueryResetFeatures;
deref(&self) -> &Self::Target24774     fn deref(&self) -> &Self::Target {
24775         &self.inner
24776     }
24777 }
24778 impl<'a> ::std::ops::DerefMut for PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24779     fn deref_mut(&mut self) -> &mut Self::Target {
24780         &mut self.inner
24781     }
24782 }
24783 impl<'a> PhysicalDeviceHostQueryResetFeaturesBuilder<'a> {
host_query_reset(mut self, host_query_reset: bool) -> Self24784     pub fn host_query_reset(mut self, host_query_reset: bool) -> Self {
24785         self.inner.host_query_reset = host_query_reset.into();
24786         self
24787     }
24788     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24789     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24790     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceHostQueryResetFeatures24791     pub fn build(self) -> PhysicalDeviceHostQueryResetFeatures {
24792         self.inner
24793     }
24794 }
24795 #[repr(C)]
24796 #[cfg_attr(feature = "debug", derive(Debug))]
24797 #[derive(Copy, Clone, Default)]
24798 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkNativeBufferUsage2ANDROID.html>"]
24799 pub struct NativeBufferUsage2ANDROID {
24800     pub consumer: u64,
24801     pub producer: u64,
24802 }
24803 impl NativeBufferUsage2ANDROID {
builder<'a>() -> NativeBufferUsage2ANDROIDBuilder<'a>24804     pub fn builder<'a>() -> NativeBufferUsage2ANDROIDBuilder<'a> {
24805         NativeBufferUsage2ANDROIDBuilder {
24806             inner: Self::default(),
24807             marker: ::std::marker::PhantomData,
24808         }
24809     }
24810 }
24811 #[repr(transparent)]
24812 pub struct NativeBufferUsage2ANDROIDBuilder<'a> {
24813     inner: NativeBufferUsage2ANDROID,
24814     marker: ::std::marker::PhantomData<&'a ()>,
24815 }
24816 impl<'a> ::std::ops::Deref for NativeBufferUsage2ANDROIDBuilder<'a> {
24817     type Target = NativeBufferUsage2ANDROID;
deref(&self) -> &Self::Target24818     fn deref(&self) -> &Self::Target {
24819         &self.inner
24820     }
24821 }
24822 impl<'a> ::std::ops::DerefMut for NativeBufferUsage2ANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24823     fn deref_mut(&mut self) -> &mut Self::Target {
24824         &mut self.inner
24825     }
24826 }
24827 impl<'a> NativeBufferUsage2ANDROIDBuilder<'a> {
consumer(mut self, consumer: u64) -> Self24828     pub fn consumer(mut self, consumer: u64) -> Self {
24829         self.inner.consumer = consumer;
24830         self
24831     }
producer(mut self, producer: u64) -> Self24832     pub fn producer(mut self, producer: u64) -> Self {
24833         self.inner.producer = producer;
24834         self
24835     }
24836     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24837     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24838     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> NativeBufferUsage2ANDROID24839     pub fn build(self) -> NativeBufferUsage2ANDROID {
24840         self.inner
24841     }
24842 }
24843 #[repr(C)]
24844 #[cfg_attr(feature = "debug", derive(Debug))]
24845 #[derive(Copy, Clone)]
24846 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkNativeBufferANDROID.html>"]
24847 pub struct NativeBufferANDROID {
24848     pub s_type: StructureType,
24849     pub p_next: *const c_void,
24850     pub handle: *const c_void,
24851     pub stride: c_int,
24852     pub format: c_int,
24853     pub usage: c_int,
24854     pub usage2: NativeBufferUsage2ANDROID,
24855 }
24856 impl ::std::default::Default for NativeBufferANDROID {
default() -> Self24857     fn default() -> Self {
24858         Self {
24859             s_type: StructureType::NATIVE_BUFFER_ANDROID,
24860             p_next: ::std::ptr::null(),
24861             handle: ::std::ptr::null(),
24862             stride: c_int::default(),
24863             format: c_int::default(),
24864             usage: c_int::default(),
24865             usage2: NativeBufferUsage2ANDROID::default(),
24866         }
24867     }
24868 }
24869 impl NativeBufferANDROID {
builder<'a>() -> NativeBufferANDROIDBuilder<'a>24870     pub fn builder<'a>() -> NativeBufferANDROIDBuilder<'a> {
24871         NativeBufferANDROIDBuilder {
24872             inner: Self::default(),
24873             marker: ::std::marker::PhantomData,
24874         }
24875     }
24876 }
24877 #[repr(transparent)]
24878 pub struct NativeBufferANDROIDBuilder<'a> {
24879     inner: NativeBufferANDROID,
24880     marker: ::std::marker::PhantomData<&'a ()>,
24881 }
24882 impl<'a> ::std::ops::Deref for NativeBufferANDROIDBuilder<'a> {
24883     type Target = NativeBufferANDROID;
deref(&self) -> &Self::Target24884     fn deref(&self) -> &Self::Target {
24885         &self.inner
24886     }
24887 }
24888 impl<'a> ::std::ops::DerefMut for NativeBufferANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24889     fn deref_mut(&mut self) -> &mut Self::Target {
24890         &mut self.inner
24891     }
24892 }
24893 impl<'a> NativeBufferANDROIDBuilder<'a> {
handle(mut self, handle: *const c_void) -> Self24894     pub fn handle(mut self, handle: *const c_void) -> Self {
24895         self.inner.handle = handle;
24896         self
24897     }
stride(mut self, stride: c_int) -> Self24898     pub fn stride(mut self, stride: c_int) -> Self {
24899         self.inner.stride = stride;
24900         self
24901     }
format(mut self, format: c_int) -> Self24902     pub fn format(mut self, format: c_int) -> Self {
24903         self.inner.format = format;
24904         self
24905     }
usage(mut self, usage: c_int) -> Self24906     pub fn usage(mut self, usage: c_int) -> Self {
24907         self.inner.usage = usage;
24908         self
24909     }
usage2(mut self, usage2: NativeBufferUsage2ANDROID) -> Self24910     pub fn usage2(mut self, usage2: NativeBufferUsage2ANDROID) -> Self {
24911         self.inner.usage2 = usage2;
24912         self
24913     }
24914     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24915     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24916     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> NativeBufferANDROID24917     pub fn build(self) -> NativeBufferANDROID {
24918         self.inner
24919     }
24920 }
24921 #[repr(C)]
24922 #[cfg_attr(feature = "debug", derive(Debug))]
24923 #[derive(Copy, Clone)]
24924 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainImageCreateInfoANDROID.html>"]
24925 pub struct SwapchainImageCreateInfoANDROID {
24926     pub s_type: StructureType,
24927     pub p_next: *const c_void,
24928     pub usage: SwapchainImageUsageFlagsANDROID,
24929 }
24930 impl ::std::default::Default for SwapchainImageCreateInfoANDROID {
default() -> Self24931     fn default() -> Self {
24932         Self {
24933             s_type: StructureType::SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID,
24934             p_next: ::std::ptr::null(),
24935             usage: SwapchainImageUsageFlagsANDROID::default(),
24936         }
24937     }
24938 }
24939 impl SwapchainImageCreateInfoANDROID {
builder<'a>() -> SwapchainImageCreateInfoANDROIDBuilder<'a>24940     pub fn builder<'a>() -> SwapchainImageCreateInfoANDROIDBuilder<'a> {
24941         SwapchainImageCreateInfoANDROIDBuilder {
24942             inner: Self::default(),
24943             marker: ::std::marker::PhantomData,
24944         }
24945     }
24946 }
24947 #[repr(transparent)]
24948 pub struct SwapchainImageCreateInfoANDROIDBuilder<'a> {
24949     inner: SwapchainImageCreateInfoANDROID,
24950     marker: ::std::marker::PhantomData<&'a ()>,
24951 }
24952 impl<'a> ::std::ops::Deref for SwapchainImageCreateInfoANDROIDBuilder<'a> {
24953     type Target = SwapchainImageCreateInfoANDROID;
deref(&self) -> &Self::Target24954     fn deref(&self) -> &Self::Target {
24955         &self.inner
24956     }
24957 }
24958 impl<'a> ::std::ops::DerefMut for SwapchainImageCreateInfoANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target24959     fn deref_mut(&mut self) -> &mut Self::Target {
24960         &mut self.inner
24961     }
24962 }
24963 impl<'a> SwapchainImageCreateInfoANDROIDBuilder<'a> {
usage(mut self, usage: SwapchainImageUsageFlagsANDROID) -> Self24964     pub fn usage(mut self, usage: SwapchainImageUsageFlagsANDROID) -> Self {
24965         self.inner.usage = usage;
24966         self
24967     }
24968     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
24969     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
24970     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SwapchainImageCreateInfoANDROID24971     pub fn build(self) -> SwapchainImageCreateInfoANDROID {
24972         self.inner
24973     }
24974 }
24975 #[repr(C)]
24976 #[cfg_attr(feature = "debug", derive(Debug))]
24977 #[derive(Copy, Clone)]
24978 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePresentationPropertiesANDROID.html>"]
24979 pub struct PhysicalDevicePresentationPropertiesANDROID {
24980     pub s_type: StructureType,
24981     pub p_next: *const c_void,
24982     pub shared_image: Bool32,
24983 }
24984 impl ::std::default::Default for PhysicalDevicePresentationPropertiesANDROID {
default() -> Self24985     fn default() -> Self {
24986         Self {
24987             s_type: StructureType::PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID,
24988             p_next: ::std::ptr::null(),
24989             shared_image: Bool32::default(),
24990         }
24991     }
24992 }
24993 impl PhysicalDevicePresentationPropertiesANDROID {
builder<'a>() -> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a>24994     pub fn builder<'a>() -> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
24995         PhysicalDevicePresentationPropertiesANDROIDBuilder {
24996             inner: Self::default(),
24997             marker: ::std::marker::PhantomData,
24998         }
24999     }
25000 }
25001 #[repr(transparent)]
25002 pub struct PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
25003     inner: PhysicalDevicePresentationPropertiesANDROID,
25004     marker: ::std::marker::PhantomData<&'a ()>,
25005 }
25006 impl<'a> ::std::ops::Deref for PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
25007     type Target = PhysicalDevicePresentationPropertiesANDROID;
deref(&self) -> &Self::Target25008     fn deref(&self) -> &Self::Target {
25009         &self.inner
25010     }
25011 }
25012 impl<'a> ::std::ops::DerefMut for PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25013     fn deref_mut(&mut self) -> &mut Self::Target {
25014         &mut self.inner
25015     }
25016 }
25017 impl<'a> PhysicalDevicePresentationPropertiesANDROIDBuilder<'a> {
shared_image(mut self, shared_image: bool) -> Self25018     pub fn shared_image(mut self, shared_image: bool) -> Self {
25019         self.inner.shared_image = shared_image.into();
25020         self
25021     }
25022     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25023     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25024     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePresentationPropertiesANDROID25025     pub fn build(self) -> PhysicalDevicePresentationPropertiesANDROID {
25026         self.inner
25027     }
25028 }
25029 #[repr(C)]
25030 #[cfg_attr(feature = "debug", derive(Debug))]
25031 #[derive(Copy, Clone, Default)]
25032 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderResourceUsageAMD.html>"]
25033 pub struct ShaderResourceUsageAMD {
25034     pub num_used_vgprs: u32,
25035     pub num_used_sgprs: u32,
25036     pub lds_size_per_local_work_group: u32,
25037     pub lds_usage_size_in_bytes: usize,
25038     pub scratch_mem_usage_in_bytes: usize,
25039 }
25040 impl ShaderResourceUsageAMD {
builder<'a>() -> ShaderResourceUsageAMDBuilder<'a>25041     pub fn builder<'a>() -> ShaderResourceUsageAMDBuilder<'a> {
25042         ShaderResourceUsageAMDBuilder {
25043             inner: Self::default(),
25044             marker: ::std::marker::PhantomData,
25045         }
25046     }
25047 }
25048 #[repr(transparent)]
25049 pub struct ShaderResourceUsageAMDBuilder<'a> {
25050     inner: ShaderResourceUsageAMD,
25051     marker: ::std::marker::PhantomData<&'a ()>,
25052 }
25053 impl<'a> ::std::ops::Deref for ShaderResourceUsageAMDBuilder<'a> {
25054     type Target = ShaderResourceUsageAMD;
deref(&self) -> &Self::Target25055     fn deref(&self) -> &Self::Target {
25056         &self.inner
25057     }
25058 }
25059 impl<'a> ::std::ops::DerefMut for ShaderResourceUsageAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25060     fn deref_mut(&mut self) -> &mut Self::Target {
25061         &mut self.inner
25062     }
25063 }
25064 impl<'a> ShaderResourceUsageAMDBuilder<'a> {
num_used_vgprs(mut self, num_used_vgprs: u32) -> Self25065     pub fn num_used_vgprs(mut self, num_used_vgprs: u32) -> Self {
25066         self.inner.num_used_vgprs = num_used_vgprs;
25067         self
25068     }
num_used_sgprs(mut self, num_used_sgprs: u32) -> Self25069     pub fn num_used_sgprs(mut self, num_used_sgprs: u32) -> Self {
25070         self.inner.num_used_sgprs = num_used_sgprs;
25071         self
25072     }
lds_size_per_local_work_group(mut self, lds_size_per_local_work_group: u32) -> Self25073     pub fn lds_size_per_local_work_group(mut self, lds_size_per_local_work_group: u32) -> Self {
25074         self.inner.lds_size_per_local_work_group = lds_size_per_local_work_group;
25075         self
25076     }
lds_usage_size_in_bytes(mut self, lds_usage_size_in_bytes: usize) -> Self25077     pub fn lds_usage_size_in_bytes(mut self, lds_usage_size_in_bytes: usize) -> Self {
25078         self.inner.lds_usage_size_in_bytes = lds_usage_size_in_bytes;
25079         self
25080     }
scratch_mem_usage_in_bytes(mut self, scratch_mem_usage_in_bytes: usize) -> Self25081     pub fn scratch_mem_usage_in_bytes(mut self, scratch_mem_usage_in_bytes: usize) -> Self {
25082         self.inner.scratch_mem_usage_in_bytes = scratch_mem_usage_in_bytes;
25083         self
25084     }
25085     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25086     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25087     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderResourceUsageAMD25088     pub fn build(self) -> ShaderResourceUsageAMD {
25089         self.inner
25090     }
25091 }
25092 #[repr(C)]
25093 #[cfg_attr(feature = "debug", derive(Debug))]
25094 #[derive(Copy, Clone)]
25095 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderStatisticsInfoAMD.html>"]
25096 pub struct ShaderStatisticsInfoAMD {
25097     pub shader_stage_mask: ShaderStageFlags,
25098     pub resource_usage: ShaderResourceUsageAMD,
25099     pub num_physical_vgprs: u32,
25100     pub num_physical_sgprs: u32,
25101     pub num_available_vgprs: u32,
25102     pub num_available_sgprs: u32,
25103     pub compute_work_group_size: [u32; 3],
25104 }
25105 impl ::std::default::Default for ShaderStatisticsInfoAMD {
default() -> Self25106     fn default() -> Self {
25107         Self {
25108             shader_stage_mask: ShaderStageFlags::default(),
25109             resource_usage: ShaderResourceUsageAMD::default(),
25110             num_physical_vgprs: u32::default(),
25111             num_physical_sgprs: u32::default(),
25112             num_available_vgprs: u32::default(),
25113             num_available_sgprs: u32::default(),
25114             compute_work_group_size: unsafe { ::std::mem::zeroed() },
25115         }
25116     }
25117 }
25118 impl ShaderStatisticsInfoAMD {
builder<'a>() -> ShaderStatisticsInfoAMDBuilder<'a>25119     pub fn builder<'a>() -> ShaderStatisticsInfoAMDBuilder<'a> {
25120         ShaderStatisticsInfoAMDBuilder {
25121             inner: Self::default(),
25122             marker: ::std::marker::PhantomData,
25123         }
25124     }
25125 }
25126 #[repr(transparent)]
25127 pub struct ShaderStatisticsInfoAMDBuilder<'a> {
25128     inner: ShaderStatisticsInfoAMD,
25129     marker: ::std::marker::PhantomData<&'a ()>,
25130 }
25131 impl<'a> ::std::ops::Deref for ShaderStatisticsInfoAMDBuilder<'a> {
25132     type Target = ShaderStatisticsInfoAMD;
deref(&self) -> &Self::Target25133     fn deref(&self) -> &Self::Target {
25134         &self.inner
25135     }
25136 }
25137 impl<'a> ::std::ops::DerefMut for ShaderStatisticsInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25138     fn deref_mut(&mut self) -> &mut Self::Target {
25139         &mut self.inner
25140     }
25141 }
25142 impl<'a> ShaderStatisticsInfoAMDBuilder<'a> {
shader_stage_mask(mut self, shader_stage_mask: ShaderStageFlags) -> Self25143     pub fn shader_stage_mask(mut self, shader_stage_mask: ShaderStageFlags) -> Self {
25144         self.inner.shader_stage_mask = shader_stage_mask;
25145         self
25146     }
resource_usage(mut self, resource_usage: ShaderResourceUsageAMD) -> Self25147     pub fn resource_usage(mut self, resource_usage: ShaderResourceUsageAMD) -> Self {
25148         self.inner.resource_usage = resource_usage;
25149         self
25150     }
num_physical_vgprs(mut self, num_physical_vgprs: u32) -> Self25151     pub fn num_physical_vgprs(mut self, num_physical_vgprs: u32) -> Self {
25152         self.inner.num_physical_vgprs = num_physical_vgprs;
25153         self
25154     }
num_physical_sgprs(mut self, num_physical_sgprs: u32) -> Self25155     pub fn num_physical_sgprs(mut self, num_physical_sgprs: u32) -> Self {
25156         self.inner.num_physical_sgprs = num_physical_sgprs;
25157         self
25158     }
num_available_vgprs(mut self, num_available_vgprs: u32) -> Self25159     pub fn num_available_vgprs(mut self, num_available_vgprs: u32) -> Self {
25160         self.inner.num_available_vgprs = num_available_vgprs;
25161         self
25162     }
num_available_sgprs(mut self, num_available_sgprs: u32) -> Self25163     pub fn num_available_sgprs(mut self, num_available_sgprs: u32) -> Self {
25164         self.inner.num_available_sgprs = num_available_sgprs;
25165         self
25166     }
compute_work_group_size(mut self, compute_work_group_size: [u32; 3]) -> Self25167     pub fn compute_work_group_size(mut self, compute_work_group_size: [u32; 3]) -> Self {
25168         self.inner.compute_work_group_size = compute_work_group_size;
25169         self
25170     }
25171     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25172     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25173     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShaderStatisticsInfoAMD25174     pub fn build(self) -> ShaderStatisticsInfoAMD {
25175         self.inner
25176     }
25177 }
25178 #[repr(C)]
25179 #[cfg_attr(feature = "debug", derive(Debug))]
25180 #[derive(Copy, Clone)]
25181 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>"]
25182 pub struct DeviceQueueGlobalPriorityCreateInfoEXT {
25183     pub s_type: StructureType,
25184     pub p_next: *const c_void,
25185     pub global_priority: QueueGlobalPriorityEXT,
25186 }
25187 impl ::std::default::Default for DeviceQueueGlobalPriorityCreateInfoEXT {
default() -> Self25188     fn default() -> Self {
25189         Self {
25190             s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
25191             p_next: ::std::ptr::null(),
25192             global_priority: QueueGlobalPriorityEXT::default(),
25193         }
25194     }
25195 }
25196 impl DeviceQueueGlobalPriorityCreateInfoEXT {
builder<'a>() -> DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a>25197     pub fn builder<'a>() -> DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
25198         DeviceQueueGlobalPriorityCreateInfoEXTBuilder {
25199             inner: Self::default(),
25200             marker: ::std::marker::PhantomData,
25201         }
25202     }
25203 }
25204 #[repr(transparent)]
25205 pub struct DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
25206     inner: DeviceQueueGlobalPriorityCreateInfoEXT,
25207     marker: ::std::marker::PhantomData<&'a ()>,
25208 }
25209 unsafe impl ExtendsDeviceQueueCreateInfo for DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'_> {}
25210 unsafe impl ExtendsDeviceQueueCreateInfo for DeviceQueueGlobalPriorityCreateInfoEXT {}
25211 impl<'a> ::std::ops::Deref for DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
25212     type Target = DeviceQueueGlobalPriorityCreateInfoEXT;
deref(&self) -> &Self::Target25213     fn deref(&self) -> &Self::Target {
25214         &self.inner
25215     }
25216 }
25217 impl<'a> ::std::ops::DerefMut for DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25218     fn deref_mut(&mut self) -> &mut Self::Target {
25219         &mut self.inner
25220     }
25221 }
25222 impl<'a> DeviceQueueGlobalPriorityCreateInfoEXTBuilder<'a> {
global_priority(mut self, global_priority: QueueGlobalPriorityEXT) -> Self25223     pub fn global_priority(mut self, global_priority: QueueGlobalPriorityEXT) -> Self {
25224         self.inner.global_priority = global_priority;
25225         self
25226     }
25227     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25228     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25229     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceQueueGlobalPriorityCreateInfoEXT25230     pub fn build(self) -> DeviceQueueGlobalPriorityCreateInfoEXT {
25231         self.inner
25232     }
25233 }
25234 #[repr(C)]
25235 #[cfg_attr(feature = "debug", derive(Debug))]
25236 #[derive(Copy, Clone)]
25237 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>"]
25238 pub struct PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
25239     pub s_type: StructureType,
25240     pub p_next: *mut c_void,
25241     pub global_priority_query: Bool32,
25242 }
25243 impl ::std::default::Default for PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
default() -> Self25244     fn default() -> Self {
25245         Self {
25246             s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT,
25247             p_next: ::std::ptr::null_mut(),
25248             global_priority_query: Bool32::default(),
25249         }
25250     }
25251 }
25252 impl PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
builder<'a>() -> PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a>25253     pub fn builder<'a>() -> PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
25254         PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder {
25255             inner: Self::default(),
25256             marker: ::std::marker::PhantomData,
25257         }
25258     }
25259 }
25260 #[repr(transparent)]
25261 pub struct PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
25262     inner: PhysicalDeviceGlobalPriorityQueryFeaturesEXT,
25263     marker: ::std::marker::PhantomData<&'a ()>,
25264 }
25265 unsafe impl ExtendsPhysicalDeviceFeatures2
25266     for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'_>
25267 {
25268 }
25269 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceGlobalPriorityQueryFeaturesEXT {}
25270 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'_> {}
25271 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceGlobalPriorityQueryFeaturesEXT {}
25272 impl<'a> ::std::ops::Deref for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
25273     type Target = PhysicalDeviceGlobalPriorityQueryFeaturesEXT;
deref(&self) -> &Self::Target25274     fn deref(&self) -> &Self::Target {
25275         &self.inner
25276     }
25277 }
25278 impl<'a> ::std::ops::DerefMut for PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25279     fn deref_mut(&mut self) -> &mut Self::Target {
25280         &mut self.inner
25281     }
25282 }
25283 impl<'a> PhysicalDeviceGlobalPriorityQueryFeaturesEXTBuilder<'a> {
global_priority_query(mut self, global_priority_query: bool) -> Self25284     pub fn global_priority_query(mut self, global_priority_query: bool) -> Self {
25285         self.inner.global_priority_query = global_priority_query.into();
25286         self
25287     }
25288     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25289     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25290     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceGlobalPriorityQueryFeaturesEXT25291     pub fn build(self) -> PhysicalDeviceGlobalPriorityQueryFeaturesEXT {
25292         self.inner
25293     }
25294 }
25295 #[repr(C)]
25296 #[cfg_attr(feature = "debug", derive(Debug))]
25297 #[derive(Copy, Clone)]
25298 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>"]
25299 pub struct QueueFamilyGlobalPriorityPropertiesEXT {
25300     pub s_type: StructureType,
25301     pub p_next: *mut c_void,
25302     pub priority_count: u32,
25303     pub priorities: [QueueGlobalPriorityEXT; MAX_GLOBAL_PRIORITY_SIZE_EXT],
25304 }
25305 impl ::std::default::Default for QueueFamilyGlobalPriorityPropertiesEXT {
default() -> Self25306     fn default() -> Self {
25307         Self {
25308             s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT,
25309             p_next: ::std::ptr::null_mut(),
25310             priority_count: u32::default(),
25311             priorities: unsafe { ::std::mem::zeroed() },
25312         }
25313     }
25314 }
25315 impl QueueFamilyGlobalPriorityPropertiesEXT {
builder<'a>() -> QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a>25316     pub fn builder<'a>() -> QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
25317         QueueFamilyGlobalPriorityPropertiesEXTBuilder {
25318             inner: Self::default(),
25319             marker: ::std::marker::PhantomData,
25320         }
25321     }
25322 }
25323 #[repr(transparent)]
25324 pub struct QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
25325     inner: QueueFamilyGlobalPriorityPropertiesEXT,
25326     marker: ::std::marker::PhantomData<&'a ()>,
25327 }
25328 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyGlobalPriorityPropertiesEXTBuilder<'_> {}
25329 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyGlobalPriorityPropertiesEXT {}
25330 impl<'a> ::std::ops::Deref for QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
25331     type Target = QueueFamilyGlobalPriorityPropertiesEXT;
deref(&self) -> &Self::Target25332     fn deref(&self) -> &Self::Target {
25333         &self.inner
25334     }
25335 }
25336 impl<'a> ::std::ops::DerefMut for QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25337     fn deref_mut(&mut self) -> &mut Self::Target {
25338         &mut self.inner
25339     }
25340 }
25341 impl<'a> QueueFamilyGlobalPriorityPropertiesEXTBuilder<'a> {
priority_count(mut self, priority_count: u32) -> Self25342     pub fn priority_count(mut self, priority_count: u32) -> Self {
25343         self.inner.priority_count = priority_count;
25344         self
25345     }
priorities( mut self, priorities: [QueueGlobalPriorityEXT; MAX_GLOBAL_PRIORITY_SIZE_EXT], ) -> Self25346     pub fn priorities(
25347         mut self,
25348         priorities: [QueueGlobalPriorityEXT; MAX_GLOBAL_PRIORITY_SIZE_EXT],
25349     ) -> Self {
25350         self.inner.priorities = priorities;
25351         self
25352     }
25353     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25354     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25355     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyGlobalPriorityPropertiesEXT25356     pub fn build(self) -> QueueFamilyGlobalPriorityPropertiesEXT {
25357         self.inner
25358     }
25359 }
25360 #[repr(C)]
25361 #[cfg_attr(feature = "debug", derive(Debug))]
25362 #[derive(Copy, Clone)]
25363 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsObjectNameInfoEXT.html>"]
25364 pub struct DebugUtilsObjectNameInfoEXT {
25365     pub s_type: StructureType,
25366     pub p_next: *const c_void,
25367     pub object_type: ObjectType,
25368     pub object_handle: u64,
25369     pub p_object_name: *const c_char,
25370 }
25371 impl ::std::default::Default for DebugUtilsObjectNameInfoEXT {
default() -> Self25372     fn default() -> Self {
25373         Self {
25374             s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
25375             p_next: ::std::ptr::null(),
25376             object_type: ObjectType::default(),
25377             object_handle: u64::default(),
25378             p_object_name: ::std::ptr::null(),
25379         }
25380     }
25381 }
25382 impl DebugUtilsObjectNameInfoEXT {
builder<'a>() -> DebugUtilsObjectNameInfoEXTBuilder<'a>25383     pub fn builder<'a>() -> DebugUtilsObjectNameInfoEXTBuilder<'a> {
25384         DebugUtilsObjectNameInfoEXTBuilder {
25385             inner: Self::default(),
25386             marker: ::std::marker::PhantomData,
25387         }
25388     }
25389 }
25390 #[repr(transparent)]
25391 pub struct DebugUtilsObjectNameInfoEXTBuilder<'a> {
25392     inner: DebugUtilsObjectNameInfoEXT,
25393     marker: ::std::marker::PhantomData<&'a ()>,
25394 }
25395 impl<'a> ::std::ops::Deref for DebugUtilsObjectNameInfoEXTBuilder<'a> {
25396     type Target = DebugUtilsObjectNameInfoEXT;
deref(&self) -> &Self::Target25397     fn deref(&self) -> &Self::Target {
25398         &self.inner
25399     }
25400 }
25401 impl<'a> ::std::ops::DerefMut for DebugUtilsObjectNameInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25402     fn deref_mut(&mut self) -> &mut Self::Target {
25403         &mut self.inner
25404     }
25405 }
25406 impl<'a> DebugUtilsObjectNameInfoEXTBuilder<'a> {
object_type(mut self, object_type: ObjectType) -> Self25407     pub fn object_type(mut self, object_type: ObjectType) -> Self {
25408         self.inner.object_type = object_type;
25409         self
25410     }
object_handle(mut self, object_handle: u64) -> Self25411     pub fn object_handle(mut self, object_handle: u64) -> Self {
25412         self.inner.object_handle = object_handle;
25413         self
25414     }
object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self25415     pub fn object_name(mut self, object_name: &'a ::std::ffi::CStr) -> Self {
25416         self.inner.p_object_name = object_name.as_ptr();
25417         self
25418     }
25419     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25420     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25421     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsObjectNameInfoEXT25422     pub fn build(self) -> DebugUtilsObjectNameInfoEXT {
25423         self.inner
25424     }
25425 }
25426 #[repr(C)]
25427 #[cfg_attr(feature = "debug", derive(Debug))]
25428 #[derive(Copy, Clone)]
25429 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsObjectTagInfoEXT.html>"]
25430 pub struct DebugUtilsObjectTagInfoEXT {
25431     pub s_type: StructureType,
25432     pub p_next: *const c_void,
25433     pub object_type: ObjectType,
25434     pub object_handle: u64,
25435     pub tag_name: u64,
25436     pub tag_size: usize,
25437     pub p_tag: *const c_void,
25438 }
25439 impl ::std::default::Default for DebugUtilsObjectTagInfoEXT {
default() -> Self25440     fn default() -> Self {
25441         Self {
25442             s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
25443             p_next: ::std::ptr::null(),
25444             object_type: ObjectType::default(),
25445             object_handle: u64::default(),
25446             tag_name: u64::default(),
25447             tag_size: usize::default(),
25448             p_tag: ::std::ptr::null(),
25449         }
25450     }
25451 }
25452 impl DebugUtilsObjectTagInfoEXT {
builder<'a>() -> DebugUtilsObjectTagInfoEXTBuilder<'a>25453     pub fn builder<'a>() -> DebugUtilsObjectTagInfoEXTBuilder<'a> {
25454         DebugUtilsObjectTagInfoEXTBuilder {
25455             inner: Self::default(),
25456             marker: ::std::marker::PhantomData,
25457         }
25458     }
25459 }
25460 #[repr(transparent)]
25461 pub struct DebugUtilsObjectTagInfoEXTBuilder<'a> {
25462     inner: DebugUtilsObjectTagInfoEXT,
25463     marker: ::std::marker::PhantomData<&'a ()>,
25464 }
25465 impl<'a> ::std::ops::Deref for DebugUtilsObjectTagInfoEXTBuilder<'a> {
25466     type Target = DebugUtilsObjectTagInfoEXT;
deref(&self) -> &Self::Target25467     fn deref(&self) -> &Self::Target {
25468         &self.inner
25469     }
25470 }
25471 impl<'a> ::std::ops::DerefMut for DebugUtilsObjectTagInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25472     fn deref_mut(&mut self) -> &mut Self::Target {
25473         &mut self.inner
25474     }
25475 }
25476 impl<'a> DebugUtilsObjectTagInfoEXTBuilder<'a> {
object_type(mut self, object_type: ObjectType) -> Self25477     pub fn object_type(mut self, object_type: ObjectType) -> Self {
25478         self.inner.object_type = object_type;
25479         self
25480     }
object_handle(mut self, object_handle: u64) -> Self25481     pub fn object_handle(mut self, object_handle: u64) -> Self {
25482         self.inner.object_handle = object_handle;
25483         self
25484     }
tag_name(mut self, tag_name: u64) -> Self25485     pub fn tag_name(mut self, tag_name: u64) -> Self {
25486         self.inner.tag_name = tag_name;
25487         self
25488     }
tag(mut self, tag: &'a [u8]) -> Self25489     pub fn tag(mut self, tag: &'a [u8]) -> Self {
25490         self.inner.tag_size = tag.len() as _;
25491         self.inner.p_tag = tag.as_ptr() as *const c_void;
25492         self
25493     }
25494     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25495     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25496     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsObjectTagInfoEXT25497     pub fn build(self) -> DebugUtilsObjectTagInfoEXT {
25498         self.inner
25499     }
25500 }
25501 #[repr(C)]
25502 #[cfg_attr(feature = "debug", derive(Debug))]
25503 #[derive(Copy, Clone)]
25504 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsLabelEXT.html>"]
25505 pub struct DebugUtilsLabelEXT {
25506     pub s_type: StructureType,
25507     pub p_next: *const c_void,
25508     pub p_label_name: *const c_char,
25509     pub color: [f32; 4],
25510 }
25511 impl ::std::default::Default for DebugUtilsLabelEXT {
default() -> Self25512     fn default() -> Self {
25513         Self {
25514             s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
25515             p_next: ::std::ptr::null(),
25516             p_label_name: ::std::ptr::null(),
25517             color: unsafe { ::std::mem::zeroed() },
25518         }
25519     }
25520 }
25521 impl DebugUtilsLabelEXT {
builder<'a>() -> DebugUtilsLabelEXTBuilder<'a>25522     pub fn builder<'a>() -> DebugUtilsLabelEXTBuilder<'a> {
25523         DebugUtilsLabelEXTBuilder {
25524             inner: Self::default(),
25525             marker: ::std::marker::PhantomData,
25526         }
25527     }
25528 }
25529 #[repr(transparent)]
25530 pub struct DebugUtilsLabelEXTBuilder<'a> {
25531     inner: DebugUtilsLabelEXT,
25532     marker: ::std::marker::PhantomData<&'a ()>,
25533 }
25534 impl<'a> ::std::ops::Deref for DebugUtilsLabelEXTBuilder<'a> {
25535     type Target = DebugUtilsLabelEXT;
deref(&self) -> &Self::Target25536     fn deref(&self) -> &Self::Target {
25537         &self.inner
25538     }
25539 }
25540 impl<'a> ::std::ops::DerefMut for DebugUtilsLabelEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25541     fn deref_mut(&mut self) -> &mut Self::Target {
25542         &mut self.inner
25543     }
25544 }
25545 impl<'a> DebugUtilsLabelEXTBuilder<'a> {
label_name(mut self, label_name: &'a ::std::ffi::CStr) -> Self25546     pub fn label_name(mut self, label_name: &'a ::std::ffi::CStr) -> Self {
25547         self.inner.p_label_name = label_name.as_ptr();
25548         self
25549     }
color(mut self, color: [f32; 4]) -> Self25550     pub fn color(mut self, color: [f32; 4]) -> Self {
25551         self.inner.color = color;
25552         self
25553     }
25554     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25555     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25556     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsLabelEXT25557     pub fn build(self) -> DebugUtilsLabelEXT {
25558         self.inner
25559     }
25560 }
25561 #[repr(C)]
25562 #[derive(Copy, Clone)]
25563 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>"]
25564 pub struct DebugUtilsMessengerCreateInfoEXT {
25565     pub s_type: StructureType,
25566     pub p_next: *const c_void,
25567     pub flags: DebugUtilsMessengerCreateFlagsEXT,
25568     pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
25569     pub message_type: DebugUtilsMessageTypeFlagsEXT,
25570     pub pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
25571     pub p_user_data: *mut c_void,
25572 }
25573 #[cfg(feature = "debug")]
25574 impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result25575     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
25576         fmt.debug_struct("DebugUtilsMessengerCreateInfoEXT")
25577             .field("s_type", &self.s_type)
25578             .field("p_next", &self.p_next)
25579             .field("flags", &self.flags)
25580             .field("message_severity", &self.message_severity)
25581             .field("message_type", &self.message_type)
25582             .field(
25583                 "pfn_user_callback",
25584                 &(self.pfn_user_callback.map(|x| x as *const ())),
25585             )
25586             .field("p_user_data", &self.p_user_data)
25587             .finish()
25588     }
25589 }
25590 impl ::std::default::Default for DebugUtilsMessengerCreateInfoEXT {
default() -> Self25591     fn default() -> Self {
25592         Self {
25593             s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
25594             p_next: ::std::ptr::null(),
25595             flags: DebugUtilsMessengerCreateFlagsEXT::default(),
25596             message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
25597             message_type: DebugUtilsMessageTypeFlagsEXT::default(),
25598             pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
25599             p_user_data: ::std::ptr::null_mut(),
25600         }
25601     }
25602 }
25603 impl DebugUtilsMessengerCreateInfoEXT {
builder<'a>() -> DebugUtilsMessengerCreateInfoEXTBuilder<'a>25604     pub fn builder<'a>() -> DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
25605         DebugUtilsMessengerCreateInfoEXTBuilder {
25606             inner: Self::default(),
25607             marker: ::std::marker::PhantomData,
25608         }
25609     }
25610 }
25611 #[repr(transparent)]
25612 pub struct DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
25613     inner: DebugUtilsMessengerCreateInfoEXT,
25614     marker: ::std::marker::PhantomData<&'a ()>,
25615 }
25616 unsafe impl ExtendsInstanceCreateInfo for DebugUtilsMessengerCreateInfoEXTBuilder<'_> {}
25617 unsafe impl ExtendsInstanceCreateInfo for DebugUtilsMessengerCreateInfoEXT {}
25618 impl<'a> ::std::ops::Deref for DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
25619     type Target = DebugUtilsMessengerCreateInfoEXT;
deref(&self) -> &Self::Target25620     fn deref(&self) -> &Self::Target {
25621         &self.inner
25622     }
25623 }
25624 impl<'a> ::std::ops::DerefMut for DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25625     fn deref_mut(&mut self) -> &mut Self::Target {
25626         &mut self.inner
25627     }
25628 }
25629 impl<'a> DebugUtilsMessengerCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DebugUtilsMessengerCreateFlagsEXT) -> Self25630     pub fn flags(mut self, flags: DebugUtilsMessengerCreateFlagsEXT) -> Self {
25631         self.inner.flags = flags;
25632         self
25633     }
message_severity(mut self, message_severity: DebugUtilsMessageSeverityFlagsEXT) -> Self25634     pub fn message_severity(mut self, message_severity: DebugUtilsMessageSeverityFlagsEXT) -> Self {
25635         self.inner.message_severity = message_severity;
25636         self
25637     }
message_type(mut self, message_type: DebugUtilsMessageTypeFlagsEXT) -> Self25638     pub fn message_type(mut self, message_type: DebugUtilsMessageTypeFlagsEXT) -> Self {
25639         self.inner.message_type = message_type;
25640         self
25641     }
pfn_user_callback( mut self, pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT, ) -> Self25642     pub fn pfn_user_callback(
25643         mut self,
25644         pfn_user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
25645     ) -> Self {
25646         self.inner.pfn_user_callback = pfn_user_callback;
25647         self
25648     }
user_data(mut self, user_data: *mut c_void) -> Self25649     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
25650         self.inner.p_user_data = user_data;
25651         self
25652     }
25653     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25654     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25655     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsMessengerCreateInfoEXT25656     pub fn build(self) -> DebugUtilsMessengerCreateInfoEXT {
25657         self.inner
25658     }
25659 }
25660 #[repr(C)]
25661 #[cfg_attr(feature = "debug", derive(Debug))]
25662 #[derive(Copy, Clone)]
25663 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>"]
25664 pub struct DebugUtilsMessengerCallbackDataEXT {
25665     pub s_type: StructureType,
25666     pub p_next: *const c_void,
25667     pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
25668     pub p_message_id_name: *const c_char,
25669     pub message_id_number: i32,
25670     pub p_message: *const c_char,
25671     pub queue_label_count: u32,
25672     pub p_queue_labels: *const DebugUtilsLabelEXT,
25673     pub cmd_buf_label_count: u32,
25674     pub p_cmd_buf_labels: *const DebugUtilsLabelEXT,
25675     pub object_count: u32,
25676     pub p_objects: *const DebugUtilsObjectNameInfoEXT,
25677 }
25678 impl ::std::default::Default for DebugUtilsMessengerCallbackDataEXT {
default() -> Self25679     fn default() -> Self {
25680         Self {
25681             s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
25682             p_next: ::std::ptr::null(),
25683             flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
25684             p_message_id_name: ::std::ptr::null(),
25685             message_id_number: i32::default(),
25686             p_message: ::std::ptr::null(),
25687             queue_label_count: u32::default(),
25688             p_queue_labels: ::std::ptr::null(),
25689             cmd_buf_label_count: u32::default(),
25690             p_cmd_buf_labels: ::std::ptr::null(),
25691             object_count: u32::default(),
25692             p_objects: ::std::ptr::null(),
25693         }
25694     }
25695 }
25696 impl DebugUtilsMessengerCallbackDataEXT {
builder<'a>() -> DebugUtilsMessengerCallbackDataEXTBuilder<'a>25697     pub fn builder<'a>() -> DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
25698         DebugUtilsMessengerCallbackDataEXTBuilder {
25699             inner: Self::default(),
25700             marker: ::std::marker::PhantomData,
25701         }
25702     }
25703 }
25704 #[repr(transparent)]
25705 pub struct DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
25706     inner: DebugUtilsMessengerCallbackDataEXT,
25707     marker: ::std::marker::PhantomData<&'a ()>,
25708 }
25709 impl<'a> ::std::ops::Deref for DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
25710     type Target = DebugUtilsMessengerCallbackDataEXT;
deref(&self) -> &Self::Target25711     fn deref(&self) -> &Self::Target {
25712         &self.inner
25713     }
25714 }
25715 impl<'a> ::std::ops::DerefMut for DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25716     fn deref_mut(&mut self) -> &mut Self::Target {
25717         &mut self.inner
25718     }
25719 }
25720 impl<'a> DebugUtilsMessengerCallbackDataEXTBuilder<'a> {
flags(mut self, flags: DebugUtilsMessengerCallbackDataFlagsEXT) -> Self25721     pub fn flags(mut self, flags: DebugUtilsMessengerCallbackDataFlagsEXT) -> Self {
25722         self.inner.flags = flags;
25723         self
25724     }
message_id_name(mut self, message_id_name: &'a ::std::ffi::CStr) -> Self25725     pub fn message_id_name(mut self, message_id_name: &'a ::std::ffi::CStr) -> Self {
25726         self.inner.p_message_id_name = message_id_name.as_ptr();
25727         self
25728     }
message_id_number(mut self, message_id_number: i32) -> Self25729     pub fn message_id_number(mut self, message_id_number: i32) -> Self {
25730         self.inner.message_id_number = message_id_number;
25731         self
25732     }
message(mut self, message: &'a ::std::ffi::CStr) -> Self25733     pub fn message(mut self, message: &'a ::std::ffi::CStr) -> Self {
25734         self.inner.p_message = message.as_ptr();
25735         self
25736     }
queue_labels(mut self, queue_labels: &'a [DebugUtilsLabelEXT]) -> Self25737     pub fn queue_labels(mut self, queue_labels: &'a [DebugUtilsLabelEXT]) -> Self {
25738         self.inner.queue_label_count = queue_labels.len() as _;
25739         self.inner.p_queue_labels = queue_labels.as_ptr();
25740         self
25741     }
cmd_buf_labels(mut self, cmd_buf_labels: &'a [DebugUtilsLabelEXT]) -> Self25742     pub fn cmd_buf_labels(mut self, cmd_buf_labels: &'a [DebugUtilsLabelEXT]) -> Self {
25743         self.inner.cmd_buf_label_count = cmd_buf_labels.len() as _;
25744         self.inner.p_cmd_buf_labels = cmd_buf_labels.as_ptr();
25745         self
25746     }
objects(mut self, objects: &'a [DebugUtilsObjectNameInfoEXT]) -> Self25747     pub fn objects(mut self, objects: &'a [DebugUtilsObjectNameInfoEXT]) -> Self {
25748         self.inner.object_count = objects.len() as _;
25749         self.inner.p_objects = objects.as_ptr();
25750         self
25751     }
25752     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25753     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25754     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DebugUtilsMessengerCallbackDataEXT25755     pub fn build(self) -> DebugUtilsMessengerCallbackDataEXT {
25756         self.inner
25757     }
25758 }
25759 #[repr(C)]
25760 #[cfg_attr(feature = "debug", derive(Debug))]
25761 #[derive(Copy, Clone)]
25762 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>"]
25763 pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
25764     pub s_type: StructureType,
25765     pub p_next: *mut c_void,
25766     pub device_memory_report: Bool32,
25767 }
25768 impl ::std::default::Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
default() -> Self25769     fn default() -> Self {
25770         Self {
25771             s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
25772             p_next: ::std::ptr::null_mut(),
25773             device_memory_report: Bool32::default(),
25774         }
25775     }
25776 }
25777 impl PhysicalDeviceDeviceMemoryReportFeaturesEXT {
builder<'a>() -> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a>25778     pub fn builder<'a>() -> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
25779         PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder {
25780             inner: Self::default(),
25781             marker: ::std::marker::PhantomData,
25782         }
25783     }
25784 }
25785 #[repr(transparent)]
25786 pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
25787     inner: PhysicalDeviceDeviceMemoryReportFeaturesEXT,
25788     marker: ::std::marker::PhantomData<&'a ()>,
25789 }
25790 unsafe impl ExtendsPhysicalDeviceFeatures2
25791     for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'_>
25792 {
25793 }
25794 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
25795 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'_> {}
25796 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
25797 impl<'a> ::std::ops::Deref for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
25798     type Target = PhysicalDeviceDeviceMemoryReportFeaturesEXT;
deref(&self) -> &Self::Target25799     fn deref(&self) -> &Self::Target {
25800         &self.inner
25801     }
25802 }
25803 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25804     fn deref_mut(&mut self) -> &mut Self::Target {
25805         &mut self.inner
25806     }
25807 }
25808 impl<'a> PhysicalDeviceDeviceMemoryReportFeaturesEXTBuilder<'a> {
device_memory_report(mut self, device_memory_report: bool) -> Self25809     pub fn device_memory_report(mut self, device_memory_report: bool) -> Self {
25810         self.inner.device_memory_report = device_memory_report.into();
25811         self
25812     }
25813     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25814     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25815     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDeviceMemoryReportFeaturesEXT25816     pub fn build(self) -> PhysicalDeviceDeviceMemoryReportFeaturesEXT {
25817         self.inner
25818     }
25819 }
25820 #[repr(C)]
25821 #[derive(Copy, Clone)]
25822 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>"]
25823 pub struct DeviceDeviceMemoryReportCreateInfoEXT {
25824     pub s_type: StructureType,
25825     pub p_next: *const c_void,
25826     pub flags: DeviceMemoryReportFlagsEXT,
25827     pub pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
25828     pub p_user_data: *mut c_void,
25829 }
25830 #[cfg(feature = "debug")]
25831 impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result25832     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
25833         fmt.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
25834             .field("s_type", &self.s_type)
25835             .field("p_next", &self.p_next)
25836             .field("flags", &self.flags)
25837             .field(
25838                 "pfn_user_callback",
25839                 &(self.pfn_user_callback.map(|x| x as *const ())),
25840             )
25841             .field("p_user_data", &self.p_user_data)
25842             .finish()
25843     }
25844 }
25845 impl ::std::default::Default for DeviceDeviceMemoryReportCreateInfoEXT {
default() -> Self25846     fn default() -> Self {
25847         Self {
25848             s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
25849             p_next: ::std::ptr::null(),
25850             flags: DeviceMemoryReportFlagsEXT::default(),
25851             pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
25852             p_user_data: ::std::ptr::null_mut(),
25853         }
25854     }
25855 }
25856 impl DeviceDeviceMemoryReportCreateInfoEXT {
builder<'a>() -> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a>25857     pub fn builder<'a>() -> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
25858         DeviceDeviceMemoryReportCreateInfoEXTBuilder {
25859             inner: Self::default(),
25860             marker: ::std::marker::PhantomData,
25861         }
25862     }
25863 }
25864 #[repr(transparent)]
25865 pub struct DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
25866     inner: DeviceDeviceMemoryReportCreateInfoEXT,
25867     marker: ::std::marker::PhantomData<&'a ()>,
25868 }
25869 unsafe impl ExtendsDeviceCreateInfo for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'_> {}
25870 unsafe impl ExtendsDeviceCreateInfo for DeviceDeviceMemoryReportCreateInfoEXT {}
25871 impl<'a> ::std::ops::Deref for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
25872     type Target = DeviceDeviceMemoryReportCreateInfoEXT;
deref(&self) -> &Self::Target25873     fn deref(&self) -> &Self::Target {
25874         &self.inner
25875     }
25876 }
25877 impl<'a> ::std::ops::DerefMut for DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25878     fn deref_mut(&mut self) -> &mut Self::Target {
25879         &mut self.inner
25880     }
25881 }
25882 impl<'a> DeviceDeviceMemoryReportCreateInfoEXTBuilder<'a> {
flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self25883     pub fn flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self {
25884         self.inner.flags = flags;
25885         self
25886     }
pfn_user_callback( mut self, pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT, ) -> Self25887     pub fn pfn_user_callback(
25888         mut self,
25889         pfn_user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
25890     ) -> Self {
25891         self.inner.pfn_user_callback = pfn_user_callback;
25892         self
25893     }
user_data(mut self, user_data: *mut c_void) -> Self25894     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
25895         self.inner.p_user_data = user_data;
25896         self
25897     }
25898     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25899     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25900     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceDeviceMemoryReportCreateInfoEXT25901     pub fn build(self) -> DeviceDeviceMemoryReportCreateInfoEXT {
25902         self.inner
25903     }
25904 }
25905 #[repr(C)]
25906 #[cfg_attr(feature = "debug", derive(Debug))]
25907 #[derive(Copy, Clone)]
25908 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryReportCallbackDataEXT.html>"]
25909 pub struct DeviceMemoryReportCallbackDataEXT {
25910     pub s_type: StructureType,
25911     pub p_next: *mut c_void,
25912     pub flags: DeviceMemoryReportFlagsEXT,
25913     pub ty: DeviceMemoryReportEventTypeEXT,
25914     pub memory_object_id: u64,
25915     pub size: DeviceSize,
25916     pub object_type: ObjectType,
25917     pub object_handle: u64,
25918     pub heap_index: u32,
25919 }
25920 impl ::std::default::Default for DeviceMemoryReportCallbackDataEXT {
default() -> Self25921     fn default() -> Self {
25922         Self {
25923             s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
25924             p_next: ::std::ptr::null_mut(),
25925             flags: DeviceMemoryReportFlagsEXT::default(),
25926             ty: DeviceMemoryReportEventTypeEXT::default(),
25927             memory_object_id: u64::default(),
25928             size: DeviceSize::default(),
25929             object_type: ObjectType::default(),
25930             object_handle: u64::default(),
25931             heap_index: u32::default(),
25932         }
25933     }
25934 }
25935 impl DeviceMemoryReportCallbackDataEXT {
builder<'a>() -> DeviceMemoryReportCallbackDataEXTBuilder<'a>25936     pub fn builder<'a>() -> DeviceMemoryReportCallbackDataEXTBuilder<'a> {
25937         DeviceMemoryReportCallbackDataEXTBuilder {
25938             inner: Self::default(),
25939             marker: ::std::marker::PhantomData,
25940         }
25941     }
25942 }
25943 #[repr(transparent)]
25944 pub struct DeviceMemoryReportCallbackDataEXTBuilder<'a> {
25945     inner: DeviceMemoryReportCallbackDataEXT,
25946     marker: ::std::marker::PhantomData<&'a ()>,
25947 }
25948 impl<'a> ::std::ops::Deref for DeviceMemoryReportCallbackDataEXTBuilder<'a> {
25949     type Target = DeviceMemoryReportCallbackDataEXT;
deref(&self) -> &Self::Target25950     fn deref(&self) -> &Self::Target {
25951         &self.inner
25952     }
25953 }
25954 impl<'a> ::std::ops::DerefMut for DeviceMemoryReportCallbackDataEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target25955     fn deref_mut(&mut self) -> &mut Self::Target {
25956         &mut self.inner
25957     }
25958 }
25959 impl<'a> DeviceMemoryReportCallbackDataEXTBuilder<'a> {
flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self25960     pub fn flags(mut self, flags: DeviceMemoryReportFlagsEXT) -> Self {
25961         self.inner.flags = flags;
25962         self
25963     }
ty(mut self, ty: DeviceMemoryReportEventTypeEXT) -> Self25964     pub fn ty(mut self, ty: DeviceMemoryReportEventTypeEXT) -> Self {
25965         self.inner.ty = ty;
25966         self
25967     }
memory_object_id(mut self, memory_object_id: u64) -> Self25968     pub fn memory_object_id(mut self, memory_object_id: u64) -> Self {
25969         self.inner.memory_object_id = memory_object_id;
25970         self
25971     }
size(mut self, size: DeviceSize) -> Self25972     pub fn size(mut self, size: DeviceSize) -> Self {
25973         self.inner.size = size;
25974         self
25975     }
object_type(mut self, object_type: ObjectType) -> Self25976     pub fn object_type(mut self, object_type: ObjectType) -> Self {
25977         self.inner.object_type = object_type;
25978         self
25979     }
object_handle(mut self, object_handle: u64) -> Self25980     pub fn object_handle(mut self, object_handle: u64) -> Self {
25981         self.inner.object_handle = object_handle;
25982         self
25983     }
heap_index(mut self, heap_index: u32) -> Self25984     pub fn heap_index(mut self, heap_index: u32) -> Self {
25985         self.inner.heap_index = heap_index;
25986         self
25987     }
25988     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
25989     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
25990     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceMemoryReportCallbackDataEXT25991     pub fn build(self) -> DeviceMemoryReportCallbackDataEXT {
25992         self.inner
25993     }
25994 }
25995 #[repr(C)]
25996 #[cfg_attr(feature = "debug", derive(Debug))]
25997 #[derive(Copy, Clone)]
25998 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryHostPointerInfoEXT.html>"]
25999 pub struct ImportMemoryHostPointerInfoEXT {
26000     pub s_type: StructureType,
26001     pub p_next: *const c_void,
26002     pub handle_type: ExternalMemoryHandleTypeFlags,
26003     pub p_host_pointer: *mut c_void,
26004 }
26005 impl ::std::default::Default for ImportMemoryHostPointerInfoEXT {
default() -> Self26006     fn default() -> Self {
26007         Self {
26008             s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
26009             p_next: ::std::ptr::null(),
26010             handle_type: ExternalMemoryHandleTypeFlags::default(),
26011             p_host_pointer: ::std::ptr::null_mut(),
26012         }
26013     }
26014 }
26015 impl ImportMemoryHostPointerInfoEXT {
builder<'a>() -> ImportMemoryHostPointerInfoEXTBuilder<'a>26016     pub fn builder<'a>() -> ImportMemoryHostPointerInfoEXTBuilder<'a> {
26017         ImportMemoryHostPointerInfoEXTBuilder {
26018             inner: Self::default(),
26019             marker: ::std::marker::PhantomData,
26020         }
26021     }
26022 }
26023 #[repr(transparent)]
26024 pub struct ImportMemoryHostPointerInfoEXTBuilder<'a> {
26025     inner: ImportMemoryHostPointerInfoEXT,
26026     marker: ::std::marker::PhantomData<&'a ()>,
26027 }
26028 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryHostPointerInfoEXTBuilder<'_> {}
26029 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryHostPointerInfoEXT {}
26030 impl<'a> ::std::ops::Deref for ImportMemoryHostPointerInfoEXTBuilder<'a> {
26031     type Target = ImportMemoryHostPointerInfoEXT;
deref(&self) -> &Self::Target26032     fn deref(&self) -> &Self::Target {
26033         &self.inner
26034     }
26035 }
26036 impl<'a> ::std::ops::DerefMut for ImportMemoryHostPointerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26037     fn deref_mut(&mut self) -> &mut Self::Target {
26038         &mut self.inner
26039     }
26040 }
26041 impl<'a> ImportMemoryHostPointerInfoEXTBuilder<'a> {
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self26042     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
26043         self.inner.handle_type = handle_type;
26044         self
26045     }
host_pointer(mut self, host_pointer: *mut c_void) -> Self26046     pub fn host_pointer(mut self, host_pointer: *mut c_void) -> Self {
26047         self.inner.p_host_pointer = host_pointer;
26048         self
26049     }
26050     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26051     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26052     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryHostPointerInfoEXT26053     pub fn build(self) -> ImportMemoryHostPointerInfoEXT {
26054         self.inner
26055     }
26056 }
26057 #[repr(C)]
26058 #[cfg_attr(feature = "debug", derive(Debug))]
26059 #[derive(Copy, Clone)]
26060 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHostPointerPropertiesEXT.html>"]
26061 pub struct MemoryHostPointerPropertiesEXT {
26062     pub s_type: StructureType,
26063     pub p_next: *mut c_void,
26064     pub memory_type_bits: u32,
26065 }
26066 impl ::std::default::Default for MemoryHostPointerPropertiesEXT {
default() -> Self26067     fn default() -> Self {
26068         Self {
26069             s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
26070             p_next: ::std::ptr::null_mut(),
26071             memory_type_bits: u32::default(),
26072         }
26073     }
26074 }
26075 impl MemoryHostPointerPropertiesEXT {
builder<'a>() -> MemoryHostPointerPropertiesEXTBuilder<'a>26076     pub fn builder<'a>() -> MemoryHostPointerPropertiesEXTBuilder<'a> {
26077         MemoryHostPointerPropertiesEXTBuilder {
26078             inner: Self::default(),
26079             marker: ::std::marker::PhantomData,
26080         }
26081     }
26082 }
26083 #[repr(transparent)]
26084 pub struct MemoryHostPointerPropertiesEXTBuilder<'a> {
26085     inner: MemoryHostPointerPropertiesEXT,
26086     marker: ::std::marker::PhantomData<&'a ()>,
26087 }
26088 impl<'a> ::std::ops::Deref for MemoryHostPointerPropertiesEXTBuilder<'a> {
26089     type Target = MemoryHostPointerPropertiesEXT;
deref(&self) -> &Self::Target26090     fn deref(&self) -> &Self::Target {
26091         &self.inner
26092     }
26093 }
26094 impl<'a> ::std::ops::DerefMut for MemoryHostPointerPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26095     fn deref_mut(&mut self) -> &mut Self::Target {
26096         &mut self.inner
26097     }
26098 }
26099 impl<'a> MemoryHostPointerPropertiesEXTBuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self26100     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
26101         self.inner.memory_type_bits = memory_type_bits;
26102         self
26103     }
26104     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26105     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26106     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryHostPointerPropertiesEXT26107     pub fn build(self) -> MemoryHostPointerPropertiesEXT {
26108         self.inner
26109     }
26110 }
26111 #[repr(C)]
26112 #[cfg_attr(feature = "debug", derive(Debug))]
26113 #[derive(Copy, Clone)]
26114 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>"]
26115 pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
26116     pub s_type: StructureType,
26117     pub p_next: *mut c_void,
26118     pub min_imported_host_pointer_alignment: DeviceSize,
26119 }
26120 impl ::std::default::Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
default() -> Self26121     fn default() -> Self {
26122         Self {
26123             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
26124             p_next: ::std::ptr::null_mut(),
26125             min_imported_host_pointer_alignment: DeviceSize::default(),
26126         }
26127     }
26128 }
26129 impl PhysicalDeviceExternalMemoryHostPropertiesEXT {
builder<'a>() -> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a>26130     pub fn builder<'a>() -> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26131         PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder {
26132             inner: Self::default(),
26133             marker: ::std::marker::PhantomData,
26134         }
26135     }
26136 }
26137 #[repr(transparent)]
26138 pub struct PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26139     inner: PhysicalDeviceExternalMemoryHostPropertiesEXT,
26140     marker: ::std::marker::PhantomData<&'a ()>,
26141 }
26142 unsafe impl ExtendsPhysicalDeviceProperties2
26143     for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'_>
26144 {
26145 }
26146 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
26147 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
26148     type Target = PhysicalDeviceExternalMemoryHostPropertiesEXT;
deref(&self) -> &Self::Target26149     fn deref(&self) -> &Self::Target {
26150         &self.inner
26151     }
26152 }
26153 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26154     fn deref_mut(&mut self) -> &mut Self::Target {
26155         &mut self.inner
26156     }
26157 }
26158 impl<'a> PhysicalDeviceExternalMemoryHostPropertiesEXTBuilder<'a> {
min_imported_host_pointer_alignment( mut self, min_imported_host_pointer_alignment: DeviceSize, ) -> Self26159     pub fn min_imported_host_pointer_alignment(
26160         mut self,
26161         min_imported_host_pointer_alignment: DeviceSize,
26162     ) -> Self {
26163         self.inner.min_imported_host_pointer_alignment = min_imported_host_pointer_alignment;
26164         self
26165     }
26166     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26167     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26168     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalMemoryHostPropertiesEXT26169     pub fn build(self) -> PhysicalDeviceExternalMemoryHostPropertiesEXT {
26170         self.inner
26171     }
26172 }
26173 #[repr(C)]
26174 #[cfg_attr(feature = "debug", derive(Debug))]
26175 #[derive(Copy, Clone)]
26176 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>"]
26177 pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
26178     pub s_type: StructureType,
26179     pub p_next: *mut c_void,
26180     pub primitive_overestimation_size: f32,
26181     pub max_extra_primitive_overestimation_size: f32,
26182     pub extra_primitive_overestimation_size_granularity: f32,
26183     pub primitive_underestimation: Bool32,
26184     pub conservative_point_and_line_rasterization: Bool32,
26185     pub degenerate_triangles_rasterized: Bool32,
26186     pub degenerate_lines_rasterized: Bool32,
26187     pub fully_covered_fragment_shader_input_variable: Bool32,
26188     pub conservative_rasterization_post_depth_coverage: Bool32,
26189 }
26190 impl ::std::default::Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
default() -> Self26191     fn default() -> Self {
26192         Self {
26193             s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
26194             p_next: ::std::ptr::null_mut(),
26195             primitive_overestimation_size: f32::default(),
26196             max_extra_primitive_overestimation_size: f32::default(),
26197             extra_primitive_overestimation_size_granularity: f32::default(),
26198             primitive_underestimation: Bool32::default(),
26199             conservative_point_and_line_rasterization: Bool32::default(),
26200             degenerate_triangles_rasterized: Bool32::default(),
26201             degenerate_lines_rasterized: Bool32::default(),
26202             fully_covered_fragment_shader_input_variable: Bool32::default(),
26203             conservative_rasterization_post_depth_coverage: Bool32::default(),
26204         }
26205     }
26206 }
26207 impl PhysicalDeviceConservativeRasterizationPropertiesEXT {
builder<'a>() -> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a>26208     pub fn builder<'a>() -> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
26209         PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder {
26210             inner: Self::default(),
26211             marker: ::std::marker::PhantomData,
26212         }
26213     }
26214 }
26215 #[repr(transparent)]
26216 pub struct PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
26217     inner: PhysicalDeviceConservativeRasterizationPropertiesEXT,
26218     marker: ::std::marker::PhantomData<&'a ()>,
26219 }
26220 unsafe impl ExtendsPhysicalDeviceProperties2
26221     for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'_>
26222 {
26223 }
26224 unsafe impl ExtendsPhysicalDeviceProperties2
26225     for PhysicalDeviceConservativeRasterizationPropertiesEXT
26226 {
26227 }
26228 impl<'a> ::std::ops::Deref for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
26229     type Target = PhysicalDeviceConservativeRasterizationPropertiesEXT;
deref(&self) -> &Self::Target26230     fn deref(&self) -> &Self::Target {
26231         &self.inner
26232     }
26233 }
26234 impl<'a> ::std::ops::DerefMut for PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26235     fn deref_mut(&mut self) -> &mut Self::Target {
26236         &mut self.inner
26237     }
26238 }
26239 impl<'a> PhysicalDeviceConservativeRasterizationPropertiesEXTBuilder<'a> {
primitive_overestimation_size(mut self, primitive_overestimation_size: f32) -> Self26240     pub fn primitive_overestimation_size(mut self, primitive_overestimation_size: f32) -> Self {
26241         self.inner.primitive_overestimation_size = primitive_overestimation_size;
26242         self
26243     }
max_extra_primitive_overestimation_size( mut self, max_extra_primitive_overestimation_size: f32, ) -> Self26244     pub fn max_extra_primitive_overestimation_size(
26245         mut self,
26246         max_extra_primitive_overestimation_size: f32,
26247     ) -> Self {
26248         self.inner.max_extra_primitive_overestimation_size =
26249             max_extra_primitive_overestimation_size;
26250         self
26251     }
extra_primitive_overestimation_size_granularity( mut self, extra_primitive_overestimation_size_granularity: f32, ) -> Self26252     pub fn extra_primitive_overestimation_size_granularity(
26253         mut self,
26254         extra_primitive_overestimation_size_granularity: f32,
26255     ) -> Self {
26256         self.inner.extra_primitive_overestimation_size_granularity =
26257             extra_primitive_overestimation_size_granularity;
26258         self
26259     }
primitive_underestimation(mut self, primitive_underestimation: bool) -> Self26260     pub fn primitive_underestimation(mut self, primitive_underestimation: bool) -> Self {
26261         self.inner.primitive_underestimation = primitive_underestimation.into();
26262         self
26263     }
conservative_point_and_line_rasterization( mut self, conservative_point_and_line_rasterization: bool, ) -> Self26264     pub fn conservative_point_and_line_rasterization(
26265         mut self,
26266         conservative_point_and_line_rasterization: bool,
26267     ) -> Self {
26268         self.inner.conservative_point_and_line_rasterization =
26269             conservative_point_and_line_rasterization.into();
26270         self
26271     }
degenerate_triangles_rasterized( mut self, degenerate_triangles_rasterized: bool, ) -> Self26272     pub fn degenerate_triangles_rasterized(
26273         mut self,
26274         degenerate_triangles_rasterized: bool,
26275     ) -> Self {
26276         self.inner.degenerate_triangles_rasterized = degenerate_triangles_rasterized.into();
26277         self
26278     }
degenerate_lines_rasterized(mut self, degenerate_lines_rasterized: bool) -> Self26279     pub fn degenerate_lines_rasterized(mut self, degenerate_lines_rasterized: bool) -> Self {
26280         self.inner.degenerate_lines_rasterized = degenerate_lines_rasterized.into();
26281         self
26282     }
fully_covered_fragment_shader_input_variable( mut self, fully_covered_fragment_shader_input_variable: bool, ) -> Self26283     pub fn fully_covered_fragment_shader_input_variable(
26284         mut self,
26285         fully_covered_fragment_shader_input_variable: bool,
26286     ) -> Self {
26287         self.inner.fully_covered_fragment_shader_input_variable =
26288             fully_covered_fragment_shader_input_variable.into();
26289         self
26290     }
conservative_rasterization_post_depth_coverage( mut self, conservative_rasterization_post_depth_coverage: bool, ) -> Self26291     pub fn conservative_rasterization_post_depth_coverage(
26292         mut self,
26293         conservative_rasterization_post_depth_coverage: bool,
26294     ) -> Self {
26295         self.inner.conservative_rasterization_post_depth_coverage =
26296             conservative_rasterization_post_depth_coverage.into();
26297         self
26298     }
26299     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26300     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26301     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceConservativeRasterizationPropertiesEXT26302     pub fn build(self) -> PhysicalDeviceConservativeRasterizationPropertiesEXT {
26303         self.inner
26304     }
26305 }
26306 #[repr(C)]
26307 #[cfg_attr(feature = "debug", derive(Debug))]
26308 #[derive(Copy, Clone)]
26309 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCalibratedTimestampInfoEXT.html>"]
26310 pub struct CalibratedTimestampInfoEXT {
26311     pub s_type: StructureType,
26312     pub p_next: *const c_void,
26313     pub time_domain: TimeDomainEXT,
26314 }
26315 impl ::std::default::Default for CalibratedTimestampInfoEXT {
default() -> Self26316     fn default() -> Self {
26317         Self {
26318             s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_EXT,
26319             p_next: ::std::ptr::null(),
26320             time_domain: TimeDomainEXT::default(),
26321         }
26322     }
26323 }
26324 impl CalibratedTimestampInfoEXT {
builder<'a>() -> CalibratedTimestampInfoEXTBuilder<'a>26325     pub fn builder<'a>() -> CalibratedTimestampInfoEXTBuilder<'a> {
26326         CalibratedTimestampInfoEXTBuilder {
26327             inner: Self::default(),
26328             marker: ::std::marker::PhantomData,
26329         }
26330     }
26331 }
26332 #[repr(transparent)]
26333 pub struct CalibratedTimestampInfoEXTBuilder<'a> {
26334     inner: CalibratedTimestampInfoEXT,
26335     marker: ::std::marker::PhantomData<&'a ()>,
26336 }
26337 impl<'a> ::std::ops::Deref for CalibratedTimestampInfoEXTBuilder<'a> {
26338     type Target = CalibratedTimestampInfoEXT;
deref(&self) -> &Self::Target26339     fn deref(&self) -> &Self::Target {
26340         &self.inner
26341     }
26342 }
26343 impl<'a> ::std::ops::DerefMut for CalibratedTimestampInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26344     fn deref_mut(&mut self) -> &mut Self::Target {
26345         &mut self.inner
26346     }
26347 }
26348 impl<'a> CalibratedTimestampInfoEXTBuilder<'a> {
time_domain(mut self, time_domain: TimeDomainEXT) -> Self26349     pub fn time_domain(mut self, time_domain: TimeDomainEXT) -> Self {
26350         self.inner.time_domain = time_domain;
26351         self
26352     }
26353     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26354     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26355     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CalibratedTimestampInfoEXT26356     pub fn build(self) -> CalibratedTimestampInfoEXT {
26357         self.inner
26358     }
26359 }
26360 #[repr(C)]
26361 #[cfg_attr(feature = "debug", derive(Debug))]
26362 #[derive(Copy, Clone)]
26363 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>"]
26364 pub struct PhysicalDeviceShaderCorePropertiesAMD {
26365     pub s_type: StructureType,
26366     pub p_next: *mut c_void,
26367     pub shader_engine_count: u32,
26368     pub shader_arrays_per_engine_count: u32,
26369     pub compute_units_per_shader_array: u32,
26370     pub simd_per_compute_unit: u32,
26371     pub wavefronts_per_simd: u32,
26372     pub wavefront_size: u32,
26373     pub sgprs_per_simd: u32,
26374     pub min_sgpr_allocation: u32,
26375     pub max_sgpr_allocation: u32,
26376     pub sgpr_allocation_granularity: u32,
26377     pub vgprs_per_simd: u32,
26378     pub min_vgpr_allocation: u32,
26379     pub max_vgpr_allocation: u32,
26380     pub vgpr_allocation_granularity: u32,
26381 }
26382 impl ::std::default::Default for PhysicalDeviceShaderCorePropertiesAMD {
default() -> Self26383     fn default() -> Self {
26384         Self {
26385             s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
26386             p_next: ::std::ptr::null_mut(),
26387             shader_engine_count: u32::default(),
26388             shader_arrays_per_engine_count: u32::default(),
26389             compute_units_per_shader_array: u32::default(),
26390             simd_per_compute_unit: u32::default(),
26391             wavefronts_per_simd: u32::default(),
26392             wavefront_size: u32::default(),
26393             sgprs_per_simd: u32::default(),
26394             min_sgpr_allocation: u32::default(),
26395             max_sgpr_allocation: u32::default(),
26396             sgpr_allocation_granularity: u32::default(),
26397             vgprs_per_simd: u32::default(),
26398             min_vgpr_allocation: u32::default(),
26399             max_vgpr_allocation: u32::default(),
26400             vgpr_allocation_granularity: u32::default(),
26401         }
26402     }
26403 }
26404 impl PhysicalDeviceShaderCorePropertiesAMD {
builder<'a>() -> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a>26405     pub fn builder<'a>() -> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26406         PhysicalDeviceShaderCorePropertiesAMDBuilder {
26407             inner: Self::default(),
26408             marker: ::std::marker::PhantomData,
26409         }
26410     }
26411 }
26412 #[repr(transparent)]
26413 pub struct PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26414     inner: PhysicalDeviceShaderCorePropertiesAMD,
26415     marker: ::std::marker::PhantomData<&'a ()>,
26416 }
26417 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCorePropertiesAMDBuilder<'_> {}
26418 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCorePropertiesAMD {}
26419 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
26420     type Target = PhysicalDeviceShaderCorePropertiesAMD;
deref(&self) -> &Self::Target26421     fn deref(&self) -> &Self::Target {
26422         &self.inner
26423     }
26424 }
26425 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26426     fn deref_mut(&mut self) -> &mut Self::Target {
26427         &mut self.inner
26428     }
26429 }
26430 impl<'a> PhysicalDeviceShaderCorePropertiesAMDBuilder<'a> {
shader_engine_count(mut self, shader_engine_count: u32) -> Self26431     pub fn shader_engine_count(mut self, shader_engine_count: u32) -> Self {
26432         self.inner.shader_engine_count = shader_engine_count;
26433         self
26434     }
shader_arrays_per_engine_count(mut self, shader_arrays_per_engine_count: u32) -> Self26435     pub fn shader_arrays_per_engine_count(mut self, shader_arrays_per_engine_count: u32) -> Self {
26436         self.inner.shader_arrays_per_engine_count = shader_arrays_per_engine_count;
26437         self
26438     }
compute_units_per_shader_array(mut self, compute_units_per_shader_array: u32) -> Self26439     pub fn compute_units_per_shader_array(mut self, compute_units_per_shader_array: u32) -> Self {
26440         self.inner.compute_units_per_shader_array = compute_units_per_shader_array;
26441         self
26442     }
simd_per_compute_unit(mut self, simd_per_compute_unit: u32) -> Self26443     pub fn simd_per_compute_unit(mut self, simd_per_compute_unit: u32) -> Self {
26444         self.inner.simd_per_compute_unit = simd_per_compute_unit;
26445         self
26446     }
wavefronts_per_simd(mut self, wavefronts_per_simd: u32) -> Self26447     pub fn wavefronts_per_simd(mut self, wavefronts_per_simd: u32) -> Self {
26448         self.inner.wavefronts_per_simd = wavefronts_per_simd;
26449         self
26450     }
wavefront_size(mut self, wavefront_size: u32) -> Self26451     pub fn wavefront_size(mut self, wavefront_size: u32) -> Self {
26452         self.inner.wavefront_size = wavefront_size;
26453         self
26454     }
sgprs_per_simd(mut self, sgprs_per_simd: u32) -> Self26455     pub fn sgprs_per_simd(mut self, sgprs_per_simd: u32) -> Self {
26456         self.inner.sgprs_per_simd = sgprs_per_simd;
26457         self
26458     }
min_sgpr_allocation(mut self, min_sgpr_allocation: u32) -> Self26459     pub fn min_sgpr_allocation(mut self, min_sgpr_allocation: u32) -> Self {
26460         self.inner.min_sgpr_allocation = min_sgpr_allocation;
26461         self
26462     }
max_sgpr_allocation(mut self, max_sgpr_allocation: u32) -> Self26463     pub fn max_sgpr_allocation(mut self, max_sgpr_allocation: u32) -> Self {
26464         self.inner.max_sgpr_allocation = max_sgpr_allocation;
26465         self
26466     }
sgpr_allocation_granularity(mut self, sgpr_allocation_granularity: u32) -> Self26467     pub fn sgpr_allocation_granularity(mut self, sgpr_allocation_granularity: u32) -> Self {
26468         self.inner.sgpr_allocation_granularity = sgpr_allocation_granularity;
26469         self
26470     }
vgprs_per_simd(mut self, vgprs_per_simd: u32) -> Self26471     pub fn vgprs_per_simd(mut self, vgprs_per_simd: u32) -> Self {
26472         self.inner.vgprs_per_simd = vgprs_per_simd;
26473         self
26474     }
min_vgpr_allocation(mut self, min_vgpr_allocation: u32) -> Self26475     pub fn min_vgpr_allocation(mut self, min_vgpr_allocation: u32) -> Self {
26476         self.inner.min_vgpr_allocation = min_vgpr_allocation;
26477         self
26478     }
max_vgpr_allocation(mut self, max_vgpr_allocation: u32) -> Self26479     pub fn max_vgpr_allocation(mut self, max_vgpr_allocation: u32) -> Self {
26480         self.inner.max_vgpr_allocation = max_vgpr_allocation;
26481         self
26482     }
vgpr_allocation_granularity(mut self, vgpr_allocation_granularity: u32) -> Self26483     pub fn vgpr_allocation_granularity(mut self, vgpr_allocation_granularity: u32) -> Self {
26484         self.inner.vgpr_allocation_granularity = vgpr_allocation_granularity;
26485         self
26486     }
26487     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26488     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26489     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderCorePropertiesAMD26490     pub fn build(self) -> PhysicalDeviceShaderCorePropertiesAMD {
26491         self.inner
26492     }
26493 }
26494 #[repr(C)]
26495 #[cfg_attr(feature = "debug", derive(Debug))]
26496 #[derive(Copy, Clone)]
26497 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>"]
26498 pub struct PhysicalDeviceShaderCoreProperties2AMD {
26499     pub s_type: StructureType,
26500     pub p_next: *mut c_void,
26501     pub shader_core_features: ShaderCorePropertiesFlagsAMD,
26502     pub active_compute_unit_count: u32,
26503 }
26504 impl ::std::default::Default for PhysicalDeviceShaderCoreProperties2AMD {
default() -> Self26505     fn default() -> Self {
26506         Self {
26507             s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
26508             p_next: ::std::ptr::null_mut(),
26509             shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
26510             active_compute_unit_count: u32::default(),
26511         }
26512     }
26513 }
26514 impl PhysicalDeviceShaderCoreProperties2AMD {
builder<'a>() -> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a>26515     pub fn builder<'a>() -> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26516         PhysicalDeviceShaderCoreProperties2AMDBuilder {
26517             inner: Self::default(),
26518             marker: ::std::marker::PhantomData,
26519         }
26520     }
26521 }
26522 #[repr(transparent)]
26523 pub struct PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26524     inner: PhysicalDeviceShaderCoreProperties2AMD,
26525     marker: ::std::marker::PhantomData<&'a ()>,
26526 }
26527 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCoreProperties2AMDBuilder<'_> {}
26528 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderCoreProperties2AMD {}
26529 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
26530     type Target = PhysicalDeviceShaderCoreProperties2AMD;
deref(&self) -> &Self::Target26531     fn deref(&self) -> &Self::Target {
26532         &self.inner
26533     }
26534 }
26535 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26536     fn deref_mut(&mut self) -> &mut Self::Target {
26537         &mut self.inner
26538     }
26539 }
26540 impl<'a> PhysicalDeviceShaderCoreProperties2AMDBuilder<'a> {
shader_core_features( mut self, shader_core_features: ShaderCorePropertiesFlagsAMD, ) -> Self26541     pub fn shader_core_features(
26542         mut self,
26543         shader_core_features: ShaderCorePropertiesFlagsAMD,
26544     ) -> Self {
26545         self.inner.shader_core_features = shader_core_features;
26546         self
26547     }
active_compute_unit_count(mut self, active_compute_unit_count: u32) -> Self26548     pub fn active_compute_unit_count(mut self, active_compute_unit_count: u32) -> Self {
26549         self.inner.active_compute_unit_count = active_compute_unit_count;
26550         self
26551     }
26552     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26553     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26554     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderCoreProperties2AMD26555     pub fn build(self) -> PhysicalDeviceShaderCoreProperties2AMD {
26556         self.inner
26557     }
26558 }
26559 #[repr(C)]
26560 #[cfg_attr(feature = "debug", derive(Debug))]
26561 #[derive(Copy, Clone)]
26562 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>"]
26563 pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
26564     pub s_type: StructureType,
26565     pub p_next: *const c_void,
26566     pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
26567     pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
26568     pub extra_primitive_overestimation_size: f32,
26569 }
26570 impl ::std::default::Default for PipelineRasterizationConservativeStateCreateInfoEXT {
default() -> Self26571     fn default() -> Self {
26572         Self {
26573             s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
26574             p_next: ::std::ptr::null(),
26575             flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
26576             conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
26577             extra_primitive_overestimation_size: f32::default(),
26578         }
26579     }
26580 }
26581 impl PipelineRasterizationConservativeStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a>26582     pub fn builder<'a>() -> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26583         PipelineRasterizationConservativeStateCreateInfoEXTBuilder {
26584             inner: Self::default(),
26585             marker: ::std::marker::PhantomData,
26586         }
26587     }
26588 }
26589 #[repr(transparent)]
26590 pub struct PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26591     inner: PipelineRasterizationConservativeStateCreateInfoEXT,
26592     marker: ::std::marker::PhantomData<&'a ()>,
26593 }
26594 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
26595     for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'_>
26596 {
26597 }
26598 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
26599     for PipelineRasterizationConservativeStateCreateInfoEXT
26600 {
26601 }
26602 impl<'a> ::std::ops::Deref for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
26603     type Target = PipelineRasterizationConservativeStateCreateInfoEXT;
deref(&self) -> &Self::Target26604     fn deref(&self) -> &Self::Target {
26605         &self.inner
26606     }
26607 }
26608 impl<'a> ::std::ops::DerefMut for PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26609     fn deref_mut(&mut self) -> &mut Self::Target {
26610         &mut self.inner
26611     }
26612 }
26613 impl<'a> PipelineRasterizationConservativeStateCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineRasterizationConservativeStateCreateFlagsEXT) -> Self26614     pub fn flags(mut self, flags: PipelineRasterizationConservativeStateCreateFlagsEXT) -> Self {
26615         self.inner.flags = flags;
26616         self
26617     }
conservative_rasterization_mode( mut self, conservative_rasterization_mode: ConservativeRasterizationModeEXT, ) -> Self26618     pub fn conservative_rasterization_mode(
26619         mut self,
26620         conservative_rasterization_mode: ConservativeRasterizationModeEXT,
26621     ) -> Self {
26622         self.inner.conservative_rasterization_mode = conservative_rasterization_mode;
26623         self
26624     }
extra_primitive_overestimation_size( mut self, extra_primitive_overestimation_size: f32, ) -> Self26625     pub fn extra_primitive_overestimation_size(
26626         mut self,
26627         extra_primitive_overestimation_size: f32,
26628     ) -> Self {
26629         self.inner.extra_primitive_overestimation_size = extra_primitive_overestimation_size;
26630         self
26631     }
26632     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26633     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26634     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationConservativeStateCreateInfoEXT26635     pub fn build(self) -> PipelineRasterizationConservativeStateCreateInfoEXT {
26636         self.inner
26637     }
26638 }
26639 #[repr(C)]
26640 #[cfg_attr(feature = "debug", derive(Debug))]
26641 #[derive(Copy, Clone)]
26642 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>"]
26643 pub struct PhysicalDeviceDescriptorIndexingFeatures {
26644     pub s_type: StructureType,
26645     pub p_next: *mut c_void,
26646     pub shader_input_attachment_array_dynamic_indexing: Bool32,
26647     pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
26648     pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
26649     pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
26650     pub shader_sampled_image_array_non_uniform_indexing: Bool32,
26651     pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
26652     pub shader_storage_image_array_non_uniform_indexing: Bool32,
26653     pub shader_input_attachment_array_non_uniform_indexing: Bool32,
26654     pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
26655     pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
26656     pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
26657     pub descriptor_binding_sampled_image_update_after_bind: Bool32,
26658     pub descriptor_binding_storage_image_update_after_bind: Bool32,
26659     pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
26660     pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
26661     pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
26662     pub descriptor_binding_update_unused_while_pending: Bool32,
26663     pub descriptor_binding_partially_bound: Bool32,
26664     pub descriptor_binding_variable_descriptor_count: Bool32,
26665     pub runtime_descriptor_array: Bool32,
26666 }
26667 impl ::std::default::Default for PhysicalDeviceDescriptorIndexingFeatures {
default() -> Self26668     fn default() -> Self {
26669         Self {
26670             s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
26671             p_next: ::std::ptr::null_mut(),
26672             shader_input_attachment_array_dynamic_indexing: Bool32::default(),
26673             shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
26674             shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
26675             shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
26676             shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
26677             shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
26678             shader_storage_image_array_non_uniform_indexing: Bool32::default(),
26679             shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
26680             shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
26681             shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
26682             descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
26683             descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
26684             descriptor_binding_storage_image_update_after_bind: Bool32::default(),
26685             descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
26686             descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
26687             descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
26688             descriptor_binding_update_unused_while_pending: Bool32::default(),
26689             descriptor_binding_partially_bound: Bool32::default(),
26690             descriptor_binding_variable_descriptor_count: Bool32::default(),
26691             runtime_descriptor_array: Bool32::default(),
26692         }
26693     }
26694 }
26695 impl PhysicalDeviceDescriptorIndexingFeatures {
builder<'a>() -> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a>26696     pub fn builder<'a>() -> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26697         PhysicalDeviceDescriptorIndexingFeaturesBuilder {
26698             inner: Self::default(),
26699             marker: ::std::marker::PhantomData,
26700         }
26701     }
26702 }
26703 #[repr(transparent)]
26704 pub struct PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26705     inner: PhysicalDeviceDescriptorIndexingFeatures,
26706     marker: ::std::marker::PhantomData<&'a ()>,
26707 }
26708 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'_> {}
26709 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDescriptorIndexingFeatures {}
26710 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'_> {}
26711 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDescriptorIndexingFeatures {}
26712 impl<'a> ::std::ops::Deref for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
26713     type Target = PhysicalDeviceDescriptorIndexingFeatures;
deref(&self) -> &Self::Target26714     fn deref(&self) -> &Self::Target {
26715         &self.inner
26716     }
26717 }
26718 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26719     fn deref_mut(&mut self) -> &mut Self::Target {
26720         &mut self.inner
26721     }
26722 }
26723 impl<'a> PhysicalDeviceDescriptorIndexingFeaturesBuilder<'a> {
shader_input_attachment_array_dynamic_indexing( mut self, shader_input_attachment_array_dynamic_indexing: bool, ) -> Self26724     pub fn shader_input_attachment_array_dynamic_indexing(
26725         mut self,
26726         shader_input_attachment_array_dynamic_indexing: bool,
26727     ) -> Self {
26728         self.inner.shader_input_attachment_array_dynamic_indexing =
26729             shader_input_attachment_array_dynamic_indexing.into();
26730         self
26731     }
shader_uniform_texel_buffer_array_dynamic_indexing( mut self, shader_uniform_texel_buffer_array_dynamic_indexing: bool, ) -> Self26732     pub fn shader_uniform_texel_buffer_array_dynamic_indexing(
26733         mut self,
26734         shader_uniform_texel_buffer_array_dynamic_indexing: bool,
26735     ) -> Self {
26736         self.inner
26737             .shader_uniform_texel_buffer_array_dynamic_indexing =
26738             shader_uniform_texel_buffer_array_dynamic_indexing.into();
26739         self
26740     }
shader_storage_texel_buffer_array_dynamic_indexing( mut self, shader_storage_texel_buffer_array_dynamic_indexing: bool, ) -> Self26741     pub fn shader_storage_texel_buffer_array_dynamic_indexing(
26742         mut self,
26743         shader_storage_texel_buffer_array_dynamic_indexing: bool,
26744     ) -> Self {
26745         self.inner
26746             .shader_storage_texel_buffer_array_dynamic_indexing =
26747             shader_storage_texel_buffer_array_dynamic_indexing.into();
26748         self
26749     }
shader_uniform_buffer_array_non_uniform_indexing( mut self, shader_uniform_buffer_array_non_uniform_indexing: bool, ) -> Self26750     pub fn shader_uniform_buffer_array_non_uniform_indexing(
26751         mut self,
26752         shader_uniform_buffer_array_non_uniform_indexing: bool,
26753     ) -> Self {
26754         self.inner.shader_uniform_buffer_array_non_uniform_indexing =
26755             shader_uniform_buffer_array_non_uniform_indexing.into();
26756         self
26757     }
shader_sampled_image_array_non_uniform_indexing( mut self, shader_sampled_image_array_non_uniform_indexing: bool, ) -> Self26758     pub fn shader_sampled_image_array_non_uniform_indexing(
26759         mut self,
26760         shader_sampled_image_array_non_uniform_indexing: bool,
26761     ) -> Self {
26762         self.inner.shader_sampled_image_array_non_uniform_indexing =
26763             shader_sampled_image_array_non_uniform_indexing.into();
26764         self
26765     }
shader_storage_buffer_array_non_uniform_indexing( mut self, shader_storage_buffer_array_non_uniform_indexing: bool, ) -> Self26766     pub fn shader_storage_buffer_array_non_uniform_indexing(
26767         mut self,
26768         shader_storage_buffer_array_non_uniform_indexing: bool,
26769     ) -> Self {
26770         self.inner.shader_storage_buffer_array_non_uniform_indexing =
26771             shader_storage_buffer_array_non_uniform_indexing.into();
26772         self
26773     }
shader_storage_image_array_non_uniform_indexing( mut self, shader_storage_image_array_non_uniform_indexing: bool, ) -> Self26774     pub fn shader_storage_image_array_non_uniform_indexing(
26775         mut self,
26776         shader_storage_image_array_non_uniform_indexing: bool,
26777     ) -> Self {
26778         self.inner.shader_storage_image_array_non_uniform_indexing =
26779             shader_storage_image_array_non_uniform_indexing.into();
26780         self
26781     }
shader_input_attachment_array_non_uniform_indexing( mut self, shader_input_attachment_array_non_uniform_indexing: bool, ) -> Self26782     pub fn shader_input_attachment_array_non_uniform_indexing(
26783         mut self,
26784         shader_input_attachment_array_non_uniform_indexing: bool,
26785     ) -> Self {
26786         self.inner
26787             .shader_input_attachment_array_non_uniform_indexing =
26788             shader_input_attachment_array_non_uniform_indexing.into();
26789         self
26790     }
shader_uniform_texel_buffer_array_non_uniform_indexing( mut self, shader_uniform_texel_buffer_array_non_uniform_indexing: bool, ) -> Self26791     pub fn shader_uniform_texel_buffer_array_non_uniform_indexing(
26792         mut self,
26793         shader_uniform_texel_buffer_array_non_uniform_indexing: bool,
26794     ) -> Self {
26795         self.inner
26796             .shader_uniform_texel_buffer_array_non_uniform_indexing =
26797             shader_uniform_texel_buffer_array_non_uniform_indexing.into();
26798         self
26799     }
shader_storage_texel_buffer_array_non_uniform_indexing( mut self, shader_storage_texel_buffer_array_non_uniform_indexing: bool, ) -> Self26800     pub fn shader_storage_texel_buffer_array_non_uniform_indexing(
26801         mut self,
26802         shader_storage_texel_buffer_array_non_uniform_indexing: bool,
26803     ) -> Self {
26804         self.inner
26805             .shader_storage_texel_buffer_array_non_uniform_indexing =
26806             shader_storage_texel_buffer_array_non_uniform_indexing.into();
26807         self
26808     }
descriptor_binding_uniform_buffer_update_after_bind( mut self, descriptor_binding_uniform_buffer_update_after_bind: bool, ) -> Self26809     pub fn descriptor_binding_uniform_buffer_update_after_bind(
26810         mut self,
26811         descriptor_binding_uniform_buffer_update_after_bind: bool,
26812     ) -> Self {
26813         self.inner
26814             .descriptor_binding_uniform_buffer_update_after_bind =
26815             descriptor_binding_uniform_buffer_update_after_bind.into();
26816         self
26817     }
descriptor_binding_sampled_image_update_after_bind( mut self, descriptor_binding_sampled_image_update_after_bind: bool, ) -> Self26818     pub fn descriptor_binding_sampled_image_update_after_bind(
26819         mut self,
26820         descriptor_binding_sampled_image_update_after_bind: bool,
26821     ) -> Self {
26822         self.inner
26823             .descriptor_binding_sampled_image_update_after_bind =
26824             descriptor_binding_sampled_image_update_after_bind.into();
26825         self
26826     }
descriptor_binding_storage_image_update_after_bind( mut self, descriptor_binding_storage_image_update_after_bind: bool, ) -> Self26827     pub fn descriptor_binding_storage_image_update_after_bind(
26828         mut self,
26829         descriptor_binding_storage_image_update_after_bind: bool,
26830     ) -> Self {
26831         self.inner
26832             .descriptor_binding_storage_image_update_after_bind =
26833             descriptor_binding_storage_image_update_after_bind.into();
26834         self
26835     }
descriptor_binding_storage_buffer_update_after_bind( mut self, descriptor_binding_storage_buffer_update_after_bind: bool, ) -> Self26836     pub fn descriptor_binding_storage_buffer_update_after_bind(
26837         mut self,
26838         descriptor_binding_storage_buffer_update_after_bind: bool,
26839     ) -> Self {
26840         self.inner
26841             .descriptor_binding_storage_buffer_update_after_bind =
26842             descriptor_binding_storage_buffer_update_after_bind.into();
26843         self
26844     }
descriptor_binding_uniform_texel_buffer_update_after_bind( mut self, descriptor_binding_uniform_texel_buffer_update_after_bind: bool, ) -> Self26845     pub fn descriptor_binding_uniform_texel_buffer_update_after_bind(
26846         mut self,
26847         descriptor_binding_uniform_texel_buffer_update_after_bind: bool,
26848     ) -> Self {
26849         self.inner
26850             .descriptor_binding_uniform_texel_buffer_update_after_bind =
26851             descriptor_binding_uniform_texel_buffer_update_after_bind.into();
26852         self
26853     }
descriptor_binding_storage_texel_buffer_update_after_bind( mut self, descriptor_binding_storage_texel_buffer_update_after_bind: bool, ) -> Self26854     pub fn descriptor_binding_storage_texel_buffer_update_after_bind(
26855         mut self,
26856         descriptor_binding_storage_texel_buffer_update_after_bind: bool,
26857     ) -> Self {
26858         self.inner
26859             .descriptor_binding_storage_texel_buffer_update_after_bind =
26860             descriptor_binding_storage_texel_buffer_update_after_bind.into();
26861         self
26862     }
descriptor_binding_update_unused_while_pending( mut self, descriptor_binding_update_unused_while_pending: bool, ) -> Self26863     pub fn descriptor_binding_update_unused_while_pending(
26864         mut self,
26865         descriptor_binding_update_unused_while_pending: bool,
26866     ) -> Self {
26867         self.inner.descriptor_binding_update_unused_while_pending =
26868             descriptor_binding_update_unused_while_pending.into();
26869         self
26870     }
descriptor_binding_partially_bound( mut self, descriptor_binding_partially_bound: bool, ) -> Self26871     pub fn descriptor_binding_partially_bound(
26872         mut self,
26873         descriptor_binding_partially_bound: bool,
26874     ) -> Self {
26875         self.inner.descriptor_binding_partially_bound = descriptor_binding_partially_bound.into();
26876         self
26877     }
descriptor_binding_variable_descriptor_count( mut self, descriptor_binding_variable_descriptor_count: bool, ) -> Self26878     pub fn descriptor_binding_variable_descriptor_count(
26879         mut self,
26880         descriptor_binding_variable_descriptor_count: bool,
26881     ) -> Self {
26882         self.inner.descriptor_binding_variable_descriptor_count =
26883             descriptor_binding_variable_descriptor_count.into();
26884         self
26885     }
runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self26886     pub fn runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self {
26887         self.inner.runtime_descriptor_array = runtime_descriptor_array.into();
26888         self
26889     }
26890     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
26891     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
26892     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDescriptorIndexingFeatures26893     pub fn build(self) -> PhysicalDeviceDescriptorIndexingFeatures {
26894         self.inner
26895     }
26896 }
26897 #[repr(C)]
26898 #[cfg_attr(feature = "debug", derive(Debug))]
26899 #[derive(Copy, Clone)]
26900 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>"]
26901 pub struct PhysicalDeviceDescriptorIndexingProperties {
26902     pub s_type: StructureType,
26903     pub p_next: *mut c_void,
26904     pub max_update_after_bind_descriptors_in_all_pools: u32,
26905     pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
26906     pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
26907     pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
26908     pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
26909     pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
26910     pub robust_buffer_access_update_after_bind: Bool32,
26911     pub quad_divergent_implicit_lod: Bool32,
26912     pub max_per_stage_descriptor_update_after_bind_samplers: u32,
26913     pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
26914     pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
26915     pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
26916     pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
26917     pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
26918     pub max_per_stage_update_after_bind_resources: u32,
26919     pub max_descriptor_set_update_after_bind_samplers: u32,
26920     pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
26921     pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
26922     pub max_descriptor_set_update_after_bind_storage_buffers: u32,
26923     pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
26924     pub max_descriptor_set_update_after_bind_sampled_images: u32,
26925     pub max_descriptor_set_update_after_bind_storage_images: u32,
26926     pub max_descriptor_set_update_after_bind_input_attachments: u32,
26927 }
26928 impl ::std::default::Default for PhysicalDeviceDescriptorIndexingProperties {
default() -> Self26929     fn default() -> Self {
26930         Self {
26931             s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
26932             p_next: ::std::ptr::null_mut(),
26933             max_update_after_bind_descriptors_in_all_pools: u32::default(),
26934             shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
26935             shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
26936             shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
26937             shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
26938             shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
26939             robust_buffer_access_update_after_bind: Bool32::default(),
26940             quad_divergent_implicit_lod: Bool32::default(),
26941             max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
26942             max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
26943             max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
26944             max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
26945             max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
26946             max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
26947             max_per_stage_update_after_bind_resources: u32::default(),
26948             max_descriptor_set_update_after_bind_samplers: u32::default(),
26949             max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
26950             max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
26951             max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
26952             max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
26953             max_descriptor_set_update_after_bind_sampled_images: u32::default(),
26954             max_descriptor_set_update_after_bind_storage_images: u32::default(),
26955             max_descriptor_set_update_after_bind_input_attachments: u32::default(),
26956         }
26957     }
26958 }
26959 impl PhysicalDeviceDescriptorIndexingProperties {
builder<'a>() -> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a>26960     pub fn builder<'a>() -> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
26961         PhysicalDeviceDescriptorIndexingPropertiesBuilder {
26962             inner: Self::default(),
26963             marker: ::std::marker::PhantomData,
26964         }
26965     }
26966 }
26967 #[repr(transparent)]
26968 pub struct PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
26969     inner: PhysicalDeviceDescriptorIndexingProperties,
26970     marker: ::std::marker::PhantomData<&'a ()>,
26971 }
26972 unsafe impl ExtendsPhysicalDeviceProperties2
26973     for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'_>
26974 {
26975 }
26976 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDescriptorIndexingProperties {}
26977 impl<'a> ::std::ops::Deref for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
26978     type Target = PhysicalDeviceDescriptorIndexingProperties;
deref(&self) -> &Self::Target26979     fn deref(&self) -> &Self::Target {
26980         &self.inner
26981     }
26982 }
26983 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target26984     fn deref_mut(&mut self) -> &mut Self::Target {
26985         &mut self.inner
26986     }
26987 }
26988 impl<'a> PhysicalDeviceDescriptorIndexingPropertiesBuilder<'a> {
max_update_after_bind_descriptors_in_all_pools( mut self, max_update_after_bind_descriptors_in_all_pools: u32, ) -> Self26989     pub fn max_update_after_bind_descriptors_in_all_pools(
26990         mut self,
26991         max_update_after_bind_descriptors_in_all_pools: u32,
26992     ) -> Self {
26993         self.inner.max_update_after_bind_descriptors_in_all_pools =
26994             max_update_after_bind_descriptors_in_all_pools;
26995         self
26996     }
shader_uniform_buffer_array_non_uniform_indexing_native( mut self, shader_uniform_buffer_array_non_uniform_indexing_native: bool, ) -> Self26997     pub fn shader_uniform_buffer_array_non_uniform_indexing_native(
26998         mut self,
26999         shader_uniform_buffer_array_non_uniform_indexing_native: bool,
27000     ) -> Self {
27001         self.inner
27002             .shader_uniform_buffer_array_non_uniform_indexing_native =
27003             shader_uniform_buffer_array_non_uniform_indexing_native.into();
27004         self
27005     }
shader_sampled_image_array_non_uniform_indexing_native( mut self, shader_sampled_image_array_non_uniform_indexing_native: bool, ) -> Self27006     pub fn shader_sampled_image_array_non_uniform_indexing_native(
27007         mut self,
27008         shader_sampled_image_array_non_uniform_indexing_native: bool,
27009     ) -> Self {
27010         self.inner
27011             .shader_sampled_image_array_non_uniform_indexing_native =
27012             shader_sampled_image_array_non_uniform_indexing_native.into();
27013         self
27014     }
shader_storage_buffer_array_non_uniform_indexing_native( mut self, shader_storage_buffer_array_non_uniform_indexing_native: bool, ) -> Self27015     pub fn shader_storage_buffer_array_non_uniform_indexing_native(
27016         mut self,
27017         shader_storage_buffer_array_non_uniform_indexing_native: bool,
27018     ) -> Self {
27019         self.inner
27020             .shader_storage_buffer_array_non_uniform_indexing_native =
27021             shader_storage_buffer_array_non_uniform_indexing_native.into();
27022         self
27023     }
shader_storage_image_array_non_uniform_indexing_native( mut self, shader_storage_image_array_non_uniform_indexing_native: bool, ) -> Self27024     pub fn shader_storage_image_array_non_uniform_indexing_native(
27025         mut self,
27026         shader_storage_image_array_non_uniform_indexing_native: bool,
27027     ) -> Self {
27028         self.inner
27029             .shader_storage_image_array_non_uniform_indexing_native =
27030             shader_storage_image_array_non_uniform_indexing_native.into();
27031         self
27032     }
shader_input_attachment_array_non_uniform_indexing_native( mut self, shader_input_attachment_array_non_uniform_indexing_native: bool, ) -> Self27033     pub fn shader_input_attachment_array_non_uniform_indexing_native(
27034         mut self,
27035         shader_input_attachment_array_non_uniform_indexing_native: bool,
27036     ) -> Self {
27037         self.inner
27038             .shader_input_attachment_array_non_uniform_indexing_native =
27039             shader_input_attachment_array_non_uniform_indexing_native.into();
27040         self
27041     }
robust_buffer_access_update_after_bind( mut self, robust_buffer_access_update_after_bind: bool, ) -> Self27042     pub fn robust_buffer_access_update_after_bind(
27043         mut self,
27044         robust_buffer_access_update_after_bind: bool,
27045     ) -> Self {
27046         self.inner.robust_buffer_access_update_after_bind =
27047             robust_buffer_access_update_after_bind.into();
27048         self
27049     }
quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self27050     pub fn quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self {
27051         self.inner.quad_divergent_implicit_lod = quad_divergent_implicit_lod.into();
27052         self
27053     }
max_per_stage_descriptor_update_after_bind_samplers( mut self, max_per_stage_descriptor_update_after_bind_samplers: u32, ) -> Self27054     pub fn max_per_stage_descriptor_update_after_bind_samplers(
27055         mut self,
27056         max_per_stage_descriptor_update_after_bind_samplers: u32,
27057     ) -> Self {
27058         self.inner
27059             .max_per_stage_descriptor_update_after_bind_samplers =
27060             max_per_stage_descriptor_update_after_bind_samplers;
27061         self
27062     }
max_per_stage_descriptor_update_after_bind_uniform_buffers( mut self, max_per_stage_descriptor_update_after_bind_uniform_buffers: u32, ) -> Self27063     pub fn max_per_stage_descriptor_update_after_bind_uniform_buffers(
27064         mut self,
27065         max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
27066     ) -> Self {
27067         self.inner
27068             .max_per_stage_descriptor_update_after_bind_uniform_buffers =
27069             max_per_stage_descriptor_update_after_bind_uniform_buffers;
27070         self
27071     }
max_per_stage_descriptor_update_after_bind_storage_buffers( mut self, max_per_stage_descriptor_update_after_bind_storage_buffers: u32, ) -> Self27072     pub fn max_per_stage_descriptor_update_after_bind_storage_buffers(
27073         mut self,
27074         max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
27075     ) -> Self {
27076         self.inner
27077             .max_per_stage_descriptor_update_after_bind_storage_buffers =
27078             max_per_stage_descriptor_update_after_bind_storage_buffers;
27079         self
27080     }
max_per_stage_descriptor_update_after_bind_sampled_images( mut self, max_per_stage_descriptor_update_after_bind_sampled_images: u32, ) -> Self27081     pub fn max_per_stage_descriptor_update_after_bind_sampled_images(
27082         mut self,
27083         max_per_stage_descriptor_update_after_bind_sampled_images: u32,
27084     ) -> Self {
27085         self.inner
27086             .max_per_stage_descriptor_update_after_bind_sampled_images =
27087             max_per_stage_descriptor_update_after_bind_sampled_images;
27088         self
27089     }
max_per_stage_descriptor_update_after_bind_storage_images( mut self, max_per_stage_descriptor_update_after_bind_storage_images: u32, ) -> Self27090     pub fn max_per_stage_descriptor_update_after_bind_storage_images(
27091         mut self,
27092         max_per_stage_descriptor_update_after_bind_storage_images: u32,
27093     ) -> Self {
27094         self.inner
27095             .max_per_stage_descriptor_update_after_bind_storage_images =
27096             max_per_stage_descriptor_update_after_bind_storage_images;
27097         self
27098     }
max_per_stage_descriptor_update_after_bind_input_attachments( mut self, max_per_stage_descriptor_update_after_bind_input_attachments: u32, ) -> Self27099     pub fn max_per_stage_descriptor_update_after_bind_input_attachments(
27100         mut self,
27101         max_per_stage_descriptor_update_after_bind_input_attachments: u32,
27102     ) -> Self {
27103         self.inner
27104             .max_per_stage_descriptor_update_after_bind_input_attachments =
27105             max_per_stage_descriptor_update_after_bind_input_attachments;
27106         self
27107     }
max_per_stage_update_after_bind_resources( mut self, max_per_stage_update_after_bind_resources: u32, ) -> Self27108     pub fn max_per_stage_update_after_bind_resources(
27109         mut self,
27110         max_per_stage_update_after_bind_resources: u32,
27111     ) -> Self {
27112         self.inner.max_per_stage_update_after_bind_resources =
27113             max_per_stage_update_after_bind_resources;
27114         self
27115     }
max_descriptor_set_update_after_bind_samplers( mut self, max_descriptor_set_update_after_bind_samplers: u32, ) -> Self27116     pub fn max_descriptor_set_update_after_bind_samplers(
27117         mut self,
27118         max_descriptor_set_update_after_bind_samplers: u32,
27119     ) -> Self {
27120         self.inner.max_descriptor_set_update_after_bind_samplers =
27121             max_descriptor_set_update_after_bind_samplers;
27122         self
27123     }
max_descriptor_set_update_after_bind_uniform_buffers( mut self, max_descriptor_set_update_after_bind_uniform_buffers: u32, ) -> Self27124     pub fn max_descriptor_set_update_after_bind_uniform_buffers(
27125         mut self,
27126         max_descriptor_set_update_after_bind_uniform_buffers: u32,
27127     ) -> Self {
27128         self.inner
27129             .max_descriptor_set_update_after_bind_uniform_buffers =
27130             max_descriptor_set_update_after_bind_uniform_buffers;
27131         self
27132     }
max_descriptor_set_update_after_bind_uniform_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32, ) -> Self27133     pub fn max_descriptor_set_update_after_bind_uniform_buffers_dynamic(
27134         mut self,
27135         max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
27136     ) -> Self {
27137         self.inner
27138             .max_descriptor_set_update_after_bind_uniform_buffers_dynamic =
27139             max_descriptor_set_update_after_bind_uniform_buffers_dynamic;
27140         self
27141     }
max_descriptor_set_update_after_bind_storage_buffers( mut self, max_descriptor_set_update_after_bind_storage_buffers: u32, ) -> Self27142     pub fn max_descriptor_set_update_after_bind_storage_buffers(
27143         mut self,
27144         max_descriptor_set_update_after_bind_storage_buffers: u32,
27145     ) -> Self {
27146         self.inner
27147             .max_descriptor_set_update_after_bind_storage_buffers =
27148             max_descriptor_set_update_after_bind_storage_buffers;
27149         self
27150     }
max_descriptor_set_update_after_bind_storage_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32, ) -> Self27151     pub fn max_descriptor_set_update_after_bind_storage_buffers_dynamic(
27152         mut self,
27153         max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
27154     ) -> Self {
27155         self.inner
27156             .max_descriptor_set_update_after_bind_storage_buffers_dynamic =
27157             max_descriptor_set_update_after_bind_storage_buffers_dynamic;
27158         self
27159     }
max_descriptor_set_update_after_bind_sampled_images( mut self, max_descriptor_set_update_after_bind_sampled_images: u32, ) -> Self27160     pub fn max_descriptor_set_update_after_bind_sampled_images(
27161         mut self,
27162         max_descriptor_set_update_after_bind_sampled_images: u32,
27163     ) -> Self {
27164         self.inner
27165             .max_descriptor_set_update_after_bind_sampled_images =
27166             max_descriptor_set_update_after_bind_sampled_images;
27167         self
27168     }
max_descriptor_set_update_after_bind_storage_images( mut self, max_descriptor_set_update_after_bind_storage_images: u32, ) -> Self27169     pub fn max_descriptor_set_update_after_bind_storage_images(
27170         mut self,
27171         max_descriptor_set_update_after_bind_storage_images: u32,
27172     ) -> Self {
27173         self.inner
27174             .max_descriptor_set_update_after_bind_storage_images =
27175             max_descriptor_set_update_after_bind_storage_images;
27176         self
27177     }
max_descriptor_set_update_after_bind_input_attachments( mut self, max_descriptor_set_update_after_bind_input_attachments: u32, ) -> Self27178     pub fn max_descriptor_set_update_after_bind_input_attachments(
27179         mut self,
27180         max_descriptor_set_update_after_bind_input_attachments: u32,
27181     ) -> Self {
27182         self.inner
27183             .max_descriptor_set_update_after_bind_input_attachments =
27184             max_descriptor_set_update_after_bind_input_attachments;
27185         self
27186     }
27187     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27188     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27189     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDescriptorIndexingProperties27190     pub fn build(self) -> PhysicalDeviceDescriptorIndexingProperties {
27191         self.inner
27192     }
27193 }
27194 #[repr(C)]
27195 #[cfg_attr(feature = "debug", derive(Debug))]
27196 #[derive(Copy, Clone)]
27197 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>"]
27198 pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
27199     pub s_type: StructureType,
27200     pub p_next: *const c_void,
27201     pub binding_count: u32,
27202     pub p_binding_flags: *const DescriptorBindingFlags,
27203 }
27204 impl ::std::default::Default for DescriptorSetLayoutBindingFlagsCreateInfo {
default() -> Self27205     fn default() -> Self {
27206         Self {
27207             s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
27208             p_next: ::std::ptr::null(),
27209             binding_count: u32::default(),
27210             p_binding_flags: ::std::ptr::null(),
27211         }
27212     }
27213 }
27214 impl DescriptorSetLayoutBindingFlagsCreateInfo {
builder<'a>() -> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a>27215     pub fn builder<'a>() -> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27216         DescriptorSetLayoutBindingFlagsCreateInfoBuilder {
27217             inner: Self::default(),
27218             marker: ::std::marker::PhantomData,
27219         }
27220     }
27221 }
27222 #[repr(transparent)]
27223 pub struct DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27224     inner: DescriptorSetLayoutBindingFlagsCreateInfo,
27225     marker: ::std::marker::PhantomData<&'a ()>,
27226 }
27227 unsafe impl ExtendsDescriptorSetLayoutCreateInfo
27228     for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'_>
27229 {
27230 }
27231 unsafe impl ExtendsDescriptorSetLayoutCreateInfo for DescriptorSetLayoutBindingFlagsCreateInfo {}
27232 impl<'a> ::std::ops::Deref for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
27233     type Target = DescriptorSetLayoutBindingFlagsCreateInfo;
deref(&self) -> &Self::Target27234     fn deref(&self) -> &Self::Target {
27235         &self.inner
27236     }
27237 }
27238 impl<'a> ::std::ops::DerefMut for DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27239     fn deref_mut(&mut self) -> &mut Self::Target {
27240         &mut self.inner
27241     }
27242 }
27243 impl<'a> DescriptorSetLayoutBindingFlagsCreateInfoBuilder<'a> {
binding_flags(mut self, binding_flags: &'a [DescriptorBindingFlags]) -> Self27244     pub fn binding_flags(mut self, binding_flags: &'a [DescriptorBindingFlags]) -> Self {
27245         self.inner.binding_count = binding_flags.len() as _;
27246         self.inner.p_binding_flags = binding_flags.as_ptr();
27247         self
27248     }
27249     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27250     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27251     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetLayoutBindingFlagsCreateInfo27252     pub fn build(self) -> DescriptorSetLayoutBindingFlagsCreateInfo {
27253         self.inner
27254     }
27255 }
27256 #[repr(C)]
27257 #[cfg_attr(feature = "debug", derive(Debug))]
27258 #[derive(Copy, Clone)]
27259 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>"]
27260 pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
27261     pub s_type: StructureType,
27262     pub p_next: *const c_void,
27263     pub descriptor_set_count: u32,
27264     pub p_descriptor_counts: *const u32,
27265 }
27266 impl ::std::default::Default for DescriptorSetVariableDescriptorCountAllocateInfo {
default() -> Self27267     fn default() -> Self {
27268         Self {
27269             s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
27270             p_next: ::std::ptr::null(),
27271             descriptor_set_count: u32::default(),
27272             p_descriptor_counts: ::std::ptr::null(),
27273         }
27274     }
27275 }
27276 impl DescriptorSetVariableDescriptorCountAllocateInfo {
builder<'a>() -> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a>27277     pub fn builder<'a>() -> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27278         DescriptorSetVariableDescriptorCountAllocateInfoBuilder {
27279             inner: Self::default(),
27280             marker: ::std::marker::PhantomData,
27281         }
27282     }
27283 }
27284 #[repr(transparent)]
27285 pub struct DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27286     inner: DescriptorSetVariableDescriptorCountAllocateInfo,
27287     marker: ::std::marker::PhantomData<&'a ()>,
27288 }
27289 unsafe impl ExtendsDescriptorSetAllocateInfo
27290     for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'_>
27291 {
27292 }
27293 unsafe impl ExtendsDescriptorSetAllocateInfo for DescriptorSetVariableDescriptorCountAllocateInfo {}
27294 impl<'a> ::std::ops::Deref for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
27295     type Target = DescriptorSetVariableDescriptorCountAllocateInfo;
deref(&self) -> &Self::Target27296     fn deref(&self) -> &Self::Target {
27297         &self.inner
27298     }
27299 }
27300 impl<'a> ::std::ops::DerefMut for DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27301     fn deref_mut(&mut self) -> &mut Self::Target {
27302         &mut self.inner
27303     }
27304 }
27305 impl<'a> DescriptorSetVariableDescriptorCountAllocateInfoBuilder<'a> {
descriptor_counts(mut self, descriptor_counts: &'a [u32]) -> Self27306     pub fn descriptor_counts(mut self, descriptor_counts: &'a [u32]) -> Self {
27307         self.inner.descriptor_set_count = descriptor_counts.len() as _;
27308         self.inner.p_descriptor_counts = descriptor_counts.as_ptr();
27309         self
27310     }
27311     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27312     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27313     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetVariableDescriptorCountAllocateInfo27314     pub fn build(self) -> DescriptorSetVariableDescriptorCountAllocateInfo {
27315         self.inner
27316     }
27317 }
27318 #[repr(C)]
27319 #[cfg_attr(feature = "debug", derive(Debug))]
27320 #[derive(Copy, Clone)]
27321 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>"]
27322 pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
27323     pub s_type: StructureType,
27324     pub p_next: *mut c_void,
27325     pub max_variable_descriptor_count: u32,
27326 }
27327 impl ::std::default::Default for DescriptorSetVariableDescriptorCountLayoutSupport {
default() -> Self27328     fn default() -> Self {
27329         Self {
27330             s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
27331             p_next: ::std::ptr::null_mut(),
27332             max_variable_descriptor_count: u32::default(),
27333         }
27334     }
27335 }
27336 impl DescriptorSetVariableDescriptorCountLayoutSupport {
builder<'a>() -> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a>27337     pub fn builder<'a>() -> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
27338         DescriptorSetVariableDescriptorCountLayoutSupportBuilder {
27339             inner: Self::default(),
27340             marker: ::std::marker::PhantomData,
27341         }
27342     }
27343 }
27344 #[repr(transparent)]
27345 pub struct DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
27346     inner: DescriptorSetVariableDescriptorCountLayoutSupport,
27347     marker: ::std::marker::PhantomData<&'a ()>,
27348 }
27349 unsafe impl ExtendsDescriptorSetLayoutSupport
27350     for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'_>
27351 {
27352 }
27353 unsafe impl ExtendsDescriptorSetLayoutSupport
27354     for DescriptorSetVariableDescriptorCountLayoutSupport
27355 {
27356 }
27357 impl<'a> ::std::ops::Deref for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
27358     type Target = DescriptorSetVariableDescriptorCountLayoutSupport;
deref(&self) -> &Self::Target27359     fn deref(&self) -> &Self::Target {
27360         &self.inner
27361     }
27362 }
27363 impl<'a> ::std::ops::DerefMut for DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27364     fn deref_mut(&mut self) -> &mut Self::Target {
27365         &mut self.inner
27366     }
27367 }
27368 impl<'a> DescriptorSetVariableDescriptorCountLayoutSupportBuilder<'a> {
max_variable_descriptor_count(mut self, max_variable_descriptor_count: u32) -> Self27369     pub fn max_variable_descriptor_count(mut self, max_variable_descriptor_count: u32) -> Self {
27370         self.inner.max_variable_descriptor_count = max_variable_descriptor_count;
27371         self
27372     }
27373     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27374     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27375     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DescriptorSetVariableDescriptorCountLayoutSupport27376     pub fn build(self) -> DescriptorSetVariableDescriptorCountLayoutSupport {
27377         self.inner
27378     }
27379 }
27380 #[repr(C)]
27381 #[cfg_attr(feature = "debug", derive(Debug))]
27382 #[derive(Copy, Clone)]
27383 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescription2.html>"]
27384 pub struct AttachmentDescription2 {
27385     pub s_type: StructureType,
27386     pub p_next: *const c_void,
27387     pub flags: AttachmentDescriptionFlags,
27388     pub format: Format,
27389     pub samples: SampleCountFlags,
27390     pub load_op: AttachmentLoadOp,
27391     pub store_op: AttachmentStoreOp,
27392     pub stencil_load_op: AttachmentLoadOp,
27393     pub stencil_store_op: AttachmentStoreOp,
27394     pub initial_layout: ImageLayout,
27395     pub final_layout: ImageLayout,
27396 }
27397 impl ::std::default::Default for AttachmentDescription2 {
default() -> Self27398     fn default() -> Self {
27399         Self {
27400             s_type: StructureType::ATTACHMENT_DESCRIPTION_2,
27401             p_next: ::std::ptr::null(),
27402             flags: AttachmentDescriptionFlags::default(),
27403             format: Format::default(),
27404             samples: SampleCountFlags::default(),
27405             load_op: AttachmentLoadOp::default(),
27406             store_op: AttachmentStoreOp::default(),
27407             stencil_load_op: AttachmentLoadOp::default(),
27408             stencil_store_op: AttachmentStoreOp::default(),
27409             initial_layout: ImageLayout::default(),
27410             final_layout: ImageLayout::default(),
27411         }
27412     }
27413 }
27414 impl AttachmentDescription2 {
builder<'a>() -> AttachmentDescription2Builder<'a>27415     pub fn builder<'a>() -> AttachmentDescription2Builder<'a> {
27416         AttachmentDescription2Builder {
27417             inner: Self::default(),
27418             marker: ::std::marker::PhantomData,
27419         }
27420     }
27421 }
27422 #[repr(transparent)]
27423 pub struct AttachmentDescription2Builder<'a> {
27424     inner: AttachmentDescription2,
27425     marker: ::std::marker::PhantomData<&'a ()>,
27426 }
27427 pub unsafe trait ExtendsAttachmentDescription2 {}
27428 impl<'a> ::std::ops::Deref for AttachmentDescription2Builder<'a> {
27429     type Target = AttachmentDescription2;
deref(&self) -> &Self::Target27430     fn deref(&self) -> &Self::Target {
27431         &self.inner
27432     }
27433 }
27434 impl<'a> ::std::ops::DerefMut for AttachmentDescription2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27435     fn deref_mut(&mut self) -> &mut Self::Target {
27436         &mut self.inner
27437     }
27438 }
27439 impl<'a> AttachmentDescription2Builder<'a> {
flags(mut self, flags: AttachmentDescriptionFlags) -> Self27440     pub fn flags(mut self, flags: AttachmentDescriptionFlags) -> Self {
27441         self.inner.flags = flags;
27442         self
27443     }
format(mut self, format: Format) -> Self27444     pub fn format(mut self, format: Format) -> Self {
27445         self.inner.format = format;
27446         self
27447     }
samples(mut self, samples: SampleCountFlags) -> Self27448     pub fn samples(mut self, samples: SampleCountFlags) -> Self {
27449         self.inner.samples = samples;
27450         self
27451     }
load_op(mut self, load_op: AttachmentLoadOp) -> Self27452     pub fn load_op(mut self, load_op: AttachmentLoadOp) -> Self {
27453         self.inner.load_op = load_op;
27454         self
27455     }
store_op(mut self, store_op: AttachmentStoreOp) -> Self27456     pub fn store_op(mut self, store_op: AttachmentStoreOp) -> Self {
27457         self.inner.store_op = store_op;
27458         self
27459     }
stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self27460     pub fn stencil_load_op(mut self, stencil_load_op: AttachmentLoadOp) -> Self {
27461         self.inner.stencil_load_op = stencil_load_op;
27462         self
27463     }
stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self27464     pub fn stencil_store_op(mut self, stencil_store_op: AttachmentStoreOp) -> Self {
27465         self.inner.stencil_store_op = stencil_store_op;
27466         self
27467     }
initial_layout(mut self, initial_layout: ImageLayout) -> Self27468     pub fn initial_layout(mut self, initial_layout: ImageLayout) -> Self {
27469         self.inner.initial_layout = initial_layout;
27470         self
27471     }
final_layout(mut self, final_layout: ImageLayout) -> Self27472     pub fn final_layout(mut self, final_layout: ImageLayout) -> Self {
27473         self.inner.final_layout = final_layout;
27474         self
27475     }
27476     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27477     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27478     #[doc = r" valid extension structs can be pushed into the chain."]
27479     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27480     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAttachmentDescription2>(mut self, next: &'a mut T) -> Self27481     pub fn push_next<T: ExtendsAttachmentDescription2>(mut self, next: &'a mut T) -> Self {
27482         unsafe {
27483             let next_ptr = next as *mut T as *mut BaseOutStructure;
27484             let last_next = ptr_chain_iter(next).last().unwrap();
27485             (*last_next).p_next = self.inner.p_next as _;
27486             self.inner.p_next = next_ptr as _;
27487         }
27488         self
27489     }
27490     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27491     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27492     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentDescription227493     pub fn build(self) -> AttachmentDescription2 {
27494         self.inner
27495     }
27496 }
27497 #[repr(C)]
27498 #[cfg_attr(feature = "debug", derive(Debug))]
27499 #[derive(Copy, Clone)]
27500 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReference2.html>"]
27501 pub struct AttachmentReference2 {
27502     pub s_type: StructureType,
27503     pub p_next: *const c_void,
27504     pub attachment: u32,
27505     pub layout: ImageLayout,
27506     pub aspect_mask: ImageAspectFlags,
27507 }
27508 impl ::std::default::Default for AttachmentReference2 {
default() -> Self27509     fn default() -> Self {
27510         Self {
27511             s_type: StructureType::ATTACHMENT_REFERENCE_2,
27512             p_next: ::std::ptr::null(),
27513             attachment: u32::default(),
27514             layout: ImageLayout::default(),
27515             aspect_mask: ImageAspectFlags::default(),
27516         }
27517     }
27518 }
27519 impl AttachmentReference2 {
builder<'a>() -> AttachmentReference2Builder<'a>27520     pub fn builder<'a>() -> AttachmentReference2Builder<'a> {
27521         AttachmentReference2Builder {
27522             inner: Self::default(),
27523             marker: ::std::marker::PhantomData,
27524         }
27525     }
27526 }
27527 #[repr(transparent)]
27528 pub struct AttachmentReference2Builder<'a> {
27529     inner: AttachmentReference2,
27530     marker: ::std::marker::PhantomData<&'a ()>,
27531 }
27532 pub unsafe trait ExtendsAttachmentReference2 {}
27533 impl<'a> ::std::ops::Deref for AttachmentReference2Builder<'a> {
27534     type Target = AttachmentReference2;
deref(&self) -> &Self::Target27535     fn deref(&self) -> &Self::Target {
27536         &self.inner
27537     }
27538 }
27539 impl<'a> ::std::ops::DerefMut for AttachmentReference2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27540     fn deref_mut(&mut self) -> &mut Self::Target {
27541         &mut self.inner
27542     }
27543 }
27544 impl<'a> AttachmentReference2Builder<'a> {
attachment(mut self, attachment: u32) -> Self27545     pub fn attachment(mut self, attachment: u32) -> Self {
27546         self.inner.attachment = attachment;
27547         self
27548     }
layout(mut self, layout: ImageLayout) -> Self27549     pub fn layout(mut self, layout: ImageLayout) -> Self {
27550         self.inner.layout = layout;
27551         self
27552     }
aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self27553     pub fn aspect_mask(mut self, aspect_mask: ImageAspectFlags) -> Self {
27554         self.inner.aspect_mask = aspect_mask;
27555         self
27556     }
27557     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27558     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27559     #[doc = r" valid extension structs can be pushed into the chain."]
27560     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27561     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAttachmentReference2>(mut self, next: &'a mut T) -> Self27562     pub fn push_next<T: ExtendsAttachmentReference2>(mut self, next: &'a mut T) -> Self {
27563         unsafe {
27564             let next_ptr = next as *mut T as *mut BaseOutStructure;
27565             let last_next = ptr_chain_iter(next).last().unwrap();
27566             (*last_next).p_next = self.inner.p_next as _;
27567             self.inner.p_next = next_ptr as _;
27568         }
27569         self
27570     }
27571     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27572     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27573     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentReference227574     pub fn build(self) -> AttachmentReference2 {
27575         self.inner
27576     }
27577 }
27578 #[repr(C)]
27579 #[cfg_attr(feature = "debug", derive(Debug))]
27580 #[derive(Copy, Clone)]
27581 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescription2.html>"]
27582 pub struct SubpassDescription2 {
27583     pub s_type: StructureType,
27584     pub p_next: *const c_void,
27585     pub flags: SubpassDescriptionFlags,
27586     pub pipeline_bind_point: PipelineBindPoint,
27587     pub view_mask: u32,
27588     pub input_attachment_count: u32,
27589     pub p_input_attachments: *const AttachmentReference2,
27590     pub color_attachment_count: u32,
27591     pub p_color_attachments: *const AttachmentReference2,
27592     pub p_resolve_attachments: *const AttachmentReference2,
27593     pub p_depth_stencil_attachment: *const AttachmentReference2,
27594     pub preserve_attachment_count: u32,
27595     pub p_preserve_attachments: *const u32,
27596 }
27597 impl ::std::default::Default for SubpassDescription2 {
default() -> Self27598     fn default() -> Self {
27599         Self {
27600             s_type: StructureType::SUBPASS_DESCRIPTION_2,
27601             p_next: ::std::ptr::null(),
27602             flags: SubpassDescriptionFlags::default(),
27603             pipeline_bind_point: PipelineBindPoint::default(),
27604             view_mask: u32::default(),
27605             input_attachment_count: u32::default(),
27606             p_input_attachments: ::std::ptr::null(),
27607             color_attachment_count: u32::default(),
27608             p_color_attachments: ::std::ptr::null(),
27609             p_resolve_attachments: ::std::ptr::null(),
27610             p_depth_stencil_attachment: ::std::ptr::null(),
27611             preserve_attachment_count: u32::default(),
27612             p_preserve_attachments: ::std::ptr::null(),
27613         }
27614     }
27615 }
27616 impl SubpassDescription2 {
builder<'a>() -> SubpassDescription2Builder<'a>27617     pub fn builder<'a>() -> SubpassDescription2Builder<'a> {
27618         SubpassDescription2Builder {
27619             inner: Self::default(),
27620             marker: ::std::marker::PhantomData,
27621         }
27622     }
27623 }
27624 #[repr(transparent)]
27625 pub struct SubpassDescription2Builder<'a> {
27626     inner: SubpassDescription2,
27627     marker: ::std::marker::PhantomData<&'a ()>,
27628 }
27629 pub unsafe trait ExtendsSubpassDescription2 {}
27630 impl<'a> ::std::ops::Deref for SubpassDescription2Builder<'a> {
27631     type Target = SubpassDescription2;
deref(&self) -> &Self::Target27632     fn deref(&self) -> &Self::Target {
27633         &self.inner
27634     }
27635 }
27636 impl<'a> ::std::ops::DerefMut for SubpassDescription2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27637     fn deref_mut(&mut self) -> &mut Self::Target {
27638         &mut self.inner
27639     }
27640 }
27641 impl<'a> SubpassDescription2Builder<'a> {
flags(mut self, flags: SubpassDescriptionFlags) -> Self27642     pub fn flags(mut self, flags: SubpassDescriptionFlags) -> Self {
27643         self.inner.flags = flags;
27644         self
27645     }
pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self27646     pub fn pipeline_bind_point(mut self, pipeline_bind_point: PipelineBindPoint) -> Self {
27647         self.inner.pipeline_bind_point = pipeline_bind_point;
27648         self
27649     }
view_mask(mut self, view_mask: u32) -> Self27650     pub fn view_mask(mut self, view_mask: u32) -> Self {
27651         self.inner.view_mask = view_mask;
27652         self
27653     }
input_attachments(mut self, input_attachments: &'a [AttachmentReference2]) -> Self27654     pub fn input_attachments(mut self, input_attachments: &'a [AttachmentReference2]) -> Self {
27655         self.inner.input_attachment_count = input_attachments.len() as _;
27656         self.inner.p_input_attachments = input_attachments.as_ptr();
27657         self
27658     }
color_attachments(mut self, color_attachments: &'a [AttachmentReference2]) -> Self27659     pub fn color_attachments(mut self, color_attachments: &'a [AttachmentReference2]) -> Self {
27660         self.inner.color_attachment_count = color_attachments.len() as _;
27661         self.inner.p_color_attachments = color_attachments.as_ptr();
27662         self
27663     }
resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference2]) -> Self27664     pub fn resolve_attachments(mut self, resolve_attachments: &'a [AttachmentReference2]) -> Self {
27665         self.inner.color_attachment_count = resolve_attachments.len() as _;
27666         self.inner.p_resolve_attachments = resolve_attachments.as_ptr();
27667         self
27668     }
depth_stencil_attachment( mut self, depth_stencil_attachment: &'a AttachmentReference2, ) -> Self27669     pub fn depth_stencil_attachment(
27670         mut self,
27671         depth_stencil_attachment: &'a AttachmentReference2,
27672     ) -> Self {
27673         self.inner.p_depth_stencil_attachment = depth_stencil_attachment;
27674         self
27675     }
preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self27676     pub fn preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self {
27677         self.inner.preserve_attachment_count = preserve_attachments.len() as _;
27678         self.inner.p_preserve_attachments = preserve_attachments.as_ptr();
27679         self
27680     }
27681     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27682     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27683     #[doc = r" valid extension structs can be pushed into the chain."]
27684     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27685     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubpassDescription2>(mut self, next: &'a mut T) -> Self27686     pub fn push_next<T: ExtendsSubpassDescription2>(mut self, next: &'a mut T) -> Self {
27687         unsafe {
27688             let next_ptr = next as *mut T as *mut BaseOutStructure;
27689             let last_next = ptr_chain_iter(next).last().unwrap();
27690             (*last_next).p_next = self.inner.p_next as _;
27691             self.inner.p_next = next_ptr as _;
27692         }
27693         self
27694     }
27695     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27696     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27697     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDescription227698     pub fn build(self) -> SubpassDescription2 {
27699         self.inner
27700     }
27701 }
27702 #[repr(C)]
27703 #[cfg_attr(feature = "debug", derive(Debug))]
27704 #[derive(Copy, Clone)]
27705 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDependency2.html>"]
27706 pub struct SubpassDependency2 {
27707     pub s_type: StructureType,
27708     pub p_next: *const c_void,
27709     pub src_subpass: u32,
27710     pub dst_subpass: u32,
27711     pub src_stage_mask: PipelineStageFlags,
27712     pub dst_stage_mask: PipelineStageFlags,
27713     pub src_access_mask: AccessFlags,
27714     pub dst_access_mask: AccessFlags,
27715     pub dependency_flags: DependencyFlags,
27716     pub view_offset: i32,
27717 }
27718 impl ::std::default::Default for SubpassDependency2 {
default() -> Self27719     fn default() -> Self {
27720         Self {
27721             s_type: StructureType::SUBPASS_DEPENDENCY_2,
27722             p_next: ::std::ptr::null(),
27723             src_subpass: u32::default(),
27724             dst_subpass: u32::default(),
27725             src_stage_mask: PipelineStageFlags::default(),
27726             dst_stage_mask: PipelineStageFlags::default(),
27727             src_access_mask: AccessFlags::default(),
27728             dst_access_mask: AccessFlags::default(),
27729             dependency_flags: DependencyFlags::default(),
27730             view_offset: i32::default(),
27731         }
27732     }
27733 }
27734 impl SubpassDependency2 {
builder<'a>() -> SubpassDependency2Builder<'a>27735     pub fn builder<'a>() -> SubpassDependency2Builder<'a> {
27736         SubpassDependency2Builder {
27737             inner: Self::default(),
27738             marker: ::std::marker::PhantomData,
27739         }
27740     }
27741 }
27742 #[repr(transparent)]
27743 pub struct SubpassDependency2Builder<'a> {
27744     inner: SubpassDependency2,
27745     marker: ::std::marker::PhantomData<&'a ()>,
27746 }
27747 pub unsafe trait ExtendsSubpassDependency2 {}
27748 impl<'a> ::std::ops::Deref for SubpassDependency2Builder<'a> {
27749     type Target = SubpassDependency2;
deref(&self) -> &Self::Target27750     fn deref(&self) -> &Self::Target {
27751         &self.inner
27752     }
27753 }
27754 impl<'a> ::std::ops::DerefMut for SubpassDependency2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27755     fn deref_mut(&mut self) -> &mut Self::Target {
27756         &mut self.inner
27757     }
27758 }
27759 impl<'a> SubpassDependency2Builder<'a> {
src_subpass(mut self, src_subpass: u32) -> Self27760     pub fn src_subpass(mut self, src_subpass: u32) -> Self {
27761         self.inner.src_subpass = src_subpass;
27762         self
27763     }
dst_subpass(mut self, dst_subpass: u32) -> Self27764     pub fn dst_subpass(mut self, dst_subpass: u32) -> Self {
27765         self.inner.dst_subpass = dst_subpass;
27766         self
27767     }
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self27768     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags) -> Self {
27769         self.inner.src_stage_mask = src_stage_mask;
27770         self
27771     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self27772     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags) -> Self {
27773         self.inner.dst_stage_mask = dst_stage_mask;
27774         self
27775     }
src_access_mask(mut self, src_access_mask: AccessFlags) -> Self27776     pub fn src_access_mask(mut self, src_access_mask: AccessFlags) -> Self {
27777         self.inner.src_access_mask = src_access_mask;
27778         self
27779     }
dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self27780     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags) -> Self {
27781         self.inner.dst_access_mask = dst_access_mask;
27782         self
27783     }
dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self27784     pub fn dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self {
27785         self.inner.dependency_flags = dependency_flags;
27786         self
27787     }
view_offset(mut self, view_offset: i32) -> Self27788     pub fn view_offset(mut self, view_offset: i32) -> Self {
27789         self.inner.view_offset = view_offset;
27790         self
27791     }
27792     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27793     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27794     #[doc = r" valid extension structs can be pushed into the chain."]
27795     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27796     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubpassDependency2>(mut self, next: &'a mut T) -> Self27797     pub fn push_next<T: ExtendsSubpassDependency2>(mut self, next: &'a mut T) -> Self {
27798         unsafe {
27799             let next_ptr = next as *mut T as *mut BaseOutStructure;
27800             let last_next = ptr_chain_iter(next).last().unwrap();
27801             (*last_next).p_next = self.inner.p_next as _;
27802             self.inner.p_next = next_ptr as _;
27803         }
27804         self
27805     }
27806     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27807     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27808     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDependency227809     pub fn build(self) -> SubpassDependency2 {
27810         self.inner
27811     }
27812 }
27813 #[repr(C)]
27814 #[cfg_attr(feature = "debug", derive(Debug))]
27815 #[derive(Copy, Clone)]
27816 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateInfo2.html>"]
27817 pub struct RenderPassCreateInfo2 {
27818     pub s_type: StructureType,
27819     pub p_next: *const c_void,
27820     pub flags: RenderPassCreateFlags,
27821     pub attachment_count: u32,
27822     pub p_attachments: *const AttachmentDescription2,
27823     pub subpass_count: u32,
27824     pub p_subpasses: *const SubpassDescription2,
27825     pub dependency_count: u32,
27826     pub p_dependencies: *const SubpassDependency2,
27827     pub correlated_view_mask_count: u32,
27828     pub p_correlated_view_masks: *const u32,
27829 }
27830 impl ::std::default::Default for RenderPassCreateInfo2 {
default() -> Self27831     fn default() -> Self {
27832         Self {
27833             s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
27834             p_next: ::std::ptr::null(),
27835             flags: RenderPassCreateFlags::default(),
27836             attachment_count: u32::default(),
27837             p_attachments: ::std::ptr::null(),
27838             subpass_count: u32::default(),
27839             p_subpasses: ::std::ptr::null(),
27840             dependency_count: u32::default(),
27841             p_dependencies: ::std::ptr::null(),
27842             correlated_view_mask_count: u32::default(),
27843             p_correlated_view_masks: ::std::ptr::null(),
27844         }
27845     }
27846 }
27847 impl RenderPassCreateInfo2 {
builder<'a>() -> RenderPassCreateInfo2Builder<'a>27848     pub fn builder<'a>() -> RenderPassCreateInfo2Builder<'a> {
27849         RenderPassCreateInfo2Builder {
27850             inner: Self::default(),
27851             marker: ::std::marker::PhantomData,
27852         }
27853     }
27854 }
27855 #[repr(transparent)]
27856 pub struct RenderPassCreateInfo2Builder<'a> {
27857     inner: RenderPassCreateInfo2,
27858     marker: ::std::marker::PhantomData<&'a ()>,
27859 }
27860 pub unsafe trait ExtendsRenderPassCreateInfo2 {}
27861 impl<'a> ::std::ops::Deref for RenderPassCreateInfo2Builder<'a> {
27862     type Target = RenderPassCreateInfo2;
deref(&self) -> &Self::Target27863     fn deref(&self) -> &Self::Target {
27864         &self.inner
27865     }
27866 }
27867 impl<'a> ::std::ops::DerefMut for RenderPassCreateInfo2Builder<'a> {
deref_mut(&mut self) -> &mut Self::Target27868     fn deref_mut(&mut self) -> &mut Self::Target {
27869         &mut self.inner
27870     }
27871 }
27872 impl<'a> RenderPassCreateInfo2Builder<'a> {
flags(mut self, flags: RenderPassCreateFlags) -> Self27873     pub fn flags(mut self, flags: RenderPassCreateFlags) -> Self {
27874         self.inner.flags = flags;
27875         self
27876     }
attachments(mut self, attachments: &'a [AttachmentDescription2]) -> Self27877     pub fn attachments(mut self, attachments: &'a [AttachmentDescription2]) -> Self {
27878         self.inner.attachment_count = attachments.len() as _;
27879         self.inner.p_attachments = attachments.as_ptr();
27880         self
27881     }
subpasses(mut self, subpasses: &'a [SubpassDescription2]) -> Self27882     pub fn subpasses(mut self, subpasses: &'a [SubpassDescription2]) -> Self {
27883         self.inner.subpass_count = subpasses.len() as _;
27884         self.inner.p_subpasses = subpasses.as_ptr();
27885         self
27886     }
dependencies(mut self, dependencies: &'a [SubpassDependency2]) -> Self27887     pub fn dependencies(mut self, dependencies: &'a [SubpassDependency2]) -> Self {
27888         self.inner.dependency_count = dependencies.len() as _;
27889         self.inner.p_dependencies = dependencies.as_ptr();
27890         self
27891     }
correlated_view_masks(mut self, correlated_view_masks: &'a [u32]) -> Self27892     pub fn correlated_view_masks(mut self, correlated_view_masks: &'a [u32]) -> Self {
27893         self.inner.correlated_view_mask_count = correlated_view_masks.len() as _;
27894         self.inner.p_correlated_view_masks = correlated_view_masks.as_ptr();
27895         self
27896     }
27897     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
27898     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
27899     #[doc = r" valid extension structs can be pushed into the chain."]
27900     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
27901     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRenderPassCreateInfo2>(mut self, next: &'a mut T) -> Self27902     pub fn push_next<T: ExtendsRenderPassCreateInfo2>(mut self, next: &'a mut T) -> Self {
27903         unsafe {
27904             let next_ptr = next as *mut T as *mut BaseOutStructure;
27905             let last_next = ptr_chain_iter(next).last().unwrap();
27906             (*last_next).p_next = self.inner.p_next as _;
27907             self.inner.p_next = next_ptr as _;
27908         }
27909         self
27910     }
27911     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27912     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27913     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassCreateInfo227914     pub fn build(self) -> RenderPassCreateInfo2 {
27915         self.inner
27916     }
27917 }
27918 #[repr(C)]
27919 #[cfg_attr(feature = "debug", derive(Debug))]
27920 #[derive(Copy, Clone)]
27921 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassBeginInfo.html>"]
27922 pub struct SubpassBeginInfo {
27923     pub s_type: StructureType,
27924     pub p_next: *const c_void,
27925     pub contents: SubpassContents,
27926 }
27927 impl ::std::default::Default for SubpassBeginInfo {
default() -> Self27928     fn default() -> Self {
27929         Self {
27930             s_type: StructureType::SUBPASS_BEGIN_INFO,
27931             p_next: ::std::ptr::null(),
27932             contents: SubpassContents::default(),
27933         }
27934     }
27935 }
27936 impl SubpassBeginInfo {
builder<'a>() -> SubpassBeginInfoBuilder<'a>27937     pub fn builder<'a>() -> SubpassBeginInfoBuilder<'a> {
27938         SubpassBeginInfoBuilder {
27939             inner: Self::default(),
27940             marker: ::std::marker::PhantomData,
27941         }
27942     }
27943 }
27944 #[repr(transparent)]
27945 pub struct SubpassBeginInfoBuilder<'a> {
27946     inner: SubpassBeginInfo,
27947     marker: ::std::marker::PhantomData<&'a ()>,
27948 }
27949 impl<'a> ::std::ops::Deref for SubpassBeginInfoBuilder<'a> {
27950     type Target = SubpassBeginInfo;
deref(&self) -> &Self::Target27951     fn deref(&self) -> &Self::Target {
27952         &self.inner
27953     }
27954 }
27955 impl<'a> ::std::ops::DerefMut for SubpassBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target27956     fn deref_mut(&mut self) -> &mut Self::Target {
27957         &mut self.inner
27958     }
27959 }
27960 impl<'a> SubpassBeginInfoBuilder<'a> {
contents(mut self, contents: SubpassContents) -> Self27961     pub fn contents(mut self, contents: SubpassContents) -> Self {
27962         self.inner.contents = contents;
27963         self
27964     }
27965     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
27966     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
27967     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassBeginInfo27968     pub fn build(self) -> SubpassBeginInfo {
27969         self.inner
27970     }
27971 }
27972 #[repr(C)]
27973 #[cfg_attr(feature = "debug", derive(Debug))]
27974 #[derive(Copy, Clone)]
27975 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassEndInfo.html>"]
27976 pub struct SubpassEndInfo {
27977     pub s_type: StructureType,
27978     pub p_next: *const c_void,
27979 }
27980 impl ::std::default::Default for SubpassEndInfo {
default() -> Self27981     fn default() -> Self {
27982         Self {
27983             s_type: StructureType::SUBPASS_END_INFO,
27984             p_next: ::std::ptr::null(),
27985         }
27986     }
27987 }
27988 impl SubpassEndInfo {
builder<'a>() -> SubpassEndInfoBuilder<'a>27989     pub fn builder<'a>() -> SubpassEndInfoBuilder<'a> {
27990         SubpassEndInfoBuilder {
27991             inner: Self::default(),
27992             marker: ::std::marker::PhantomData,
27993         }
27994     }
27995 }
27996 #[repr(transparent)]
27997 pub struct SubpassEndInfoBuilder<'a> {
27998     inner: SubpassEndInfo,
27999     marker: ::std::marker::PhantomData<&'a ()>,
28000 }
28001 pub unsafe trait ExtendsSubpassEndInfo {}
28002 impl<'a> ::std::ops::Deref for SubpassEndInfoBuilder<'a> {
28003     type Target = SubpassEndInfo;
deref(&self) -> &Self::Target28004     fn deref(&self) -> &Self::Target {
28005         &self.inner
28006     }
28007 }
28008 impl<'a> ::std::ops::DerefMut for SubpassEndInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28009     fn deref_mut(&mut self) -> &mut Self::Target {
28010         &mut self.inner
28011     }
28012 }
28013 impl<'a> SubpassEndInfoBuilder<'a> {
28014     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
28015     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
28016     #[doc = r" valid extension structs can be pushed into the chain."]
28017     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
28018     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubpassEndInfo>(mut self, next: &'a mut T) -> Self28019     pub fn push_next<T: ExtendsSubpassEndInfo>(mut self, next: &'a mut T) -> Self {
28020         unsafe {
28021             let next_ptr = next as *mut T as *mut BaseOutStructure;
28022             let last_next = ptr_chain_iter(next).last().unwrap();
28023             (*last_next).p_next = self.inner.p_next as _;
28024             self.inner.p_next = next_ptr as _;
28025         }
28026         self
28027     }
28028     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28029     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28030     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassEndInfo28031     pub fn build(self) -> SubpassEndInfo {
28032         self.inner
28033     }
28034 }
28035 #[repr(C)]
28036 #[cfg_attr(feature = "debug", derive(Debug))]
28037 #[derive(Copy, Clone)]
28038 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>"]
28039 pub struct PhysicalDeviceTimelineSemaphoreFeatures {
28040     pub s_type: StructureType,
28041     pub p_next: *mut c_void,
28042     pub timeline_semaphore: Bool32,
28043 }
28044 impl ::std::default::Default for PhysicalDeviceTimelineSemaphoreFeatures {
default() -> Self28045     fn default() -> Self {
28046         Self {
28047             s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
28048             p_next: ::std::ptr::null_mut(),
28049             timeline_semaphore: Bool32::default(),
28050         }
28051     }
28052 }
28053 impl PhysicalDeviceTimelineSemaphoreFeatures {
builder<'a>() -> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a>28054     pub fn builder<'a>() -> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28055         PhysicalDeviceTimelineSemaphoreFeaturesBuilder {
28056             inner: Self::default(),
28057             marker: ::std::marker::PhantomData,
28058         }
28059     }
28060 }
28061 #[repr(transparent)]
28062 pub struct PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28063     inner: PhysicalDeviceTimelineSemaphoreFeatures,
28064     marker: ::std::marker::PhantomData<&'a ()>,
28065 }
28066 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'_> {}
28067 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTimelineSemaphoreFeatures {}
28068 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'_> {}
28069 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTimelineSemaphoreFeatures {}
28070 impl<'a> ::std::ops::Deref for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
28071     type Target = PhysicalDeviceTimelineSemaphoreFeatures;
deref(&self) -> &Self::Target28072     fn deref(&self) -> &Self::Target {
28073         &self.inner
28074     }
28075 }
28076 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28077     fn deref_mut(&mut self) -> &mut Self::Target {
28078         &mut self.inner
28079     }
28080 }
28081 impl<'a> PhysicalDeviceTimelineSemaphoreFeaturesBuilder<'a> {
timeline_semaphore(mut self, timeline_semaphore: bool) -> Self28082     pub fn timeline_semaphore(mut self, timeline_semaphore: bool) -> Self {
28083         self.inner.timeline_semaphore = timeline_semaphore.into();
28084         self
28085     }
28086     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28087     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28088     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTimelineSemaphoreFeatures28089     pub fn build(self) -> PhysicalDeviceTimelineSemaphoreFeatures {
28090         self.inner
28091     }
28092 }
28093 #[repr(C)]
28094 #[cfg_attr(feature = "debug", derive(Debug))]
28095 #[derive(Copy, Clone)]
28096 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>"]
28097 pub struct PhysicalDeviceTimelineSemaphoreProperties {
28098     pub s_type: StructureType,
28099     pub p_next: *mut c_void,
28100     pub max_timeline_semaphore_value_difference: u64,
28101 }
28102 impl ::std::default::Default for PhysicalDeviceTimelineSemaphoreProperties {
default() -> Self28103     fn default() -> Self {
28104         Self {
28105             s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
28106             p_next: ::std::ptr::null_mut(),
28107             max_timeline_semaphore_value_difference: u64::default(),
28108         }
28109     }
28110 }
28111 impl PhysicalDeviceTimelineSemaphoreProperties {
builder<'a>() -> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a>28112     pub fn builder<'a>() -> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28113         PhysicalDeviceTimelineSemaphorePropertiesBuilder {
28114             inner: Self::default(),
28115             marker: ::std::marker::PhantomData,
28116         }
28117     }
28118 }
28119 #[repr(transparent)]
28120 pub struct PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28121     inner: PhysicalDeviceTimelineSemaphoreProperties,
28122     marker: ::std::marker::PhantomData<&'a ()>,
28123 }
28124 unsafe impl ExtendsPhysicalDeviceProperties2
28125     for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'_>
28126 {
28127 }
28128 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTimelineSemaphoreProperties {}
28129 impl<'a> ::std::ops::Deref for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
28130     type Target = PhysicalDeviceTimelineSemaphoreProperties;
deref(&self) -> &Self::Target28131     fn deref(&self) -> &Self::Target {
28132         &self.inner
28133     }
28134 }
28135 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28136     fn deref_mut(&mut self) -> &mut Self::Target {
28137         &mut self.inner
28138     }
28139 }
28140 impl<'a> PhysicalDeviceTimelineSemaphorePropertiesBuilder<'a> {
max_timeline_semaphore_value_difference( mut self, max_timeline_semaphore_value_difference: u64, ) -> Self28141     pub fn max_timeline_semaphore_value_difference(
28142         mut self,
28143         max_timeline_semaphore_value_difference: u64,
28144     ) -> Self {
28145         self.inner.max_timeline_semaphore_value_difference =
28146             max_timeline_semaphore_value_difference;
28147         self
28148     }
28149     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28150     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28151     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTimelineSemaphoreProperties28152     pub fn build(self) -> PhysicalDeviceTimelineSemaphoreProperties {
28153         self.inner
28154     }
28155 }
28156 #[repr(C)]
28157 #[cfg_attr(feature = "debug", derive(Debug))]
28158 #[derive(Copy, Clone)]
28159 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreTypeCreateInfo.html>"]
28160 pub struct SemaphoreTypeCreateInfo {
28161     pub s_type: StructureType,
28162     pub p_next: *const c_void,
28163     pub semaphore_type: SemaphoreType,
28164     pub initial_value: u64,
28165 }
28166 impl ::std::default::Default for SemaphoreTypeCreateInfo {
default() -> Self28167     fn default() -> Self {
28168         Self {
28169             s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
28170             p_next: ::std::ptr::null(),
28171             semaphore_type: SemaphoreType::default(),
28172             initial_value: u64::default(),
28173         }
28174     }
28175 }
28176 impl SemaphoreTypeCreateInfo {
builder<'a>() -> SemaphoreTypeCreateInfoBuilder<'a>28177     pub fn builder<'a>() -> SemaphoreTypeCreateInfoBuilder<'a> {
28178         SemaphoreTypeCreateInfoBuilder {
28179             inner: Self::default(),
28180             marker: ::std::marker::PhantomData,
28181         }
28182     }
28183 }
28184 #[repr(transparent)]
28185 pub struct SemaphoreTypeCreateInfoBuilder<'a> {
28186     inner: SemaphoreTypeCreateInfo,
28187     marker: ::std::marker::PhantomData<&'a ()>,
28188 }
28189 unsafe impl ExtendsSemaphoreCreateInfo for SemaphoreTypeCreateInfoBuilder<'_> {}
28190 unsafe impl ExtendsSemaphoreCreateInfo for SemaphoreTypeCreateInfo {}
28191 unsafe impl ExtendsPhysicalDeviceExternalSemaphoreInfo for SemaphoreTypeCreateInfoBuilder<'_> {}
28192 unsafe impl ExtendsPhysicalDeviceExternalSemaphoreInfo for SemaphoreTypeCreateInfo {}
28193 impl<'a> ::std::ops::Deref for SemaphoreTypeCreateInfoBuilder<'a> {
28194     type Target = SemaphoreTypeCreateInfo;
deref(&self) -> &Self::Target28195     fn deref(&self) -> &Self::Target {
28196         &self.inner
28197     }
28198 }
28199 impl<'a> ::std::ops::DerefMut for SemaphoreTypeCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28200     fn deref_mut(&mut self) -> &mut Self::Target {
28201         &mut self.inner
28202     }
28203 }
28204 impl<'a> SemaphoreTypeCreateInfoBuilder<'a> {
semaphore_type(mut self, semaphore_type: SemaphoreType) -> Self28205     pub fn semaphore_type(mut self, semaphore_type: SemaphoreType) -> Self {
28206         self.inner.semaphore_type = semaphore_type;
28207         self
28208     }
initial_value(mut self, initial_value: u64) -> Self28209     pub fn initial_value(mut self, initial_value: u64) -> Self {
28210         self.inner.initial_value = initial_value;
28211         self
28212     }
28213     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28214     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28215     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreTypeCreateInfo28216     pub fn build(self) -> SemaphoreTypeCreateInfo {
28217         self.inner
28218     }
28219 }
28220 #[repr(C)]
28221 #[cfg_attr(feature = "debug", derive(Debug))]
28222 #[derive(Copy, Clone)]
28223 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTimelineSemaphoreSubmitInfo.html>"]
28224 pub struct TimelineSemaphoreSubmitInfo {
28225     pub s_type: StructureType,
28226     pub p_next: *const c_void,
28227     pub wait_semaphore_value_count: u32,
28228     pub p_wait_semaphore_values: *const u64,
28229     pub signal_semaphore_value_count: u32,
28230     pub p_signal_semaphore_values: *const u64,
28231 }
28232 impl ::std::default::Default for TimelineSemaphoreSubmitInfo {
default() -> Self28233     fn default() -> Self {
28234         Self {
28235             s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
28236             p_next: ::std::ptr::null(),
28237             wait_semaphore_value_count: u32::default(),
28238             p_wait_semaphore_values: ::std::ptr::null(),
28239             signal_semaphore_value_count: u32::default(),
28240             p_signal_semaphore_values: ::std::ptr::null(),
28241         }
28242     }
28243 }
28244 impl TimelineSemaphoreSubmitInfo {
builder<'a>() -> TimelineSemaphoreSubmitInfoBuilder<'a>28245     pub fn builder<'a>() -> TimelineSemaphoreSubmitInfoBuilder<'a> {
28246         TimelineSemaphoreSubmitInfoBuilder {
28247             inner: Self::default(),
28248             marker: ::std::marker::PhantomData,
28249         }
28250     }
28251 }
28252 #[repr(transparent)]
28253 pub struct TimelineSemaphoreSubmitInfoBuilder<'a> {
28254     inner: TimelineSemaphoreSubmitInfo,
28255     marker: ::std::marker::PhantomData<&'a ()>,
28256 }
28257 unsafe impl ExtendsSubmitInfo for TimelineSemaphoreSubmitInfoBuilder<'_> {}
28258 unsafe impl ExtendsSubmitInfo for TimelineSemaphoreSubmitInfo {}
28259 unsafe impl ExtendsBindSparseInfo for TimelineSemaphoreSubmitInfoBuilder<'_> {}
28260 unsafe impl ExtendsBindSparseInfo for TimelineSemaphoreSubmitInfo {}
28261 impl<'a> ::std::ops::Deref for TimelineSemaphoreSubmitInfoBuilder<'a> {
28262     type Target = TimelineSemaphoreSubmitInfo;
deref(&self) -> &Self::Target28263     fn deref(&self) -> &Self::Target {
28264         &self.inner
28265     }
28266 }
28267 impl<'a> ::std::ops::DerefMut for TimelineSemaphoreSubmitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28268     fn deref_mut(&mut self) -> &mut Self::Target {
28269         &mut self.inner
28270     }
28271 }
28272 impl<'a> TimelineSemaphoreSubmitInfoBuilder<'a> {
wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self28273     pub fn wait_semaphore_values(mut self, wait_semaphore_values: &'a [u64]) -> Self {
28274         self.inner.wait_semaphore_value_count = wait_semaphore_values.len() as _;
28275         self.inner.p_wait_semaphore_values = wait_semaphore_values.as_ptr();
28276         self
28277     }
signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self28278     pub fn signal_semaphore_values(mut self, signal_semaphore_values: &'a [u64]) -> Self {
28279         self.inner.signal_semaphore_value_count = signal_semaphore_values.len() as _;
28280         self.inner.p_signal_semaphore_values = signal_semaphore_values.as_ptr();
28281         self
28282     }
28283     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28284     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28285     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> TimelineSemaphoreSubmitInfo28286     pub fn build(self) -> TimelineSemaphoreSubmitInfo {
28287         self.inner
28288     }
28289 }
28290 #[repr(C)]
28291 #[cfg_attr(feature = "debug", derive(Debug))]
28292 #[derive(Copy, Clone)]
28293 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreWaitInfo.html>"]
28294 pub struct SemaphoreWaitInfo {
28295     pub s_type: StructureType,
28296     pub p_next: *const c_void,
28297     pub flags: SemaphoreWaitFlags,
28298     pub semaphore_count: u32,
28299     pub p_semaphores: *const Semaphore,
28300     pub p_values: *const u64,
28301 }
28302 impl ::std::default::Default for SemaphoreWaitInfo {
default() -> Self28303     fn default() -> Self {
28304         Self {
28305             s_type: StructureType::SEMAPHORE_WAIT_INFO,
28306             p_next: ::std::ptr::null(),
28307             flags: SemaphoreWaitFlags::default(),
28308             semaphore_count: u32::default(),
28309             p_semaphores: ::std::ptr::null(),
28310             p_values: ::std::ptr::null(),
28311         }
28312     }
28313 }
28314 impl SemaphoreWaitInfo {
builder<'a>() -> SemaphoreWaitInfoBuilder<'a>28315     pub fn builder<'a>() -> SemaphoreWaitInfoBuilder<'a> {
28316         SemaphoreWaitInfoBuilder {
28317             inner: Self::default(),
28318             marker: ::std::marker::PhantomData,
28319         }
28320     }
28321 }
28322 #[repr(transparent)]
28323 pub struct SemaphoreWaitInfoBuilder<'a> {
28324     inner: SemaphoreWaitInfo,
28325     marker: ::std::marker::PhantomData<&'a ()>,
28326 }
28327 impl<'a> ::std::ops::Deref for SemaphoreWaitInfoBuilder<'a> {
28328     type Target = SemaphoreWaitInfo;
deref(&self) -> &Self::Target28329     fn deref(&self) -> &Self::Target {
28330         &self.inner
28331     }
28332 }
28333 impl<'a> ::std::ops::DerefMut for SemaphoreWaitInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28334     fn deref_mut(&mut self) -> &mut Self::Target {
28335         &mut self.inner
28336     }
28337 }
28338 impl<'a> SemaphoreWaitInfoBuilder<'a> {
flags(mut self, flags: SemaphoreWaitFlags) -> Self28339     pub fn flags(mut self, flags: SemaphoreWaitFlags) -> Self {
28340         self.inner.flags = flags;
28341         self
28342     }
semaphores(mut self, semaphores: &'a [Semaphore]) -> Self28343     pub fn semaphores(mut self, semaphores: &'a [Semaphore]) -> Self {
28344         self.inner.semaphore_count = semaphores.len() as _;
28345         self.inner.p_semaphores = semaphores.as_ptr();
28346         self
28347     }
values(mut self, values: &'a [u64]) -> Self28348     pub fn values(mut self, values: &'a [u64]) -> Self {
28349         self.inner.semaphore_count = values.len() as _;
28350         self.inner.p_values = values.as_ptr();
28351         self
28352     }
28353     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28354     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28355     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreWaitInfo28356     pub fn build(self) -> SemaphoreWaitInfo {
28357         self.inner
28358     }
28359 }
28360 #[repr(C)]
28361 #[cfg_attr(feature = "debug", derive(Debug))]
28362 #[derive(Copy, Clone)]
28363 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreSignalInfo.html>"]
28364 pub struct SemaphoreSignalInfo {
28365     pub s_type: StructureType,
28366     pub p_next: *const c_void,
28367     pub semaphore: Semaphore,
28368     pub value: u64,
28369 }
28370 impl ::std::default::Default for SemaphoreSignalInfo {
default() -> Self28371     fn default() -> Self {
28372         Self {
28373             s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
28374             p_next: ::std::ptr::null(),
28375             semaphore: Semaphore::default(),
28376             value: u64::default(),
28377         }
28378     }
28379 }
28380 impl SemaphoreSignalInfo {
builder<'a>() -> SemaphoreSignalInfoBuilder<'a>28381     pub fn builder<'a>() -> SemaphoreSignalInfoBuilder<'a> {
28382         SemaphoreSignalInfoBuilder {
28383             inner: Self::default(),
28384             marker: ::std::marker::PhantomData,
28385         }
28386     }
28387 }
28388 #[repr(transparent)]
28389 pub struct SemaphoreSignalInfoBuilder<'a> {
28390     inner: SemaphoreSignalInfo,
28391     marker: ::std::marker::PhantomData<&'a ()>,
28392 }
28393 impl<'a> ::std::ops::Deref for SemaphoreSignalInfoBuilder<'a> {
28394     type Target = SemaphoreSignalInfo;
deref(&self) -> &Self::Target28395     fn deref(&self) -> &Self::Target {
28396         &self.inner
28397     }
28398 }
28399 impl<'a> ::std::ops::DerefMut for SemaphoreSignalInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28400     fn deref_mut(&mut self) -> &mut Self::Target {
28401         &mut self.inner
28402     }
28403 }
28404 impl<'a> SemaphoreSignalInfoBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self28405     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
28406         self.inner.semaphore = semaphore;
28407         self
28408     }
value(mut self, value: u64) -> Self28409     pub fn value(mut self, value: u64) -> Self {
28410         self.inner.value = value;
28411         self
28412     }
28413     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28414     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28415     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreSignalInfo28416     pub fn build(self) -> SemaphoreSignalInfo {
28417         self.inner
28418     }
28419 }
28420 #[repr(C)]
28421 #[cfg_attr(feature = "debug", derive(Debug))]
28422 #[derive(Copy, Clone, Default)]
28423 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>"]
28424 pub struct VertexInputBindingDivisorDescriptionEXT {
28425     pub binding: u32,
28426     pub divisor: u32,
28427 }
28428 impl VertexInputBindingDivisorDescriptionEXT {
builder<'a>() -> VertexInputBindingDivisorDescriptionEXTBuilder<'a>28429     pub fn builder<'a>() -> VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
28430         VertexInputBindingDivisorDescriptionEXTBuilder {
28431             inner: Self::default(),
28432             marker: ::std::marker::PhantomData,
28433         }
28434     }
28435 }
28436 #[repr(transparent)]
28437 pub struct VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
28438     inner: VertexInputBindingDivisorDescriptionEXT,
28439     marker: ::std::marker::PhantomData<&'a ()>,
28440 }
28441 impl<'a> ::std::ops::Deref for VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
28442     type Target = VertexInputBindingDivisorDescriptionEXT;
deref(&self) -> &Self::Target28443     fn deref(&self) -> &Self::Target {
28444         &self.inner
28445     }
28446 }
28447 impl<'a> ::std::ops::DerefMut for VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28448     fn deref_mut(&mut self) -> &mut Self::Target {
28449         &mut self.inner
28450     }
28451 }
28452 impl<'a> VertexInputBindingDivisorDescriptionEXTBuilder<'a> {
binding(mut self, binding: u32) -> Self28453     pub fn binding(mut self, binding: u32) -> Self {
28454         self.inner.binding = binding;
28455         self
28456     }
divisor(mut self, divisor: u32) -> Self28457     pub fn divisor(mut self, divisor: u32) -> Self {
28458         self.inner.divisor = divisor;
28459         self
28460     }
28461     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28462     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28463     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputBindingDivisorDescriptionEXT28464     pub fn build(self) -> VertexInputBindingDivisorDescriptionEXT {
28465         self.inner
28466     }
28467 }
28468 #[repr(C)]
28469 #[cfg_attr(feature = "debug", derive(Debug))]
28470 #[derive(Copy, Clone)]
28471 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>"]
28472 pub struct PipelineVertexInputDivisorStateCreateInfoEXT {
28473     pub s_type: StructureType,
28474     pub p_next: *const c_void,
28475     pub vertex_binding_divisor_count: u32,
28476     pub p_vertex_binding_divisors: *const VertexInputBindingDivisorDescriptionEXT,
28477 }
28478 impl ::std::default::Default for PipelineVertexInputDivisorStateCreateInfoEXT {
default() -> Self28479     fn default() -> Self {
28480         Self {
28481             s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,
28482             p_next: ::std::ptr::null(),
28483             vertex_binding_divisor_count: u32::default(),
28484             p_vertex_binding_divisors: ::std::ptr::null(),
28485         }
28486     }
28487 }
28488 impl PipelineVertexInputDivisorStateCreateInfoEXT {
builder<'a>() -> PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a>28489     pub fn builder<'a>() -> PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
28490         PipelineVertexInputDivisorStateCreateInfoEXTBuilder {
28491             inner: Self::default(),
28492             marker: ::std::marker::PhantomData,
28493         }
28494     }
28495 }
28496 #[repr(transparent)]
28497 pub struct PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
28498     inner: PipelineVertexInputDivisorStateCreateInfoEXT,
28499     marker: ::std::marker::PhantomData<&'a ()>,
28500 }
28501 unsafe impl ExtendsPipelineVertexInputStateCreateInfo
28502     for PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'_>
28503 {
28504 }
28505 unsafe impl ExtendsPipelineVertexInputStateCreateInfo
28506     for PipelineVertexInputDivisorStateCreateInfoEXT
28507 {
28508 }
28509 impl<'a> ::std::ops::Deref for PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
28510     type Target = PipelineVertexInputDivisorStateCreateInfoEXT;
deref(&self) -> &Self::Target28511     fn deref(&self) -> &Self::Target {
28512         &self.inner
28513     }
28514 }
28515 impl<'a> ::std::ops::DerefMut for PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28516     fn deref_mut(&mut self) -> &mut Self::Target {
28517         &mut self.inner
28518     }
28519 }
28520 impl<'a> PipelineVertexInputDivisorStateCreateInfoEXTBuilder<'a> {
vertex_binding_divisors( mut self, vertex_binding_divisors: &'a [VertexInputBindingDivisorDescriptionEXT], ) -> Self28521     pub fn vertex_binding_divisors(
28522         mut self,
28523         vertex_binding_divisors: &'a [VertexInputBindingDivisorDescriptionEXT],
28524     ) -> Self {
28525         self.inner.vertex_binding_divisor_count = vertex_binding_divisors.len() as _;
28526         self.inner.p_vertex_binding_divisors = vertex_binding_divisors.as_ptr();
28527         self
28528     }
28529     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28530     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28531     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineVertexInputDivisorStateCreateInfoEXT28532     pub fn build(self) -> PipelineVertexInputDivisorStateCreateInfoEXT {
28533         self.inner
28534     }
28535 }
28536 #[repr(C)]
28537 #[cfg_attr(feature = "debug", derive(Debug))]
28538 #[derive(Copy, Clone)]
28539 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>"]
28540 pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
28541     pub s_type: StructureType,
28542     pub p_next: *mut c_void,
28543     pub max_vertex_attrib_divisor: u32,
28544 }
28545 impl ::std::default::Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
default() -> Self28546     fn default() -> Self {
28547         Self {
28548             s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
28549             p_next: ::std::ptr::null_mut(),
28550             max_vertex_attrib_divisor: u32::default(),
28551         }
28552     }
28553 }
28554 impl PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
builder<'a>() -> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a>28555     pub fn builder<'a>() -> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
28556         PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder {
28557             inner: Self::default(),
28558             marker: ::std::marker::PhantomData,
28559         }
28560     }
28561 }
28562 #[repr(transparent)]
28563 pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
28564     inner: PhysicalDeviceVertexAttributeDivisorPropertiesEXT,
28565     marker: ::std::marker::PhantomData<&'a ()>,
28566 }
28567 unsafe impl ExtendsPhysicalDeviceProperties2
28568     for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'_>
28569 {
28570 }
28571 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
28572 impl<'a> ::std::ops::Deref for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
28573     type Target = PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
deref(&self) -> &Self::Target28574     fn deref(&self) -> &Self::Target {
28575         &self.inner
28576     }
28577 }
28578 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28579     fn deref_mut(&mut self) -> &mut Self::Target {
28580         &mut self.inner
28581     }
28582 }
28583 impl<'a> PhysicalDeviceVertexAttributeDivisorPropertiesEXTBuilder<'a> {
max_vertex_attrib_divisor(mut self, max_vertex_attrib_divisor: u32) -> Self28584     pub fn max_vertex_attrib_divisor(mut self, max_vertex_attrib_divisor: u32) -> Self {
28585         self.inner.max_vertex_attrib_divisor = max_vertex_attrib_divisor;
28586         self
28587     }
28588     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28589     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28590     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVertexAttributeDivisorPropertiesEXT28591     pub fn build(self) -> PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
28592         self.inner
28593     }
28594 }
28595 #[repr(C)]
28596 #[cfg_attr(feature = "debug", derive(Debug))]
28597 #[derive(Copy, Clone)]
28598 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>"]
28599 pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
28600     pub s_type: StructureType,
28601     pub p_next: *mut c_void,
28602     pub pci_domain: u32,
28603     pub pci_bus: u32,
28604     pub pci_device: u32,
28605     pub pci_function: u32,
28606 }
28607 impl ::std::default::Default for PhysicalDevicePCIBusInfoPropertiesEXT {
default() -> Self28608     fn default() -> Self {
28609         Self {
28610             s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
28611             p_next: ::std::ptr::null_mut(),
28612             pci_domain: u32::default(),
28613             pci_bus: u32::default(),
28614             pci_device: u32::default(),
28615             pci_function: u32::default(),
28616         }
28617     }
28618 }
28619 impl PhysicalDevicePCIBusInfoPropertiesEXT {
builder<'a>() -> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a>28620     pub fn builder<'a>() -> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28621         PhysicalDevicePCIBusInfoPropertiesEXTBuilder {
28622             inner: Self::default(),
28623             marker: ::std::marker::PhantomData,
28624         }
28625     }
28626 }
28627 #[repr(transparent)]
28628 pub struct PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28629     inner: PhysicalDevicePCIBusInfoPropertiesEXT,
28630     marker: ::std::marker::PhantomData<&'a ()>,
28631 }
28632 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'_> {}
28633 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePCIBusInfoPropertiesEXT {}
28634 impl<'a> ::std::ops::Deref for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
28635     type Target = PhysicalDevicePCIBusInfoPropertiesEXT;
deref(&self) -> &Self::Target28636     fn deref(&self) -> &Self::Target {
28637         &self.inner
28638     }
28639 }
28640 impl<'a> ::std::ops::DerefMut for PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28641     fn deref_mut(&mut self) -> &mut Self::Target {
28642         &mut self.inner
28643     }
28644 }
28645 impl<'a> PhysicalDevicePCIBusInfoPropertiesEXTBuilder<'a> {
pci_domain(mut self, pci_domain: u32) -> Self28646     pub fn pci_domain(mut self, pci_domain: u32) -> Self {
28647         self.inner.pci_domain = pci_domain;
28648         self
28649     }
pci_bus(mut self, pci_bus: u32) -> Self28650     pub fn pci_bus(mut self, pci_bus: u32) -> Self {
28651         self.inner.pci_bus = pci_bus;
28652         self
28653     }
pci_device(mut self, pci_device: u32) -> Self28654     pub fn pci_device(mut self, pci_device: u32) -> Self {
28655         self.inner.pci_device = pci_device;
28656         self
28657     }
pci_function(mut self, pci_function: u32) -> Self28658     pub fn pci_function(mut self, pci_function: u32) -> Self {
28659         self.inner.pci_function = pci_function;
28660         self
28661     }
28662     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28663     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28664     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePCIBusInfoPropertiesEXT28665     pub fn build(self) -> PhysicalDevicePCIBusInfoPropertiesEXT {
28666         self.inner
28667     }
28668 }
28669 #[repr(C)]
28670 #[cfg_attr(feature = "debug", derive(Debug))]
28671 #[derive(Copy, Clone)]
28672 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>"]
28673 pub struct ImportAndroidHardwareBufferInfoANDROID {
28674     pub s_type: StructureType,
28675     pub p_next: *const c_void,
28676     pub buffer: *mut AHardwareBuffer,
28677 }
28678 impl ::std::default::Default for ImportAndroidHardwareBufferInfoANDROID {
default() -> Self28679     fn default() -> Self {
28680         Self {
28681             s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
28682             p_next: ::std::ptr::null(),
28683             buffer: ::std::ptr::null_mut(),
28684         }
28685     }
28686 }
28687 impl ImportAndroidHardwareBufferInfoANDROID {
builder<'a>() -> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a>28688     pub fn builder<'a>() -> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28689         ImportAndroidHardwareBufferInfoANDROIDBuilder {
28690             inner: Self::default(),
28691             marker: ::std::marker::PhantomData,
28692         }
28693     }
28694 }
28695 #[repr(transparent)]
28696 pub struct ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28697     inner: ImportAndroidHardwareBufferInfoANDROID,
28698     marker: ::std::marker::PhantomData<&'a ()>,
28699 }
28700 unsafe impl ExtendsMemoryAllocateInfo for ImportAndroidHardwareBufferInfoANDROIDBuilder<'_> {}
28701 unsafe impl ExtendsMemoryAllocateInfo for ImportAndroidHardwareBufferInfoANDROID {}
28702 impl<'a> ::std::ops::Deref for ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28703     type Target = ImportAndroidHardwareBufferInfoANDROID;
deref(&self) -> &Self::Target28704     fn deref(&self) -> &Self::Target {
28705         &self.inner
28706     }
28707 }
28708 impl<'a> ::std::ops::DerefMut for ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28709     fn deref_mut(&mut self) -> &mut Self::Target {
28710         &mut self.inner
28711     }
28712 }
28713 impl<'a> ImportAndroidHardwareBufferInfoANDROIDBuilder<'a> {
buffer(mut self, buffer: *mut AHardwareBuffer) -> Self28714     pub fn buffer(mut self, buffer: *mut AHardwareBuffer) -> Self {
28715         self.inner.buffer = buffer;
28716         self
28717     }
28718     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28719     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28720     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportAndroidHardwareBufferInfoANDROID28721     pub fn build(self) -> ImportAndroidHardwareBufferInfoANDROID {
28722         self.inner
28723     }
28724 }
28725 #[repr(C)]
28726 #[cfg_attr(feature = "debug", derive(Debug))]
28727 #[derive(Copy, Clone)]
28728 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidHardwareBufferUsageANDROID.html>"]
28729 pub struct AndroidHardwareBufferUsageANDROID {
28730     pub s_type: StructureType,
28731     pub p_next: *mut c_void,
28732     pub android_hardware_buffer_usage: u64,
28733 }
28734 impl ::std::default::Default for AndroidHardwareBufferUsageANDROID {
default() -> Self28735     fn default() -> Self {
28736         Self {
28737             s_type: StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
28738             p_next: ::std::ptr::null_mut(),
28739             android_hardware_buffer_usage: u64::default(),
28740         }
28741     }
28742 }
28743 impl AndroidHardwareBufferUsageANDROID {
builder<'a>() -> AndroidHardwareBufferUsageANDROIDBuilder<'a>28744     pub fn builder<'a>() -> AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28745         AndroidHardwareBufferUsageANDROIDBuilder {
28746             inner: Self::default(),
28747             marker: ::std::marker::PhantomData,
28748         }
28749     }
28750 }
28751 #[repr(transparent)]
28752 pub struct AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28753     inner: AndroidHardwareBufferUsageANDROID,
28754     marker: ::std::marker::PhantomData<&'a ()>,
28755 }
28756 unsafe impl ExtendsImageFormatProperties2 for AndroidHardwareBufferUsageANDROIDBuilder<'_> {}
28757 unsafe impl ExtendsImageFormatProperties2 for AndroidHardwareBufferUsageANDROID {}
28758 impl<'a> ::std::ops::Deref for AndroidHardwareBufferUsageANDROIDBuilder<'a> {
28759     type Target = AndroidHardwareBufferUsageANDROID;
deref(&self) -> &Self::Target28760     fn deref(&self) -> &Self::Target {
28761         &self.inner
28762     }
28763 }
28764 impl<'a> ::std::ops::DerefMut for AndroidHardwareBufferUsageANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28765     fn deref_mut(&mut self) -> &mut Self::Target {
28766         &mut self.inner
28767     }
28768 }
28769 impl<'a> AndroidHardwareBufferUsageANDROIDBuilder<'a> {
android_hardware_buffer_usage(mut self, android_hardware_buffer_usage: u64) -> Self28770     pub fn android_hardware_buffer_usage(mut self, android_hardware_buffer_usage: u64) -> Self {
28771         self.inner.android_hardware_buffer_usage = android_hardware_buffer_usage;
28772         self
28773     }
28774     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28775     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28776     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidHardwareBufferUsageANDROID28777     pub fn build(self) -> AndroidHardwareBufferUsageANDROID {
28778         self.inner
28779     }
28780 }
28781 #[repr(C)]
28782 #[cfg_attr(feature = "debug", derive(Debug))]
28783 #[derive(Copy, Clone)]
28784 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidHardwareBufferPropertiesANDROID.html>"]
28785 pub struct AndroidHardwareBufferPropertiesANDROID {
28786     pub s_type: StructureType,
28787     pub p_next: *mut c_void,
28788     pub allocation_size: DeviceSize,
28789     pub memory_type_bits: u32,
28790 }
28791 impl ::std::default::Default for AndroidHardwareBufferPropertiesANDROID {
default() -> Self28792     fn default() -> Self {
28793         Self {
28794             s_type: StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
28795             p_next: ::std::ptr::null_mut(),
28796             allocation_size: DeviceSize::default(),
28797             memory_type_bits: u32::default(),
28798         }
28799     }
28800 }
28801 impl AndroidHardwareBufferPropertiesANDROID {
builder<'a>() -> AndroidHardwareBufferPropertiesANDROIDBuilder<'a>28802     pub fn builder<'a>() -> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28803         AndroidHardwareBufferPropertiesANDROIDBuilder {
28804             inner: Self::default(),
28805             marker: ::std::marker::PhantomData,
28806         }
28807     }
28808 }
28809 #[repr(transparent)]
28810 pub struct AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28811     inner: AndroidHardwareBufferPropertiesANDROID,
28812     marker: ::std::marker::PhantomData<&'a ()>,
28813 }
28814 pub unsafe trait ExtendsAndroidHardwareBufferPropertiesANDROID {}
28815 impl<'a> ::std::ops::Deref for AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
28816     type Target = AndroidHardwareBufferPropertiesANDROID;
deref(&self) -> &Self::Target28817     fn deref(&self) -> &Self::Target {
28818         &self.inner
28819     }
28820 }
28821 impl<'a> ::std::ops::DerefMut for AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28822     fn deref_mut(&mut self) -> &mut Self::Target {
28823         &mut self.inner
28824     }
28825 }
28826 impl<'a> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> {
allocation_size(mut self, allocation_size: DeviceSize) -> Self28827     pub fn allocation_size(mut self, allocation_size: DeviceSize) -> Self {
28828         self.inner.allocation_size = allocation_size;
28829         self
28830     }
memory_type_bits(mut self, memory_type_bits: u32) -> Self28831     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
28832         self.inner.memory_type_bits = memory_type_bits;
28833         self
28834     }
28835     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
28836     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
28837     #[doc = r" valid extension structs can be pushed into the chain."]
28838     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
28839     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAndroidHardwareBufferPropertiesANDROID>( mut self, next: &'a mut T, ) -> Self28840     pub fn push_next<T: ExtendsAndroidHardwareBufferPropertiesANDROID>(
28841         mut self,
28842         next: &'a mut T,
28843     ) -> Self {
28844         unsafe {
28845             let next_ptr = next as *mut T as *mut BaseOutStructure;
28846             let last_next = ptr_chain_iter(next).last().unwrap();
28847             (*last_next).p_next = self.inner.p_next as _;
28848             self.inner.p_next = next_ptr as _;
28849         }
28850         self
28851     }
28852     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28853     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28854     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidHardwareBufferPropertiesANDROID28855     pub fn build(self) -> AndroidHardwareBufferPropertiesANDROID {
28856         self.inner
28857     }
28858 }
28859 #[repr(C)]
28860 #[cfg_attr(feature = "debug", derive(Debug))]
28861 #[derive(Copy, Clone)]
28862 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>"]
28863 pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
28864     pub s_type: StructureType,
28865     pub p_next: *const c_void,
28866     pub memory: DeviceMemory,
28867 }
28868 impl ::std::default::Default for MemoryGetAndroidHardwareBufferInfoANDROID {
default() -> Self28869     fn default() -> Self {
28870         Self {
28871             s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
28872             p_next: ::std::ptr::null(),
28873             memory: DeviceMemory::default(),
28874         }
28875     }
28876 }
28877 impl MemoryGetAndroidHardwareBufferInfoANDROID {
builder<'a>() -> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a>28878     pub fn builder<'a>() -> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28879         MemoryGetAndroidHardwareBufferInfoANDROIDBuilder {
28880             inner: Self::default(),
28881             marker: ::std::marker::PhantomData,
28882         }
28883     }
28884 }
28885 #[repr(transparent)]
28886 pub struct MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28887     inner: MemoryGetAndroidHardwareBufferInfoANDROID,
28888     marker: ::std::marker::PhantomData<&'a ()>,
28889 }
28890 impl<'a> ::std::ops::Deref for MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
28891     type Target = MemoryGetAndroidHardwareBufferInfoANDROID;
deref(&self) -> &Self::Target28892     fn deref(&self) -> &Self::Target {
28893         &self.inner
28894     }
28895 }
28896 impl<'a> ::std::ops::DerefMut for MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28897     fn deref_mut(&mut self) -> &mut Self::Target {
28898         &mut self.inner
28899     }
28900 }
28901 impl<'a> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self28902     pub fn memory(mut self, memory: DeviceMemory) -> Self {
28903         self.inner.memory = memory;
28904         self
28905     }
28906     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
28907     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
28908     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetAndroidHardwareBufferInfoANDROID28909     pub fn build(self) -> MemoryGetAndroidHardwareBufferInfoANDROID {
28910         self.inner
28911     }
28912 }
28913 #[repr(C)]
28914 #[cfg_attr(feature = "debug", derive(Debug))]
28915 #[derive(Copy, Clone)]
28916 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html>"]
28917 pub struct AndroidHardwareBufferFormatPropertiesANDROID {
28918     pub s_type: StructureType,
28919     pub p_next: *mut c_void,
28920     pub format: Format,
28921     pub external_format: u64,
28922     pub format_features: FormatFeatureFlags,
28923     pub sampler_ycbcr_conversion_components: ComponentMapping,
28924     pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
28925     pub suggested_ycbcr_range: SamplerYcbcrRange,
28926     pub suggested_x_chroma_offset: ChromaLocation,
28927     pub suggested_y_chroma_offset: ChromaLocation,
28928 }
28929 impl ::std::default::Default for AndroidHardwareBufferFormatPropertiesANDROID {
default() -> Self28930     fn default() -> Self {
28931         Self {
28932             s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
28933             p_next: ::std::ptr::null_mut(),
28934             format: Format::default(),
28935             external_format: u64::default(),
28936             format_features: FormatFeatureFlags::default(),
28937             sampler_ycbcr_conversion_components: ComponentMapping::default(),
28938             suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
28939             suggested_ycbcr_range: SamplerYcbcrRange::default(),
28940             suggested_x_chroma_offset: ChromaLocation::default(),
28941             suggested_y_chroma_offset: ChromaLocation::default(),
28942         }
28943     }
28944 }
28945 impl AndroidHardwareBufferFormatPropertiesANDROID {
builder<'a>() -> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a>28946     pub fn builder<'a>() -> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28947         AndroidHardwareBufferFormatPropertiesANDROIDBuilder {
28948             inner: Self::default(),
28949             marker: ::std::marker::PhantomData,
28950         }
28951     }
28952 }
28953 #[repr(transparent)]
28954 pub struct AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28955     inner: AndroidHardwareBufferFormatPropertiesANDROID,
28956     marker: ::std::marker::PhantomData<&'a ()>,
28957 }
28958 unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID
28959     for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'_>
28960 {
28961 }
28962 unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID
28963     for AndroidHardwareBufferFormatPropertiesANDROID
28964 {
28965 }
28966 impl<'a> ::std::ops::Deref for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
28967     type Target = AndroidHardwareBufferFormatPropertiesANDROID;
deref(&self) -> &Self::Target28968     fn deref(&self) -> &Self::Target {
28969         &self.inner
28970     }
28971 }
28972 impl<'a> ::std::ops::DerefMut for AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target28973     fn deref_mut(&mut self) -> &mut Self::Target {
28974         &mut self.inner
28975     }
28976 }
28977 impl<'a> AndroidHardwareBufferFormatPropertiesANDROIDBuilder<'a> {
format(mut self, format: Format) -> Self28978     pub fn format(mut self, format: Format) -> Self {
28979         self.inner.format = format;
28980         self
28981     }
external_format(mut self, external_format: u64) -> Self28982     pub fn external_format(mut self, external_format: u64) -> Self {
28983         self.inner.external_format = external_format;
28984         self
28985     }
format_features(mut self, format_features: FormatFeatureFlags) -> Self28986     pub fn format_features(mut self, format_features: FormatFeatureFlags) -> Self {
28987         self.inner.format_features = format_features;
28988         self
28989     }
sampler_ycbcr_conversion_components( mut self, sampler_ycbcr_conversion_components: ComponentMapping, ) -> Self28990     pub fn sampler_ycbcr_conversion_components(
28991         mut self,
28992         sampler_ycbcr_conversion_components: ComponentMapping,
28993     ) -> Self {
28994         self.inner.sampler_ycbcr_conversion_components = sampler_ycbcr_conversion_components;
28995         self
28996     }
suggested_ycbcr_model( mut self, suggested_ycbcr_model: SamplerYcbcrModelConversion, ) -> Self28997     pub fn suggested_ycbcr_model(
28998         mut self,
28999         suggested_ycbcr_model: SamplerYcbcrModelConversion,
29000     ) -> Self {
29001         self.inner.suggested_ycbcr_model = suggested_ycbcr_model;
29002         self
29003     }
suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self29004     pub fn suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self {
29005         self.inner.suggested_ycbcr_range = suggested_ycbcr_range;
29006         self
29007     }
suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self29008     pub fn suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self {
29009         self.inner.suggested_x_chroma_offset = suggested_x_chroma_offset;
29010         self
29011     }
suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self29012     pub fn suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self {
29013         self.inner.suggested_y_chroma_offset = suggested_y_chroma_offset;
29014         self
29015     }
29016     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29017     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29018     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidHardwareBufferFormatPropertiesANDROID29019     pub fn build(self) -> AndroidHardwareBufferFormatPropertiesANDROID {
29020         self.inner
29021     }
29022 }
29023 #[repr(C)]
29024 #[cfg_attr(feature = "debug", derive(Debug))]
29025 #[derive(Copy, Clone)]
29026 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>"]
29027 pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
29028     pub s_type: StructureType,
29029     pub p_next: *const c_void,
29030     pub conditional_rendering_enable: Bool32,
29031 }
29032 impl ::std::default::Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
default() -> Self29033     fn default() -> Self {
29034         Self {
29035             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
29036             p_next: ::std::ptr::null(),
29037             conditional_rendering_enable: Bool32::default(),
29038         }
29039     }
29040 }
29041 impl CommandBufferInheritanceConditionalRenderingInfoEXT {
builder<'a>() -> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a>29042     pub fn builder<'a>() -> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
29043         CommandBufferInheritanceConditionalRenderingInfoEXTBuilder {
29044             inner: Self::default(),
29045             marker: ::std::marker::PhantomData,
29046         }
29047     }
29048 }
29049 #[repr(transparent)]
29050 pub struct CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
29051     inner: CommandBufferInheritanceConditionalRenderingInfoEXT,
29052     marker: ::std::marker::PhantomData<&'a ()>,
29053 }
29054 unsafe impl ExtendsCommandBufferInheritanceInfo
29055     for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'_>
29056 {
29057 }
29058 unsafe impl ExtendsCommandBufferInheritanceInfo
29059     for CommandBufferInheritanceConditionalRenderingInfoEXT
29060 {
29061 }
29062 impl<'a> ::std::ops::Deref for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
29063     type Target = CommandBufferInheritanceConditionalRenderingInfoEXT;
deref(&self) -> &Self::Target29064     fn deref(&self) -> &Self::Target {
29065         &self.inner
29066     }
29067 }
29068 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29069     fn deref_mut(&mut self) -> &mut Self::Target {
29070         &mut self.inner
29071     }
29072 }
29073 impl<'a> CommandBufferInheritanceConditionalRenderingInfoEXTBuilder<'a> {
conditional_rendering_enable(mut self, conditional_rendering_enable: bool) -> Self29074     pub fn conditional_rendering_enable(mut self, conditional_rendering_enable: bool) -> Self {
29075         self.inner.conditional_rendering_enable = conditional_rendering_enable.into();
29076         self
29077     }
29078     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29079     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29080     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceConditionalRenderingInfoEXT29081     pub fn build(self) -> CommandBufferInheritanceConditionalRenderingInfoEXT {
29082         self.inner
29083     }
29084 }
29085 #[repr(C)]
29086 #[cfg_attr(feature = "debug", derive(Debug))]
29087 #[derive(Copy, Clone)]
29088 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExternalFormatANDROID.html>"]
29089 pub struct ExternalFormatANDROID {
29090     pub s_type: StructureType,
29091     pub p_next: *mut c_void,
29092     pub external_format: u64,
29093 }
29094 impl ::std::default::Default for ExternalFormatANDROID {
default() -> Self29095     fn default() -> Self {
29096         Self {
29097             s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
29098             p_next: ::std::ptr::null_mut(),
29099             external_format: u64::default(),
29100         }
29101     }
29102 }
29103 impl ExternalFormatANDROID {
builder<'a>() -> ExternalFormatANDROIDBuilder<'a>29104     pub fn builder<'a>() -> ExternalFormatANDROIDBuilder<'a> {
29105         ExternalFormatANDROIDBuilder {
29106             inner: Self::default(),
29107             marker: ::std::marker::PhantomData,
29108         }
29109     }
29110 }
29111 #[repr(transparent)]
29112 pub struct ExternalFormatANDROIDBuilder<'a> {
29113     inner: ExternalFormatANDROID,
29114     marker: ::std::marker::PhantomData<&'a ()>,
29115 }
29116 unsafe impl ExtendsImageCreateInfo for ExternalFormatANDROIDBuilder<'_> {}
29117 unsafe impl ExtendsImageCreateInfo for ExternalFormatANDROID {}
29118 unsafe impl ExtendsSamplerYcbcrConversionCreateInfo for ExternalFormatANDROIDBuilder<'_> {}
29119 unsafe impl ExtendsSamplerYcbcrConversionCreateInfo for ExternalFormatANDROID {}
29120 impl<'a> ::std::ops::Deref for ExternalFormatANDROIDBuilder<'a> {
29121     type Target = ExternalFormatANDROID;
deref(&self) -> &Self::Target29122     fn deref(&self) -> &Self::Target {
29123         &self.inner
29124     }
29125 }
29126 impl<'a> ::std::ops::DerefMut for ExternalFormatANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29127     fn deref_mut(&mut self) -> &mut Self::Target {
29128         &mut self.inner
29129     }
29130 }
29131 impl<'a> ExternalFormatANDROIDBuilder<'a> {
external_format(mut self, external_format: u64) -> Self29132     pub fn external_format(mut self, external_format: u64) -> Self {
29133         self.inner.external_format = external_format;
29134         self
29135     }
29136     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29137     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29138     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ExternalFormatANDROID29139     pub fn build(self) -> ExternalFormatANDROID {
29140         self.inner
29141     }
29142 }
29143 #[repr(C)]
29144 #[cfg_attr(feature = "debug", derive(Debug))]
29145 #[derive(Copy, Clone)]
29146 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice8BitStorageFeatures.html>"]
29147 pub struct PhysicalDevice8BitStorageFeatures {
29148     pub s_type: StructureType,
29149     pub p_next: *mut c_void,
29150     pub storage_buffer8_bit_access: Bool32,
29151     pub uniform_and_storage_buffer8_bit_access: Bool32,
29152     pub storage_push_constant8: Bool32,
29153 }
29154 impl ::std::default::Default for PhysicalDevice8BitStorageFeatures {
default() -> Self29155     fn default() -> Self {
29156         Self {
29157             s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
29158             p_next: ::std::ptr::null_mut(),
29159             storage_buffer8_bit_access: Bool32::default(),
29160             uniform_and_storage_buffer8_bit_access: Bool32::default(),
29161             storage_push_constant8: Bool32::default(),
29162         }
29163     }
29164 }
29165 impl PhysicalDevice8BitStorageFeatures {
builder<'a>() -> PhysicalDevice8BitStorageFeaturesBuilder<'a>29166     pub fn builder<'a>() -> PhysicalDevice8BitStorageFeaturesBuilder<'a> {
29167         PhysicalDevice8BitStorageFeaturesBuilder {
29168             inner: Self::default(),
29169             marker: ::std::marker::PhantomData,
29170         }
29171     }
29172 }
29173 #[repr(transparent)]
29174 pub struct PhysicalDevice8BitStorageFeaturesBuilder<'a> {
29175     inner: PhysicalDevice8BitStorageFeatures,
29176     marker: ::std::marker::PhantomData<&'a ()>,
29177 }
29178 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice8BitStorageFeaturesBuilder<'_> {}
29179 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice8BitStorageFeatures {}
29180 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice8BitStorageFeaturesBuilder<'_> {}
29181 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice8BitStorageFeatures {}
29182 impl<'a> ::std::ops::Deref for PhysicalDevice8BitStorageFeaturesBuilder<'a> {
29183     type Target = PhysicalDevice8BitStorageFeatures;
deref(&self) -> &Self::Target29184     fn deref(&self) -> &Self::Target {
29185         &self.inner
29186     }
29187 }
29188 impl<'a> ::std::ops::DerefMut for PhysicalDevice8BitStorageFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29189     fn deref_mut(&mut self) -> &mut Self::Target {
29190         &mut self.inner
29191     }
29192 }
29193 impl<'a> PhysicalDevice8BitStorageFeaturesBuilder<'a> {
storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self29194     pub fn storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self {
29195         self.inner.storage_buffer8_bit_access = storage_buffer8_bit_access.into();
29196         self
29197     }
uniform_and_storage_buffer8_bit_access( mut self, uniform_and_storage_buffer8_bit_access: bool, ) -> Self29198     pub fn uniform_and_storage_buffer8_bit_access(
29199         mut self,
29200         uniform_and_storage_buffer8_bit_access: bool,
29201     ) -> Self {
29202         self.inner.uniform_and_storage_buffer8_bit_access =
29203             uniform_and_storage_buffer8_bit_access.into();
29204         self
29205     }
storage_push_constant8(mut self, storage_push_constant8: bool) -> Self29206     pub fn storage_push_constant8(mut self, storage_push_constant8: bool) -> Self {
29207         self.inner.storage_push_constant8 = storage_push_constant8.into();
29208         self
29209     }
29210     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29211     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29212     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevice8BitStorageFeatures29213     pub fn build(self) -> PhysicalDevice8BitStorageFeatures {
29214         self.inner
29215     }
29216 }
29217 #[repr(C)]
29218 #[cfg_attr(feature = "debug", derive(Debug))]
29219 #[derive(Copy, Clone)]
29220 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>"]
29221 pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
29222     pub s_type: StructureType,
29223     pub p_next: *mut c_void,
29224     pub conditional_rendering: Bool32,
29225     pub inherited_conditional_rendering: Bool32,
29226 }
29227 impl ::std::default::Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
default() -> Self29228     fn default() -> Self {
29229         Self {
29230             s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
29231             p_next: ::std::ptr::null_mut(),
29232             conditional_rendering: Bool32::default(),
29233             inherited_conditional_rendering: Bool32::default(),
29234         }
29235     }
29236 }
29237 impl PhysicalDeviceConditionalRenderingFeaturesEXT {
builder<'a>() -> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a>29238     pub fn builder<'a>() -> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29239         PhysicalDeviceConditionalRenderingFeaturesEXTBuilder {
29240             inner: Self::default(),
29241             marker: ::std::marker::PhantomData,
29242         }
29243     }
29244 }
29245 #[repr(transparent)]
29246 pub struct PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29247     inner: PhysicalDeviceConditionalRenderingFeaturesEXT,
29248     marker: ::std::marker::PhantomData<&'a ()>,
29249 }
29250 unsafe impl ExtendsPhysicalDeviceFeatures2
29251     for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'_>
29252 {
29253 }
29254 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceConditionalRenderingFeaturesEXT {}
29255 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'_> {}
29256 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceConditionalRenderingFeaturesEXT {}
29257 impl<'a> ::std::ops::Deref for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
29258     type Target = PhysicalDeviceConditionalRenderingFeaturesEXT;
deref(&self) -> &Self::Target29259     fn deref(&self) -> &Self::Target {
29260         &self.inner
29261     }
29262 }
29263 impl<'a> ::std::ops::DerefMut for PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29264     fn deref_mut(&mut self) -> &mut Self::Target {
29265         &mut self.inner
29266     }
29267 }
29268 impl<'a> PhysicalDeviceConditionalRenderingFeaturesEXTBuilder<'a> {
conditional_rendering(mut self, conditional_rendering: bool) -> Self29269     pub fn conditional_rendering(mut self, conditional_rendering: bool) -> Self {
29270         self.inner.conditional_rendering = conditional_rendering.into();
29271         self
29272     }
inherited_conditional_rendering( mut self, inherited_conditional_rendering: bool, ) -> Self29273     pub fn inherited_conditional_rendering(
29274         mut self,
29275         inherited_conditional_rendering: bool,
29276     ) -> Self {
29277         self.inner.inherited_conditional_rendering = inherited_conditional_rendering.into();
29278         self
29279     }
29280     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29281     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29282     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceConditionalRenderingFeaturesEXT29283     pub fn build(self) -> PhysicalDeviceConditionalRenderingFeaturesEXT {
29284         self.inner
29285     }
29286 }
29287 #[repr(C)]
29288 #[cfg_attr(feature = "debug", derive(Debug))]
29289 #[derive(Copy, Clone)]
29290 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>"]
29291 pub struct PhysicalDeviceVulkanMemoryModelFeatures {
29292     pub s_type: StructureType,
29293     pub p_next: *mut c_void,
29294     pub vulkan_memory_model: Bool32,
29295     pub vulkan_memory_model_device_scope: Bool32,
29296     pub vulkan_memory_model_availability_visibility_chains: Bool32,
29297 }
29298 impl ::std::default::Default for PhysicalDeviceVulkanMemoryModelFeatures {
default() -> Self29299     fn default() -> Self {
29300         Self {
29301             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
29302             p_next: ::std::ptr::null_mut(),
29303             vulkan_memory_model: Bool32::default(),
29304             vulkan_memory_model_device_scope: Bool32::default(),
29305             vulkan_memory_model_availability_visibility_chains: Bool32::default(),
29306         }
29307     }
29308 }
29309 impl PhysicalDeviceVulkanMemoryModelFeatures {
builder<'a>() -> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a>29310     pub fn builder<'a>() -> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29311         PhysicalDeviceVulkanMemoryModelFeaturesBuilder {
29312             inner: Self::default(),
29313             marker: ::std::marker::PhantomData,
29314         }
29315     }
29316 }
29317 #[repr(transparent)]
29318 pub struct PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29319     inner: PhysicalDeviceVulkanMemoryModelFeatures,
29320     marker: ::std::marker::PhantomData<&'a ()>,
29321 }
29322 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'_> {}
29323 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkanMemoryModelFeatures {}
29324 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'_> {}
29325 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkanMemoryModelFeatures {}
29326 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
29327     type Target = PhysicalDeviceVulkanMemoryModelFeatures;
deref(&self) -> &Self::Target29328     fn deref(&self) -> &Self::Target {
29329         &self.inner
29330     }
29331 }
29332 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29333     fn deref_mut(&mut self) -> &mut Self::Target {
29334         &mut self.inner
29335     }
29336 }
29337 impl<'a> PhysicalDeviceVulkanMemoryModelFeaturesBuilder<'a> {
vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self29338     pub fn vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self {
29339         self.inner.vulkan_memory_model = vulkan_memory_model.into();
29340         self
29341     }
vulkan_memory_model_device_scope( mut self, vulkan_memory_model_device_scope: bool, ) -> Self29342     pub fn vulkan_memory_model_device_scope(
29343         mut self,
29344         vulkan_memory_model_device_scope: bool,
29345     ) -> Self {
29346         self.inner.vulkan_memory_model_device_scope = vulkan_memory_model_device_scope.into();
29347         self
29348     }
vulkan_memory_model_availability_visibility_chains( mut self, vulkan_memory_model_availability_visibility_chains: bool, ) -> Self29349     pub fn vulkan_memory_model_availability_visibility_chains(
29350         mut self,
29351         vulkan_memory_model_availability_visibility_chains: bool,
29352     ) -> Self {
29353         self.inner
29354             .vulkan_memory_model_availability_visibility_chains =
29355             vulkan_memory_model_availability_visibility_chains.into();
29356         self
29357     }
29358     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29359     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29360     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkanMemoryModelFeatures29361     pub fn build(self) -> PhysicalDeviceVulkanMemoryModelFeatures {
29362         self.inner
29363     }
29364 }
29365 #[repr(C)]
29366 #[cfg_attr(feature = "debug", derive(Debug))]
29367 #[derive(Copy, Clone)]
29368 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>"]
29369 pub struct PhysicalDeviceShaderAtomicInt64Features {
29370     pub s_type: StructureType,
29371     pub p_next: *mut c_void,
29372     pub shader_buffer_int64_atomics: Bool32,
29373     pub shader_shared_int64_atomics: Bool32,
29374 }
29375 impl ::std::default::Default for PhysicalDeviceShaderAtomicInt64Features {
default() -> Self29376     fn default() -> Self {
29377         Self {
29378             s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
29379             p_next: ::std::ptr::null_mut(),
29380             shader_buffer_int64_atomics: Bool32::default(),
29381             shader_shared_int64_atomics: Bool32::default(),
29382         }
29383     }
29384 }
29385 impl PhysicalDeviceShaderAtomicInt64Features {
builder<'a>() -> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a>29386     pub fn builder<'a>() -> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29387         PhysicalDeviceShaderAtomicInt64FeaturesBuilder {
29388             inner: Self::default(),
29389             marker: ::std::marker::PhantomData,
29390         }
29391     }
29392 }
29393 #[repr(transparent)]
29394 pub struct PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29395     inner: PhysicalDeviceShaderAtomicInt64Features,
29396     marker: ::std::marker::PhantomData<&'a ()>,
29397 }
29398 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'_> {}
29399 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicInt64Features {}
29400 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'_> {}
29401 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicInt64Features {}
29402 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
29403     type Target = PhysicalDeviceShaderAtomicInt64Features;
deref(&self) -> &Self::Target29404     fn deref(&self) -> &Self::Target {
29405         &self.inner
29406     }
29407 }
29408 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29409     fn deref_mut(&mut self) -> &mut Self::Target {
29410         &mut self.inner
29411     }
29412 }
29413 impl<'a> PhysicalDeviceShaderAtomicInt64FeaturesBuilder<'a> {
shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self29414     pub fn shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self {
29415         self.inner.shader_buffer_int64_atomics = shader_buffer_int64_atomics.into();
29416         self
29417     }
shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self29418     pub fn shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self {
29419         self.inner.shader_shared_int64_atomics = shader_shared_int64_atomics.into();
29420         self
29421     }
29422     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29423     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29424     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderAtomicInt64Features29425     pub fn build(self) -> PhysicalDeviceShaderAtomicInt64Features {
29426         self.inner
29427     }
29428 }
29429 #[repr(C)]
29430 #[cfg_attr(feature = "debug", derive(Debug))]
29431 #[derive(Copy, Clone)]
29432 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>"]
29433 pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
29434     pub s_type: StructureType,
29435     pub p_next: *mut c_void,
29436     pub shader_buffer_float32_atomics: Bool32,
29437     pub shader_buffer_float32_atomic_add: Bool32,
29438     pub shader_buffer_float64_atomics: Bool32,
29439     pub shader_buffer_float64_atomic_add: Bool32,
29440     pub shader_shared_float32_atomics: Bool32,
29441     pub shader_shared_float32_atomic_add: Bool32,
29442     pub shader_shared_float64_atomics: Bool32,
29443     pub shader_shared_float64_atomic_add: Bool32,
29444     pub shader_image_float32_atomics: Bool32,
29445     pub shader_image_float32_atomic_add: Bool32,
29446     pub sparse_image_float32_atomics: Bool32,
29447     pub sparse_image_float32_atomic_add: Bool32,
29448 }
29449 impl ::std::default::Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
default() -> Self29450     fn default() -> Self {
29451         Self {
29452             s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
29453             p_next: ::std::ptr::null_mut(),
29454             shader_buffer_float32_atomics: Bool32::default(),
29455             shader_buffer_float32_atomic_add: Bool32::default(),
29456             shader_buffer_float64_atomics: Bool32::default(),
29457             shader_buffer_float64_atomic_add: Bool32::default(),
29458             shader_shared_float32_atomics: Bool32::default(),
29459             shader_shared_float32_atomic_add: Bool32::default(),
29460             shader_shared_float64_atomics: Bool32::default(),
29461             shader_shared_float64_atomic_add: Bool32::default(),
29462             shader_image_float32_atomics: Bool32::default(),
29463             shader_image_float32_atomic_add: Bool32::default(),
29464             sparse_image_float32_atomics: Bool32::default(),
29465             sparse_image_float32_atomic_add: Bool32::default(),
29466         }
29467     }
29468 }
29469 impl PhysicalDeviceShaderAtomicFloatFeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a>29470     pub fn builder<'a>() -> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29471         PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder {
29472             inner: Self::default(),
29473             marker: ::std::marker::PhantomData,
29474         }
29475     }
29476 }
29477 #[repr(transparent)]
29478 pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29479     inner: PhysicalDeviceShaderAtomicFloatFeaturesEXT,
29480     marker: ::std::marker::PhantomData<&'a ()>,
29481 }
29482 unsafe impl ExtendsPhysicalDeviceFeatures2
29483     for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'_>
29484 {
29485 }
29486 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
29487 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'_> {}
29488 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
29489 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
29490     type Target = PhysicalDeviceShaderAtomicFloatFeaturesEXT;
deref(&self) -> &Self::Target29491     fn deref(&self) -> &Self::Target {
29492         &self.inner
29493     }
29494 }
29495 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29496     fn deref_mut(&mut self) -> &mut Self::Target {
29497         &mut self.inner
29498     }
29499 }
29500 impl<'a> PhysicalDeviceShaderAtomicFloatFeaturesEXTBuilder<'a> {
shader_buffer_float32_atomics(mut self, shader_buffer_float32_atomics: bool) -> Self29501     pub fn shader_buffer_float32_atomics(mut self, shader_buffer_float32_atomics: bool) -> Self {
29502         self.inner.shader_buffer_float32_atomics = shader_buffer_float32_atomics.into();
29503         self
29504     }
shader_buffer_float32_atomic_add( mut self, shader_buffer_float32_atomic_add: bool, ) -> Self29505     pub fn shader_buffer_float32_atomic_add(
29506         mut self,
29507         shader_buffer_float32_atomic_add: bool,
29508     ) -> Self {
29509         self.inner.shader_buffer_float32_atomic_add = shader_buffer_float32_atomic_add.into();
29510         self
29511     }
shader_buffer_float64_atomics(mut self, shader_buffer_float64_atomics: bool) -> Self29512     pub fn shader_buffer_float64_atomics(mut self, shader_buffer_float64_atomics: bool) -> Self {
29513         self.inner.shader_buffer_float64_atomics = shader_buffer_float64_atomics.into();
29514         self
29515     }
shader_buffer_float64_atomic_add( mut self, shader_buffer_float64_atomic_add: bool, ) -> Self29516     pub fn shader_buffer_float64_atomic_add(
29517         mut self,
29518         shader_buffer_float64_atomic_add: bool,
29519     ) -> Self {
29520         self.inner.shader_buffer_float64_atomic_add = shader_buffer_float64_atomic_add.into();
29521         self
29522     }
shader_shared_float32_atomics(mut self, shader_shared_float32_atomics: bool) -> Self29523     pub fn shader_shared_float32_atomics(mut self, shader_shared_float32_atomics: bool) -> Self {
29524         self.inner.shader_shared_float32_atomics = shader_shared_float32_atomics.into();
29525         self
29526     }
shader_shared_float32_atomic_add( mut self, shader_shared_float32_atomic_add: bool, ) -> Self29527     pub fn shader_shared_float32_atomic_add(
29528         mut self,
29529         shader_shared_float32_atomic_add: bool,
29530     ) -> Self {
29531         self.inner.shader_shared_float32_atomic_add = shader_shared_float32_atomic_add.into();
29532         self
29533     }
shader_shared_float64_atomics(mut self, shader_shared_float64_atomics: bool) -> Self29534     pub fn shader_shared_float64_atomics(mut self, shader_shared_float64_atomics: bool) -> Self {
29535         self.inner.shader_shared_float64_atomics = shader_shared_float64_atomics.into();
29536         self
29537     }
shader_shared_float64_atomic_add( mut self, shader_shared_float64_atomic_add: bool, ) -> Self29538     pub fn shader_shared_float64_atomic_add(
29539         mut self,
29540         shader_shared_float64_atomic_add: bool,
29541     ) -> Self {
29542         self.inner.shader_shared_float64_atomic_add = shader_shared_float64_atomic_add.into();
29543         self
29544     }
shader_image_float32_atomics(mut self, shader_image_float32_atomics: bool) -> Self29545     pub fn shader_image_float32_atomics(mut self, shader_image_float32_atomics: bool) -> Self {
29546         self.inner.shader_image_float32_atomics = shader_image_float32_atomics.into();
29547         self
29548     }
shader_image_float32_atomic_add( mut self, shader_image_float32_atomic_add: bool, ) -> Self29549     pub fn shader_image_float32_atomic_add(
29550         mut self,
29551         shader_image_float32_atomic_add: bool,
29552     ) -> Self {
29553         self.inner.shader_image_float32_atomic_add = shader_image_float32_atomic_add.into();
29554         self
29555     }
sparse_image_float32_atomics(mut self, sparse_image_float32_atomics: bool) -> Self29556     pub fn sparse_image_float32_atomics(mut self, sparse_image_float32_atomics: bool) -> Self {
29557         self.inner.sparse_image_float32_atomics = sparse_image_float32_atomics.into();
29558         self
29559     }
sparse_image_float32_atomic_add( mut self, sparse_image_float32_atomic_add: bool, ) -> Self29560     pub fn sparse_image_float32_atomic_add(
29561         mut self,
29562         sparse_image_float32_atomic_add: bool,
29563     ) -> Self {
29564         self.inner.sparse_image_float32_atomic_add = sparse_image_float32_atomic_add.into();
29565         self
29566     }
29567     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29568     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29569     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderAtomicFloatFeaturesEXT29570     pub fn build(self) -> PhysicalDeviceShaderAtomicFloatFeaturesEXT {
29571         self.inner
29572     }
29573 }
29574 #[repr(C)]
29575 #[cfg_attr(feature = "debug", derive(Debug))]
29576 #[derive(Copy, Clone)]
29577 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>"]
29578 pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
29579     pub s_type: StructureType,
29580     pub p_next: *mut c_void,
29581     pub shader_buffer_float16_atomics: Bool32,
29582     pub shader_buffer_float16_atomic_add: Bool32,
29583     pub shader_buffer_float16_atomic_min_max: Bool32,
29584     pub shader_buffer_float32_atomic_min_max: Bool32,
29585     pub shader_buffer_float64_atomic_min_max: Bool32,
29586     pub shader_shared_float16_atomics: Bool32,
29587     pub shader_shared_float16_atomic_add: Bool32,
29588     pub shader_shared_float16_atomic_min_max: Bool32,
29589     pub shader_shared_float32_atomic_min_max: Bool32,
29590     pub shader_shared_float64_atomic_min_max: Bool32,
29591     pub shader_image_float32_atomic_min_max: Bool32,
29592     pub sparse_image_float32_atomic_min_max: Bool32,
29593 }
29594 impl ::std::default::Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
default() -> Self29595     fn default() -> Self {
29596         Self {
29597             s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
29598             p_next: ::std::ptr::null_mut(),
29599             shader_buffer_float16_atomics: Bool32::default(),
29600             shader_buffer_float16_atomic_add: Bool32::default(),
29601             shader_buffer_float16_atomic_min_max: Bool32::default(),
29602             shader_buffer_float32_atomic_min_max: Bool32::default(),
29603             shader_buffer_float64_atomic_min_max: Bool32::default(),
29604             shader_shared_float16_atomics: Bool32::default(),
29605             shader_shared_float16_atomic_add: Bool32::default(),
29606             shader_shared_float16_atomic_min_max: Bool32::default(),
29607             shader_shared_float32_atomic_min_max: Bool32::default(),
29608             shader_shared_float64_atomic_min_max: Bool32::default(),
29609             shader_image_float32_atomic_min_max: Bool32::default(),
29610             sparse_image_float32_atomic_min_max: Bool32::default(),
29611         }
29612     }
29613 }
29614 impl PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a>29615     pub fn builder<'a>() -> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29616         PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder {
29617             inner: Self::default(),
29618             marker: ::std::marker::PhantomData,
29619         }
29620     }
29621 }
29622 #[repr(transparent)]
29623 pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29624     inner: PhysicalDeviceShaderAtomicFloat2FeaturesEXT,
29625     marker: ::std::marker::PhantomData<&'a ()>,
29626 }
29627 unsafe impl ExtendsPhysicalDeviceFeatures2
29628     for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'_>
29629 {
29630 }
29631 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
29632 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'_> {}
29633 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
29634 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
29635     type Target = PhysicalDeviceShaderAtomicFloat2FeaturesEXT;
deref(&self) -> &Self::Target29636     fn deref(&self) -> &Self::Target {
29637         &self.inner
29638     }
29639 }
29640 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29641     fn deref_mut(&mut self) -> &mut Self::Target {
29642         &mut self.inner
29643     }
29644 }
29645 impl<'a> PhysicalDeviceShaderAtomicFloat2FeaturesEXTBuilder<'a> {
shader_buffer_float16_atomics(mut self, shader_buffer_float16_atomics: bool) -> Self29646     pub fn shader_buffer_float16_atomics(mut self, shader_buffer_float16_atomics: bool) -> Self {
29647         self.inner.shader_buffer_float16_atomics = shader_buffer_float16_atomics.into();
29648         self
29649     }
shader_buffer_float16_atomic_add( mut self, shader_buffer_float16_atomic_add: bool, ) -> Self29650     pub fn shader_buffer_float16_atomic_add(
29651         mut self,
29652         shader_buffer_float16_atomic_add: bool,
29653     ) -> Self {
29654         self.inner.shader_buffer_float16_atomic_add = shader_buffer_float16_atomic_add.into();
29655         self
29656     }
shader_buffer_float16_atomic_min_max( mut self, shader_buffer_float16_atomic_min_max: bool, ) -> Self29657     pub fn shader_buffer_float16_atomic_min_max(
29658         mut self,
29659         shader_buffer_float16_atomic_min_max: bool,
29660     ) -> Self {
29661         self.inner.shader_buffer_float16_atomic_min_max =
29662             shader_buffer_float16_atomic_min_max.into();
29663         self
29664     }
shader_buffer_float32_atomic_min_max( mut self, shader_buffer_float32_atomic_min_max: bool, ) -> Self29665     pub fn shader_buffer_float32_atomic_min_max(
29666         mut self,
29667         shader_buffer_float32_atomic_min_max: bool,
29668     ) -> Self {
29669         self.inner.shader_buffer_float32_atomic_min_max =
29670             shader_buffer_float32_atomic_min_max.into();
29671         self
29672     }
shader_buffer_float64_atomic_min_max( mut self, shader_buffer_float64_atomic_min_max: bool, ) -> Self29673     pub fn shader_buffer_float64_atomic_min_max(
29674         mut self,
29675         shader_buffer_float64_atomic_min_max: bool,
29676     ) -> Self {
29677         self.inner.shader_buffer_float64_atomic_min_max =
29678             shader_buffer_float64_atomic_min_max.into();
29679         self
29680     }
shader_shared_float16_atomics(mut self, shader_shared_float16_atomics: bool) -> Self29681     pub fn shader_shared_float16_atomics(mut self, shader_shared_float16_atomics: bool) -> Self {
29682         self.inner.shader_shared_float16_atomics = shader_shared_float16_atomics.into();
29683         self
29684     }
shader_shared_float16_atomic_add( mut self, shader_shared_float16_atomic_add: bool, ) -> Self29685     pub fn shader_shared_float16_atomic_add(
29686         mut self,
29687         shader_shared_float16_atomic_add: bool,
29688     ) -> Self {
29689         self.inner.shader_shared_float16_atomic_add = shader_shared_float16_atomic_add.into();
29690         self
29691     }
shader_shared_float16_atomic_min_max( mut self, shader_shared_float16_atomic_min_max: bool, ) -> Self29692     pub fn shader_shared_float16_atomic_min_max(
29693         mut self,
29694         shader_shared_float16_atomic_min_max: bool,
29695     ) -> Self {
29696         self.inner.shader_shared_float16_atomic_min_max =
29697             shader_shared_float16_atomic_min_max.into();
29698         self
29699     }
shader_shared_float32_atomic_min_max( mut self, shader_shared_float32_atomic_min_max: bool, ) -> Self29700     pub fn shader_shared_float32_atomic_min_max(
29701         mut self,
29702         shader_shared_float32_atomic_min_max: bool,
29703     ) -> Self {
29704         self.inner.shader_shared_float32_atomic_min_max =
29705             shader_shared_float32_atomic_min_max.into();
29706         self
29707     }
shader_shared_float64_atomic_min_max( mut self, shader_shared_float64_atomic_min_max: bool, ) -> Self29708     pub fn shader_shared_float64_atomic_min_max(
29709         mut self,
29710         shader_shared_float64_atomic_min_max: bool,
29711     ) -> Self {
29712         self.inner.shader_shared_float64_atomic_min_max =
29713             shader_shared_float64_atomic_min_max.into();
29714         self
29715     }
shader_image_float32_atomic_min_max( mut self, shader_image_float32_atomic_min_max: bool, ) -> Self29716     pub fn shader_image_float32_atomic_min_max(
29717         mut self,
29718         shader_image_float32_atomic_min_max: bool,
29719     ) -> Self {
29720         self.inner.shader_image_float32_atomic_min_max = shader_image_float32_atomic_min_max.into();
29721         self
29722     }
sparse_image_float32_atomic_min_max( mut self, sparse_image_float32_atomic_min_max: bool, ) -> Self29723     pub fn sparse_image_float32_atomic_min_max(
29724         mut self,
29725         sparse_image_float32_atomic_min_max: bool,
29726     ) -> Self {
29727         self.inner.sparse_image_float32_atomic_min_max = sparse_image_float32_atomic_min_max.into();
29728         self
29729     }
29730     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29731     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29732     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT29733     pub fn build(self) -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
29734         self.inner
29735     }
29736 }
29737 #[repr(C)]
29738 #[cfg_attr(feature = "debug", derive(Debug))]
29739 #[derive(Copy, Clone)]
29740 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>"]
29741 pub struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
29742     pub s_type: StructureType,
29743     pub p_next: *mut c_void,
29744     pub vertex_attribute_instance_rate_divisor: Bool32,
29745     pub vertex_attribute_instance_rate_zero_divisor: Bool32,
29746 }
29747 impl ::std::default::Default for PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
default() -> Self29748     fn default() -> Self {
29749         Self {
29750             s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,
29751             p_next: ::std::ptr::null_mut(),
29752             vertex_attribute_instance_rate_divisor: Bool32::default(),
29753             vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
29754         }
29755     }
29756 }
29757 impl PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
builder<'a>() -> PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a>29758     pub fn builder<'a>() -> PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
29759         PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder {
29760             inner: Self::default(),
29761             marker: ::std::marker::PhantomData,
29762         }
29763     }
29764 }
29765 #[repr(transparent)]
29766 pub struct PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
29767     inner: PhysicalDeviceVertexAttributeDivisorFeaturesEXT,
29768     marker: ::std::marker::PhantomData<&'a ()>,
29769 }
29770 unsafe impl ExtendsPhysicalDeviceFeatures2
29771     for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'_>
29772 {
29773 }
29774 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVertexAttributeDivisorFeaturesEXT {}
29775 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'_> {}
29776 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexAttributeDivisorFeaturesEXT {}
29777 impl<'a> ::std::ops::Deref for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
29778     type Target = PhysicalDeviceVertexAttributeDivisorFeaturesEXT;
deref(&self) -> &Self::Target29779     fn deref(&self) -> &Self::Target {
29780         &self.inner
29781     }
29782 }
29783 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29784     fn deref_mut(&mut self) -> &mut Self::Target {
29785         &mut self.inner
29786     }
29787 }
29788 impl<'a> PhysicalDeviceVertexAttributeDivisorFeaturesEXTBuilder<'a> {
vertex_attribute_instance_rate_divisor( mut self, vertex_attribute_instance_rate_divisor: bool, ) -> Self29789     pub fn vertex_attribute_instance_rate_divisor(
29790         mut self,
29791         vertex_attribute_instance_rate_divisor: bool,
29792     ) -> Self {
29793         self.inner.vertex_attribute_instance_rate_divisor =
29794             vertex_attribute_instance_rate_divisor.into();
29795         self
29796     }
vertex_attribute_instance_rate_zero_divisor( mut self, vertex_attribute_instance_rate_zero_divisor: bool, ) -> Self29797     pub fn vertex_attribute_instance_rate_zero_divisor(
29798         mut self,
29799         vertex_attribute_instance_rate_zero_divisor: bool,
29800     ) -> Self {
29801         self.inner.vertex_attribute_instance_rate_zero_divisor =
29802             vertex_attribute_instance_rate_zero_divisor.into();
29803         self
29804     }
29805     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29806     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29807     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVertexAttributeDivisorFeaturesEXT29808     pub fn build(self) -> PhysicalDeviceVertexAttributeDivisorFeaturesEXT {
29809         self.inner
29810     }
29811 }
29812 #[repr(C)]
29813 #[cfg_attr(feature = "debug", derive(Debug))]
29814 #[derive(Copy, Clone)]
29815 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyCheckpointPropertiesNV.html>"]
29816 pub struct QueueFamilyCheckpointPropertiesNV {
29817     pub s_type: StructureType,
29818     pub p_next: *mut c_void,
29819     pub checkpoint_execution_stage_mask: PipelineStageFlags,
29820 }
29821 impl ::std::default::Default for QueueFamilyCheckpointPropertiesNV {
default() -> Self29822     fn default() -> Self {
29823         Self {
29824             s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
29825             p_next: ::std::ptr::null_mut(),
29826             checkpoint_execution_stage_mask: PipelineStageFlags::default(),
29827         }
29828     }
29829 }
29830 impl QueueFamilyCheckpointPropertiesNV {
builder<'a>() -> QueueFamilyCheckpointPropertiesNVBuilder<'a>29831     pub fn builder<'a>() -> QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29832         QueueFamilyCheckpointPropertiesNVBuilder {
29833             inner: Self::default(),
29834             marker: ::std::marker::PhantomData,
29835         }
29836     }
29837 }
29838 #[repr(transparent)]
29839 pub struct QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29840     inner: QueueFamilyCheckpointPropertiesNV,
29841     marker: ::std::marker::PhantomData<&'a ()>,
29842 }
29843 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointPropertiesNVBuilder<'_> {}
29844 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointPropertiesNV {}
29845 impl<'a> ::std::ops::Deref for QueueFamilyCheckpointPropertiesNVBuilder<'a> {
29846     type Target = QueueFamilyCheckpointPropertiesNV;
deref(&self) -> &Self::Target29847     fn deref(&self) -> &Self::Target {
29848         &self.inner
29849     }
29850 }
29851 impl<'a> ::std::ops::DerefMut for QueueFamilyCheckpointPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29852     fn deref_mut(&mut self) -> &mut Self::Target {
29853         &mut self.inner
29854     }
29855 }
29856 impl<'a> QueueFamilyCheckpointPropertiesNVBuilder<'a> {
checkpoint_execution_stage_mask( mut self, checkpoint_execution_stage_mask: PipelineStageFlags, ) -> Self29857     pub fn checkpoint_execution_stage_mask(
29858         mut self,
29859         checkpoint_execution_stage_mask: PipelineStageFlags,
29860     ) -> Self {
29861         self.inner.checkpoint_execution_stage_mask = checkpoint_execution_stage_mask;
29862         self
29863     }
29864     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29865     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29866     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyCheckpointPropertiesNV29867     pub fn build(self) -> QueueFamilyCheckpointPropertiesNV {
29868         self.inner
29869     }
29870 }
29871 #[repr(C)]
29872 #[cfg_attr(feature = "debug", derive(Debug))]
29873 #[derive(Copy, Clone)]
29874 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCheckpointDataNV.html>"]
29875 pub struct CheckpointDataNV {
29876     pub s_type: StructureType,
29877     pub p_next: *mut c_void,
29878     pub stage: PipelineStageFlags,
29879     pub p_checkpoint_marker: *mut c_void,
29880 }
29881 impl ::std::default::Default for CheckpointDataNV {
default() -> Self29882     fn default() -> Self {
29883         Self {
29884             s_type: StructureType::CHECKPOINT_DATA_NV,
29885             p_next: ::std::ptr::null_mut(),
29886             stage: PipelineStageFlags::default(),
29887             p_checkpoint_marker: ::std::ptr::null_mut(),
29888         }
29889     }
29890 }
29891 impl CheckpointDataNV {
builder<'a>() -> CheckpointDataNVBuilder<'a>29892     pub fn builder<'a>() -> CheckpointDataNVBuilder<'a> {
29893         CheckpointDataNVBuilder {
29894             inner: Self::default(),
29895             marker: ::std::marker::PhantomData,
29896         }
29897     }
29898 }
29899 #[repr(transparent)]
29900 pub struct CheckpointDataNVBuilder<'a> {
29901     inner: CheckpointDataNV,
29902     marker: ::std::marker::PhantomData<&'a ()>,
29903 }
29904 impl<'a> ::std::ops::Deref for CheckpointDataNVBuilder<'a> {
29905     type Target = CheckpointDataNV;
deref(&self) -> &Self::Target29906     fn deref(&self) -> &Self::Target {
29907         &self.inner
29908     }
29909 }
29910 impl<'a> ::std::ops::DerefMut for CheckpointDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29911     fn deref_mut(&mut self) -> &mut Self::Target {
29912         &mut self.inner
29913     }
29914 }
29915 impl<'a> CheckpointDataNVBuilder<'a> {
stage(mut self, stage: PipelineStageFlags) -> Self29916     pub fn stage(mut self, stage: PipelineStageFlags) -> Self {
29917         self.inner.stage = stage;
29918         self
29919     }
checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self29920     pub fn checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self {
29921         self.inner.p_checkpoint_marker = checkpoint_marker;
29922         self
29923     }
29924     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
29925     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
29926     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CheckpointDataNV29927     pub fn build(self) -> CheckpointDataNV {
29928         self.inner
29929     }
29930 }
29931 #[repr(C)]
29932 #[cfg_attr(feature = "debug", derive(Debug))]
29933 #[derive(Copy, Clone)]
29934 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>"]
29935 pub struct PhysicalDeviceDepthStencilResolveProperties {
29936     pub s_type: StructureType,
29937     pub p_next: *mut c_void,
29938     pub supported_depth_resolve_modes: ResolveModeFlags,
29939     pub supported_stencil_resolve_modes: ResolveModeFlags,
29940     pub independent_resolve_none: Bool32,
29941     pub independent_resolve: Bool32,
29942 }
29943 impl ::std::default::Default for PhysicalDeviceDepthStencilResolveProperties {
default() -> Self29944     fn default() -> Self {
29945         Self {
29946             s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
29947             p_next: ::std::ptr::null_mut(),
29948             supported_depth_resolve_modes: ResolveModeFlags::default(),
29949             supported_stencil_resolve_modes: ResolveModeFlags::default(),
29950             independent_resolve_none: Bool32::default(),
29951             independent_resolve: Bool32::default(),
29952         }
29953     }
29954 }
29955 impl PhysicalDeviceDepthStencilResolveProperties {
builder<'a>() -> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a>29956     pub fn builder<'a>() -> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29957         PhysicalDeviceDepthStencilResolvePropertiesBuilder {
29958             inner: Self::default(),
29959             marker: ::std::marker::PhantomData,
29960         }
29961     }
29962 }
29963 #[repr(transparent)]
29964 pub struct PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29965     inner: PhysicalDeviceDepthStencilResolveProperties,
29966     marker: ::std::marker::PhantomData<&'a ()>,
29967 }
29968 unsafe impl ExtendsPhysicalDeviceProperties2
29969     for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'_>
29970 {
29971 }
29972 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDepthStencilResolveProperties {}
29973 impl<'a> ::std::ops::Deref for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
29974     type Target = PhysicalDeviceDepthStencilResolveProperties;
deref(&self) -> &Self::Target29975     fn deref(&self) -> &Self::Target {
29976         &self.inner
29977     }
29978 }
29979 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target29980     fn deref_mut(&mut self) -> &mut Self::Target {
29981         &mut self.inner
29982     }
29983 }
29984 impl<'a> PhysicalDeviceDepthStencilResolvePropertiesBuilder<'a> {
supported_depth_resolve_modes( mut self, supported_depth_resolve_modes: ResolveModeFlags, ) -> Self29985     pub fn supported_depth_resolve_modes(
29986         mut self,
29987         supported_depth_resolve_modes: ResolveModeFlags,
29988     ) -> Self {
29989         self.inner.supported_depth_resolve_modes = supported_depth_resolve_modes;
29990         self
29991     }
supported_stencil_resolve_modes( mut self, supported_stencil_resolve_modes: ResolveModeFlags, ) -> Self29992     pub fn supported_stencil_resolve_modes(
29993         mut self,
29994         supported_stencil_resolve_modes: ResolveModeFlags,
29995     ) -> Self {
29996         self.inner.supported_stencil_resolve_modes = supported_stencil_resolve_modes;
29997         self
29998     }
independent_resolve_none(mut self, independent_resolve_none: bool) -> Self29999     pub fn independent_resolve_none(mut self, independent_resolve_none: bool) -> Self {
30000         self.inner.independent_resolve_none = independent_resolve_none.into();
30001         self
30002     }
independent_resolve(mut self, independent_resolve: bool) -> Self30003     pub fn independent_resolve(mut self, independent_resolve: bool) -> Self {
30004         self.inner.independent_resolve = independent_resolve.into();
30005         self
30006     }
30007     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30008     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30009     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDepthStencilResolveProperties30010     pub fn build(self) -> PhysicalDeviceDepthStencilResolveProperties {
30011         self.inner
30012     }
30013 }
30014 #[repr(C)]
30015 #[cfg_attr(feature = "debug", derive(Debug))]
30016 #[derive(Copy, Clone)]
30017 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescriptionDepthStencilResolve.html>"]
30018 pub struct SubpassDescriptionDepthStencilResolve {
30019     pub s_type: StructureType,
30020     pub p_next: *const c_void,
30021     pub depth_resolve_mode: ResolveModeFlags,
30022     pub stencil_resolve_mode: ResolveModeFlags,
30023     pub p_depth_stencil_resolve_attachment: *const AttachmentReference2,
30024 }
30025 impl ::std::default::Default for SubpassDescriptionDepthStencilResolve {
default() -> Self30026     fn default() -> Self {
30027         Self {
30028             s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
30029             p_next: ::std::ptr::null(),
30030             depth_resolve_mode: ResolveModeFlags::default(),
30031             stencil_resolve_mode: ResolveModeFlags::default(),
30032             p_depth_stencil_resolve_attachment: ::std::ptr::null(),
30033         }
30034     }
30035 }
30036 impl SubpassDescriptionDepthStencilResolve {
builder<'a>() -> SubpassDescriptionDepthStencilResolveBuilder<'a>30037     pub fn builder<'a>() -> SubpassDescriptionDepthStencilResolveBuilder<'a> {
30038         SubpassDescriptionDepthStencilResolveBuilder {
30039             inner: Self::default(),
30040             marker: ::std::marker::PhantomData,
30041         }
30042     }
30043 }
30044 #[repr(transparent)]
30045 pub struct SubpassDescriptionDepthStencilResolveBuilder<'a> {
30046     inner: SubpassDescriptionDepthStencilResolve,
30047     marker: ::std::marker::PhantomData<&'a ()>,
30048 }
30049 unsafe impl ExtendsSubpassDescription2 for SubpassDescriptionDepthStencilResolveBuilder<'_> {}
30050 unsafe impl ExtendsSubpassDescription2 for SubpassDescriptionDepthStencilResolve {}
30051 impl<'a> ::std::ops::Deref for SubpassDescriptionDepthStencilResolveBuilder<'a> {
30052     type Target = SubpassDescriptionDepthStencilResolve;
deref(&self) -> &Self::Target30053     fn deref(&self) -> &Self::Target {
30054         &self.inner
30055     }
30056 }
30057 impl<'a> ::std::ops::DerefMut for SubpassDescriptionDepthStencilResolveBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30058     fn deref_mut(&mut self) -> &mut Self::Target {
30059         &mut self.inner
30060     }
30061 }
30062 impl<'a> SubpassDescriptionDepthStencilResolveBuilder<'a> {
depth_resolve_mode(mut self, depth_resolve_mode: ResolveModeFlags) -> Self30063     pub fn depth_resolve_mode(mut self, depth_resolve_mode: ResolveModeFlags) -> Self {
30064         self.inner.depth_resolve_mode = depth_resolve_mode;
30065         self
30066     }
stencil_resolve_mode(mut self, stencil_resolve_mode: ResolveModeFlags) -> Self30067     pub fn stencil_resolve_mode(mut self, stencil_resolve_mode: ResolveModeFlags) -> Self {
30068         self.inner.stencil_resolve_mode = stencil_resolve_mode;
30069         self
30070     }
depth_stencil_resolve_attachment( mut self, depth_stencil_resolve_attachment: &'a AttachmentReference2, ) -> Self30071     pub fn depth_stencil_resolve_attachment(
30072         mut self,
30073         depth_stencil_resolve_attachment: &'a AttachmentReference2,
30074     ) -> Self {
30075         self.inner.p_depth_stencil_resolve_attachment = depth_stencil_resolve_attachment;
30076         self
30077     }
30078     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30079     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30080     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassDescriptionDepthStencilResolve30081     pub fn build(self) -> SubpassDescriptionDepthStencilResolve {
30082         self.inner
30083     }
30084 }
30085 #[repr(C)]
30086 #[cfg_attr(feature = "debug", derive(Debug))]
30087 #[derive(Copy, Clone)]
30088 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewASTCDecodeModeEXT.html>"]
30089 pub struct ImageViewASTCDecodeModeEXT {
30090     pub s_type: StructureType,
30091     pub p_next: *const c_void,
30092     pub decode_mode: Format,
30093 }
30094 impl ::std::default::Default for ImageViewASTCDecodeModeEXT {
default() -> Self30095     fn default() -> Self {
30096         Self {
30097             s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
30098             p_next: ::std::ptr::null(),
30099             decode_mode: Format::default(),
30100         }
30101     }
30102 }
30103 impl ImageViewASTCDecodeModeEXT {
builder<'a>() -> ImageViewASTCDecodeModeEXTBuilder<'a>30104     pub fn builder<'a>() -> ImageViewASTCDecodeModeEXTBuilder<'a> {
30105         ImageViewASTCDecodeModeEXTBuilder {
30106             inner: Self::default(),
30107             marker: ::std::marker::PhantomData,
30108         }
30109     }
30110 }
30111 #[repr(transparent)]
30112 pub struct ImageViewASTCDecodeModeEXTBuilder<'a> {
30113     inner: ImageViewASTCDecodeModeEXT,
30114     marker: ::std::marker::PhantomData<&'a ()>,
30115 }
30116 unsafe impl ExtendsImageViewCreateInfo for ImageViewASTCDecodeModeEXTBuilder<'_> {}
30117 unsafe impl ExtendsImageViewCreateInfo for ImageViewASTCDecodeModeEXT {}
30118 impl<'a> ::std::ops::Deref for ImageViewASTCDecodeModeEXTBuilder<'a> {
30119     type Target = ImageViewASTCDecodeModeEXT;
deref(&self) -> &Self::Target30120     fn deref(&self) -> &Self::Target {
30121         &self.inner
30122     }
30123 }
30124 impl<'a> ::std::ops::DerefMut for ImageViewASTCDecodeModeEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30125     fn deref_mut(&mut self) -> &mut Self::Target {
30126         &mut self.inner
30127     }
30128 }
30129 impl<'a> ImageViewASTCDecodeModeEXTBuilder<'a> {
decode_mode(mut self, decode_mode: Format) -> Self30130     pub fn decode_mode(mut self, decode_mode: Format) -> Self {
30131         self.inner.decode_mode = decode_mode;
30132         self
30133     }
30134     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30135     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30136     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewASTCDecodeModeEXT30137     pub fn build(self) -> ImageViewASTCDecodeModeEXT {
30138         self.inner
30139     }
30140 }
30141 #[repr(C)]
30142 #[cfg_attr(feature = "debug", derive(Debug))]
30143 #[derive(Copy, Clone)]
30144 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>"]
30145 pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
30146     pub s_type: StructureType,
30147     pub p_next: *mut c_void,
30148     pub decode_mode_shared_exponent: Bool32,
30149 }
30150 impl ::std::default::Default for PhysicalDeviceASTCDecodeFeaturesEXT {
default() -> Self30151     fn default() -> Self {
30152         Self {
30153             s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
30154             p_next: ::std::ptr::null_mut(),
30155             decode_mode_shared_exponent: Bool32::default(),
30156         }
30157     }
30158 }
30159 impl PhysicalDeviceASTCDecodeFeaturesEXT {
builder<'a>() -> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a>30160     pub fn builder<'a>() -> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
30161         PhysicalDeviceASTCDecodeFeaturesEXTBuilder {
30162             inner: Self::default(),
30163             marker: ::std::marker::PhantomData,
30164         }
30165     }
30166 }
30167 #[repr(transparent)]
30168 pub struct PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
30169     inner: PhysicalDeviceASTCDecodeFeaturesEXT,
30170     marker: ::std::marker::PhantomData<&'a ()>,
30171 }
30172 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'_> {}
30173 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceASTCDecodeFeaturesEXT {}
30174 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'_> {}
30175 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceASTCDecodeFeaturesEXT {}
30176 impl<'a> ::std::ops::Deref for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
30177     type Target = PhysicalDeviceASTCDecodeFeaturesEXT;
deref(&self) -> &Self::Target30178     fn deref(&self) -> &Self::Target {
30179         &self.inner
30180     }
30181 }
30182 impl<'a> ::std::ops::DerefMut for PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30183     fn deref_mut(&mut self) -> &mut Self::Target {
30184         &mut self.inner
30185     }
30186 }
30187 impl<'a> PhysicalDeviceASTCDecodeFeaturesEXTBuilder<'a> {
decode_mode_shared_exponent(mut self, decode_mode_shared_exponent: bool) -> Self30188     pub fn decode_mode_shared_exponent(mut self, decode_mode_shared_exponent: bool) -> Self {
30189         self.inner.decode_mode_shared_exponent = decode_mode_shared_exponent.into();
30190         self
30191     }
30192     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30193     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30194     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceASTCDecodeFeaturesEXT30195     pub fn build(self) -> PhysicalDeviceASTCDecodeFeaturesEXT {
30196         self.inner
30197     }
30198 }
30199 #[repr(C)]
30200 #[cfg_attr(feature = "debug", derive(Debug))]
30201 #[derive(Copy, Clone)]
30202 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>"]
30203 pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
30204     pub s_type: StructureType,
30205     pub p_next: *mut c_void,
30206     pub transform_feedback: Bool32,
30207     pub geometry_streams: Bool32,
30208 }
30209 impl ::std::default::Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
default() -> Self30210     fn default() -> Self {
30211         Self {
30212             s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
30213             p_next: ::std::ptr::null_mut(),
30214             transform_feedback: Bool32::default(),
30215             geometry_streams: Bool32::default(),
30216         }
30217     }
30218 }
30219 impl PhysicalDeviceTransformFeedbackFeaturesEXT {
builder<'a>() -> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a>30220     pub fn builder<'a>() -> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
30221         PhysicalDeviceTransformFeedbackFeaturesEXTBuilder {
30222             inner: Self::default(),
30223             marker: ::std::marker::PhantomData,
30224         }
30225     }
30226 }
30227 #[repr(transparent)]
30228 pub struct PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
30229     inner: PhysicalDeviceTransformFeedbackFeaturesEXT,
30230     marker: ::std::marker::PhantomData<&'a ()>,
30231 }
30232 unsafe impl ExtendsPhysicalDeviceFeatures2
30233     for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'_>
30234 {
30235 }
30236 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTransformFeedbackFeaturesEXT {}
30237 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'_> {}
30238 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTransformFeedbackFeaturesEXT {}
30239 impl<'a> ::std::ops::Deref for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
30240     type Target = PhysicalDeviceTransformFeedbackFeaturesEXT;
deref(&self) -> &Self::Target30241     fn deref(&self) -> &Self::Target {
30242         &self.inner
30243     }
30244 }
30245 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30246     fn deref_mut(&mut self) -> &mut Self::Target {
30247         &mut self.inner
30248     }
30249 }
30250 impl<'a> PhysicalDeviceTransformFeedbackFeaturesEXTBuilder<'a> {
transform_feedback(mut self, transform_feedback: bool) -> Self30251     pub fn transform_feedback(mut self, transform_feedback: bool) -> Self {
30252         self.inner.transform_feedback = transform_feedback.into();
30253         self
30254     }
geometry_streams(mut self, geometry_streams: bool) -> Self30255     pub fn geometry_streams(mut self, geometry_streams: bool) -> Self {
30256         self.inner.geometry_streams = geometry_streams.into();
30257         self
30258     }
30259     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30260     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30261     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTransformFeedbackFeaturesEXT30262     pub fn build(self) -> PhysicalDeviceTransformFeedbackFeaturesEXT {
30263         self.inner
30264     }
30265 }
30266 #[repr(C)]
30267 #[cfg_attr(feature = "debug", derive(Debug))]
30268 #[derive(Copy, Clone)]
30269 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>"]
30270 pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
30271     pub s_type: StructureType,
30272     pub p_next: *mut c_void,
30273     pub max_transform_feedback_streams: u32,
30274     pub max_transform_feedback_buffers: u32,
30275     pub max_transform_feedback_buffer_size: DeviceSize,
30276     pub max_transform_feedback_stream_data_size: u32,
30277     pub max_transform_feedback_buffer_data_size: u32,
30278     pub max_transform_feedback_buffer_data_stride: u32,
30279     pub transform_feedback_queries: Bool32,
30280     pub transform_feedback_streams_lines_triangles: Bool32,
30281     pub transform_feedback_rasterization_stream_select: Bool32,
30282     pub transform_feedback_draw: Bool32,
30283 }
30284 impl ::std::default::Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
default() -> Self30285     fn default() -> Self {
30286         Self {
30287             s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
30288             p_next: ::std::ptr::null_mut(),
30289             max_transform_feedback_streams: u32::default(),
30290             max_transform_feedback_buffers: u32::default(),
30291             max_transform_feedback_buffer_size: DeviceSize::default(),
30292             max_transform_feedback_stream_data_size: u32::default(),
30293             max_transform_feedback_buffer_data_size: u32::default(),
30294             max_transform_feedback_buffer_data_stride: u32::default(),
30295             transform_feedback_queries: Bool32::default(),
30296             transform_feedback_streams_lines_triangles: Bool32::default(),
30297             transform_feedback_rasterization_stream_select: Bool32::default(),
30298             transform_feedback_draw: Bool32::default(),
30299         }
30300     }
30301 }
30302 impl PhysicalDeviceTransformFeedbackPropertiesEXT {
builder<'a>() -> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a>30303     pub fn builder<'a>() -> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
30304         PhysicalDeviceTransformFeedbackPropertiesEXTBuilder {
30305             inner: Self::default(),
30306             marker: ::std::marker::PhantomData,
30307         }
30308     }
30309 }
30310 #[repr(transparent)]
30311 pub struct PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
30312     inner: PhysicalDeviceTransformFeedbackPropertiesEXT,
30313     marker: ::std::marker::PhantomData<&'a ()>,
30314 }
30315 unsafe impl ExtendsPhysicalDeviceProperties2
30316     for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'_>
30317 {
30318 }
30319 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTransformFeedbackPropertiesEXT {}
30320 impl<'a> ::std::ops::Deref for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
30321     type Target = PhysicalDeviceTransformFeedbackPropertiesEXT;
deref(&self) -> &Self::Target30322     fn deref(&self) -> &Self::Target {
30323         &self.inner
30324     }
30325 }
30326 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30327     fn deref_mut(&mut self) -> &mut Self::Target {
30328         &mut self.inner
30329     }
30330 }
30331 impl<'a> PhysicalDeviceTransformFeedbackPropertiesEXTBuilder<'a> {
max_transform_feedback_streams(mut self, max_transform_feedback_streams: u32) -> Self30332     pub fn max_transform_feedback_streams(mut self, max_transform_feedback_streams: u32) -> Self {
30333         self.inner.max_transform_feedback_streams = max_transform_feedback_streams;
30334         self
30335     }
max_transform_feedback_buffers(mut self, max_transform_feedback_buffers: u32) -> Self30336     pub fn max_transform_feedback_buffers(mut self, max_transform_feedback_buffers: u32) -> Self {
30337         self.inner.max_transform_feedback_buffers = max_transform_feedback_buffers;
30338         self
30339     }
max_transform_feedback_buffer_size( mut self, max_transform_feedback_buffer_size: DeviceSize, ) -> Self30340     pub fn max_transform_feedback_buffer_size(
30341         mut self,
30342         max_transform_feedback_buffer_size: DeviceSize,
30343     ) -> Self {
30344         self.inner.max_transform_feedback_buffer_size = max_transform_feedback_buffer_size;
30345         self
30346     }
max_transform_feedback_stream_data_size( mut self, max_transform_feedback_stream_data_size: u32, ) -> Self30347     pub fn max_transform_feedback_stream_data_size(
30348         mut self,
30349         max_transform_feedback_stream_data_size: u32,
30350     ) -> Self {
30351         self.inner.max_transform_feedback_stream_data_size =
30352             max_transform_feedback_stream_data_size;
30353         self
30354     }
max_transform_feedback_buffer_data_size( mut self, max_transform_feedback_buffer_data_size: u32, ) -> Self30355     pub fn max_transform_feedback_buffer_data_size(
30356         mut self,
30357         max_transform_feedback_buffer_data_size: u32,
30358     ) -> Self {
30359         self.inner.max_transform_feedback_buffer_data_size =
30360             max_transform_feedback_buffer_data_size;
30361         self
30362     }
max_transform_feedback_buffer_data_stride( mut self, max_transform_feedback_buffer_data_stride: u32, ) -> Self30363     pub fn max_transform_feedback_buffer_data_stride(
30364         mut self,
30365         max_transform_feedback_buffer_data_stride: u32,
30366     ) -> Self {
30367         self.inner.max_transform_feedback_buffer_data_stride =
30368             max_transform_feedback_buffer_data_stride;
30369         self
30370     }
transform_feedback_queries(mut self, transform_feedback_queries: bool) -> Self30371     pub fn transform_feedback_queries(mut self, transform_feedback_queries: bool) -> Self {
30372         self.inner.transform_feedback_queries = transform_feedback_queries.into();
30373         self
30374     }
transform_feedback_streams_lines_triangles( mut self, transform_feedback_streams_lines_triangles: bool, ) -> Self30375     pub fn transform_feedback_streams_lines_triangles(
30376         mut self,
30377         transform_feedback_streams_lines_triangles: bool,
30378     ) -> Self {
30379         self.inner.transform_feedback_streams_lines_triangles =
30380             transform_feedback_streams_lines_triangles.into();
30381         self
30382     }
transform_feedback_rasterization_stream_select( mut self, transform_feedback_rasterization_stream_select: bool, ) -> Self30383     pub fn transform_feedback_rasterization_stream_select(
30384         mut self,
30385         transform_feedback_rasterization_stream_select: bool,
30386     ) -> Self {
30387         self.inner.transform_feedback_rasterization_stream_select =
30388             transform_feedback_rasterization_stream_select.into();
30389         self
30390     }
transform_feedback_draw(mut self, transform_feedback_draw: bool) -> Self30391     pub fn transform_feedback_draw(mut self, transform_feedback_draw: bool) -> Self {
30392         self.inner.transform_feedback_draw = transform_feedback_draw.into();
30393         self
30394     }
30395     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30396     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30397     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTransformFeedbackPropertiesEXT30398     pub fn build(self) -> PhysicalDeviceTransformFeedbackPropertiesEXT {
30399         self.inner
30400     }
30401 }
30402 #[repr(C)]
30403 #[cfg_attr(feature = "debug", derive(Debug))]
30404 #[derive(Copy, Clone)]
30405 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>"]
30406 pub struct PipelineRasterizationStateStreamCreateInfoEXT {
30407     pub s_type: StructureType,
30408     pub p_next: *const c_void,
30409     pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
30410     pub rasterization_stream: u32,
30411 }
30412 impl ::std::default::Default for PipelineRasterizationStateStreamCreateInfoEXT {
default() -> Self30413     fn default() -> Self {
30414         Self {
30415             s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
30416             p_next: ::std::ptr::null(),
30417             flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
30418             rasterization_stream: u32::default(),
30419         }
30420     }
30421 }
30422 impl PipelineRasterizationStateStreamCreateInfoEXT {
builder<'a>() -> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a>30423     pub fn builder<'a>() -> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
30424         PipelineRasterizationStateStreamCreateInfoEXTBuilder {
30425             inner: Self::default(),
30426             marker: ::std::marker::PhantomData,
30427         }
30428     }
30429 }
30430 #[repr(transparent)]
30431 pub struct PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
30432     inner: PipelineRasterizationStateStreamCreateInfoEXT,
30433     marker: ::std::marker::PhantomData<&'a ()>,
30434 }
30435 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
30436     for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'_>
30437 {
30438 }
30439 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
30440     for PipelineRasterizationStateStreamCreateInfoEXT
30441 {
30442 }
30443 impl<'a> ::std::ops::Deref for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
30444     type Target = PipelineRasterizationStateStreamCreateInfoEXT;
deref(&self) -> &Self::Target30445     fn deref(&self) -> &Self::Target {
30446         &self.inner
30447     }
30448 }
30449 impl<'a> ::std::ops::DerefMut for PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30450     fn deref_mut(&mut self) -> &mut Self::Target {
30451         &mut self.inner
30452     }
30453 }
30454 impl<'a> PipelineRasterizationStateStreamCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineRasterizationStateStreamCreateFlagsEXT) -> Self30455     pub fn flags(mut self, flags: PipelineRasterizationStateStreamCreateFlagsEXT) -> Self {
30456         self.inner.flags = flags;
30457         self
30458     }
rasterization_stream(mut self, rasterization_stream: u32) -> Self30459     pub fn rasterization_stream(mut self, rasterization_stream: u32) -> Self {
30460         self.inner.rasterization_stream = rasterization_stream;
30461         self
30462     }
30463     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30464     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30465     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationStateStreamCreateInfoEXT30466     pub fn build(self) -> PipelineRasterizationStateStreamCreateInfoEXT {
30467         self.inner
30468     }
30469 }
30470 #[repr(C)]
30471 #[cfg_attr(feature = "debug", derive(Debug))]
30472 #[derive(Copy, Clone)]
30473 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>"]
30474 pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
30475     pub s_type: StructureType,
30476     pub p_next: *mut c_void,
30477     pub representative_fragment_test: Bool32,
30478 }
30479 impl ::std::default::Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
default() -> Self30480     fn default() -> Self {
30481         Self {
30482             s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
30483             p_next: ::std::ptr::null_mut(),
30484             representative_fragment_test: Bool32::default(),
30485         }
30486     }
30487 }
30488 impl PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
builder<'a>() -> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a>30489     pub fn builder<'a>() -> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
30490         PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder {
30491             inner: Self::default(),
30492             marker: ::std::marker::PhantomData,
30493         }
30494     }
30495 }
30496 #[repr(transparent)]
30497 pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
30498     inner: PhysicalDeviceRepresentativeFragmentTestFeaturesNV,
30499     marker: ::std::marker::PhantomData<&'a ()>,
30500 }
30501 unsafe impl ExtendsPhysicalDeviceFeatures2
30502     for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'_>
30503 {
30504 }
30505 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
30506 unsafe impl ExtendsDeviceCreateInfo
30507     for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'_>
30508 {
30509 }
30510 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
30511 impl<'a> ::std::ops::Deref for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
30512     type Target = PhysicalDeviceRepresentativeFragmentTestFeaturesNV;
deref(&self) -> &Self::Target30513     fn deref(&self) -> &Self::Target {
30514         &self.inner
30515     }
30516 }
30517 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30518     fn deref_mut(&mut self) -> &mut Self::Target {
30519         &mut self.inner
30520     }
30521 }
30522 impl<'a> PhysicalDeviceRepresentativeFragmentTestFeaturesNVBuilder<'a> {
representative_fragment_test(mut self, representative_fragment_test: bool) -> Self30523     pub fn representative_fragment_test(mut self, representative_fragment_test: bool) -> Self {
30524         self.inner.representative_fragment_test = representative_fragment_test.into();
30525         self
30526     }
30527     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30528     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30529     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV30530     pub fn build(self) -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
30531         self.inner
30532     }
30533 }
30534 #[repr(C)]
30535 #[cfg_attr(feature = "debug", derive(Debug))]
30536 #[derive(Copy, Clone)]
30537 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>"]
30538 pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
30539     pub s_type: StructureType,
30540     pub p_next: *const c_void,
30541     pub representative_fragment_test_enable: Bool32,
30542 }
30543 impl ::std::default::Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
default() -> Self30544     fn default() -> Self {
30545         Self {
30546             s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
30547             p_next: ::std::ptr::null(),
30548             representative_fragment_test_enable: Bool32::default(),
30549         }
30550     }
30551 }
30552 impl PipelineRepresentativeFragmentTestStateCreateInfoNV {
builder<'a>() -> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a>30553     pub fn builder<'a>() -> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
30554         PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder {
30555             inner: Self::default(),
30556             marker: ::std::marker::PhantomData,
30557         }
30558     }
30559 }
30560 #[repr(transparent)]
30561 pub struct PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
30562     inner: PipelineRepresentativeFragmentTestStateCreateInfoNV,
30563     marker: ::std::marker::PhantomData<&'a ()>,
30564 }
30565 unsafe impl ExtendsGraphicsPipelineCreateInfo
30566     for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'_>
30567 {
30568 }
30569 unsafe impl ExtendsGraphicsPipelineCreateInfo
30570     for PipelineRepresentativeFragmentTestStateCreateInfoNV
30571 {
30572 }
30573 impl<'a> ::std::ops::Deref for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
30574     type Target = PipelineRepresentativeFragmentTestStateCreateInfoNV;
deref(&self) -> &Self::Target30575     fn deref(&self) -> &Self::Target {
30576         &self.inner
30577     }
30578 }
30579 impl<'a> ::std::ops::DerefMut for PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30580     fn deref_mut(&mut self) -> &mut Self::Target {
30581         &mut self.inner
30582     }
30583 }
30584 impl<'a> PipelineRepresentativeFragmentTestStateCreateInfoNVBuilder<'a> {
representative_fragment_test_enable( mut self, representative_fragment_test_enable: bool, ) -> Self30585     pub fn representative_fragment_test_enable(
30586         mut self,
30587         representative_fragment_test_enable: bool,
30588     ) -> Self {
30589         self.inner.representative_fragment_test_enable = representative_fragment_test_enable.into();
30590         self
30591     }
30592     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30593     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30594     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRepresentativeFragmentTestStateCreateInfoNV30595     pub fn build(self) -> PipelineRepresentativeFragmentTestStateCreateInfoNV {
30596         self.inner
30597     }
30598 }
30599 #[repr(C)]
30600 #[cfg_attr(feature = "debug", derive(Debug))]
30601 #[derive(Copy, Clone)]
30602 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>"]
30603 pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
30604     pub s_type: StructureType,
30605     pub p_next: *mut c_void,
30606     pub exclusive_scissor: Bool32,
30607 }
30608 impl ::std::default::Default for PhysicalDeviceExclusiveScissorFeaturesNV {
default() -> Self30609     fn default() -> Self {
30610         Self {
30611             s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
30612             p_next: ::std::ptr::null_mut(),
30613             exclusive_scissor: Bool32::default(),
30614         }
30615     }
30616 }
30617 impl PhysicalDeviceExclusiveScissorFeaturesNV {
builder<'a>() -> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a>30618     pub fn builder<'a>() -> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30619         PhysicalDeviceExclusiveScissorFeaturesNVBuilder {
30620             inner: Self::default(),
30621             marker: ::std::marker::PhantomData,
30622         }
30623     }
30624 }
30625 #[repr(transparent)]
30626 pub struct PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30627     inner: PhysicalDeviceExclusiveScissorFeaturesNV,
30628     marker: ::std::marker::PhantomData<&'a ()>,
30629 }
30630 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'_> {}
30631 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExclusiveScissorFeaturesNV {}
30632 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'_> {}
30633 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExclusiveScissorFeaturesNV {}
30634 impl<'a> ::std::ops::Deref for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
30635     type Target = PhysicalDeviceExclusiveScissorFeaturesNV;
deref(&self) -> &Self::Target30636     fn deref(&self) -> &Self::Target {
30637         &self.inner
30638     }
30639 }
30640 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30641     fn deref_mut(&mut self) -> &mut Self::Target {
30642         &mut self.inner
30643     }
30644 }
30645 impl<'a> PhysicalDeviceExclusiveScissorFeaturesNVBuilder<'a> {
exclusive_scissor(mut self, exclusive_scissor: bool) -> Self30646     pub fn exclusive_scissor(mut self, exclusive_scissor: bool) -> Self {
30647         self.inner.exclusive_scissor = exclusive_scissor.into();
30648         self
30649     }
30650     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30651     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30652     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExclusiveScissorFeaturesNV30653     pub fn build(self) -> PhysicalDeviceExclusiveScissorFeaturesNV {
30654         self.inner
30655     }
30656 }
30657 #[repr(C)]
30658 #[cfg_attr(feature = "debug", derive(Debug))]
30659 #[derive(Copy, Clone)]
30660 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>"]
30661 pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
30662     pub s_type: StructureType,
30663     pub p_next: *const c_void,
30664     pub exclusive_scissor_count: u32,
30665     pub p_exclusive_scissors: *const Rect2D,
30666 }
30667 impl ::std::default::Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
default() -> Self30668     fn default() -> Self {
30669         Self {
30670             s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
30671             p_next: ::std::ptr::null(),
30672             exclusive_scissor_count: u32::default(),
30673             p_exclusive_scissors: ::std::ptr::null(),
30674         }
30675     }
30676 }
30677 impl PipelineViewportExclusiveScissorStateCreateInfoNV {
builder<'a>() -> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a>30678     pub fn builder<'a>() -> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30679         PipelineViewportExclusiveScissorStateCreateInfoNVBuilder {
30680             inner: Self::default(),
30681             marker: ::std::marker::PhantomData,
30682         }
30683     }
30684 }
30685 #[repr(transparent)]
30686 pub struct PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30687     inner: PipelineViewportExclusiveScissorStateCreateInfoNV,
30688     marker: ::std::marker::PhantomData<&'a ()>,
30689 }
30690 unsafe impl ExtendsPipelineViewportStateCreateInfo
30691     for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'_>
30692 {
30693 }
30694 unsafe impl ExtendsPipelineViewportStateCreateInfo
30695     for PipelineViewportExclusiveScissorStateCreateInfoNV
30696 {
30697 }
30698 impl<'a> ::std::ops::Deref for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
30699     type Target = PipelineViewportExclusiveScissorStateCreateInfoNV;
deref(&self) -> &Self::Target30700     fn deref(&self) -> &Self::Target {
30701         &self.inner
30702     }
30703 }
30704 impl<'a> ::std::ops::DerefMut for PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30705     fn deref_mut(&mut self) -> &mut Self::Target {
30706         &mut self.inner
30707     }
30708 }
30709 impl<'a> PipelineViewportExclusiveScissorStateCreateInfoNVBuilder<'a> {
exclusive_scissors(mut self, exclusive_scissors: &'a [Rect2D]) -> Self30710     pub fn exclusive_scissors(mut self, exclusive_scissors: &'a [Rect2D]) -> Self {
30711         self.inner.exclusive_scissor_count = exclusive_scissors.len() as _;
30712         self.inner.p_exclusive_scissors = exclusive_scissors.as_ptr();
30713         self
30714     }
30715     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30716     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30717     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportExclusiveScissorStateCreateInfoNV30718     pub fn build(self) -> PipelineViewportExclusiveScissorStateCreateInfoNV {
30719         self.inner
30720     }
30721 }
30722 #[repr(C)]
30723 #[cfg_attr(feature = "debug", derive(Debug))]
30724 #[derive(Copy, Clone)]
30725 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>"]
30726 pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
30727     pub s_type: StructureType,
30728     pub p_next: *mut c_void,
30729     pub corner_sampled_image: Bool32,
30730 }
30731 impl ::std::default::Default for PhysicalDeviceCornerSampledImageFeaturesNV {
default() -> Self30732     fn default() -> Self {
30733         Self {
30734             s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
30735             p_next: ::std::ptr::null_mut(),
30736             corner_sampled_image: Bool32::default(),
30737         }
30738     }
30739 }
30740 impl PhysicalDeviceCornerSampledImageFeaturesNV {
builder<'a>() -> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a>30741     pub fn builder<'a>() -> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30742         PhysicalDeviceCornerSampledImageFeaturesNVBuilder {
30743             inner: Self::default(),
30744             marker: ::std::marker::PhantomData,
30745         }
30746     }
30747 }
30748 #[repr(transparent)]
30749 pub struct PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30750     inner: PhysicalDeviceCornerSampledImageFeaturesNV,
30751     marker: ::std::marker::PhantomData<&'a ()>,
30752 }
30753 unsafe impl ExtendsPhysicalDeviceFeatures2
30754     for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'_>
30755 {
30756 }
30757 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCornerSampledImageFeaturesNV {}
30758 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'_> {}
30759 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCornerSampledImageFeaturesNV {}
30760 impl<'a> ::std::ops::Deref for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
30761     type Target = PhysicalDeviceCornerSampledImageFeaturesNV;
deref(&self) -> &Self::Target30762     fn deref(&self) -> &Self::Target {
30763         &self.inner
30764     }
30765 }
30766 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30767     fn deref_mut(&mut self) -> &mut Self::Target {
30768         &mut self.inner
30769     }
30770 }
30771 impl<'a> PhysicalDeviceCornerSampledImageFeaturesNVBuilder<'a> {
corner_sampled_image(mut self, corner_sampled_image: bool) -> Self30772     pub fn corner_sampled_image(mut self, corner_sampled_image: bool) -> Self {
30773         self.inner.corner_sampled_image = corner_sampled_image.into();
30774         self
30775     }
30776     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30777     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30778     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCornerSampledImageFeaturesNV30779     pub fn build(self) -> PhysicalDeviceCornerSampledImageFeaturesNV {
30780         self.inner
30781     }
30782 }
30783 #[repr(C)]
30784 #[cfg_attr(feature = "debug", derive(Debug))]
30785 #[derive(Copy, Clone)]
30786 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>"]
30787 pub struct PhysicalDeviceComputeShaderDerivativesFeaturesNV {
30788     pub s_type: StructureType,
30789     pub p_next: *mut c_void,
30790     pub compute_derivative_group_quads: Bool32,
30791     pub compute_derivative_group_linear: Bool32,
30792 }
30793 impl ::std::default::Default for PhysicalDeviceComputeShaderDerivativesFeaturesNV {
default() -> Self30794     fn default() -> Self {
30795         Self {
30796             s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,
30797             p_next: ::std::ptr::null_mut(),
30798             compute_derivative_group_quads: Bool32::default(),
30799             compute_derivative_group_linear: Bool32::default(),
30800         }
30801     }
30802 }
30803 impl PhysicalDeviceComputeShaderDerivativesFeaturesNV {
builder<'a>() -> PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a>30804     pub fn builder<'a>() -> PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
30805         PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder {
30806             inner: Self::default(),
30807             marker: ::std::marker::PhantomData,
30808         }
30809     }
30810 }
30811 #[repr(transparent)]
30812 pub struct PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
30813     inner: PhysicalDeviceComputeShaderDerivativesFeaturesNV,
30814     marker: ::std::marker::PhantomData<&'a ()>,
30815 }
30816 unsafe impl ExtendsPhysicalDeviceFeatures2
30817     for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'_>
30818 {
30819 }
30820 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceComputeShaderDerivativesFeaturesNV {}
30821 unsafe impl ExtendsDeviceCreateInfo
30822     for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'_>
30823 {
30824 }
30825 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceComputeShaderDerivativesFeaturesNV {}
30826 impl<'a> ::std::ops::Deref for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
30827     type Target = PhysicalDeviceComputeShaderDerivativesFeaturesNV;
deref(&self) -> &Self::Target30828     fn deref(&self) -> &Self::Target {
30829         &self.inner
30830     }
30831 }
30832 impl<'a> ::std::ops::DerefMut for PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30833     fn deref_mut(&mut self) -> &mut Self::Target {
30834         &mut self.inner
30835     }
30836 }
30837 impl<'a> PhysicalDeviceComputeShaderDerivativesFeaturesNVBuilder<'a> {
compute_derivative_group_quads(mut self, compute_derivative_group_quads: bool) -> Self30838     pub fn compute_derivative_group_quads(mut self, compute_derivative_group_quads: bool) -> Self {
30839         self.inner.compute_derivative_group_quads = compute_derivative_group_quads.into();
30840         self
30841     }
compute_derivative_group_linear( mut self, compute_derivative_group_linear: bool, ) -> Self30842     pub fn compute_derivative_group_linear(
30843         mut self,
30844         compute_derivative_group_linear: bool,
30845     ) -> Self {
30846         self.inner.compute_derivative_group_linear = compute_derivative_group_linear.into();
30847         self
30848     }
30849     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30850     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30851     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceComputeShaderDerivativesFeaturesNV30852     pub fn build(self) -> PhysicalDeviceComputeShaderDerivativesFeaturesNV {
30853         self.inner
30854     }
30855 }
30856 #[repr(C)]
30857 #[cfg_attr(feature = "debug", derive(Debug))]
30858 #[derive(Copy, Clone)]
30859 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>"]
30860 pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
30861     pub s_type: StructureType,
30862     pub p_next: *mut c_void,
30863     pub fragment_shader_barycentric: Bool32,
30864 }
30865 impl ::std::default::Default for PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
default() -> Self30866     fn default() -> Self {
30867         Self {
30868             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV,
30869             p_next: ::std::ptr::null_mut(),
30870             fragment_shader_barycentric: Bool32::default(),
30871         }
30872     }
30873 }
30874 impl PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
builder<'a>() -> PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a>30875     pub fn builder<'a>() -> PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
30876         PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder {
30877             inner: Self::default(),
30878             marker: ::std::marker::PhantomData,
30879         }
30880     }
30881 }
30882 #[repr(transparent)]
30883 pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
30884     inner: PhysicalDeviceFragmentShaderBarycentricFeaturesNV,
30885     marker: ::std::marker::PhantomData<&'a ()>,
30886 }
30887 unsafe impl ExtendsPhysicalDeviceFeatures2
30888     for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'_>
30889 {
30890 }
30891 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShaderBarycentricFeaturesNV {}
30892 unsafe impl ExtendsDeviceCreateInfo
30893     for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'_>
30894 {
30895 }
30896 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShaderBarycentricFeaturesNV {}
30897 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
30898     type Target = PhysicalDeviceFragmentShaderBarycentricFeaturesNV;
deref(&self) -> &Self::Target30899     fn deref(&self) -> &Self::Target {
30900         &self.inner
30901     }
30902 }
30903 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30904     fn deref_mut(&mut self) -> &mut Self::Target {
30905         &mut self.inner
30906     }
30907 }
30908 impl<'a> PhysicalDeviceFragmentShaderBarycentricFeaturesNVBuilder<'a> {
fragment_shader_barycentric(mut self, fragment_shader_barycentric: bool) -> Self30909     pub fn fragment_shader_barycentric(mut self, fragment_shader_barycentric: bool) -> Self {
30910         self.inner.fragment_shader_barycentric = fragment_shader_barycentric.into();
30911         self
30912     }
30913     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30914     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30915     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShaderBarycentricFeaturesNV30916     pub fn build(self) -> PhysicalDeviceFragmentShaderBarycentricFeaturesNV {
30917         self.inner
30918     }
30919 }
30920 #[repr(C)]
30921 #[cfg_attr(feature = "debug", derive(Debug))]
30922 #[derive(Copy, Clone)]
30923 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>"]
30924 pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
30925     pub s_type: StructureType,
30926     pub p_next: *mut c_void,
30927     pub image_footprint: Bool32,
30928 }
30929 impl ::std::default::Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
default() -> Self30930     fn default() -> Self {
30931         Self {
30932             s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
30933             p_next: ::std::ptr::null_mut(),
30934             image_footprint: Bool32::default(),
30935         }
30936     }
30937 }
30938 impl PhysicalDeviceShaderImageFootprintFeaturesNV {
builder<'a>() -> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a>30939     pub fn builder<'a>() -> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30940         PhysicalDeviceShaderImageFootprintFeaturesNVBuilder {
30941             inner: Self::default(),
30942             marker: ::std::marker::PhantomData,
30943         }
30944     }
30945 }
30946 #[repr(transparent)]
30947 pub struct PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30948     inner: PhysicalDeviceShaderImageFootprintFeaturesNV,
30949     marker: ::std::marker::PhantomData<&'a ()>,
30950 }
30951 unsafe impl ExtendsPhysicalDeviceFeatures2
30952     for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'_>
30953 {
30954 }
30955 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderImageFootprintFeaturesNV {}
30956 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'_> {}
30957 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageFootprintFeaturesNV {}
30958 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
30959     type Target = PhysicalDeviceShaderImageFootprintFeaturesNV;
deref(&self) -> &Self::Target30960     fn deref(&self) -> &Self::Target {
30961         &self.inner
30962     }
30963 }
30964 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target30965     fn deref_mut(&mut self) -> &mut Self::Target {
30966         &mut self.inner
30967     }
30968 }
30969 impl<'a> PhysicalDeviceShaderImageFootprintFeaturesNVBuilder<'a> {
image_footprint(mut self, image_footprint: bool) -> Self30970     pub fn image_footprint(mut self, image_footprint: bool) -> Self {
30971         self.inner.image_footprint = image_footprint.into();
30972         self
30973     }
30974     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
30975     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
30976     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderImageFootprintFeaturesNV30977     pub fn build(self) -> PhysicalDeviceShaderImageFootprintFeaturesNV {
30978         self.inner
30979     }
30980 }
30981 #[repr(C)]
30982 #[cfg_attr(feature = "debug", derive(Debug))]
30983 #[derive(Copy, Clone)]
30984 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>"]
30985 pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
30986     pub s_type: StructureType,
30987     pub p_next: *mut c_void,
30988     pub dedicated_allocation_image_aliasing: Bool32,
30989 }
30990 impl ::std::default::Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
default() -> Self30991     fn default() -> Self {
30992         Self {
30993             s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
30994             p_next: ::std::ptr::null_mut(),
30995             dedicated_allocation_image_aliasing: Bool32::default(),
30996         }
30997     }
30998 }
30999 impl PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
builder<'a>() -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a>31000     pub fn builder<'a>() -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
31001         PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder {
31002             inner: Self::default(),
31003             marker: ::std::marker::PhantomData,
31004         }
31005     }
31006 }
31007 #[repr(transparent)]
31008 pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
31009     inner: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV,
31010     marker: ::std::marker::PhantomData<&'a ()>,
31011 }
31012 unsafe impl ExtendsPhysicalDeviceFeatures2
31013     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'_>
31014 {
31015 }
31016 unsafe impl ExtendsPhysicalDeviceFeatures2
31017     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
31018 {
31019 }
31020 unsafe impl ExtendsDeviceCreateInfo
31021     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'_>
31022 {
31023 }
31024 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
31025 impl<'a> ::std::ops::Deref for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
31026     type Target = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
deref(&self) -> &Self::Target31027     fn deref(&self) -> &Self::Target {
31028         &self.inner
31029     }
31030 }
31031 impl<'a> ::std::ops::DerefMut
31032     for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a>
31033 {
deref_mut(&mut self) -> &mut Self::Target31034     fn deref_mut(&mut self) -> &mut Self::Target {
31035         &mut self.inner
31036     }
31037 }
31038 impl<'a> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVBuilder<'a> {
dedicated_allocation_image_aliasing( mut self, dedicated_allocation_image_aliasing: bool, ) -> Self31039     pub fn dedicated_allocation_image_aliasing(
31040         mut self,
31041         dedicated_allocation_image_aliasing: bool,
31042     ) -> Self {
31043         self.inner.dedicated_allocation_image_aliasing = dedicated_allocation_image_aliasing.into();
31044         self
31045     }
31046     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31047     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31048     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV31049     pub fn build(self) -> PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
31050         self.inner
31051     }
31052 }
31053 #[repr(C)]
31054 #[cfg_attr(feature = "debug", derive(Debug))]
31055 #[derive(Copy, Clone)]
31056 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShadingRatePaletteNV.html>"]
31057 pub struct ShadingRatePaletteNV {
31058     pub shading_rate_palette_entry_count: u32,
31059     pub p_shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
31060 }
31061 impl ::std::default::Default for ShadingRatePaletteNV {
default() -> Self31062     fn default() -> Self {
31063         Self {
31064             shading_rate_palette_entry_count: u32::default(),
31065             p_shading_rate_palette_entries: ::std::ptr::null(),
31066         }
31067     }
31068 }
31069 impl ShadingRatePaletteNV {
builder<'a>() -> ShadingRatePaletteNVBuilder<'a>31070     pub fn builder<'a>() -> ShadingRatePaletteNVBuilder<'a> {
31071         ShadingRatePaletteNVBuilder {
31072             inner: Self::default(),
31073             marker: ::std::marker::PhantomData,
31074         }
31075     }
31076 }
31077 #[repr(transparent)]
31078 pub struct ShadingRatePaletteNVBuilder<'a> {
31079     inner: ShadingRatePaletteNV,
31080     marker: ::std::marker::PhantomData<&'a ()>,
31081 }
31082 impl<'a> ::std::ops::Deref for ShadingRatePaletteNVBuilder<'a> {
31083     type Target = ShadingRatePaletteNV;
deref(&self) -> &Self::Target31084     fn deref(&self) -> &Self::Target {
31085         &self.inner
31086     }
31087 }
31088 impl<'a> ::std::ops::DerefMut for ShadingRatePaletteNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31089     fn deref_mut(&mut self) -> &mut Self::Target {
31090         &mut self.inner
31091     }
31092 }
31093 impl<'a> ShadingRatePaletteNVBuilder<'a> {
shading_rate_palette_entries( mut self, shading_rate_palette_entries: &'a [ShadingRatePaletteEntryNV], ) -> Self31094     pub fn shading_rate_palette_entries(
31095         mut self,
31096         shading_rate_palette_entries: &'a [ShadingRatePaletteEntryNV],
31097     ) -> Self {
31098         self.inner.shading_rate_palette_entry_count = shading_rate_palette_entries.len() as _;
31099         self.inner.p_shading_rate_palette_entries = shading_rate_palette_entries.as_ptr();
31100         self
31101     }
31102     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31103     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31104     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ShadingRatePaletteNV31105     pub fn build(self) -> ShadingRatePaletteNV {
31106         self.inner
31107     }
31108 }
31109 #[repr(C)]
31110 #[cfg_attr(feature = "debug", derive(Debug))]
31111 #[derive(Copy, Clone)]
31112 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>"]
31113 pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
31114     pub s_type: StructureType,
31115     pub p_next: *const c_void,
31116     pub shading_rate_image_enable: Bool32,
31117     pub viewport_count: u32,
31118     pub p_shading_rate_palettes: *const ShadingRatePaletteNV,
31119 }
31120 impl ::std::default::Default for PipelineViewportShadingRateImageStateCreateInfoNV {
default() -> Self31121     fn default() -> Self {
31122         Self {
31123             s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
31124             p_next: ::std::ptr::null(),
31125             shading_rate_image_enable: Bool32::default(),
31126             viewport_count: u32::default(),
31127             p_shading_rate_palettes: ::std::ptr::null(),
31128         }
31129     }
31130 }
31131 impl PipelineViewportShadingRateImageStateCreateInfoNV {
builder<'a>() -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a>31132     pub fn builder<'a>() -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
31133         PipelineViewportShadingRateImageStateCreateInfoNVBuilder {
31134             inner: Self::default(),
31135             marker: ::std::marker::PhantomData,
31136         }
31137     }
31138 }
31139 #[repr(transparent)]
31140 pub struct PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
31141     inner: PipelineViewportShadingRateImageStateCreateInfoNV,
31142     marker: ::std::marker::PhantomData<&'a ()>,
31143 }
31144 unsafe impl ExtendsPipelineViewportStateCreateInfo
31145     for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'_>
31146 {
31147 }
31148 unsafe impl ExtendsPipelineViewportStateCreateInfo
31149     for PipelineViewportShadingRateImageStateCreateInfoNV
31150 {
31151 }
31152 impl<'a> ::std::ops::Deref for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
31153     type Target = PipelineViewportShadingRateImageStateCreateInfoNV;
deref(&self) -> &Self::Target31154     fn deref(&self) -> &Self::Target {
31155         &self.inner
31156     }
31157 }
31158 impl<'a> ::std::ops::DerefMut for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31159     fn deref_mut(&mut self) -> &mut Self::Target {
31160         &mut self.inner
31161     }
31162 }
31163 impl<'a> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
shading_rate_image_enable(mut self, shading_rate_image_enable: bool) -> Self31164     pub fn shading_rate_image_enable(mut self, shading_rate_image_enable: bool) -> Self {
31165         self.inner.shading_rate_image_enable = shading_rate_image_enable.into();
31166         self
31167     }
shading_rate_palettes( mut self, shading_rate_palettes: &'a [ShadingRatePaletteNV], ) -> Self31168     pub fn shading_rate_palettes(
31169         mut self,
31170         shading_rate_palettes: &'a [ShadingRatePaletteNV],
31171     ) -> Self {
31172         self.inner.viewport_count = shading_rate_palettes.len() as _;
31173         self.inner.p_shading_rate_palettes = shading_rate_palettes.as_ptr();
31174         self
31175     }
31176     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31177     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31178     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportShadingRateImageStateCreateInfoNV31179     pub fn build(self) -> PipelineViewportShadingRateImageStateCreateInfoNV {
31180         self.inner
31181     }
31182 }
31183 #[repr(C)]
31184 #[cfg_attr(feature = "debug", derive(Debug))]
31185 #[derive(Copy, Clone)]
31186 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>"]
31187 pub struct PhysicalDeviceShadingRateImageFeaturesNV {
31188     pub s_type: StructureType,
31189     pub p_next: *mut c_void,
31190     pub shading_rate_image: Bool32,
31191     pub shading_rate_coarse_sample_order: Bool32,
31192 }
31193 impl ::std::default::Default for PhysicalDeviceShadingRateImageFeaturesNV {
default() -> Self31194     fn default() -> Self {
31195         Self {
31196             s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
31197             p_next: ::std::ptr::null_mut(),
31198             shading_rate_image: Bool32::default(),
31199             shading_rate_coarse_sample_order: Bool32::default(),
31200         }
31201     }
31202 }
31203 impl PhysicalDeviceShadingRateImageFeaturesNV {
builder<'a>() -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a>31204     pub fn builder<'a>() -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
31205         PhysicalDeviceShadingRateImageFeaturesNVBuilder {
31206             inner: Self::default(),
31207             marker: ::std::marker::PhantomData,
31208         }
31209     }
31210 }
31211 #[repr(transparent)]
31212 pub struct PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
31213     inner: PhysicalDeviceShadingRateImageFeaturesNV,
31214     marker: ::std::marker::PhantomData<&'a ()>,
31215 }
31216 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'_> {}
31217 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShadingRateImageFeaturesNV {}
31218 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'_> {}
31219 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShadingRateImageFeaturesNV {}
31220 impl<'a> ::std::ops::Deref for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
31221     type Target = PhysicalDeviceShadingRateImageFeaturesNV;
deref(&self) -> &Self::Target31222     fn deref(&self) -> &Self::Target {
31223         &self.inner
31224     }
31225 }
31226 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31227     fn deref_mut(&mut self) -> &mut Self::Target {
31228         &mut self.inner
31229     }
31230 }
31231 impl<'a> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
shading_rate_image(mut self, shading_rate_image: bool) -> Self31232     pub fn shading_rate_image(mut self, shading_rate_image: bool) -> Self {
31233         self.inner.shading_rate_image = shading_rate_image.into();
31234         self
31235     }
shading_rate_coarse_sample_order( mut self, shading_rate_coarse_sample_order: bool, ) -> Self31236     pub fn shading_rate_coarse_sample_order(
31237         mut self,
31238         shading_rate_coarse_sample_order: bool,
31239     ) -> Self {
31240         self.inner.shading_rate_coarse_sample_order = shading_rate_coarse_sample_order.into();
31241         self
31242     }
31243     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31244     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31245     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShadingRateImageFeaturesNV31246     pub fn build(self) -> PhysicalDeviceShadingRateImageFeaturesNV {
31247         self.inner
31248     }
31249 }
31250 #[repr(C)]
31251 #[cfg_attr(feature = "debug", derive(Debug))]
31252 #[derive(Copy, Clone)]
31253 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>"]
31254 pub struct PhysicalDeviceShadingRateImagePropertiesNV {
31255     pub s_type: StructureType,
31256     pub p_next: *mut c_void,
31257     pub shading_rate_texel_size: Extent2D,
31258     pub shading_rate_palette_size: u32,
31259     pub shading_rate_max_coarse_samples: u32,
31260 }
31261 impl ::std::default::Default for PhysicalDeviceShadingRateImagePropertiesNV {
default() -> Self31262     fn default() -> Self {
31263         Self {
31264             s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
31265             p_next: ::std::ptr::null_mut(),
31266             shading_rate_texel_size: Extent2D::default(),
31267             shading_rate_palette_size: u32::default(),
31268             shading_rate_max_coarse_samples: u32::default(),
31269         }
31270     }
31271 }
31272 impl PhysicalDeviceShadingRateImagePropertiesNV {
builder<'a>() -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a>31273     pub fn builder<'a>() -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
31274         PhysicalDeviceShadingRateImagePropertiesNVBuilder {
31275             inner: Self::default(),
31276             marker: ::std::marker::PhantomData,
31277         }
31278     }
31279 }
31280 #[repr(transparent)]
31281 pub struct PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
31282     inner: PhysicalDeviceShadingRateImagePropertiesNV,
31283     marker: ::std::marker::PhantomData<&'a ()>,
31284 }
31285 unsafe impl ExtendsPhysicalDeviceProperties2
31286     for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'_>
31287 {
31288 }
31289 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShadingRateImagePropertiesNV {}
31290 impl<'a> ::std::ops::Deref for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
31291     type Target = PhysicalDeviceShadingRateImagePropertiesNV;
deref(&self) -> &Self::Target31292     fn deref(&self) -> &Self::Target {
31293         &self.inner
31294     }
31295 }
31296 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31297     fn deref_mut(&mut self) -> &mut Self::Target {
31298         &mut self.inner
31299     }
31300 }
31301 impl<'a> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
shading_rate_texel_size(mut self, shading_rate_texel_size: Extent2D) -> Self31302     pub fn shading_rate_texel_size(mut self, shading_rate_texel_size: Extent2D) -> Self {
31303         self.inner.shading_rate_texel_size = shading_rate_texel_size;
31304         self
31305     }
shading_rate_palette_size(mut self, shading_rate_palette_size: u32) -> Self31306     pub fn shading_rate_palette_size(mut self, shading_rate_palette_size: u32) -> Self {
31307         self.inner.shading_rate_palette_size = shading_rate_palette_size;
31308         self
31309     }
shading_rate_max_coarse_samples(mut self, shading_rate_max_coarse_samples: u32) -> Self31310     pub fn shading_rate_max_coarse_samples(mut self, shading_rate_max_coarse_samples: u32) -> Self {
31311         self.inner.shading_rate_max_coarse_samples = shading_rate_max_coarse_samples;
31312         self
31313     }
31314     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31315     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31316     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShadingRateImagePropertiesNV31317     pub fn build(self) -> PhysicalDeviceShadingRateImagePropertiesNV {
31318         self.inner
31319     }
31320 }
31321 #[repr(C)]
31322 #[cfg_attr(feature = "debug", derive(Debug))]
31323 #[derive(Copy, Clone)]
31324 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>"]
31325 pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
31326     pub s_type: StructureType,
31327     pub p_next: *mut c_void,
31328     pub invocation_mask: Bool32,
31329 }
31330 impl ::std::default::Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
default() -> Self31331     fn default() -> Self {
31332         Self {
31333             s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
31334             p_next: ::std::ptr::null_mut(),
31335             invocation_mask: Bool32::default(),
31336         }
31337     }
31338 }
31339 impl PhysicalDeviceInvocationMaskFeaturesHUAWEI {
builder<'a>() -> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a>31340     pub fn builder<'a>() -> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
31341         PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder {
31342             inner: Self::default(),
31343             marker: ::std::marker::PhantomData,
31344         }
31345     }
31346 }
31347 #[repr(transparent)]
31348 pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
31349     inner: PhysicalDeviceInvocationMaskFeaturesHUAWEI,
31350     marker: ::std::marker::PhantomData<&'a ()>,
31351 }
31352 unsafe impl ExtendsPhysicalDeviceFeatures2
31353     for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'_>
31354 {
31355 }
31356 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
31357 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'_> {}
31358 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
31359 impl<'a> ::std::ops::Deref for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
31360     type Target = PhysicalDeviceInvocationMaskFeaturesHUAWEI;
deref(&self) -> &Self::Target31361     fn deref(&self) -> &Self::Target {
31362         &self.inner
31363     }
31364 }
31365 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31366     fn deref_mut(&mut self) -> &mut Self::Target {
31367         &mut self.inner
31368     }
31369 }
31370 impl<'a> PhysicalDeviceInvocationMaskFeaturesHUAWEIBuilder<'a> {
invocation_mask(mut self, invocation_mask: bool) -> Self31371     pub fn invocation_mask(mut self, invocation_mask: bool) -> Self {
31372         self.inner.invocation_mask = invocation_mask.into();
31373         self
31374     }
31375     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31376     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31377     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInvocationMaskFeaturesHUAWEI31378     pub fn build(self) -> PhysicalDeviceInvocationMaskFeaturesHUAWEI {
31379         self.inner
31380     }
31381 }
31382 #[repr(C)]
31383 #[cfg_attr(feature = "debug", derive(Debug))]
31384 #[derive(Copy, Clone, Default)]
31385 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleLocationNV.html>"]
31386 pub struct CoarseSampleLocationNV {
31387     pub pixel_x: u32,
31388     pub pixel_y: u32,
31389     pub sample: u32,
31390 }
31391 impl CoarseSampleLocationNV {
builder<'a>() -> CoarseSampleLocationNVBuilder<'a>31392     pub fn builder<'a>() -> CoarseSampleLocationNVBuilder<'a> {
31393         CoarseSampleLocationNVBuilder {
31394             inner: Self::default(),
31395             marker: ::std::marker::PhantomData,
31396         }
31397     }
31398 }
31399 #[repr(transparent)]
31400 pub struct CoarseSampleLocationNVBuilder<'a> {
31401     inner: CoarseSampleLocationNV,
31402     marker: ::std::marker::PhantomData<&'a ()>,
31403 }
31404 impl<'a> ::std::ops::Deref for CoarseSampleLocationNVBuilder<'a> {
31405     type Target = CoarseSampleLocationNV;
deref(&self) -> &Self::Target31406     fn deref(&self) -> &Self::Target {
31407         &self.inner
31408     }
31409 }
31410 impl<'a> ::std::ops::DerefMut for CoarseSampleLocationNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31411     fn deref_mut(&mut self) -> &mut Self::Target {
31412         &mut self.inner
31413     }
31414 }
31415 impl<'a> CoarseSampleLocationNVBuilder<'a> {
pixel_x(mut self, pixel_x: u32) -> Self31416     pub fn pixel_x(mut self, pixel_x: u32) -> Self {
31417         self.inner.pixel_x = pixel_x;
31418         self
31419     }
pixel_y(mut self, pixel_y: u32) -> Self31420     pub fn pixel_y(mut self, pixel_y: u32) -> Self {
31421         self.inner.pixel_y = pixel_y;
31422         self
31423     }
sample(mut self, sample: u32) -> Self31424     pub fn sample(mut self, sample: u32) -> Self {
31425         self.inner.sample = sample;
31426         self
31427     }
31428     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31429     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31430     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CoarseSampleLocationNV31431     pub fn build(self) -> CoarseSampleLocationNV {
31432         self.inner
31433     }
31434 }
31435 #[repr(C)]
31436 #[cfg_attr(feature = "debug", derive(Debug))]
31437 #[derive(Copy, Clone)]
31438 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleOrderCustomNV.html>"]
31439 pub struct CoarseSampleOrderCustomNV {
31440     pub shading_rate: ShadingRatePaletteEntryNV,
31441     pub sample_count: u32,
31442     pub sample_location_count: u32,
31443     pub p_sample_locations: *const CoarseSampleLocationNV,
31444 }
31445 impl ::std::default::Default for CoarseSampleOrderCustomNV {
default() -> Self31446     fn default() -> Self {
31447         Self {
31448             shading_rate: ShadingRatePaletteEntryNV::default(),
31449             sample_count: u32::default(),
31450             sample_location_count: u32::default(),
31451             p_sample_locations: ::std::ptr::null(),
31452         }
31453     }
31454 }
31455 impl CoarseSampleOrderCustomNV {
builder<'a>() -> CoarseSampleOrderCustomNVBuilder<'a>31456     pub fn builder<'a>() -> CoarseSampleOrderCustomNVBuilder<'a> {
31457         CoarseSampleOrderCustomNVBuilder {
31458             inner: Self::default(),
31459             marker: ::std::marker::PhantomData,
31460         }
31461     }
31462 }
31463 #[repr(transparent)]
31464 pub struct CoarseSampleOrderCustomNVBuilder<'a> {
31465     inner: CoarseSampleOrderCustomNV,
31466     marker: ::std::marker::PhantomData<&'a ()>,
31467 }
31468 impl<'a> ::std::ops::Deref for CoarseSampleOrderCustomNVBuilder<'a> {
31469     type Target = CoarseSampleOrderCustomNV;
deref(&self) -> &Self::Target31470     fn deref(&self) -> &Self::Target {
31471         &self.inner
31472     }
31473 }
31474 impl<'a> ::std::ops::DerefMut for CoarseSampleOrderCustomNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31475     fn deref_mut(&mut self) -> &mut Self::Target {
31476         &mut self.inner
31477     }
31478 }
31479 impl<'a> CoarseSampleOrderCustomNVBuilder<'a> {
shading_rate(mut self, shading_rate: ShadingRatePaletteEntryNV) -> Self31480     pub fn shading_rate(mut self, shading_rate: ShadingRatePaletteEntryNV) -> Self {
31481         self.inner.shading_rate = shading_rate;
31482         self
31483     }
sample_count(mut self, sample_count: u32) -> Self31484     pub fn sample_count(mut self, sample_count: u32) -> Self {
31485         self.inner.sample_count = sample_count;
31486         self
31487     }
sample_locations(mut self, sample_locations: &'a [CoarseSampleLocationNV]) -> Self31488     pub fn sample_locations(mut self, sample_locations: &'a [CoarseSampleLocationNV]) -> Self {
31489         self.inner.sample_location_count = sample_locations.len() as _;
31490         self.inner.p_sample_locations = sample_locations.as_ptr();
31491         self
31492     }
31493     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31494     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31495     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CoarseSampleOrderCustomNV31496     pub fn build(self) -> CoarseSampleOrderCustomNV {
31497         self.inner
31498     }
31499 }
31500 #[repr(C)]
31501 #[cfg_attr(feature = "debug", derive(Debug))]
31502 #[derive(Copy, Clone)]
31503 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>"]
31504 pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
31505     pub s_type: StructureType,
31506     pub p_next: *const c_void,
31507     pub sample_order_type: CoarseSampleOrderTypeNV,
31508     pub custom_sample_order_count: u32,
31509     pub p_custom_sample_orders: *const CoarseSampleOrderCustomNV,
31510 }
31511 impl ::std::default::Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
default() -> Self31512     fn default() -> Self {
31513         Self {
31514             s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
31515             p_next: ::std::ptr::null(),
31516             sample_order_type: CoarseSampleOrderTypeNV::default(),
31517             custom_sample_order_count: u32::default(),
31518             p_custom_sample_orders: ::std::ptr::null(),
31519         }
31520     }
31521 }
31522 impl PipelineViewportCoarseSampleOrderStateCreateInfoNV {
builder<'a>() -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a>31523     pub fn builder<'a>() -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
31524         PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder {
31525             inner: Self::default(),
31526             marker: ::std::marker::PhantomData,
31527         }
31528     }
31529 }
31530 #[repr(transparent)]
31531 pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
31532     inner: PipelineViewportCoarseSampleOrderStateCreateInfoNV,
31533     marker: ::std::marker::PhantomData<&'a ()>,
31534 }
31535 unsafe impl ExtendsPipelineViewportStateCreateInfo
31536     for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'_>
31537 {
31538 }
31539 unsafe impl ExtendsPipelineViewportStateCreateInfo
31540     for PipelineViewportCoarseSampleOrderStateCreateInfoNV
31541 {
31542 }
31543 impl<'a> ::std::ops::Deref for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
31544     type Target = PipelineViewportCoarseSampleOrderStateCreateInfoNV;
deref(&self) -> &Self::Target31545     fn deref(&self) -> &Self::Target {
31546         &self.inner
31547     }
31548 }
31549 impl<'a> ::std::ops::DerefMut for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31550     fn deref_mut(&mut self) -> &mut Self::Target {
31551         &mut self.inner
31552     }
31553 }
31554 impl<'a> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
sample_order_type(mut self, sample_order_type: CoarseSampleOrderTypeNV) -> Self31555     pub fn sample_order_type(mut self, sample_order_type: CoarseSampleOrderTypeNV) -> Self {
31556         self.inner.sample_order_type = sample_order_type;
31557         self
31558     }
custom_sample_orders( mut self, custom_sample_orders: &'a [CoarseSampleOrderCustomNV], ) -> Self31559     pub fn custom_sample_orders(
31560         mut self,
31561         custom_sample_orders: &'a [CoarseSampleOrderCustomNV],
31562     ) -> Self {
31563         self.inner.custom_sample_order_count = custom_sample_orders.len() as _;
31564         self.inner.p_custom_sample_orders = custom_sample_orders.as_ptr();
31565         self
31566     }
31567     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31568     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31569     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportCoarseSampleOrderStateCreateInfoNV31570     pub fn build(self) -> PipelineViewportCoarseSampleOrderStateCreateInfoNV {
31571         self.inner
31572     }
31573 }
31574 #[repr(C)]
31575 #[cfg_attr(feature = "debug", derive(Debug))]
31576 #[derive(Copy, Clone)]
31577 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>"]
31578 pub struct PhysicalDeviceMeshShaderFeaturesNV {
31579     pub s_type: StructureType,
31580     pub p_next: *mut c_void,
31581     pub task_shader: Bool32,
31582     pub mesh_shader: Bool32,
31583 }
31584 impl ::std::default::Default for PhysicalDeviceMeshShaderFeaturesNV {
default() -> Self31585     fn default() -> Self {
31586         Self {
31587             s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
31588             p_next: ::std::ptr::null_mut(),
31589             task_shader: Bool32::default(),
31590             mesh_shader: Bool32::default(),
31591         }
31592     }
31593 }
31594 impl PhysicalDeviceMeshShaderFeaturesNV {
builder<'a>() -> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a>31595     pub fn builder<'a>() -> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31596         PhysicalDeviceMeshShaderFeaturesNVBuilder {
31597             inner: Self::default(),
31598             marker: ::std::marker::PhantomData,
31599         }
31600     }
31601 }
31602 #[repr(transparent)]
31603 pub struct PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31604     inner: PhysicalDeviceMeshShaderFeaturesNV,
31605     marker: ::std::marker::PhantomData<&'a ()>,
31606 }
31607 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMeshShaderFeaturesNVBuilder<'_> {}
31608 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMeshShaderFeaturesNV {}
31609 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMeshShaderFeaturesNVBuilder<'_> {}
31610 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMeshShaderFeaturesNV {}
31611 impl<'a> ::std::ops::Deref for PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
31612     type Target = PhysicalDeviceMeshShaderFeaturesNV;
deref(&self) -> &Self::Target31613     fn deref(&self) -> &Self::Target {
31614         &self.inner
31615     }
31616 }
31617 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31618     fn deref_mut(&mut self) -> &mut Self::Target {
31619         &mut self.inner
31620     }
31621 }
31622 impl<'a> PhysicalDeviceMeshShaderFeaturesNVBuilder<'a> {
task_shader(mut self, task_shader: bool) -> Self31623     pub fn task_shader(mut self, task_shader: bool) -> Self {
31624         self.inner.task_shader = task_shader.into();
31625         self
31626     }
mesh_shader(mut self, mesh_shader: bool) -> Self31627     pub fn mesh_shader(mut self, mesh_shader: bool) -> Self {
31628         self.inner.mesh_shader = mesh_shader.into();
31629         self
31630     }
31631     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31632     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31633     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMeshShaderFeaturesNV31634     pub fn build(self) -> PhysicalDeviceMeshShaderFeaturesNV {
31635         self.inner
31636     }
31637 }
31638 #[repr(C)]
31639 #[cfg_attr(feature = "debug", derive(Debug))]
31640 #[derive(Copy, Clone)]
31641 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>"]
31642 pub struct PhysicalDeviceMeshShaderPropertiesNV {
31643     pub s_type: StructureType,
31644     pub p_next: *mut c_void,
31645     pub max_draw_mesh_tasks_count: u32,
31646     pub max_task_work_group_invocations: u32,
31647     pub max_task_work_group_size: [u32; 3],
31648     pub max_task_total_memory_size: u32,
31649     pub max_task_output_count: u32,
31650     pub max_mesh_work_group_invocations: u32,
31651     pub max_mesh_work_group_size: [u32; 3],
31652     pub max_mesh_total_memory_size: u32,
31653     pub max_mesh_output_vertices: u32,
31654     pub max_mesh_output_primitives: u32,
31655     pub max_mesh_multiview_view_count: u32,
31656     pub mesh_output_per_vertex_granularity: u32,
31657     pub mesh_output_per_primitive_granularity: u32,
31658 }
31659 impl ::std::default::Default for PhysicalDeviceMeshShaderPropertiesNV {
default() -> Self31660     fn default() -> Self {
31661         Self {
31662             s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
31663             p_next: ::std::ptr::null_mut(),
31664             max_draw_mesh_tasks_count: u32::default(),
31665             max_task_work_group_invocations: u32::default(),
31666             max_task_work_group_size: unsafe { ::std::mem::zeroed() },
31667             max_task_total_memory_size: u32::default(),
31668             max_task_output_count: u32::default(),
31669             max_mesh_work_group_invocations: u32::default(),
31670             max_mesh_work_group_size: unsafe { ::std::mem::zeroed() },
31671             max_mesh_total_memory_size: u32::default(),
31672             max_mesh_output_vertices: u32::default(),
31673             max_mesh_output_primitives: u32::default(),
31674             max_mesh_multiview_view_count: u32::default(),
31675             mesh_output_per_vertex_granularity: u32::default(),
31676             mesh_output_per_primitive_granularity: u32::default(),
31677         }
31678     }
31679 }
31680 impl PhysicalDeviceMeshShaderPropertiesNV {
builder<'a>() -> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a>31681     pub fn builder<'a>() -> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31682         PhysicalDeviceMeshShaderPropertiesNVBuilder {
31683             inner: Self::default(),
31684             marker: ::std::marker::PhantomData,
31685         }
31686     }
31687 }
31688 #[repr(transparent)]
31689 pub struct PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31690     inner: PhysicalDeviceMeshShaderPropertiesNV,
31691     marker: ::std::marker::PhantomData<&'a ()>,
31692 }
31693 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMeshShaderPropertiesNVBuilder<'_> {}
31694 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceMeshShaderPropertiesNV {}
31695 impl<'a> ::std::ops::Deref for PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
31696     type Target = PhysicalDeviceMeshShaderPropertiesNV;
deref(&self) -> &Self::Target31697     fn deref(&self) -> &Self::Target {
31698         &self.inner
31699     }
31700 }
31701 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31702     fn deref_mut(&mut self) -> &mut Self::Target {
31703         &mut self.inner
31704     }
31705 }
31706 impl<'a> PhysicalDeviceMeshShaderPropertiesNVBuilder<'a> {
max_draw_mesh_tasks_count(mut self, max_draw_mesh_tasks_count: u32) -> Self31707     pub fn max_draw_mesh_tasks_count(mut self, max_draw_mesh_tasks_count: u32) -> Self {
31708         self.inner.max_draw_mesh_tasks_count = max_draw_mesh_tasks_count;
31709         self
31710     }
max_task_work_group_invocations(mut self, max_task_work_group_invocations: u32) -> Self31711     pub fn max_task_work_group_invocations(mut self, max_task_work_group_invocations: u32) -> Self {
31712         self.inner.max_task_work_group_invocations = max_task_work_group_invocations;
31713         self
31714     }
max_task_work_group_size(mut self, max_task_work_group_size: [u32; 3]) -> Self31715     pub fn max_task_work_group_size(mut self, max_task_work_group_size: [u32; 3]) -> Self {
31716         self.inner.max_task_work_group_size = max_task_work_group_size;
31717         self
31718     }
max_task_total_memory_size(mut self, max_task_total_memory_size: u32) -> Self31719     pub fn max_task_total_memory_size(mut self, max_task_total_memory_size: u32) -> Self {
31720         self.inner.max_task_total_memory_size = max_task_total_memory_size;
31721         self
31722     }
max_task_output_count(mut self, max_task_output_count: u32) -> Self31723     pub fn max_task_output_count(mut self, max_task_output_count: u32) -> Self {
31724         self.inner.max_task_output_count = max_task_output_count;
31725         self
31726     }
max_mesh_work_group_invocations(mut self, max_mesh_work_group_invocations: u32) -> Self31727     pub fn max_mesh_work_group_invocations(mut self, max_mesh_work_group_invocations: u32) -> Self {
31728         self.inner.max_mesh_work_group_invocations = max_mesh_work_group_invocations;
31729         self
31730     }
max_mesh_work_group_size(mut self, max_mesh_work_group_size: [u32; 3]) -> Self31731     pub fn max_mesh_work_group_size(mut self, max_mesh_work_group_size: [u32; 3]) -> Self {
31732         self.inner.max_mesh_work_group_size = max_mesh_work_group_size;
31733         self
31734     }
max_mesh_total_memory_size(mut self, max_mesh_total_memory_size: u32) -> Self31735     pub fn max_mesh_total_memory_size(mut self, max_mesh_total_memory_size: u32) -> Self {
31736         self.inner.max_mesh_total_memory_size = max_mesh_total_memory_size;
31737         self
31738     }
max_mesh_output_vertices(mut self, max_mesh_output_vertices: u32) -> Self31739     pub fn max_mesh_output_vertices(mut self, max_mesh_output_vertices: u32) -> Self {
31740         self.inner.max_mesh_output_vertices = max_mesh_output_vertices;
31741         self
31742     }
max_mesh_output_primitives(mut self, max_mesh_output_primitives: u32) -> Self31743     pub fn max_mesh_output_primitives(mut self, max_mesh_output_primitives: u32) -> Self {
31744         self.inner.max_mesh_output_primitives = max_mesh_output_primitives;
31745         self
31746     }
max_mesh_multiview_view_count(mut self, max_mesh_multiview_view_count: u32) -> Self31747     pub fn max_mesh_multiview_view_count(mut self, max_mesh_multiview_view_count: u32) -> Self {
31748         self.inner.max_mesh_multiview_view_count = max_mesh_multiview_view_count;
31749         self
31750     }
mesh_output_per_vertex_granularity( mut self, mesh_output_per_vertex_granularity: u32, ) -> Self31751     pub fn mesh_output_per_vertex_granularity(
31752         mut self,
31753         mesh_output_per_vertex_granularity: u32,
31754     ) -> Self {
31755         self.inner.mesh_output_per_vertex_granularity = mesh_output_per_vertex_granularity;
31756         self
31757     }
mesh_output_per_primitive_granularity( mut self, mesh_output_per_primitive_granularity: u32, ) -> Self31758     pub fn mesh_output_per_primitive_granularity(
31759         mut self,
31760         mesh_output_per_primitive_granularity: u32,
31761     ) -> Self {
31762         self.inner.mesh_output_per_primitive_granularity = mesh_output_per_primitive_granularity;
31763         self
31764     }
31765     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31766     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31767     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMeshShaderPropertiesNV31768     pub fn build(self) -> PhysicalDeviceMeshShaderPropertiesNV {
31769         self.inner
31770     }
31771 }
31772 #[repr(C)]
31773 #[cfg_attr(feature = "debug", derive(Debug))]
31774 #[derive(Copy, Clone, Default)]
31775 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawMeshTasksIndirectCommandNV.html>"]
31776 pub struct DrawMeshTasksIndirectCommandNV {
31777     pub task_count: u32,
31778     pub first_task: u32,
31779 }
31780 impl DrawMeshTasksIndirectCommandNV {
builder<'a>() -> DrawMeshTasksIndirectCommandNVBuilder<'a>31781     pub fn builder<'a>() -> DrawMeshTasksIndirectCommandNVBuilder<'a> {
31782         DrawMeshTasksIndirectCommandNVBuilder {
31783             inner: Self::default(),
31784             marker: ::std::marker::PhantomData,
31785         }
31786     }
31787 }
31788 #[repr(transparent)]
31789 pub struct DrawMeshTasksIndirectCommandNVBuilder<'a> {
31790     inner: DrawMeshTasksIndirectCommandNV,
31791     marker: ::std::marker::PhantomData<&'a ()>,
31792 }
31793 impl<'a> ::std::ops::Deref for DrawMeshTasksIndirectCommandNVBuilder<'a> {
31794     type Target = DrawMeshTasksIndirectCommandNV;
deref(&self) -> &Self::Target31795     fn deref(&self) -> &Self::Target {
31796         &self.inner
31797     }
31798 }
31799 impl<'a> ::std::ops::DerefMut for DrawMeshTasksIndirectCommandNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31800     fn deref_mut(&mut self) -> &mut Self::Target {
31801         &mut self.inner
31802     }
31803 }
31804 impl<'a> DrawMeshTasksIndirectCommandNVBuilder<'a> {
task_count(mut self, task_count: u32) -> Self31805     pub fn task_count(mut self, task_count: u32) -> Self {
31806         self.inner.task_count = task_count;
31807         self
31808     }
first_task(mut self, first_task: u32) -> Self31809     pub fn first_task(mut self, first_task: u32) -> Self {
31810         self.inner.first_task = first_task;
31811         self
31812     }
31813     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31814     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31815     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrawMeshTasksIndirectCommandNV31816     pub fn build(self) -> DrawMeshTasksIndirectCommandNV {
31817         self.inner
31818     }
31819 }
31820 #[repr(C)]
31821 #[cfg_attr(feature = "debug", derive(Debug))]
31822 #[derive(Copy, Clone)]
31823 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingShaderGroupCreateInfoNV.html>"]
31824 pub struct RayTracingShaderGroupCreateInfoNV {
31825     pub s_type: StructureType,
31826     pub p_next: *const c_void,
31827     pub ty: RayTracingShaderGroupTypeKHR,
31828     pub general_shader: u32,
31829     pub closest_hit_shader: u32,
31830     pub any_hit_shader: u32,
31831     pub intersection_shader: u32,
31832 }
31833 impl ::std::default::Default for RayTracingShaderGroupCreateInfoNV {
default() -> Self31834     fn default() -> Self {
31835         Self {
31836             s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
31837             p_next: ::std::ptr::null(),
31838             ty: RayTracingShaderGroupTypeKHR::default(),
31839             general_shader: u32::default(),
31840             closest_hit_shader: u32::default(),
31841             any_hit_shader: u32::default(),
31842             intersection_shader: u32::default(),
31843         }
31844     }
31845 }
31846 impl RayTracingShaderGroupCreateInfoNV {
builder<'a>() -> RayTracingShaderGroupCreateInfoNVBuilder<'a>31847     pub fn builder<'a>() -> RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31848         RayTracingShaderGroupCreateInfoNVBuilder {
31849             inner: Self::default(),
31850             marker: ::std::marker::PhantomData,
31851         }
31852     }
31853 }
31854 #[repr(transparent)]
31855 pub struct RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31856     inner: RayTracingShaderGroupCreateInfoNV,
31857     marker: ::std::marker::PhantomData<&'a ()>,
31858 }
31859 impl<'a> ::std::ops::Deref for RayTracingShaderGroupCreateInfoNVBuilder<'a> {
31860     type Target = RayTracingShaderGroupCreateInfoNV;
deref(&self) -> &Self::Target31861     fn deref(&self) -> &Self::Target {
31862         &self.inner
31863     }
31864 }
31865 impl<'a> ::std::ops::DerefMut for RayTracingShaderGroupCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31866     fn deref_mut(&mut self) -> &mut Self::Target {
31867         &mut self.inner
31868     }
31869 }
31870 impl<'a> RayTracingShaderGroupCreateInfoNVBuilder<'a> {
ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self31871     pub fn ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self {
31872         self.inner.ty = ty;
31873         self
31874     }
general_shader(mut self, general_shader: u32) -> Self31875     pub fn general_shader(mut self, general_shader: u32) -> Self {
31876         self.inner.general_shader = general_shader;
31877         self
31878     }
closest_hit_shader(mut self, closest_hit_shader: u32) -> Self31879     pub fn closest_hit_shader(mut self, closest_hit_shader: u32) -> Self {
31880         self.inner.closest_hit_shader = closest_hit_shader;
31881         self
31882     }
any_hit_shader(mut self, any_hit_shader: u32) -> Self31883     pub fn any_hit_shader(mut self, any_hit_shader: u32) -> Self {
31884         self.inner.any_hit_shader = any_hit_shader;
31885         self
31886     }
intersection_shader(mut self, intersection_shader: u32) -> Self31887     pub fn intersection_shader(mut self, intersection_shader: u32) -> Self {
31888         self.inner.intersection_shader = intersection_shader;
31889         self
31890     }
31891     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31892     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31893     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingShaderGroupCreateInfoNV31894     pub fn build(self) -> RayTracingShaderGroupCreateInfoNV {
31895         self.inner
31896     }
31897 }
31898 #[repr(C)]
31899 #[cfg_attr(feature = "debug", derive(Debug))]
31900 #[derive(Copy, Clone)]
31901 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>"]
31902 pub struct RayTracingShaderGroupCreateInfoKHR {
31903     pub s_type: StructureType,
31904     pub p_next: *const c_void,
31905     pub ty: RayTracingShaderGroupTypeKHR,
31906     pub general_shader: u32,
31907     pub closest_hit_shader: u32,
31908     pub any_hit_shader: u32,
31909     pub intersection_shader: u32,
31910     pub p_shader_group_capture_replay_handle: *const c_void,
31911 }
31912 impl ::std::default::Default for RayTracingShaderGroupCreateInfoKHR {
default() -> Self31913     fn default() -> Self {
31914         Self {
31915             s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
31916             p_next: ::std::ptr::null(),
31917             ty: RayTracingShaderGroupTypeKHR::default(),
31918             general_shader: u32::default(),
31919             closest_hit_shader: u32::default(),
31920             any_hit_shader: u32::default(),
31921             intersection_shader: u32::default(),
31922             p_shader_group_capture_replay_handle: ::std::ptr::null(),
31923         }
31924     }
31925 }
31926 impl RayTracingShaderGroupCreateInfoKHR {
builder<'a>() -> RayTracingShaderGroupCreateInfoKHRBuilder<'a>31927     pub fn builder<'a>() -> RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31928         RayTracingShaderGroupCreateInfoKHRBuilder {
31929             inner: Self::default(),
31930             marker: ::std::marker::PhantomData,
31931         }
31932     }
31933 }
31934 #[repr(transparent)]
31935 pub struct RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31936     inner: RayTracingShaderGroupCreateInfoKHR,
31937     marker: ::std::marker::PhantomData<&'a ()>,
31938 }
31939 impl<'a> ::std::ops::Deref for RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
31940     type Target = RayTracingShaderGroupCreateInfoKHR;
deref(&self) -> &Self::Target31941     fn deref(&self) -> &Self::Target {
31942         &self.inner
31943     }
31944 }
31945 impl<'a> ::std::ops::DerefMut for RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target31946     fn deref_mut(&mut self) -> &mut Self::Target {
31947         &mut self.inner
31948     }
31949 }
31950 impl<'a> RayTracingShaderGroupCreateInfoKHRBuilder<'a> {
ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self31951     pub fn ty(mut self, ty: RayTracingShaderGroupTypeKHR) -> Self {
31952         self.inner.ty = ty;
31953         self
31954     }
general_shader(mut self, general_shader: u32) -> Self31955     pub fn general_shader(mut self, general_shader: u32) -> Self {
31956         self.inner.general_shader = general_shader;
31957         self
31958     }
closest_hit_shader(mut self, closest_hit_shader: u32) -> Self31959     pub fn closest_hit_shader(mut self, closest_hit_shader: u32) -> Self {
31960         self.inner.closest_hit_shader = closest_hit_shader;
31961         self
31962     }
any_hit_shader(mut self, any_hit_shader: u32) -> Self31963     pub fn any_hit_shader(mut self, any_hit_shader: u32) -> Self {
31964         self.inner.any_hit_shader = any_hit_shader;
31965         self
31966     }
intersection_shader(mut self, intersection_shader: u32) -> Self31967     pub fn intersection_shader(mut self, intersection_shader: u32) -> Self {
31968         self.inner.intersection_shader = intersection_shader;
31969         self
31970     }
shader_group_capture_replay_handle( mut self, shader_group_capture_replay_handle: *const c_void, ) -> Self31971     pub fn shader_group_capture_replay_handle(
31972         mut self,
31973         shader_group_capture_replay_handle: *const c_void,
31974     ) -> Self {
31975         self.inner.p_shader_group_capture_replay_handle = shader_group_capture_replay_handle;
31976         self
31977     }
31978     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
31979     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
31980     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingShaderGroupCreateInfoKHR31981     pub fn build(self) -> RayTracingShaderGroupCreateInfoKHR {
31982         self.inner
31983     }
31984 }
31985 #[repr(C)]
31986 #[cfg_attr(feature = "debug", derive(Debug))]
31987 #[derive(Copy, Clone)]
31988 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingPipelineCreateInfoNV.html>"]
31989 pub struct RayTracingPipelineCreateInfoNV {
31990     pub s_type: StructureType,
31991     pub p_next: *const c_void,
31992     pub flags: PipelineCreateFlags,
31993     pub stage_count: u32,
31994     pub p_stages: *const PipelineShaderStageCreateInfo,
31995     pub group_count: u32,
31996     pub p_groups: *const RayTracingShaderGroupCreateInfoNV,
31997     pub max_recursion_depth: u32,
31998     pub layout: PipelineLayout,
31999     pub base_pipeline_handle: Pipeline,
32000     pub base_pipeline_index: i32,
32001 }
32002 impl ::std::default::Default for RayTracingPipelineCreateInfoNV {
default() -> Self32003     fn default() -> Self {
32004         Self {
32005             s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
32006             p_next: ::std::ptr::null(),
32007             flags: PipelineCreateFlags::default(),
32008             stage_count: u32::default(),
32009             p_stages: ::std::ptr::null(),
32010             group_count: u32::default(),
32011             p_groups: ::std::ptr::null(),
32012             max_recursion_depth: u32::default(),
32013             layout: PipelineLayout::default(),
32014             base_pipeline_handle: Pipeline::default(),
32015             base_pipeline_index: i32::default(),
32016         }
32017     }
32018 }
32019 impl RayTracingPipelineCreateInfoNV {
builder<'a>() -> RayTracingPipelineCreateInfoNVBuilder<'a>32020     pub fn builder<'a>() -> RayTracingPipelineCreateInfoNVBuilder<'a> {
32021         RayTracingPipelineCreateInfoNVBuilder {
32022             inner: Self::default(),
32023             marker: ::std::marker::PhantomData,
32024         }
32025     }
32026 }
32027 #[repr(transparent)]
32028 pub struct RayTracingPipelineCreateInfoNVBuilder<'a> {
32029     inner: RayTracingPipelineCreateInfoNV,
32030     marker: ::std::marker::PhantomData<&'a ()>,
32031 }
32032 pub unsafe trait ExtendsRayTracingPipelineCreateInfoNV {}
32033 impl<'a> ::std::ops::Deref for RayTracingPipelineCreateInfoNVBuilder<'a> {
32034     type Target = RayTracingPipelineCreateInfoNV;
deref(&self) -> &Self::Target32035     fn deref(&self) -> &Self::Target {
32036         &self.inner
32037     }
32038 }
32039 impl<'a> ::std::ops::DerefMut for RayTracingPipelineCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32040     fn deref_mut(&mut self) -> &mut Self::Target {
32041         &mut self.inner
32042     }
32043 }
32044 impl<'a> RayTracingPipelineCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self32045     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
32046         self.inner.flags = flags;
32047         self
32048     }
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self32049     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
32050         self.inner.stage_count = stages.len() as _;
32051         self.inner.p_stages = stages.as_ptr();
32052         self
32053     }
groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoNV]) -> Self32054     pub fn groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoNV]) -> Self {
32055         self.inner.group_count = groups.len() as _;
32056         self.inner.p_groups = groups.as_ptr();
32057         self
32058     }
max_recursion_depth(mut self, max_recursion_depth: u32) -> Self32059     pub fn max_recursion_depth(mut self, max_recursion_depth: u32) -> Self {
32060         self.inner.max_recursion_depth = max_recursion_depth;
32061         self
32062     }
layout(mut self, layout: PipelineLayout) -> Self32063     pub fn layout(mut self, layout: PipelineLayout) -> Self {
32064         self.inner.layout = layout;
32065         self
32066     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self32067     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
32068         self.inner.base_pipeline_handle = base_pipeline_handle;
32069         self
32070     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self32071     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
32072         self.inner.base_pipeline_index = base_pipeline_index;
32073         self
32074     }
32075     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
32076     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
32077     #[doc = r" valid extension structs can be pushed into the chain."]
32078     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
32079     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRayTracingPipelineCreateInfoNV>(mut self, next: &'a mut T) -> Self32080     pub fn push_next<T: ExtendsRayTracingPipelineCreateInfoNV>(mut self, next: &'a mut T) -> Self {
32081         unsafe {
32082             let next_ptr = next as *mut T as *mut BaseOutStructure;
32083             let last_next = ptr_chain_iter(next).last().unwrap();
32084             (*last_next).p_next = self.inner.p_next as _;
32085             self.inner.p_next = next_ptr as _;
32086         }
32087         self
32088     }
32089     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32090     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32091     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingPipelineCreateInfoNV32092     pub fn build(self) -> RayTracingPipelineCreateInfoNV {
32093         self.inner
32094     }
32095 }
32096 #[repr(C)]
32097 #[cfg_attr(feature = "debug", derive(Debug))]
32098 #[derive(Copy, Clone)]
32099 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingPipelineCreateInfoKHR.html>"]
32100 pub struct RayTracingPipelineCreateInfoKHR {
32101     pub s_type: StructureType,
32102     pub p_next: *const c_void,
32103     pub flags: PipelineCreateFlags,
32104     pub stage_count: u32,
32105     pub p_stages: *const PipelineShaderStageCreateInfo,
32106     pub group_count: u32,
32107     pub p_groups: *const RayTracingShaderGroupCreateInfoKHR,
32108     pub max_pipeline_ray_recursion_depth: u32,
32109     pub p_library_info: *const PipelineLibraryCreateInfoKHR,
32110     pub p_library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
32111     pub p_dynamic_state: *const PipelineDynamicStateCreateInfo,
32112     pub layout: PipelineLayout,
32113     pub base_pipeline_handle: Pipeline,
32114     pub base_pipeline_index: i32,
32115 }
32116 impl ::std::default::Default for RayTracingPipelineCreateInfoKHR {
default() -> Self32117     fn default() -> Self {
32118         Self {
32119             s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
32120             p_next: ::std::ptr::null(),
32121             flags: PipelineCreateFlags::default(),
32122             stage_count: u32::default(),
32123             p_stages: ::std::ptr::null(),
32124             group_count: u32::default(),
32125             p_groups: ::std::ptr::null(),
32126             max_pipeline_ray_recursion_depth: u32::default(),
32127             p_library_info: ::std::ptr::null(),
32128             p_library_interface: ::std::ptr::null(),
32129             p_dynamic_state: ::std::ptr::null(),
32130             layout: PipelineLayout::default(),
32131             base_pipeline_handle: Pipeline::default(),
32132             base_pipeline_index: i32::default(),
32133         }
32134     }
32135 }
32136 impl RayTracingPipelineCreateInfoKHR {
builder<'a>() -> RayTracingPipelineCreateInfoKHRBuilder<'a>32137     pub fn builder<'a>() -> RayTracingPipelineCreateInfoKHRBuilder<'a> {
32138         RayTracingPipelineCreateInfoKHRBuilder {
32139             inner: Self::default(),
32140             marker: ::std::marker::PhantomData,
32141         }
32142     }
32143 }
32144 #[repr(transparent)]
32145 pub struct RayTracingPipelineCreateInfoKHRBuilder<'a> {
32146     inner: RayTracingPipelineCreateInfoKHR,
32147     marker: ::std::marker::PhantomData<&'a ()>,
32148 }
32149 pub unsafe trait ExtendsRayTracingPipelineCreateInfoKHR {}
32150 impl<'a> ::std::ops::Deref for RayTracingPipelineCreateInfoKHRBuilder<'a> {
32151     type Target = RayTracingPipelineCreateInfoKHR;
deref(&self) -> &Self::Target32152     fn deref(&self) -> &Self::Target {
32153         &self.inner
32154     }
32155 }
32156 impl<'a> ::std::ops::DerefMut for RayTracingPipelineCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32157     fn deref_mut(&mut self) -> &mut Self::Target {
32158         &mut self.inner
32159     }
32160 }
32161 impl<'a> RayTracingPipelineCreateInfoKHRBuilder<'a> {
flags(mut self, flags: PipelineCreateFlags) -> Self32162     pub fn flags(mut self, flags: PipelineCreateFlags) -> Self {
32163         self.inner.flags = flags;
32164         self
32165     }
stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self32166     pub fn stages(mut self, stages: &'a [PipelineShaderStageCreateInfo]) -> Self {
32167         self.inner.stage_count = stages.len() as _;
32168         self.inner.p_stages = stages.as_ptr();
32169         self
32170     }
groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoKHR]) -> Self32171     pub fn groups(mut self, groups: &'a [RayTracingShaderGroupCreateInfoKHR]) -> Self {
32172         self.inner.group_count = groups.len() as _;
32173         self.inner.p_groups = groups.as_ptr();
32174         self
32175     }
max_pipeline_ray_recursion_depth( mut self, max_pipeline_ray_recursion_depth: u32, ) -> Self32176     pub fn max_pipeline_ray_recursion_depth(
32177         mut self,
32178         max_pipeline_ray_recursion_depth: u32,
32179     ) -> Self {
32180         self.inner.max_pipeline_ray_recursion_depth = max_pipeline_ray_recursion_depth;
32181         self
32182     }
library_info(mut self, library_info: &'a PipelineLibraryCreateInfoKHR) -> Self32183     pub fn library_info(mut self, library_info: &'a PipelineLibraryCreateInfoKHR) -> Self {
32184         self.inner.p_library_info = library_info;
32185         self
32186     }
library_interface( mut self, library_interface: &'a RayTracingPipelineInterfaceCreateInfoKHR, ) -> Self32187     pub fn library_interface(
32188         mut self,
32189         library_interface: &'a RayTracingPipelineInterfaceCreateInfoKHR,
32190     ) -> Self {
32191         self.inner.p_library_interface = library_interface;
32192         self
32193     }
dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self32194     pub fn dynamic_state(mut self, dynamic_state: &'a PipelineDynamicStateCreateInfo) -> Self {
32195         self.inner.p_dynamic_state = dynamic_state;
32196         self
32197     }
layout(mut self, layout: PipelineLayout) -> Self32198     pub fn layout(mut self, layout: PipelineLayout) -> Self {
32199         self.inner.layout = layout;
32200         self
32201     }
base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self32202     pub fn base_pipeline_handle(mut self, base_pipeline_handle: Pipeline) -> Self {
32203         self.inner.base_pipeline_handle = base_pipeline_handle;
32204         self
32205     }
base_pipeline_index(mut self, base_pipeline_index: i32) -> Self32206     pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
32207         self.inner.base_pipeline_index = base_pipeline_index;
32208         self
32209     }
32210     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
32211     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
32212     #[doc = r" valid extension structs can be pushed into the chain."]
32213     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
32214     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRayTracingPipelineCreateInfoKHR>(mut self, next: &'a mut T) -> Self32215     pub fn push_next<T: ExtendsRayTracingPipelineCreateInfoKHR>(mut self, next: &'a mut T) -> Self {
32216         unsafe {
32217             let next_ptr = next as *mut T as *mut BaseOutStructure;
32218             let last_next = ptr_chain_iter(next).last().unwrap();
32219             (*last_next).p_next = self.inner.p_next as _;
32220             self.inner.p_next = next_ptr as _;
32221         }
32222         self
32223     }
32224     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32225     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32226     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingPipelineCreateInfoKHR32227     pub fn build(self) -> RayTracingPipelineCreateInfoKHR {
32228         self.inner
32229     }
32230 }
32231 #[repr(C)]
32232 #[cfg_attr(feature = "debug", derive(Debug))]
32233 #[derive(Copy, Clone)]
32234 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryTrianglesNV.html>"]
32235 pub struct GeometryTrianglesNV {
32236     pub s_type: StructureType,
32237     pub p_next: *const c_void,
32238     pub vertex_data: Buffer,
32239     pub vertex_offset: DeviceSize,
32240     pub vertex_count: u32,
32241     pub vertex_stride: DeviceSize,
32242     pub vertex_format: Format,
32243     pub index_data: Buffer,
32244     pub index_offset: DeviceSize,
32245     pub index_count: u32,
32246     pub index_type: IndexType,
32247     pub transform_data: Buffer,
32248     pub transform_offset: DeviceSize,
32249 }
32250 impl ::std::default::Default for GeometryTrianglesNV {
default() -> Self32251     fn default() -> Self {
32252         Self {
32253             s_type: StructureType::GEOMETRY_TRIANGLES_NV,
32254             p_next: ::std::ptr::null(),
32255             vertex_data: Buffer::default(),
32256             vertex_offset: DeviceSize::default(),
32257             vertex_count: u32::default(),
32258             vertex_stride: DeviceSize::default(),
32259             vertex_format: Format::default(),
32260             index_data: Buffer::default(),
32261             index_offset: DeviceSize::default(),
32262             index_count: u32::default(),
32263             index_type: IndexType::default(),
32264             transform_data: Buffer::default(),
32265             transform_offset: DeviceSize::default(),
32266         }
32267     }
32268 }
32269 impl GeometryTrianglesNV {
builder<'a>() -> GeometryTrianglesNVBuilder<'a>32270     pub fn builder<'a>() -> GeometryTrianglesNVBuilder<'a> {
32271         GeometryTrianglesNVBuilder {
32272             inner: Self::default(),
32273             marker: ::std::marker::PhantomData,
32274         }
32275     }
32276 }
32277 #[repr(transparent)]
32278 pub struct GeometryTrianglesNVBuilder<'a> {
32279     inner: GeometryTrianglesNV,
32280     marker: ::std::marker::PhantomData<&'a ()>,
32281 }
32282 impl<'a> ::std::ops::Deref for GeometryTrianglesNVBuilder<'a> {
32283     type Target = GeometryTrianglesNV;
deref(&self) -> &Self::Target32284     fn deref(&self) -> &Self::Target {
32285         &self.inner
32286     }
32287 }
32288 impl<'a> ::std::ops::DerefMut for GeometryTrianglesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32289     fn deref_mut(&mut self) -> &mut Self::Target {
32290         &mut self.inner
32291     }
32292 }
32293 impl<'a> GeometryTrianglesNVBuilder<'a> {
vertex_data(mut self, vertex_data: Buffer) -> Self32294     pub fn vertex_data(mut self, vertex_data: Buffer) -> Self {
32295         self.inner.vertex_data = vertex_data;
32296         self
32297     }
vertex_offset(mut self, vertex_offset: DeviceSize) -> Self32298     pub fn vertex_offset(mut self, vertex_offset: DeviceSize) -> Self {
32299         self.inner.vertex_offset = vertex_offset;
32300         self
32301     }
vertex_count(mut self, vertex_count: u32) -> Self32302     pub fn vertex_count(mut self, vertex_count: u32) -> Self {
32303         self.inner.vertex_count = vertex_count;
32304         self
32305     }
vertex_stride(mut self, vertex_stride: DeviceSize) -> Self32306     pub fn vertex_stride(mut self, vertex_stride: DeviceSize) -> Self {
32307         self.inner.vertex_stride = vertex_stride;
32308         self
32309     }
vertex_format(mut self, vertex_format: Format) -> Self32310     pub fn vertex_format(mut self, vertex_format: Format) -> Self {
32311         self.inner.vertex_format = vertex_format;
32312         self
32313     }
index_data(mut self, index_data: Buffer) -> Self32314     pub fn index_data(mut self, index_data: Buffer) -> Self {
32315         self.inner.index_data = index_data;
32316         self
32317     }
index_offset(mut self, index_offset: DeviceSize) -> Self32318     pub fn index_offset(mut self, index_offset: DeviceSize) -> Self {
32319         self.inner.index_offset = index_offset;
32320         self
32321     }
index_count(mut self, index_count: u32) -> Self32322     pub fn index_count(mut self, index_count: u32) -> Self {
32323         self.inner.index_count = index_count;
32324         self
32325     }
index_type(mut self, index_type: IndexType) -> Self32326     pub fn index_type(mut self, index_type: IndexType) -> Self {
32327         self.inner.index_type = index_type;
32328         self
32329     }
transform_data(mut self, transform_data: Buffer) -> Self32330     pub fn transform_data(mut self, transform_data: Buffer) -> Self {
32331         self.inner.transform_data = transform_data;
32332         self
32333     }
transform_offset(mut self, transform_offset: DeviceSize) -> Self32334     pub fn transform_offset(mut self, transform_offset: DeviceSize) -> Self {
32335         self.inner.transform_offset = transform_offset;
32336         self
32337     }
32338     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32339     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32340     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryTrianglesNV32341     pub fn build(self) -> GeometryTrianglesNV {
32342         self.inner
32343     }
32344 }
32345 #[repr(C)]
32346 #[cfg_attr(feature = "debug", derive(Debug))]
32347 #[derive(Copy, Clone)]
32348 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryAABBNV.html>"]
32349 pub struct GeometryAABBNV {
32350     pub s_type: StructureType,
32351     pub p_next: *const c_void,
32352     pub aabb_data: Buffer,
32353     pub num_aab_bs: u32,
32354     pub stride: u32,
32355     pub offset: DeviceSize,
32356 }
32357 impl ::std::default::Default for GeometryAABBNV {
default() -> Self32358     fn default() -> Self {
32359         Self {
32360             s_type: StructureType::GEOMETRY_AABB_NV,
32361             p_next: ::std::ptr::null(),
32362             aabb_data: Buffer::default(),
32363             num_aab_bs: u32::default(),
32364             stride: u32::default(),
32365             offset: DeviceSize::default(),
32366         }
32367     }
32368 }
32369 impl GeometryAABBNV {
builder<'a>() -> GeometryAABBNVBuilder<'a>32370     pub fn builder<'a>() -> GeometryAABBNVBuilder<'a> {
32371         GeometryAABBNVBuilder {
32372             inner: Self::default(),
32373             marker: ::std::marker::PhantomData,
32374         }
32375     }
32376 }
32377 #[repr(transparent)]
32378 pub struct GeometryAABBNVBuilder<'a> {
32379     inner: GeometryAABBNV,
32380     marker: ::std::marker::PhantomData<&'a ()>,
32381 }
32382 impl<'a> ::std::ops::Deref for GeometryAABBNVBuilder<'a> {
32383     type Target = GeometryAABBNV;
deref(&self) -> &Self::Target32384     fn deref(&self) -> &Self::Target {
32385         &self.inner
32386     }
32387 }
32388 impl<'a> ::std::ops::DerefMut for GeometryAABBNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32389     fn deref_mut(&mut self) -> &mut Self::Target {
32390         &mut self.inner
32391     }
32392 }
32393 impl<'a> GeometryAABBNVBuilder<'a> {
aabb_data(mut self, aabb_data: Buffer) -> Self32394     pub fn aabb_data(mut self, aabb_data: Buffer) -> Self {
32395         self.inner.aabb_data = aabb_data;
32396         self
32397     }
num_aab_bs(mut self, num_aab_bs: u32) -> Self32398     pub fn num_aab_bs(mut self, num_aab_bs: u32) -> Self {
32399         self.inner.num_aab_bs = num_aab_bs;
32400         self
32401     }
stride(mut self, stride: u32) -> Self32402     pub fn stride(mut self, stride: u32) -> Self {
32403         self.inner.stride = stride;
32404         self
32405     }
offset(mut self, offset: DeviceSize) -> Self32406     pub fn offset(mut self, offset: DeviceSize) -> Self {
32407         self.inner.offset = offset;
32408         self
32409     }
32410     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32411     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32412     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryAABBNV32413     pub fn build(self) -> GeometryAABBNV {
32414         self.inner
32415     }
32416 }
32417 #[repr(C)]
32418 #[cfg_attr(feature = "debug", derive(Debug))]
32419 #[derive(Copy, Clone, Default)]
32420 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryDataNV.html>"]
32421 pub struct GeometryDataNV {
32422     pub triangles: GeometryTrianglesNV,
32423     pub aabbs: GeometryAABBNV,
32424 }
32425 impl GeometryDataNV {
builder<'a>() -> GeometryDataNVBuilder<'a>32426     pub fn builder<'a>() -> GeometryDataNVBuilder<'a> {
32427         GeometryDataNVBuilder {
32428             inner: Self::default(),
32429             marker: ::std::marker::PhantomData,
32430         }
32431     }
32432 }
32433 #[repr(transparent)]
32434 pub struct GeometryDataNVBuilder<'a> {
32435     inner: GeometryDataNV,
32436     marker: ::std::marker::PhantomData<&'a ()>,
32437 }
32438 impl<'a> ::std::ops::Deref for GeometryDataNVBuilder<'a> {
32439     type Target = GeometryDataNV;
deref(&self) -> &Self::Target32440     fn deref(&self) -> &Self::Target {
32441         &self.inner
32442     }
32443 }
32444 impl<'a> ::std::ops::DerefMut for GeometryDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32445     fn deref_mut(&mut self) -> &mut Self::Target {
32446         &mut self.inner
32447     }
32448 }
32449 impl<'a> GeometryDataNVBuilder<'a> {
triangles(mut self, triangles: GeometryTrianglesNV) -> Self32450     pub fn triangles(mut self, triangles: GeometryTrianglesNV) -> Self {
32451         self.inner.triangles = triangles;
32452         self
32453     }
aabbs(mut self, aabbs: GeometryAABBNV) -> Self32454     pub fn aabbs(mut self, aabbs: GeometryAABBNV) -> Self {
32455         self.inner.aabbs = aabbs;
32456         self
32457     }
32458     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32459     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32460     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryDataNV32461     pub fn build(self) -> GeometryDataNV {
32462         self.inner
32463     }
32464 }
32465 #[repr(C)]
32466 #[cfg_attr(feature = "debug", derive(Debug))]
32467 #[derive(Copy, Clone)]
32468 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryNV.html>"]
32469 pub struct GeometryNV {
32470     pub s_type: StructureType,
32471     pub p_next: *const c_void,
32472     pub geometry_type: GeometryTypeKHR,
32473     pub geometry: GeometryDataNV,
32474     pub flags: GeometryFlagsKHR,
32475 }
32476 impl ::std::default::Default for GeometryNV {
default() -> Self32477     fn default() -> Self {
32478         Self {
32479             s_type: StructureType::GEOMETRY_NV,
32480             p_next: ::std::ptr::null(),
32481             geometry_type: GeometryTypeKHR::default(),
32482             geometry: GeometryDataNV::default(),
32483             flags: GeometryFlagsKHR::default(),
32484         }
32485     }
32486 }
32487 impl GeometryNV {
builder<'a>() -> GeometryNVBuilder<'a>32488     pub fn builder<'a>() -> GeometryNVBuilder<'a> {
32489         GeometryNVBuilder {
32490             inner: Self::default(),
32491             marker: ::std::marker::PhantomData,
32492         }
32493     }
32494 }
32495 #[repr(transparent)]
32496 pub struct GeometryNVBuilder<'a> {
32497     inner: GeometryNV,
32498     marker: ::std::marker::PhantomData<&'a ()>,
32499 }
32500 impl<'a> ::std::ops::Deref for GeometryNVBuilder<'a> {
32501     type Target = GeometryNV;
deref(&self) -> &Self::Target32502     fn deref(&self) -> &Self::Target {
32503         &self.inner
32504     }
32505 }
32506 impl<'a> ::std::ops::DerefMut for GeometryNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32507     fn deref_mut(&mut self) -> &mut Self::Target {
32508         &mut self.inner
32509     }
32510 }
32511 impl<'a> GeometryNVBuilder<'a> {
geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self32512     pub fn geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self {
32513         self.inner.geometry_type = geometry_type;
32514         self
32515     }
geometry(mut self, geometry: GeometryDataNV) -> Self32516     pub fn geometry(mut self, geometry: GeometryDataNV) -> Self {
32517         self.inner.geometry = geometry;
32518         self
32519     }
flags(mut self, flags: GeometryFlagsKHR) -> Self32520     pub fn flags(mut self, flags: GeometryFlagsKHR) -> Self {
32521         self.inner.flags = flags;
32522         self
32523     }
32524     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32525     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32526     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> GeometryNV32527     pub fn build(self) -> GeometryNV {
32528         self.inner
32529     }
32530 }
32531 #[repr(C)]
32532 #[cfg_attr(feature = "debug", derive(Debug))]
32533 #[derive(Copy, Clone)]
32534 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureInfoNV.html>"]
32535 pub struct AccelerationStructureInfoNV {
32536     pub s_type: StructureType,
32537     pub p_next: *const c_void,
32538     pub ty: AccelerationStructureTypeNV,
32539     pub flags: BuildAccelerationStructureFlagsNV,
32540     pub instance_count: u32,
32541     pub geometry_count: u32,
32542     pub p_geometries: *const GeometryNV,
32543 }
32544 impl ::std::default::Default for AccelerationStructureInfoNV {
default() -> Self32545     fn default() -> Self {
32546         Self {
32547             s_type: StructureType::ACCELERATION_STRUCTURE_INFO_NV,
32548             p_next: ::std::ptr::null(),
32549             ty: AccelerationStructureTypeNV::default(),
32550             flags: BuildAccelerationStructureFlagsNV::default(),
32551             instance_count: u32::default(),
32552             geometry_count: u32::default(),
32553             p_geometries: ::std::ptr::null(),
32554         }
32555     }
32556 }
32557 impl AccelerationStructureInfoNV {
builder<'a>() -> AccelerationStructureInfoNVBuilder<'a>32558     pub fn builder<'a>() -> AccelerationStructureInfoNVBuilder<'a> {
32559         AccelerationStructureInfoNVBuilder {
32560             inner: Self::default(),
32561             marker: ::std::marker::PhantomData,
32562         }
32563     }
32564 }
32565 #[repr(transparent)]
32566 pub struct AccelerationStructureInfoNVBuilder<'a> {
32567     inner: AccelerationStructureInfoNV,
32568     marker: ::std::marker::PhantomData<&'a ()>,
32569 }
32570 impl<'a> ::std::ops::Deref for AccelerationStructureInfoNVBuilder<'a> {
32571     type Target = AccelerationStructureInfoNV;
deref(&self) -> &Self::Target32572     fn deref(&self) -> &Self::Target {
32573         &self.inner
32574     }
32575 }
32576 impl<'a> ::std::ops::DerefMut for AccelerationStructureInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32577     fn deref_mut(&mut self) -> &mut Self::Target {
32578         &mut self.inner
32579     }
32580 }
32581 impl<'a> AccelerationStructureInfoNVBuilder<'a> {
ty(mut self, ty: AccelerationStructureTypeNV) -> Self32582     pub fn ty(mut self, ty: AccelerationStructureTypeNV) -> Self {
32583         self.inner.ty = ty;
32584         self
32585     }
flags(mut self, flags: BuildAccelerationStructureFlagsNV) -> Self32586     pub fn flags(mut self, flags: BuildAccelerationStructureFlagsNV) -> Self {
32587         self.inner.flags = flags;
32588         self
32589     }
instance_count(mut self, instance_count: u32) -> Self32590     pub fn instance_count(mut self, instance_count: u32) -> Self {
32591         self.inner.instance_count = instance_count;
32592         self
32593     }
geometries(mut self, geometries: &'a [GeometryNV]) -> Self32594     pub fn geometries(mut self, geometries: &'a [GeometryNV]) -> Self {
32595         self.inner.geometry_count = geometries.len() as _;
32596         self.inner.p_geometries = geometries.as_ptr();
32597         self
32598     }
32599     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32600     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32601     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureInfoNV32602     pub fn build(self) -> AccelerationStructureInfoNV {
32603         self.inner
32604     }
32605 }
32606 #[repr(C)]
32607 #[cfg_attr(feature = "debug", derive(Debug))]
32608 #[derive(Copy, Clone)]
32609 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureCreateInfoNV.html>"]
32610 pub struct AccelerationStructureCreateInfoNV {
32611     pub s_type: StructureType,
32612     pub p_next: *const c_void,
32613     pub compacted_size: DeviceSize,
32614     pub info: AccelerationStructureInfoNV,
32615 }
32616 impl ::std::default::Default for AccelerationStructureCreateInfoNV {
default() -> Self32617     fn default() -> Self {
32618         Self {
32619             s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV,
32620             p_next: ::std::ptr::null(),
32621             compacted_size: DeviceSize::default(),
32622             info: AccelerationStructureInfoNV::default(),
32623         }
32624     }
32625 }
32626 impl AccelerationStructureCreateInfoNV {
builder<'a>() -> AccelerationStructureCreateInfoNVBuilder<'a>32627     pub fn builder<'a>() -> AccelerationStructureCreateInfoNVBuilder<'a> {
32628         AccelerationStructureCreateInfoNVBuilder {
32629             inner: Self::default(),
32630             marker: ::std::marker::PhantomData,
32631         }
32632     }
32633 }
32634 #[repr(transparent)]
32635 pub struct AccelerationStructureCreateInfoNVBuilder<'a> {
32636     inner: AccelerationStructureCreateInfoNV,
32637     marker: ::std::marker::PhantomData<&'a ()>,
32638 }
32639 impl<'a> ::std::ops::Deref for AccelerationStructureCreateInfoNVBuilder<'a> {
32640     type Target = AccelerationStructureCreateInfoNV;
deref(&self) -> &Self::Target32641     fn deref(&self) -> &Self::Target {
32642         &self.inner
32643     }
32644 }
32645 impl<'a> ::std::ops::DerefMut for AccelerationStructureCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32646     fn deref_mut(&mut self) -> &mut Self::Target {
32647         &mut self.inner
32648     }
32649 }
32650 impl<'a> AccelerationStructureCreateInfoNVBuilder<'a> {
compacted_size(mut self, compacted_size: DeviceSize) -> Self32651     pub fn compacted_size(mut self, compacted_size: DeviceSize) -> Self {
32652         self.inner.compacted_size = compacted_size;
32653         self
32654     }
info(mut self, info: AccelerationStructureInfoNV) -> Self32655     pub fn info(mut self, info: AccelerationStructureInfoNV) -> Self {
32656         self.inner.info = info;
32657         self
32658     }
32659     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32660     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32661     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureCreateInfoNV32662     pub fn build(self) -> AccelerationStructureCreateInfoNV {
32663         self.inner
32664     }
32665 }
32666 #[repr(C)]
32667 #[cfg_attr(feature = "debug", derive(Debug))]
32668 #[derive(Copy, Clone)]
32669 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindAccelerationStructureMemoryInfoNV.html>"]
32670 pub struct BindAccelerationStructureMemoryInfoNV {
32671     pub s_type: StructureType,
32672     pub p_next: *const c_void,
32673     pub acceleration_structure: AccelerationStructureNV,
32674     pub memory: DeviceMemory,
32675     pub memory_offset: DeviceSize,
32676     pub device_index_count: u32,
32677     pub p_device_indices: *const u32,
32678 }
32679 impl ::std::default::Default for BindAccelerationStructureMemoryInfoNV {
default() -> Self32680     fn default() -> Self {
32681         Self {
32682             s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
32683             p_next: ::std::ptr::null(),
32684             acceleration_structure: AccelerationStructureNV::default(),
32685             memory: DeviceMemory::default(),
32686             memory_offset: DeviceSize::default(),
32687             device_index_count: u32::default(),
32688             p_device_indices: ::std::ptr::null(),
32689         }
32690     }
32691 }
32692 impl BindAccelerationStructureMemoryInfoNV {
builder<'a>() -> BindAccelerationStructureMemoryInfoNVBuilder<'a>32693     pub fn builder<'a>() -> BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32694         BindAccelerationStructureMemoryInfoNVBuilder {
32695             inner: Self::default(),
32696             marker: ::std::marker::PhantomData,
32697         }
32698     }
32699 }
32700 #[repr(transparent)]
32701 pub struct BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32702     inner: BindAccelerationStructureMemoryInfoNV,
32703     marker: ::std::marker::PhantomData<&'a ()>,
32704 }
32705 impl<'a> ::std::ops::Deref for BindAccelerationStructureMemoryInfoNVBuilder<'a> {
32706     type Target = BindAccelerationStructureMemoryInfoNV;
deref(&self) -> &Self::Target32707     fn deref(&self) -> &Self::Target {
32708         &self.inner
32709     }
32710 }
32711 impl<'a> ::std::ops::DerefMut for BindAccelerationStructureMemoryInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32712     fn deref_mut(&mut self) -> &mut Self::Target {
32713         &mut self.inner
32714     }
32715 }
32716 impl<'a> BindAccelerationStructureMemoryInfoNVBuilder<'a> {
acceleration_structure( mut self, acceleration_structure: AccelerationStructureNV, ) -> Self32717     pub fn acceleration_structure(
32718         mut self,
32719         acceleration_structure: AccelerationStructureNV,
32720     ) -> Self {
32721         self.inner.acceleration_structure = acceleration_structure;
32722         self
32723     }
memory(mut self, memory: DeviceMemory) -> Self32724     pub fn memory(mut self, memory: DeviceMemory) -> Self {
32725         self.inner.memory = memory;
32726         self
32727     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self32728     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
32729         self.inner.memory_offset = memory_offset;
32730         self
32731     }
device_indices(mut self, device_indices: &'a [u32]) -> Self32732     pub fn device_indices(mut self, device_indices: &'a [u32]) -> Self {
32733         self.inner.device_index_count = device_indices.len() as _;
32734         self.inner.p_device_indices = device_indices.as_ptr();
32735         self
32736     }
32737     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32738     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32739     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BindAccelerationStructureMemoryInfoNV32740     pub fn build(self) -> BindAccelerationStructureMemoryInfoNV {
32741         self.inner
32742     }
32743 }
32744 #[repr(C)]
32745 #[cfg_attr(feature = "debug", derive(Debug))]
32746 #[derive(Copy, Clone)]
32747 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>"]
32748 pub struct WriteDescriptorSetAccelerationStructureKHR {
32749     pub s_type: StructureType,
32750     pub p_next: *const c_void,
32751     pub acceleration_structure_count: u32,
32752     pub p_acceleration_structures: *const AccelerationStructureKHR,
32753 }
32754 impl ::std::default::Default for WriteDescriptorSetAccelerationStructureKHR {
default() -> Self32755     fn default() -> Self {
32756         Self {
32757             s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
32758             p_next: ::std::ptr::null(),
32759             acceleration_structure_count: u32::default(),
32760             p_acceleration_structures: ::std::ptr::null(),
32761         }
32762     }
32763 }
32764 impl WriteDescriptorSetAccelerationStructureKHR {
builder<'a>() -> WriteDescriptorSetAccelerationStructureKHRBuilder<'a>32765     pub fn builder<'a>() -> WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32766         WriteDescriptorSetAccelerationStructureKHRBuilder {
32767             inner: Self::default(),
32768             marker: ::std::marker::PhantomData,
32769         }
32770     }
32771 }
32772 #[repr(transparent)]
32773 pub struct WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32774     inner: WriteDescriptorSetAccelerationStructureKHR,
32775     marker: ::std::marker::PhantomData<&'a ()>,
32776 }
32777 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureKHRBuilder<'_> {}
32778 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureKHR {}
32779 impl<'a> ::std::ops::Deref for WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
32780     type Target = WriteDescriptorSetAccelerationStructureKHR;
deref(&self) -> &Self::Target32781     fn deref(&self) -> &Self::Target {
32782         &self.inner
32783     }
32784 }
32785 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32786     fn deref_mut(&mut self) -> &mut Self::Target {
32787         &mut self.inner
32788     }
32789 }
32790 impl<'a> WriteDescriptorSetAccelerationStructureKHRBuilder<'a> {
acceleration_structures( mut self, acceleration_structures: &'a [AccelerationStructureKHR], ) -> Self32791     pub fn acceleration_structures(
32792         mut self,
32793         acceleration_structures: &'a [AccelerationStructureKHR],
32794     ) -> Self {
32795         self.inner.acceleration_structure_count = acceleration_structures.len() as _;
32796         self.inner.p_acceleration_structures = acceleration_structures.as_ptr();
32797         self
32798     }
32799     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32800     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32801     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSetAccelerationStructureKHR32802     pub fn build(self) -> WriteDescriptorSetAccelerationStructureKHR {
32803         self.inner
32804     }
32805 }
32806 #[repr(C)]
32807 #[cfg_attr(feature = "debug", derive(Debug))]
32808 #[derive(Copy, Clone)]
32809 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>"]
32810 pub struct WriteDescriptorSetAccelerationStructureNV {
32811     pub s_type: StructureType,
32812     pub p_next: *const c_void,
32813     pub acceleration_structure_count: u32,
32814     pub p_acceleration_structures: *const AccelerationStructureNV,
32815 }
32816 impl ::std::default::Default for WriteDescriptorSetAccelerationStructureNV {
default() -> Self32817     fn default() -> Self {
32818         Self {
32819             s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
32820             p_next: ::std::ptr::null(),
32821             acceleration_structure_count: u32::default(),
32822             p_acceleration_structures: ::std::ptr::null(),
32823         }
32824     }
32825 }
32826 impl WriteDescriptorSetAccelerationStructureNV {
builder<'a>() -> WriteDescriptorSetAccelerationStructureNVBuilder<'a>32827     pub fn builder<'a>() -> WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32828         WriteDescriptorSetAccelerationStructureNVBuilder {
32829             inner: Self::default(),
32830             marker: ::std::marker::PhantomData,
32831         }
32832     }
32833 }
32834 #[repr(transparent)]
32835 pub struct WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32836     inner: WriteDescriptorSetAccelerationStructureNV,
32837     marker: ::std::marker::PhantomData<&'a ()>,
32838 }
32839 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureNVBuilder<'_> {}
32840 unsafe impl ExtendsWriteDescriptorSet for WriteDescriptorSetAccelerationStructureNV {}
32841 impl<'a> ::std::ops::Deref for WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
32842     type Target = WriteDescriptorSetAccelerationStructureNV;
deref(&self) -> &Self::Target32843     fn deref(&self) -> &Self::Target {
32844         &self.inner
32845     }
32846 }
32847 impl<'a> ::std::ops::DerefMut for WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32848     fn deref_mut(&mut self) -> &mut Self::Target {
32849         &mut self.inner
32850     }
32851 }
32852 impl<'a> WriteDescriptorSetAccelerationStructureNVBuilder<'a> {
acceleration_structures( mut self, acceleration_structures: &'a [AccelerationStructureNV], ) -> Self32853     pub fn acceleration_structures(
32854         mut self,
32855         acceleration_structures: &'a [AccelerationStructureNV],
32856     ) -> Self {
32857         self.inner.acceleration_structure_count = acceleration_structures.len() as _;
32858         self.inner.p_acceleration_structures = acceleration_structures.as_ptr();
32859         self
32860     }
32861     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32862     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32863     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> WriteDescriptorSetAccelerationStructureNV32864     pub fn build(self) -> WriteDescriptorSetAccelerationStructureNV {
32865         self.inner
32866     }
32867 }
32868 #[repr(C)]
32869 #[cfg_attr(feature = "debug", derive(Debug))]
32870 #[derive(Copy, Clone)]
32871 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMemoryRequirementsInfoNV.html>"]
32872 pub struct AccelerationStructureMemoryRequirementsInfoNV {
32873     pub s_type: StructureType,
32874     pub p_next: *const c_void,
32875     pub ty: AccelerationStructureMemoryRequirementsTypeNV,
32876     pub acceleration_structure: AccelerationStructureNV,
32877 }
32878 impl ::std::default::Default for AccelerationStructureMemoryRequirementsInfoNV {
default() -> Self32879     fn default() -> Self {
32880         Self {
32881             s_type: StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
32882             p_next: ::std::ptr::null(),
32883             ty: AccelerationStructureMemoryRequirementsTypeNV::default(),
32884             acceleration_structure: AccelerationStructureNV::default(),
32885         }
32886     }
32887 }
32888 impl AccelerationStructureMemoryRequirementsInfoNV {
builder<'a>() -> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a>32889     pub fn builder<'a>() -> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32890         AccelerationStructureMemoryRequirementsInfoNVBuilder {
32891             inner: Self::default(),
32892             marker: ::std::marker::PhantomData,
32893         }
32894     }
32895 }
32896 #[repr(transparent)]
32897 pub struct AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32898     inner: AccelerationStructureMemoryRequirementsInfoNV,
32899     marker: ::std::marker::PhantomData<&'a ()>,
32900 }
32901 impl<'a> ::std::ops::Deref for AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
32902     type Target = AccelerationStructureMemoryRequirementsInfoNV;
deref(&self) -> &Self::Target32903     fn deref(&self) -> &Self::Target {
32904         &self.inner
32905     }
32906 }
32907 impl<'a> ::std::ops::DerefMut for AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32908     fn deref_mut(&mut self) -> &mut Self::Target {
32909         &mut self.inner
32910     }
32911 }
32912 impl<'a> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> {
ty(mut self, ty: AccelerationStructureMemoryRequirementsTypeNV) -> Self32913     pub fn ty(mut self, ty: AccelerationStructureMemoryRequirementsTypeNV) -> Self {
32914         self.inner.ty = ty;
32915         self
32916     }
acceleration_structure( mut self, acceleration_structure: AccelerationStructureNV, ) -> Self32917     pub fn acceleration_structure(
32918         mut self,
32919         acceleration_structure: AccelerationStructureNV,
32920     ) -> Self {
32921         self.inner.acceleration_structure = acceleration_structure;
32922         self
32923     }
32924     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
32925     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
32926     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureMemoryRequirementsInfoNV32927     pub fn build(self) -> AccelerationStructureMemoryRequirementsInfoNV {
32928         self.inner
32929     }
32930 }
32931 #[repr(C)]
32932 #[cfg_attr(feature = "debug", derive(Debug))]
32933 #[derive(Copy, Clone)]
32934 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>"]
32935 pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
32936     pub s_type: StructureType,
32937     pub p_next: *mut c_void,
32938     pub acceleration_structure: Bool32,
32939     pub acceleration_structure_capture_replay: Bool32,
32940     pub acceleration_structure_indirect_build: Bool32,
32941     pub acceleration_structure_host_commands: Bool32,
32942     pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
32943 }
32944 impl ::std::default::Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
default() -> Self32945     fn default() -> Self {
32946         Self {
32947             s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
32948             p_next: ::std::ptr::null_mut(),
32949             acceleration_structure: Bool32::default(),
32950             acceleration_structure_capture_replay: Bool32::default(),
32951             acceleration_structure_indirect_build: Bool32::default(),
32952             acceleration_structure_host_commands: Bool32::default(),
32953             descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
32954         }
32955     }
32956 }
32957 impl PhysicalDeviceAccelerationStructureFeaturesKHR {
builder<'a>() -> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a>32958     pub fn builder<'a>() -> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32959         PhysicalDeviceAccelerationStructureFeaturesKHRBuilder {
32960             inner: Self::default(),
32961             marker: ::std::marker::PhantomData,
32962         }
32963     }
32964 }
32965 #[repr(transparent)]
32966 pub struct PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32967     inner: PhysicalDeviceAccelerationStructureFeaturesKHR,
32968     marker: ::std::marker::PhantomData<&'a ()>,
32969 }
32970 unsafe impl ExtendsPhysicalDeviceFeatures2
32971     for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'_>
32972 {
32973 }
32974 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceAccelerationStructureFeaturesKHR {}
32975 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'_> {}
32976 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceAccelerationStructureFeaturesKHR {}
32977 impl<'a> ::std::ops::Deref for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
32978     type Target = PhysicalDeviceAccelerationStructureFeaturesKHR;
deref(&self) -> &Self::Target32979     fn deref(&self) -> &Self::Target {
32980         &self.inner
32981     }
32982 }
32983 impl<'a> ::std::ops::DerefMut for PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target32984     fn deref_mut(&mut self) -> &mut Self::Target {
32985         &mut self.inner
32986     }
32987 }
32988 impl<'a> PhysicalDeviceAccelerationStructureFeaturesKHRBuilder<'a> {
acceleration_structure(mut self, acceleration_structure: bool) -> Self32989     pub fn acceleration_structure(mut self, acceleration_structure: bool) -> Self {
32990         self.inner.acceleration_structure = acceleration_structure.into();
32991         self
32992     }
acceleration_structure_capture_replay( mut self, acceleration_structure_capture_replay: bool, ) -> Self32993     pub fn acceleration_structure_capture_replay(
32994         mut self,
32995         acceleration_structure_capture_replay: bool,
32996     ) -> Self {
32997         self.inner.acceleration_structure_capture_replay =
32998             acceleration_structure_capture_replay.into();
32999         self
33000     }
acceleration_structure_indirect_build( mut self, acceleration_structure_indirect_build: bool, ) -> Self33001     pub fn acceleration_structure_indirect_build(
33002         mut self,
33003         acceleration_structure_indirect_build: bool,
33004     ) -> Self {
33005         self.inner.acceleration_structure_indirect_build =
33006             acceleration_structure_indirect_build.into();
33007         self
33008     }
acceleration_structure_host_commands( mut self, acceleration_structure_host_commands: bool, ) -> Self33009     pub fn acceleration_structure_host_commands(
33010         mut self,
33011         acceleration_structure_host_commands: bool,
33012     ) -> Self {
33013         self.inner.acceleration_structure_host_commands =
33014             acceleration_structure_host_commands.into();
33015         self
33016     }
descriptor_binding_acceleration_structure_update_after_bind( mut self, descriptor_binding_acceleration_structure_update_after_bind: bool, ) -> Self33017     pub fn descriptor_binding_acceleration_structure_update_after_bind(
33018         mut self,
33019         descriptor_binding_acceleration_structure_update_after_bind: bool,
33020     ) -> Self {
33021         self.inner
33022             .descriptor_binding_acceleration_structure_update_after_bind =
33023             descriptor_binding_acceleration_structure_update_after_bind.into();
33024         self
33025     }
33026     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33027     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33028     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceAccelerationStructureFeaturesKHR33029     pub fn build(self) -> PhysicalDeviceAccelerationStructureFeaturesKHR {
33030         self.inner
33031     }
33032 }
33033 #[repr(C)]
33034 #[cfg_attr(feature = "debug", derive(Debug))]
33035 #[derive(Copy, Clone)]
33036 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>"]
33037 pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
33038     pub s_type: StructureType,
33039     pub p_next: *mut c_void,
33040     pub ray_tracing_pipeline: Bool32,
33041     pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
33042     pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
33043     pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
33044     pub ray_traversal_primitive_culling: Bool32,
33045 }
33046 impl ::std::default::Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
default() -> Self33047     fn default() -> Self {
33048         Self {
33049             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
33050             p_next: ::std::ptr::null_mut(),
33051             ray_tracing_pipeline: Bool32::default(),
33052             ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
33053             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
33054             ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
33055             ray_traversal_primitive_culling: Bool32::default(),
33056         }
33057     }
33058 }
33059 impl PhysicalDeviceRayTracingPipelineFeaturesKHR {
builder<'a>() -> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a>33060     pub fn builder<'a>() -> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
33061         PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder {
33062             inner: Self::default(),
33063             marker: ::std::marker::PhantomData,
33064         }
33065     }
33066 }
33067 #[repr(transparent)]
33068 pub struct PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
33069     inner: PhysicalDeviceRayTracingPipelineFeaturesKHR,
33070     marker: ::std::marker::PhantomData<&'a ()>,
33071 }
33072 unsafe impl ExtendsPhysicalDeviceFeatures2
33073     for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'_>
33074 {
33075 }
33076 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
33077 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'_> {}
33078 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
33079 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
33080     type Target = PhysicalDeviceRayTracingPipelineFeaturesKHR;
deref(&self) -> &Self::Target33081     fn deref(&self) -> &Self::Target {
33082         &self.inner
33083     }
33084 }
33085 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33086     fn deref_mut(&mut self) -> &mut Self::Target {
33087         &mut self.inner
33088     }
33089 }
33090 impl<'a> PhysicalDeviceRayTracingPipelineFeaturesKHRBuilder<'a> {
ray_tracing_pipeline(mut self, ray_tracing_pipeline: bool) -> Self33091     pub fn ray_tracing_pipeline(mut self, ray_tracing_pipeline: bool) -> Self {
33092         self.inner.ray_tracing_pipeline = ray_tracing_pipeline.into();
33093         self
33094     }
ray_tracing_pipeline_shader_group_handle_capture_replay( mut self, ray_tracing_pipeline_shader_group_handle_capture_replay: bool, ) -> Self33095     pub fn ray_tracing_pipeline_shader_group_handle_capture_replay(
33096         mut self,
33097         ray_tracing_pipeline_shader_group_handle_capture_replay: bool,
33098     ) -> Self {
33099         self.inner
33100             .ray_tracing_pipeline_shader_group_handle_capture_replay =
33101             ray_tracing_pipeline_shader_group_handle_capture_replay.into();
33102         self
33103     }
ray_tracing_pipeline_shader_group_handle_capture_replay_mixed( mut self, ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool, ) -> Self33104     pub fn ray_tracing_pipeline_shader_group_handle_capture_replay_mixed(
33105         mut self,
33106         ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool,
33107     ) -> Self {
33108         self.inner
33109             .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed =
33110             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed.into();
33111         self
33112     }
ray_tracing_pipeline_trace_rays_indirect( mut self, ray_tracing_pipeline_trace_rays_indirect: bool, ) -> Self33113     pub fn ray_tracing_pipeline_trace_rays_indirect(
33114         mut self,
33115         ray_tracing_pipeline_trace_rays_indirect: bool,
33116     ) -> Self {
33117         self.inner.ray_tracing_pipeline_trace_rays_indirect =
33118             ray_tracing_pipeline_trace_rays_indirect.into();
33119         self
33120     }
ray_traversal_primitive_culling( mut self, ray_traversal_primitive_culling: bool, ) -> Self33121     pub fn ray_traversal_primitive_culling(
33122         mut self,
33123         ray_traversal_primitive_culling: bool,
33124     ) -> Self {
33125         self.inner.ray_traversal_primitive_culling = ray_traversal_primitive_culling.into();
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) -> PhysicalDeviceRayTracingPipelineFeaturesKHR33131     pub fn build(self) -> PhysicalDeviceRayTracingPipelineFeaturesKHR {
33132         self.inner
33133     }
33134 }
33135 #[repr(C)]
33136 #[cfg_attr(feature = "debug", derive(Debug))]
33137 #[derive(Copy, Clone)]
33138 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>"]
33139 pub struct PhysicalDeviceRayQueryFeaturesKHR {
33140     pub s_type: StructureType,
33141     pub p_next: *mut c_void,
33142     pub ray_query: Bool32,
33143 }
33144 impl ::std::default::Default for PhysicalDeviceRayQueryFeaturesKHR {
default() -> Self33145     fn default() -> Self {
33146         Self {
33147             s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
33148             p_next: ::std::ptr::null_mut(),
33149             ray_query: Bool32::default(),
33150         }
33151     }
33152 }
33153 impl PhysicalDeviceRayQueryFeaturesKHR {
builder<'a>() -> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a>33154     pub fn builder<'a>() -> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
33155         PhysicalDeviceRayQueryFeaturesKHRBuilder {
33156             inner: Self::default(),
33157             marker: ::std::marker::PhantomData,
33158         }
33159     }
33160 }
33161 #[repr(transparent)]
33162 pub struct PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
33163     inner: PhysicalDeviceRayQueryFeaturesKHR,
33164     marker: ::std::marker::PhantomData<&'a ()>,
33165 }
33166 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayQueryFeaturesKHRBuilder<'_> {}
33167 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayQueryFeaturesKHR {}
33168 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayQueryFeaturesKHRBuilder<'_> {}
33169 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayQueryFeaturesKHR {}
33170 impl<'a> ::std::ops::Deref for PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
33171     type Target = PhysicalDeviceRayQueryFeaturesKHR;
deref(&self) -> &Self::Target33172     fn deref(&self) -> &Self::Target {
33173         &self.inner
33174     }
33175 }
33176 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33177     fn deref_mut(&mut self) -> &mut Self::Target {
33178         &mut self.inner
33179     }
33180 }
33181 impl<'a> PhysicalDeviceRayQueryFeaturesKHRBuilder<'a> {
ray_query(mut self, ray_query: bool) -> Self33182     pub fn ray_query(mut self, ray_query: bool) -> Self {
33183         self.inner.ray_query = ray_query.into();
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) -> PhysicalDeviceRayQueryFeaturesKHR33189     pub fn build(self) -> PhysicalDeviceRayQueryFeaturesKHR {
33190         self.inner
33191     }
33192 }
33193 #[repr(C)]
33194 #[cfg_attr(feature = "debug", derive(Debug))]
33195 #[derive(Copy, Clone)]
33196 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>"]
33197 pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
33198     pub s_type: StructureType,
33199     pub p_next: *mut c_void,
33200     pub max_geometry_count: u64,
33201     pub max_instance_count: u64,
33202     pub max_primitive_count: u64,
33203     pub max_per_stage_descriptor_acceleration_structures: u32,
33204     pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
33205     pub max_descriptor_set_acceleration_structures: u32,
33206     pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
33207     pub min_acceleration_structure_scratch_offset_alignment: u32,
33208 }
33209 impl ::std::default::Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
default() -> Self33210     fn default() -> Self {
33211         Self {
33212             s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
33213             p_next: ::std::ptr::null_mut(),
33214             max_geometry_count: u64::default(),
33215             max_instance_count: u64::default(),
33216             max_primitive_count: u64::default(),
33217             max_per_stage_descriptor_acceleration_structures: u32::default(),
33218             max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
33219             max_descriptor_set_acceleration_structures: u32::default(),
33220             max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
33221             min_acceleration_structure_scratch_offset_alignment: u32::default(),
33222         }
33223     }
33224 }
33225 impl PhysicalDeviceAccelerationStructurePropertiesKHR {
builder<'a>() -> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a>33226     pub fn builder<'a>() -> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
33227         PhysicalDeviceAccelerationStructurePropertiesKHRBuilder {
33228             inner: Self::default(),
33229             marker: ::std::marker::PhantomData,
33230         }
33231     }
33232 }
33233 #[repr(transparent)]
33234 pub struct PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
33235     inner: PhysicalDeviceAccelerationStructurePropertiesKHR,
33236     marker: ::std::marker::PhantomData<&'a ()>,
33237 }
33238 unsafe impl ExtendsPhysicalDeviceProperties2
33239     for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'_>
33240 {
33241 }
33242 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceAccelerationStructurePropertiesKHR {}
33243 impl<'a> ::std::ops::Deref for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
33244     type Target = PhysicalDeviceAccelerationStructurePropertiesKHR;
deref(&self) -> &Self::Target33245     fn deref(&self) -> &Self::Target {
33246         &self.inner
33247     }
33248 }
33249 impl<'a> ::std::ops::DerefMut for PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33250     fn deref_mut(&mut self) -> &mut Self::Target {
33251         &mut self.inner
33252     }
33253 }
33254 impl<'a> PhysicalDeviceAccelerationStructurePropertiesKHRBuilder<'a> {
max_geometry_count(mut self, max_geometry_count: u64) -> Self33255     pub fn max_geometry_count(mut self, max_geometry_count: u64) -> Self {
33256         self.inner.max_geometry_count = max_geometry_count;
33257         self
33258     }
max_instance_count(mut self, max_instance_count: u64) -> Self33259     pub fn max_instance_count(mut self, max_instance_count: u64) -> Self {
33260         self.inner.max_instance_count = max_instance_count;
33261         self
33262     }
max_primitive_count(mut self, max_primitive_count: u64) -> Self33263     pub fn max_primitive_count(mut self, max_primitive_count: u64) -> Self {
33264         self.inner.max_primitive_count = max_primitive_count;
33265         self
33266     }
max_per_stage_descriptor_acceleration_structures( mut self, max_per_stage_descriptor_acceleration_structures: u32, ) -> Self33267     pub fn max_per_stage_descriptor_acceleration_structures(
33268         mut self,
33269         max_per_stage_descriptor_acceleration_structures: u32,
33270     ) -> Self {
33271         self.inner.max_per_stage_descriptor_acceleration_structures =
33272             max_per_stage_descriptor_acceleration_structures;
33273         self
33274     }
max_per_stage_descriptor_update_after_bind_acceleration_structures( mut self, max_per_stage_descriptor_update_after_bind_acceleration_structures: u32, ) -> Self33275     pub fn max_per_stage_descriptor_update_after_bind_acceleration_structures(
33276         mut self,
33277         max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
33278     ) -> Self {
33279         self.inner
33280             .max_per_stage_descriptor_update_after_bind_acceleration_structures =
33281             max_per_stage_descriptor_update_after_bind_acceleration_structures;
33282         self
33283     }
max_descriptor_set_acceleration_structures( mut self, max_descriptor_set_acceleration_structures: u32, ) -> Self33284     pub fn max_descriptor_set_acceleration_structures(
33285         mut self,
33286         max_descriptor_set_acceleration_structures: u32,
33287     ) -> Self {
33288         self.inner.max_descriptor_set_acceleration_structures =
33289             max_descriptor_set_acceleration_structures;
33290         self
33291     }
max_descriptor_set_update_after_bind_acceleration_structures( mut self, max_descriptor_set_update_after_bind_acceleration_structures: u32, ) -> Self33292     pub fn max_descriptor_set_update_after_bind_acceleration_structures(
33293         mut self,
33294         max_descriptor_set_update_after_bind_acceleration_structures: u32,
33295     ) -> Self {
33296         self.inner
33297             .max_descriptor_set_update_after_bind_acceleration_structures =
33298             max_descriptor_set_update_after_bind_acceleration_structures;
33299         self
33300     }
min_acceleration_structure_scratch_offset_alignment( mut self, min_acceleration_structure_scratch_offset_alignment: u32, ) -> Self33301     pub fn min_acceleration_structure_scratch_offset_alignment(
33302         mut self,
33303         min_acceleration_structure_scratch_offset_alignment: u32,
33304     ) -> Self {
33305         self.inner
33306             .min_acceleration_structure_scratch_offset_alignment =
33307             min_acceleration_structure_scratch_offset_alignment;
33308         self
33309     }
33310     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33311     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33312     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceAccelerationStructurePropertiesKHR33313     pub fn build(self) -> PhysicalDeviceAccelerationStructurePropertiesKHR {
33314         self.inner
33315     }
33316 }
33317 #[repr(C)]
33318 #[cfg_attr(feature = "debug", derive(Debug))]
33319 #[derive(Copy, Clone)]
33320 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>"]
33321 pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
33322     pub s_type: StructureType,
33323     pub p_next: *mut c_void,
33324     pub shader_group_handle_size: u32,
33325     pub max_ray_recursion_depth: u32,
33326     pub max_shader_group_stride: u32,
33327     pub shader_group_base_alignment: u32,
33328     pub shader_group_handle_capture_replay_size: u32,
33329     pub max_ray_dispatch_invocation_count: u32,
33330     pub shader_group_handle_alignment: u32,
33331     pub max_ray_hit_attribute_size: u32,
33332 }
33333 impl ::std::default::Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
default() -> Self33334     fn default() -> Self {
33335         Self {
33336             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
33337             p_next: ::std::ptr::null_mut(),
33338             shader_group_handle_size: u32::default(),
33339             max_ray_recursion_depth: u32::default(),
33340             max_shader_group_stride: u32::default(),
33341             shader_group_base_alignment: u32::default(),
33342             shader_group_handle_capture_replay_size: u32::default(),
33343             max_ray_dispatch_invocation_count: u32::default(),
33344             shader_group_handle_alignment: u32::default(),
33345             max_ray_hit_attribute_size: u32::default(),
33346         }
33347     }
33348 }
33349 impl PhysicalDeviceRayTracingPipelinePropertiesKHR {
builder<'a>() -> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a>33350     pub fn builder<'a>() -> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
33351         PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder {
33352             inner: Self::default(),
33353             marker: ::std::marker::PhantomData,
33354         }
33355     }
33356 }
33357 #[repr(transparent)]
33358 pub struct PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
33359     inner: PhysicalDeviceRayTracingPipelinePropertiesKHR,
33360     marker: ::std::marker::PhantomData<&'a ()>,
33361 }
33362 unsafe impl ExtendsPhysicalDeviceProperties2
33363     for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'_>
33364 {
33365 }
33366 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
33367 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
33368     type Target = PhysicalDeviceRayTracingPipelinePropertiesKHR;
deref(&self) -> &Self::Target33369     fn deref(&self) -> &Self::Target {
33370         &self.inner
33371     }
33372 }
33373 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33374     fn deref_mut(&mut self) -> &mut Self::Target {
33375         &mut self.inner
33376     }
33377 }
33378 impl<'a> PhysicalDeviceRayTracingPipelinePropertiesKHRBuilder<'a> {
shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self33379     pub fn shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self {
33380         self.inner.shader_group_handle_size = shader_group_handle_size;
33381         self
33382     }
max_ray_recursion_depth(mut self, max_ray_recursion_depth: u32) -> Self33383     pub fn max_ray_recursion_depth(mut self, max_ray_recursion_depth: u32) -> Self {
33384         self.inner.max_ray_recursion_depth = max_ray_recursion_depth;
33385         self
33386     }
max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self33387     pub fn max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self {
33388         self.inner.max_shader_group_stride = max_shader_group_stride;
33389         self
33390     }
shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self33391     pub fn shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self {
33392         self.inner.shader_group_base_alignment = shader_group_base_alignment;
33393         self
33394     }
shader_group_handle_capture_replay_size( mut self, shader_group_handle_capture_replay_size: u32, ) -> Self33395     pub fn shader_group_handle_capture_replay_size(
33396         mut self,
33397         shader_group_handle_capture_replay_size: u32,
33398     ) -> Self {
33399         self.inner.shader_group_handle_capture_replay_size =
33400             shader_group_handle_capture_replay_size;
33401         self
33402     }
max_ray_dispatch_invocation_count( mut self, max_ray_dispatch_invocation_count: u32, ) -> Self33403     pub fn max_ray_dispatch_invocation_count(
33404         mut self,
33405         max_ray_dispatch_invocation_count: u32,
33406     ) -> Self {
33407         self.inner.max_ray_dispatch_invocation_count = max_ray_dispatch_invocation_count;
33408         self
33409     }
shader_group_handle_alignment(mut self, shader_group_handle_alignment: u32) -> Self33410     pub fn shader_group_handle_alignment(mut self, shader_group_handle_alignment: u32) -> Self {
33411         self.inner.shader_group_handle_alignment = shader_group_handle_alignment;
33412         self
33413     }
max_ray_hit_attribute_size(mut self, max_ray_hit_attribute_size: u32) -> Self33414     pub fn max_ray_hit_attribute_size(mut self, max_ray_hit_attribute_size: u32) -> Self {
33415         self.inner.max_ray_hit_attribute_size = max_ray_hit_attribute_size;
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) -> PhysicalDeviceRayTracingPipelinePropertiesKHR33421     pub fn build(self) -> PhysicalDeviceRayTracingPipelinePropertiesKHR {
33422         self.inner
33423     }
33424 }
33425 #[repr(C)]
33426 #[cfg_attr(feature = "debug", derive(Debug))]
33427 #[derive(Copy, Clone)]
33428 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>"]
33429 pub struct PhysicalDeviceRayTracingPropertiesNV {
33430     pub s_type: StructureType,
33431     pub p_next: *mut c_void,
33432     pub shader_group_handle_size: u32,
33433     pub max_recursion_depth: u32,
33434     pub max_shader_group_stride: u32,
33435     pub shader_group_base_alignment: u32,
33436     pub max_geometry_count: u64,
33437     pub max_instance_count: u64,
33438     pub max_triangle_count: u64,
33439     pub max_descriptor_set_acceleration_structures: u32,
33440 }
33441 impl ::std::default::Default for PhysicalDeviceRayTracingPropertiesNV {
default() -> Self33442     fn default() -> Self {
33443         Self {
33444             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
33445             p_next: ::std::ptr::null_mut(),
33446             shader_group_handle_size: u32::default(),
33447             max_recursion_depth: u32::default(),
33448             max_shader_group_stride: u32::default(),
33449             shader_group_base_alignment: u32::default(),
33450             max_geometry_count: u64::default(),
33451             max_instance_count: u64::default(),
33452             max_triangle_count: u64::default(),
33453             max_descriptor_set_acceleration_structures: u32::default(),
33454         }
33455     }
33456 }
33457 impl PhysicalDeviceRayTracingPropertiesNV {
builder<'a>() -> PhysicalDeviceRayTracingPropertiesNVBuilder<'a>33458     pub fn builder<'a>() -> PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33459         PhysicalDeviceRayTracingPropertiesNVBuilder {
33460             inner: Self::default(),
33461             marker: ::std::marker::PhantomData,
33462         }
33463     }
33464 }
33465 #[repr(transparent)]
33466 pub struct PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33467     inner: PhysicalDeviceRayTracingPropertiesNV,
33468     marker: ::std::marker::PhantomData<&'a ()>,
33469 }
33470 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPropertiesNVBuilder<'_> {}
33471 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRayTracingPropertiesNV {}
33472 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
33473     type Target = PhysicalDeviceRayTracingPropertiesNV;
deref(&self) -> &Self::Target33474     fn deref(&self) -> &Self::Target {
33475         &self.inner
33476     }
33477 }
33478 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33479     fn deref_mut(&mut self) -> &mut Self::Target {
33480         &mut self.inner
33481     }
33482 }
33483 impl<'a> PhysicalDeviceRayTracingPropertiesNVBuilder<'a> {
shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self33484     pub fn shader_group_handle_size(mut self, shader_group_handle_size: u32) -> Self {
33485         self.inner.shader_group_handle_size = shader_group_handle_size;
33486         self
33487     }
max_recursion_depth(mut self, max_recursion_depth: u32) -> Self33488     pub fn max_recursion_depth(mut self, max_recursion_depth: u32) -> Self {
33489         self.inner.max_recursion_depth = max_recursion_depth;
33490         self
33491     }
max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self33492     pub fn max_shader_group_stride(mut self, max_shader_group_stride: u32) -> Self {
33493         self.inner.max_shader_group_stride = max_shader_group_stride;
33494         self
33495     }
shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self33496     pub fn shader_group_base_alignment(mut self, shader_group_base_alignment: u32) -> Self {
33497         self.inner.shader_group_base_alignment = shader_group_base_alignment;
33498         self
33499     }
max_geometry_count(mut self, max_geometry_count: u64) -> Self33500     pub fn max_geometry_count(mut self, max_geometry_count: u64) -> Self {
33501         self.inner.max_geometry_count = max_geometry_count;
33502         self
33503     }
max_instance_count(mut self, max_instance_count: u64) -> Self33504     pub fn max_instance_count(mut self, max_instance_count: u64) -> Self {
33505         self.inner.max_instance_count = max_instance_count;
33506         self
33507     }
max_triangle_count(mut self, max_triangle_count: u64) -> Self33508     pub fn max_triangle_count(mut self, max_triangle_count: u64) -> Self {
33509         self.inner.max_triangle_count = max_triangle_count;
33510         self
33511     }
max_descriptor_set_acceleration_structures( mut self, max_descriptor_set_acceleration_structures: u32, ) -> Self33512     pub fn max_descriptor_set_acceleration_structures(
33513         mut self,
33514         max_descriptor_set_acceleration_structures: u32,
33515     ) -> Self {
33516         self.inner.max_descriptor_set_acceleration_structures =
33517             max_descriptor_set_acceleration_structures;
33518         self
33519     }
33520     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33521     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33522     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRayTracingPropertiesNV33523     pub fn build(self) -> PhysicalDeviceRayTracingPropertiesNV {
33524         self.inner
33525     }
33526 }
33527 #[repr(C)]
33528 #[cfg_attr(feature = "debug", derive(Debug))]
33529 #[derive(Copy, Clone, Default)]
33530 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStridedDeviceAddressRegionKHR.html>"]
33531 pub struct StridedDeviceAddressRegionKHR {
33532     pub device_address: DeviceAddress,
33533     pub stride: DeviceSize,
33534     pub size: DeviceSize,
33535 }
33536 impl StridedDeviceAddressRegionKHR {
builder<'a>() -> StridedDeviceAddressRegionKHRBuilder<'a>33537     pub fn builder<'a>() -> StridedDeviceAddressRegionKHRBuilder<'a> {
33538         StridedDeviceAddressRegionKHRBuilder {
33539             inner: Self::default(),
33540             marker: ::std::marker::PhantomData,
33541         }
33542     }
33543 }
33544 #[repr(transparent)]
33545 pub struct StridedDeviceAddressRegionKHRBuilder<'a> {
33546     inner: StridedDeviceAddressRegionKHR,
33547     marker: ::std::marker::PhantomData<&'a ()>,
33548 }
33549 impl<'a> ::std::ops::Deref for StridedDeviceAddressRegionKHRBuilder<'a> {
33550     type Target = StridedDeviceAddressRegionKHR;
deref(&self) -> &Self::Target33551     fn deref(&self) -> &Self::Target {
33552         &self.inner
33553     }
33554 }
33555 impl<'a> ::std::ops::DerefMut for StridedDeviceAddressRegionKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33556     fn deref_mut(&mut self) -> &mut Self::Target {
33557         &mut self.inner
33558     }
33559 }
33560 impl<'a> StridedDeviceAddressRegionKHRBuilder<'a> {
device_address(mut self, device_address: DeviceAddress) -> Self33561     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
33562         self.inner.device_address = device_address;
33563         self
33564     }
stride(mut self, stride: DeviceSize) -> Self33565     pub fn stride(mut self, stride: DeviceSize) -> Self {
33566         self.inner.stride = stride;
33567         self
33568     }
size(mut self, size: DeviceSize) -> Self33569     pub fn size(mut self, size: DeviceSize) -> Self {
33570         self.inner.size = size;
33571         self
33572     }
33573     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33574     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33575     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> StridedDeviceAddressRegionKHR33576     pub fn build(self) -> StridedDeviceAddressRegionKHR {
33577         self.inner
33578     }
33579 }
33580 #[repr(C)]
33581 #[cfg_attr(feature = "debug", derive(Debug))]
33582 #[derive(Copy, Clone, Default)]
33583 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTraceRaysIndirectCommandKHR.html>"]
33584 pub struct TraceRaysIndirectCommandKHR {
33585     pub width: u32,
33586     pub height: u32,
33587     pub depth: u32,
33588 }
33589 impl TraceRaysIndirectCommandKHR {
builder<'a>() -> TraceRaysIndirectCommandKHRBuilder<'a>33590     pub fn builder<'a>() -> TraceRaysIndirectCommandKHRBuilder<'a> {
33591         TraceRaysIndirectCommandKHRBuilder {
33592             inner: Self::default(),
33593             marker: ::std::marker::PhantomData,
33594         }
33595     }
33596 }
33597 #[repr(transparent)]
33598 pub struct TraceRaysIndirectCommandKHRBuilder<'a> {
33599     inner: TraceRaysIndirectCommandKHR,
33600     marker: ::std::marker::PhantomData<&'a ()>,
33601 }
33602 impl<'a> ::std::ops::Deref for TraceRaysIndirectCommandKHRBuilder<'a> {
33603     type Target = TraceRaysIndirectCommandKHR;
deref(&self) -> &Self::Target33604     fn deref(&self) -> &Self::Target {
33605         &self.inner
33606     }
33607 }
33608 impl<'a> ::std::ops::DerefMut for TraceRaysIndirectCommandKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33609     fn deref_mut(&mut self) -> &mut Self::Target {
33610         &mut self.inner
33611     }
33612 }
33613 impl<'a> TraceRaysIndirectCommandKHRBuilder<'a> {
width(mut self, width: u32) -> Self33614     pub fn width(mut self, width: u32) -> Self {
33615         self.inner.width = width;
33616         self
33617     }
height(mut self, height: u32) -> Self33618     pub fn height(mut self, height: u32) -> Self {
33619         self.inner.height = height;
33620         self
33621     }
depth(mut self, depth: u32) -> Self33622     pub fn depth(mut self, depth: u32) -> Self {
33623         self.inner.depth = depth;
33624         self
33625     }
33626     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33627     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33628     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> TraceRaysIndirectCommandKHR33629     pub fn build(self) -> TraceRaysIndirectCommandKHR {
33630         self.inner
33631     }
33632 }
33633 #[repr(C)]
33634 #[cfg_attr(feature = "debug", derive(Debug))]
33635 #[derive(Copy, Clone)]
33636 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrmFormatModifierPropertiesListEXT.html>"]
33637 pub struct DrmFormatModifierPropertiesListEXT {
33638     pub s_type: StructureType,
33639     pub p_next: *mut c_void,
33640     pub drm_format_modifier_count: u32,
33641     pub p_drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
33642 }
33643 impl ::std::default::Default for DrmFormatModifierPropertiesListEXT {
default() -> Self33644     fn default() -> Self {
33645         Self {
33646             s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
33647             p_next: ::std::ptr::null_mut(),
33648             drm_format_modifier_count: u32::default(),
33649             p_drm_format_modifier_properties: ::std::ptr::null_mut(),
33650         }
33651     }
33652 }
33653 impl DrmFormatModifierPropertiesListEXT {
builder<'a>() -> DrmFormatModifierPropertiesListEXTBuilder<'a>33654     pub fn builder<'a>() -> DrmFormatModifierPropertiesListEXTBuilder<'a> {
33655         DrmFormatModifierPropertiesListEXTBuilder {
33656             inner: Self::default(),
33657             marker: ::std::marker::PhantomData,
33658         }
33659     }
33660 }
33661 #[repr(transparent)]
33662 pub struct DrmFormatModifierPropertiesListEXTBuilder<'a> {
33663     inner: DrmFormatModifierPropertiesListEXT,
33664     marker: ::std::marker::PhantomData<&'a ()>,
33665 }
33666 unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesListEXTBuilder<'_> {}
33667 unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesListEXT {}
33668 impl<'a> ::std::ops::Deref for DrmFormatModifierPropertiesListEXTBuilder<'a> {
33669     type Target = DrmFormatModifierPropertiesListEXT;
deref(&self) -> &Self::Target33670     fn deref(&self) -> &Self::Target {
33671         &self.inner
33672     }
33673 }
33674 impl<'a> ::std::ops::DerefMut for DrmFormatModifierPropertiesListEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33675     fn deref_mut(&mut self) -> &mut Self::Target {
33676         &mut self.inner
33677     }
33678 }
33679 impl<'a> DrmFormatModifierPropertiesListEXTBuilder<'a> {
drm_format_modifier_properties( mut self, drm_format_modifier_properties: &'a mut [DrmFormatModifierPropertiesEXT], ) -> Self33680     pub fn drm_format_modifier_properties(
33681         mut self,
33682         drm_format_modifier_properties: &'a mut [DrmFormatModifierPropertiesEXT],
33683     ) -> Self {
33684         self.inner.drm_format_modifier_count = drm_format_modifier_properties.len() as _;
33685         self.inner.p_drm_format_modifier_properties = drm_format_modifier_properties.as_mut_ptr();
33686         self
33687     }
33688     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33689     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33690     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrmFormatModifierPropertiesListEXT33691     pub fn build(self) -> DrmFormatModifierPropertiesListEXT {
33692         self.inner
33693     }
33694 }
33695 #[repr(C)]
33696 #[cfg_attr(feature = "debug", derive(Debug))]
33697 #[derive(Copy, Clone, Default)]
33698 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrmFormatModifierPropertiesEXT.html>"]
33699 pub struct DrmFormatModifierPropertiesEXT {
33700     pub drm_format_modifier: u64,
33701     pub drm_format_modifier_plane_count: u32,
33702     pub drm_format_modifier_tiling_features: FormatFeatureFlags,
33703 }
33704 impl DrmFormatModifierPropertiesEXT {
builder<'a>() -> DrmFormatModifierPropertiesEXTBuilder<'a>33705     pub fn builder<'a>() -> DrmFormatModifierPropertiesEXTBuilder<'a> {
33706         DrmFormatModifierPropertiesEXTBuilder {
33707             inner: Self::default(),
33708             marker: ::std::marker::PhantomData,
33709         }
33710     }
33711 }
33712 #[repr(transparent)]
33713 pub struct DrmFormatModifierPropertiesEXTBuilder<'a> {
33714     inner: DrmFormatModifierPropertiesEXT,
33715     marker: ::std::marker::PhantomData<&'a ()>,
33716 }
33717 impl<'a> ::std::ops::Deref for DrmFormatModifierPropertiesEXTBuilder<'a> {
33718     type Target = DrmFormatModifierPropertiesEXT;
deref(&self) -> &Self::Target33719     fn deref(&self) -> &Self::Target {
33720         &self.inner
33721     }
33722 }
33723 impl<'a> ::std::ops::DerefMut for DrmFormatModifierPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33724     fn deref_mut(&mut self) -> &mut Self::Target {
33725         &mut self.inner
33726     }
33727 }
33728 impl<'a> DrmFormatModifierPropertiesEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33729     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33730         self.inner.drm_format_modifier = drm_format_modifier;
33731         self
33732     }
drm_format_modifier_plane_count(mut self, drm_format_modifier_plane_count: u32) -> Self33733     pub fn drm_format_modifier_plane_count(mut self, drm_format_modifier_plane_count: u32) -> Self {
33734         self.inner.drm_format_modifier_plane_count = drm_format_modifier_plane_count;
33735         self
33736     }
drm_format_modifier_tiling_features( mut self, drm_format_modifier_tiling_features: FormatFeatureFlags, ) -> Self33737     pub fn drm_format_modifier_tiling_features(
33738         mut self,
33739         drm_format_modifier_tiling_features: FormatFeatureFlags,
33740     ) -> Self {
33741         self.inner.drm_format_modifier_tiling_features = drm_format_modifier_tiling_features;
33742         self
33743     }
33744     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33745     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33746     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrmFormatModifierPropertiesEXT33747     pub fn build(self) -> DrmFormatModifierPropertiesEXT {
33748         self.inner
33749     }
33750 }
33751 #[repr(C)]
33752 #[cfg_attr(feature = "debug", derive(Debug))]
33753 #[derive(Copy, Clone)]
33754 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>"]
33755 pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
33756     pub s_type: StructureType,
33757     pub p_next: *const c_void,
33758     pub drm_format_modifier: u64,
33759     pub sharing_mode: SharingMode,
33760     pub queue_family_index_count: u32,
33761     pub p_queue_family_indices: *const u32,
33762 }
33763 impl ::std::default::Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
default() -> Self33764     fn default() -> Self {
33765         Self {
33766             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
33767             p_next: ::std::ptr::null(),
33768             drm_format_modifier: u64::default(),
33769             sharing_mode: SharingMode::default(),
33770             queue_family_index_count: u32::default(),
33771             p_queue_family_indices: ::std::ptr::null(),
33772         }
33773     }
33774 }
33775 impl PhysicalDeviceImageDrmFormatModifierInfoEXT {
builder<'a>() -> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a>33776     pub fn builder<'a>() -> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33777         PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder {
33778             inner: Self::default(),
33779             marker: ::std::marker::PhantomData,
33780         }
33781     }
33782 }
33783 #[repr(transparent)]
33784 pub struct PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33785     inner: PhysicalDeviceImageDrmFormatModifierInfoEXT,
33786     marker: ::std::marker::PhantomData<&'a ()>,
33787 }
33788 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2
33789     for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'_>
33790 {
33791 }
33792 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
33793 impl<'a> ::std::ops::Deref for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
33794     type Target = PhysicalDeviceImageDrmFormatModifierInfoEXT;
deref(&self) -> &Self::Target33795     fn deref(&self) -> &Self::Target {
33796         &self.inner
33797     }
33798 }
33799 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33800     fn deref_mut(&mut self) -> &mut Self::Target {
33801         &mut self.inner
33802     }
33803 }
33804 impl<'a> PhysicalDeviceImageDrmFormatModifierInfoEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33805     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33806         self.inner.drm_format_modifier = drm_format_modifier;
33807         self
33808     }
sharing_mode(mut self, sharing_mode: SharingMode) -> Self33809     pub fn sharing_mode(mut self, sharing_mode: SharingMode) -> Self {
33810         self.inner.sharing_mode = sharing_mode;
33811         self
33812     }
queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self33813     pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
33814         self.inner.queue_family_index_count = queue_family_indices.len() as _;
33815         self.inner.p_queue_family_indices = queue_family_indices.as_ptr();
33816         self
33817     }
33818     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33819     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33820     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageDrmFormatModifierInfoEXT33821     pub fn build(self) -> PhysicalDeviceImageDrmFormatModifierInfoEXT {
33822         self.inner
33823     }
33824 }
33825 #[repr(C)]
33826 #[cfg_attr(feature = "debug", derive(Debug))]
33827 #[derive(Copy, Clone)]
33828 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>"]
33829 pub struct ImageDrmFormatModifierListCreateInfoEXT {
33830     pub s_type: StructureType,
33831     pub p_next: *const c_void,
33832     pub drm_format_modifier_count: u32,
33833     pub p_drm_format_modifiers: *const u64,
33834 }
33835 impl ::std::default::Default for ImageDrmFormatModifierListCreateInfoEXT {
default() -> Self33836     fn default() -> Self {
33837         Self {
33838             s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
33839             p_next: ::std::ptr::null(),
33840             drm_format_modifier_count: u32::default(),
33841             p_drm_format_modifiers: ::std::ptr::null(),
33842         }
33843     }
33844 }
33845 impl ImageDrmFormatModifierListCreateInfoEXT {
builder<'a>() -> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a>33846     pub fn builder<'a>() -> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33847         ImageDrmFormatModifierListCreateInfoEXTBuilder {
33848             inner: Self::default(),
33849             marker: ::std::marker::PhantomData,
33850         }
33851     }
33852 }
33853 #[repr(transparent)]
33854 pub struct ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33855     inner: ImageDrmFormatModifierListCreateInfoEXT,
33856     marker: ::std::marker::PhantomData<&'a ()>,
33857 }
33858 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierListCreateInfoEXTBuilder<'_> {}
33859 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierListCreateInfoEXT {}
33860 impl<'a> ::std::ops::Deref for ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
33861     type Target = ImageDrmFormatModifierListCreateInfoEXT;
deref(&self) -> &Self::Target33862     fn deref(&self) -> &Self::Target {
33863         &self.inner
33864     }
33865 }
33866 impl<'a> ::std::ops::DerefMut for ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33867     fn deref_mut(&mut self) -> &mut Self::Target {
33868         &mut self.inner
33869     }
33870 }
33871 impl<'a> ImageDrmFormatModifierListCreateInfoEXTBuilder<'a> {
drm_format_modifiers(mut self, drm_format_modifiers: &'a [u64]) -> Self33872     pub fn drm_format_modifiers(mut self, drm_format_modifiers: &'a [u64]) -> Self {
33873         self.inner.drm_format_modifier_count = drm_format_modifiers.len() as _;
33874         self.inner.p_drm_format_modifiers = drm_format_modifiers.as_ptr();
33875         self
33876     }
33877     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33878     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33879     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageDrmFormatModifierListCreateInfoEXT33880     pub fn build(self) -> ImageDrmFormatModifierListCreateInfoEXT {
33881         self.inner
33882     }
33883 }
33884 #[repr(C)]
33885 #[cfg_attr(feature = "debug", derive(Debug))]
33886 #[derive(Copy, Clone)]
33887 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>"]
33888 pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
33889     pub s_type: StructureType,
33890     pub p_next: *const c_void,
33891     pub drm_format_modifier: u64,
33892     pub drm_format_modifier_plane_count: u32,
33893     pub p_plane_layouts: *const SubresourceLayout,
33894 }
33895 impl ::std::default::Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
default() -> Self33896     fn default() -> Self {
33897         Self {
33898             s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
33899             p_next: ::std::ptr::null(),
33900             drm_format_modifier: u64::default(),
33901             drm_format_modifier_plane_count: u32::default(),
33902             p_plane_layouts: ::std::ptr::null(),
33903         }
33904     }
33905 }
33906 impl ImageDrmFormatModifierExplicitCreateInfoEXT {
builder<'a>() -> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a>33907     pub fn builder<'a>() -> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33908         ImageDrmFormatModifierExplicitCreateInfoEXTBuilder {
33909             inner: Self::default(),
33910             marker: ::std::marker::PhantomData,
33911         }
33912     }
33913 }
33914 #[repr(transparent)]
33915 pub struct ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33916     inner: ImageDrmFormatModifierExplicitCreateInfoEXT,
33917     marker: ::std::marker::PhantomData<&'a ()>,
33918 }
33919 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'_> {}
33920 unsafe impl ExtendsImageCreateInfo for ImageDrmFormatModifierExplicitCreateInfoEXT {}
33921 impl<'a> ::std::ops::Deref for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
33922     type Target = ImageDrmFormatModifierExplicitCreateInfoEXT;
deref(&self) -> &Self::Target33923     fn deref(&self) -> &Self::Target {
33924         &self.inner
33925     }
33926 }
33927 impl<'a> ::std::ops::DerefMut for ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33928     fn deref_mut(&mut self) -> &mut Self::Target {
33929         &mut self.inner
33930     }
33931 }
33932 impl<'a> ImageDrmFormatModifierExplicitCreateInfoEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33933     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33934         self.inner.drm_format_modifier = drm_format_modifier;
33935         self
33936     }
plane_layouts(mut self, plane_layouts: &'a [SubresourceLayout]) -> Self33937     pub fn plane_layouts(mut self, plane_layouts: &'a [SubresourceLayout]) -> Self {
33938         self.inner.drm_format_modifier_plane_count = plane_layouts.len() as _;
33939         self.inner.p_plane_layouts = plane_layouts.as_ptr();
33940         self
33941     }
33942     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33943     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33944     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageDrmFormatModifierExplicitCreateInfoEXT33945     pub fn build(self) -> ImageDrmFormatModifierExplicitCreateInfoEXT {
33946         self.inner
33947     }
33948 }
33949 #[repr(C)]
33950 #[cfg_attr(feature = "debug", derive(Debug))]
33951 #[derive(Copy, Clone)]
33952 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageDrmFormatModifierPropertiesEXT.html>"]
33953 pub struct ImageDrmFormatModifierPropertiesEXT {
33954     pub s_type: StructureType,
33955     pub p_next: *mut c_void,
33956     pub drm_format_modifier: u64,
33957 }
33958 impl ::std::default::Default for ImageDrmFormatModifierPropertiesEXT {
default() -> Self33959     fn default() -> Self {
33960         Self {
33961             s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
33962             p_next: ::std::ptr::null_mut(),
33963             drm_format_modifier: u64::default(),
33964         }
33965     }
33966 }
33967 impl ImageDrmFormatModifierPropertiesEXT {
builder<'a>() -> ImageDrmFormatModifierPropertiesEXTBuilder<'a>33968     pub fn builder<'a>() -> ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33969         ImageDrmFormatModifierPropertiesEXTBuilder {
33970             inner: Self::default(),
33971             marker: ::std::marker::PhantomData,
33972         }
33973     }
33974 }
33975 #[repr(transparent)]
33976 pub struct ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33977     inner: ImageDrmFormatModifierPropertiesEXT,
33978     marker: ::std::marker::PhantomData<&'a ()>,
33979 }
33980 impl<'a> ::std::ops::Deref for ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
33981     type Target = ImageDrmFormatModifierPropertiesEXT;
deref(&self) -> &Self::Target33982     fn deref(&self) -> &Self::Target {
33983         &self.inner
33984     }
33985 }
33986 impl<'a> ::std::ops::DerefMut for ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target33987     fn deref_mut(&mut self) -> &mut Self::Target {
33988         &mut self.inner
33989     }
33990 }
33991 impl<'a> ImageDrmFormatModifierPropertiesEXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self33992     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
33993         self.inner.drm_format_modifier = drm_format_modifier;
33994         self
33995     }
33996     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
33997     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
33998     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageDrmFormatModifierPropertiesEXT33999     pub fn build(self) -> ImageDrmFormatModifierPropertiesEXT {
34000         self.inner
34001     }
34002 }
34003 #[repr(C)]
34004 #[cfg_attr(feature = "debug", derive(Debug))]
34005 #[derive(Copy, Clone)]
34006 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageStencilUsageCreateInfo.html>"]
34007 pub struct ImageStencilUsageCreateInfo {
34008     pub s_type: StructureType,
34009     pub p_next: *const c_void,
34010     pub stencil_usage: ImageUsageFlags,
34011 }
34012 impl ::std::default::Default for ImageStencilUsageCreateInfo {
default() -> Self34013     fn default() -> Self {
34014         Self {
34015             s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
34016             p_next: ::std::ptr::null(),
34017             stencil_usage: ImageUsageFlags::default(),
34018         }
34019     }
34020 }
34021 impl ImageStencilUsageCreateInfo {
builder<'a>() -> ImageStencilUsageCreateInfoBuilder<'a>34022     pub fn builder<'a>() -> ImageStencilUsageCreateInfoBuilder<'a> {
34023         ImageStencilUsageCreateInfoBuilder {
34024             inner: Self::default(),
34025             marker: ::std::marker::PhantomData,
34026         }
34027     }
34028 }
34029 #[repr(transparent)]
34030 pub struct ImageStencilUsageCreateInfoBuilder<'a> {
34031     inner: ImageStencilUsageCreateInfo,
34032     marker: ::std::marker::PhantomData<&'a ()>,
34033 }
34034 unsafe impl ExtendsImageCreateInfo for ImageStencilUsageCreateInfoBuilder<'_> {}
34035 unsafe impl ExtendsImageCreateInfo for ImageStencilUsageCreateInfo {}
34036 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageStencilUsageCreateInfoBuilder<'_> {}
34037 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for ImageStencilUsageCreateInfo {}
34038 impl<'a> ::std::ops::Deref for ImageStencilUsageCreateInfoBuilder<'a> {
34039     type Target = ImageStencilUsageCreateInfo;
deref(&self) -> &Self::Target34040     fn deref(&self) -> &Self::Target {
34041         &self.inner
34042     }
34043 }
34044 impl<'a> ::std::ops::DerefMut for ImageStencilUsageCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34045     fn deref_mut(&mut self) -> &mut Self::Target {
34046         &mut self.inner
34047     }
34048 }
34049 impl<'a> ImageStencilUsageCreateInfoBuilder<'a> {
stencil_usage(mut self, stencil_usage: ImageUsageFlags) -> Self34050     pub fn stencil_usage(mut self, stencil_usage: ImageUsageFlags) -> Self {
34051         self.inner.stencil_usage = stencil_usage;
34052         self
34053     }
34054     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34055     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34056     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageStencilUsageCreateInfo34057     pub fn build(self) -> ImageStencilUsageCreateInfo {
34058         self.inner
34059     }
34060 }
34061 #[repr(C)]
34062 #[cfg_attr(feature = "debug", derive(Debug))]
34063 #[derive(Copy, Clone)]
34064 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>"]
34065 pub struct DeviceMemoryOverallocationCreateInfoAMD {
34066     pub s_type: StructureType,
34067     pub p_next: *const c_void,
34068     pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
34069 }
34070 impl ::std::default::Default for DeviceMemoryOverallocationCreateInfoAMD {
default() -> Self34071     fn default() -> Self {
34072         Self {
34073             s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
34074             p_next: ::std::ptr::null(),
34075             overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
34076         }
34077     }
34078 }
34079 impl DeviceMemoryOverallocationCreateInfoAMD {
builder<'a>() -> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a>34080     pub fn builder<'a>() -> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
34081         DeviceMemoryOverallocationCreateInfoAMDBuilder {
34082             inner: Self::default(),
34083             marker: ::std::marker::PhantomData,
34084         }
34085     }
34086 }
34087 #[repr(transparent)]
34088 pub struct DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
34089     inner: DeviceMemoryOverallocationCreateInfoAMD,
34090     marker: ::std::marker::PhantomData<&'a ()>,
34091 }
34092 unsafe impl ExtendsDeviceCreateInfo for DeviceMemoryOverallocationCreateInfoAMDBuilder<'_> {}
34093 unsafe impl ExtendsDeviceCreateInfo for DeviceMemoryOverallocationCreateInfoAMD {}
34094 impl<'a> ::std::ops::Deref for DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
34095     type Target = DeviceMemoryOverallocationCreateInfoAMD;
deref(&self) -> &Self::Target34096     fn deref(&self) -> &Self::Target {
34097         &self.inner
34098     }
34099 }
34100 impl<'a> ::std::ops::DerefMut for DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34101     fn deref_mut(&mut self) -> &mut Self::Target {
34102         &mut self.inner
34103     }
34104 }
34105 impl<'a> DeviceMemoryOverallocationCreateInfoAMDBuilder<'a> {
overallocation_behavior( mut self, overallocation_behavior: MemoryOverallocationBehaviorAMD, ) -> Self34106     pub fn overallocation_behavior(
34107         mut self,
34108         overallocation_behavior: MemoryOverallocationBehaviorAMD,
34109     ) -> Self {
34110         self.inner.overallocation_behavior = overallocation_behavior;
34111         self
34112     }
34113     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34114     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34115     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceMemoryOverallocationCreateInfoAMD34116     pub fn build(self) -> DeviceMemoryOverallocationCreateInfoAMD {
34117         self.inner
34118     }
34119 }
34120 #[repr(C)]
34121 #[cfg_attr(feature = "debug", derive(Debug))]
34122 #[derive(Copy, Clone)]
34123 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>"]
34124 pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
34125     pub s_type: StructureType,
34126     pub p_next: *mut c_void,
34127     pub fragment_density_map: Bool32,
34128     pub fragment_density_map_dynamic: Bool32,
34129     pub fragment_density_map_non_subsampled_images: Bool32,
34130 }
34131 impl ::std::default::Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
default() -> Self34132     fn default() -> Self {
34133         Self {
34134             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
34135             p_next: ::std::ptr::null_mut(),
34136             fragment_density_map: Bool32::default(),
34137             fragment_density_map_dynamic: Bool32::default(),
34138             fragment_density_map_non_subsampled_images: Bool32::default(),
34139         }
34140     }
34141 }
34142 impl PhysicalDeviceFragmentDensityMapFeaturesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a>34143     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
34144         PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder {
34145             inner: Self::default(),
34146             marker: ::std::marker::PhantomData,
34147         }
34148     }
34149 }
34150 #[repr(transparent)]
34151 pub struct PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
34152     inner: PhysicalDeviceFragmentDensityMapFeaturesEXT,
34153     marker: ::std::marker::PhantomData<&'a ()>,
34154 }
34155 unsafe impl ExtendsPhysicalDeviceFeatures2
34156     for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'_>
34157 {
34158 }
34159 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
34160 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'_> {}
34161 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
34162 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
34163     type Target = PhysicalDeviceFragmentDensityMapFeaturesEXT;
deref(&self) -> &Self::Target34164     fn deref(&self) -> &Self::Target {
34165         &self.inner
34166     }
34167 }
34168 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34169     fn deref_mut(&mut self) -> &mut Self::Target {
34170         &mut self.inner
34171     }
34172 }
34173 impl<'a> PhysicalDeviceFragmentDensityMapFeaturesEXTBuilder<'a> {
fragment_density_map(mut self, fragment_density_map: bool) -> Self34174     pub fn fragment_density_map(mut self, fragment_density_map: bool) -> Self {
34175         self.inner.fragment_density_map = fragment_density_map.into();
34176         self
34177     }
fragment_density_map_dynamic(mut self, fragment_density_map_dynamic: bool) -> Self34178     pub fn fragment_density_map_dynamic(mut self, fragment_density_map_dynamic: bool) -> Self {
34179         self.inner.fragment_density_map_dynamic = fragment_density_map_dynamic.into();
34180         self
34181     }
fragment_density_map_non_subsampled_images( mut self, fragment_density_map_non_subsampled_images: bool, ) -> Self34182     pub fn fragment_density_map_non_subsampled_images(
34183         mut self,
34184         fragment_density_map_non_subsampled_images: bool,
34185     ) -> Self {
34186         self.inner.fragment_density_map_non_subsampled_images =
34187             fragment_density_map_non_subsampled_images.into();
34188         self
34189     }
34190     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34191     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34192     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMapFeaturesEXT34193     pub fn build(self) -> PhysicalDeviceFragmentDensityMapFeaturesEXT {
34194         self.inner
34195     }
34196 }
34197 #[repr(C)]
34198 #[cfg_attr(feature = "debug", derive(Debug))]
34199 #[derive(Copy, Clone)]
34200 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>"]
34201 pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
34202     pub s_type: StructureType,
34203     pub p_next: *mut c_void,
34204     pub fragment_density_map_deferred: Bool32,
34205 }
34206 impl ::std::default::Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
default() -> Self34207     fn default() -> Self {
34208         Self {
34209             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
34210             p_next: ::std::ptr::null_mut(),
34211             fragment_density_map_deferred: Bool32::default(),
34212         }
34213     }
34214 }
34215 impl PhysicalDeviceFragmentDensityMap2FeaturesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a>34216     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
34217         PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder {
34218             inner: Self::default(),
34219             marker: ::std::marker::PhantomData,
34220         }
34221     }
34222 }
34223 #[repr(transparent)]
34224 pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
34225     inner: PhysicalDeviceFragmentDensityMap2FeaturesEXT,
34226     marker: ::std::marker::PhantomData<&'a ()>,
34227 }
34228 unsafe impl ExtendsPhysicalDeviceFeatures2
34229     for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'_>
34230 {
34231 }
34232 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
34233 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'_> {}
34234 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
34235 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
34236     type Target = PhysicalDeviceFragmentDensityMap2FeaturesEXT;
deref(&self) -> &Self::Target34237     fn deref(&self) -> &Self::Target {
34238         &self.inner
34239     }
34240 }
34241 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34242     fn deref_mut(&mut self) -> &mut Self::Target {
34243         &mut self.inner
34244     }
34245 }
34246 impl<'a> PhysicalDeviceFragmentDensityMap2FeaturesEXTBuilder<'a> {
fragment_density_map_deferred(mut self, fragment_density_map_deferred: bool) -> Self34247     pub fn fragment_density_map_deferred(mut self, fragment_density_map_deferred: bool) -> Self {
34248         self.inner.fragment_density_map_deferred = fragment_density_map_deferred.into();
34249         self
34250     }
34251     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34252     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34253     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMap2FeaturesEXT34254     pub fn build(self) -> PhysicalDeviceFragmentDensityMap2FeaturesEXT {
34255         self.inner
34256     }
34257 }
34258 #[repr(C)]
34259 #[cfg_attr(feature = "debug", derive(Debug))]
34260 #[derive(Copy, Clone)]
34261 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>"]
34262 pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
34263     pub s_type: StructureType,
34264     pub p_next: *mut c_void,
34265     pub fragment_density_map_offset: Bool32,
34266 }
34267 impl ::std::default::Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
default() -> Self34268     fn default() -> Self {
34269         Self {
34270             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM,
34271             p_next: ::std::ptr::null_mut(),
34272             fragment_density_map_offset: Bool32::default(),
34273         }
34274     }
34275 }
34276 impl PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
builder<'a>() -> PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'a>34277     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'a> {
34278         PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder {
34279             inner: Self::default(),
34280             marker: ::std::marker::PhantomData,
34281         }
34282     }
34283 }
34284 #[repr(transparent)]
34285 pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'a> {
34286     inner: PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM,
34287     marker: ::std::marker::PhantomData<&'a ()>,
34288 }
34289 unsafe impl ExtendsPhysicalDeviceFeatures2
34290     for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'_>
34291 {
34292 }
34293 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {}
34294 unsafe impl ExtendsDeviceCreateInfo
34295     for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'_>
34296 {
34297 }
34298 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {}
34299 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'a> {
34300     type Target = PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
deref(&self) -> &Self::Target34301     fn deref(&self) -> &Self::Target {
34302         &self.inner
34303     }
34304 }
34305 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34306     fn deref_mut(&mut self) -> &mut Self::Target {
34307         &mut self.inner
34308     }
34309 }
34310 impl<'a> PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMBuilder<'a> {
fragment_density_map_offset(mut self, fragment_density_map_offset: bool) -> Self34311     pub fn fragment_density_map_offset(mut self, fragment_density_map_offset: bool) -> Self {
34312         self.inner.fragment_density_map_offset = fragment_density_map_offset.into();
34313         self
34314     }
34315     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34316     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34317     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM34318     pub fn build(self) -> PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
34319         self.inner
34320     }
34321 }
34322 #[repr(C)]
34323 #[cfg_attr(feature = "debug", derive(Debug))]
34324 #[derive(Copy, Clone)]
34325 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>"]
34326 pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
34327     pub s_type: StructureType,
34328     pub p_next: *mut c_void,
34329     pub min_fragment_density_texel_size: Extent2D,
34330     pub max_fragment_density_texel_size: Extent2D,
34331     pub fragment_density_invocations: Bool32,
34332 }
34333 impl ::std::default::Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
default() -> Self34334     fn default() -> Self {
34335         Self {
34336             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
34337             p_next: ::std::ptr::null_mut(),
34338             min_fragment_density_texel_size: Extent2D::default(),
34339             max_fragment_density_texel_size: Extent2D::default(),
34340             fragment_density_invocations: Bool32::default(),
34341         }
34342     }
34343 }
34344 impl PhysicalDeviceFragmentDensityMapPropertiesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a>34345     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
34346         PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder {
34347             inner: Self::default(),
34348             marker: ::std::marker::PhantomData,
34349         }
34350     }
34351 }
34352 #[repr(transparent)]
34353 pub struct PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
34354     inner: PhysicalDeviceFragmentDensityMapPropertiesEXT,
34355     marker: ::std::marker::PhantomData<&'a ()>,
34356 }
34357 unsafe impl ExtendsPhysicalDeviceProperties2
34358     for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'_>
34359 {
34360 }
34361 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
34362 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
34363     type Target = PhysicalDeviceFragmentDensityMapPropertiesEXT;
deref(&self) -> &Self::Target34364     fn deref(&self) -> &Self::Target {
34365         &self.inner
34366     }
34367 }
34368 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34369     fn deref_mut(&mut self) -> &mut Self::Target {
34370         &mut self.inner
34371     }
34372 }
34373 impl<'a> PhysicalDeviceFragmentDensityMapPropertiesEXTBuilder<'a> {
min_fragment_density_texel_size( mut self, min_fragment_density_texel_size: Extent2D, ) -> Self34374     pub fn min_fragment_density_texel_size(
34375         mut self,
34376         min_fragment_density_texel_size: Extent2D,
34377     ) -> Self {
34378         self.inner.min_fragment_density_texel_size = min_fragment_density_texel_size;
34379         self
34380     }
max_fragment_density_texel_size( mut self, max_fragment_density_texel_size: Extent2D, ) -> Self34381     pub fn max_fragment_density_texel_size(
34382         mut self,
34383         max_fragment_density_texel_size: Extent2D,
34384     ) -> Self {
34385         self.inner.max_fragment_density_texel_size = max_fragment_density_texel_size;
34386         self
34387     }
fragment_density_invocations(mut self, fragment_density_invocations: bool) -> Self34388     pub fn fragment_density_invocations(mut self, fragment_density_invocations: bool) -> Self {
34389         self.inner.fragment_density_invocations = fragment_density_invocations.into();
34390         self
34391     }
34392     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34393     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34394     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMapPropertiesEXT34395     pub fn build(self) -> PhysicalDeviceFragmentDensityMapPropertiesEXT {
34396         self.inner
34397     }
34398 }
34399 #[repr(C)]
34400 #[cfg_attr(feature = "debug", derive(Debug))]
34401 #[derive(Copy, Clone)]
34402 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>"]
34403 pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
34404     pub s_type: StructureType,
34405     pub p_next: *mut c_void,
34406     pub subsampled_loads: Bool32,
34407     pub subsampled_coarse_reconstruction_early_access: Bool32,
34408     pub max_subsampled_array_layers: u32,
34409     pub max_descriptor_set_subsampled_samplers: u32,
34410 }
34411 impl ::std::default::Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
default() -> Self34412     fn default() -> Self {
34413         Self {
34414             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
34415             p_next: ::std::ptr::null_mut(),
34416             subsampled_loads: Bool32::default(),
34417             subsampled_coarse_reconstruction_early_access: Bool32::default(),
34418             max_subsampled_array_layers: u32::default(),
34419             max_descriptor_set_subsampled_samplers: u32::default(),
34420         }
34421     }
34422 }
34423 impl PhysicalDeviceFragmentDensityMap2PropertiesEXT {
builder<'a>() -> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a>34424     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
34425         PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder {
34426             inner: Self::default(),
34427             marker: ::std::marker::PhantomData,
34428         }
34429     }
34430 }
34431 #[repr(transparent)]
34432 pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
34433     inner: PhysicalDeviceFragmentDensityMap2PropertiesEXT,
34434     marker: ::std::marker::PhantomData<&'a ()>,
34435 }
34436 unsafe impl ExtendsPhysicalDeviceProperties2
34437     for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'_>
34438 {
34439 }
34440 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
34441 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
34442     type Target = PhysicalDeviceFragmentDensityMap2PropertiesEXT;
deref(&self) -> &Self::Target34443     fn deref(&self) -> &Self::Target {
34444         &self.inner
34445     }
34446 }
34447 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34448     fn deref_mut(&mut self) -> &mut Self::Target {
34449         &mut self.inner
34450     }
34451 }
34452 impl<'a> PhysicalDeviceFragmentDensityMap2PropertiesEXTBuilder<'a> {
subsampled_loads(mut self, subsampled_loads: bool) -> Self34453     pub fn subsampled_loads(mut self, subsampled_loads: bool) -> Self {
34454         self.inner.subsampled_loads = subsampled_loads.into();
34455         self
34456     }
subsampled_coarse_reconstruction_early_access( mut self, subsampled_coarse_reconstruction_early_access: bool, ) -> Self34457     pub fn subsampled_coarse_reconstruction_early_access(
34458         mut self,
34459         subsampled_coarse_reconstruction_early_access: bool,
34460     ) -> Self {
34461         self.inner.subsampled_coarse_reconstruction_early_access =
34462             subsampled_coarse_reconstruction_early_access.into();
34463         self
34464     }
max_subsampled_array_layers(mut self, max_subsampled_array_layers: u32) -> Self34465     pub fn max_subsampled_array_layers(mut self, max_subsampled_array_layers: u32) -> Self {
34466         self.inner.max_subsampled_array_layers = max_subsampled_array_layers;
34467         self
34468     }
max_descriptor_set_subsampled_samplers( mut self, max_descriptor_set_subsampled_samplers: u32, ) -> Self34469     pub fn max_descriptor_set_subsampled_samplers(
34470         mut self,
34471         max_descriptor_set_subsampled_samplers: u32,
34472     ) -> Self {
34473         self.inner.max_descriptor_set_subsampled_samplers = max_descriptor_set_subsampled_samplers;
34474         self
34475     }
34476     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34477     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34478     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMap2PropertiesEXT34479     pub fn build(self) -> PhysicalDeviceFragmentDensityMap2PropertiesEXT {
34480         self.inner
34481     }
34482 }
34483 #[repr(C)]
34484 #[cfg_attr(feature = "debug", derive(Debug))]
34485 #[derive(Copy, Clone)]
34486 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>"]
34487 pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
34488     pub s_type: StructureType,
34489     pub p_next: *mut c_void,
34490     pub fragment_density_offset_granularity: Extent2D,
34491 }
34492 impl ::std::default::Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
default() -> Self34493     fn default() -> Self {
34494         Self {
34495             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM,
34496             p_next: ::std::ptr::null_mut(),
34497             fragment_density_offset_granularity: Extent2D::default(),
34498         }
34499     }
34500 }
34501 impl PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
builder<'a>() -> PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder<'a>34502     pub fn builder<'a>() -> PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder<'a> {
34503         PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder {
34504             inner: Self::default(),
34505             marker: ::std::marker::PhantomData,
34506         }
34507     }
34508 }
34509 #[repr(transparent)]
34510 pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder<'a> {
34511     inner: PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM,
34512     marker: ::std::marker::PhantomData<&'a ()>,
34513 }
34514 unsafe impl ExtendsPhysicalDeviceProperties2
34515     for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder<'_>
34516 {
34517 }
34518 unsafe impl ExtendsPhysicalDeviceProperties2
34519     for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
34520 {
34521 }
34522 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder<'a> {
34523     type Target = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
deref(&self) -> &Self::Target34524     fn deref(&self) -> &Self::Target {
34525         &self.inner
34526     }
34527 }
34528 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34529     fn deref_mut(&mut self) -> &mut Self::Target {
34530         &mut self.inner
34531     }
34532 }
34533 impl<'a> PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMBuilder<'a> {
fragment_density_offset_granularity( mut self, fragment_density_offset_granularity: Extent2D, ) -> Self34534     pub fn fragment_density_offset_granularity(
34535         mut self,
34536         fragment_density_offset_granularity: Extent2D,
34537     ) -> Self {
34538         self.inner.fragment_density_offset_granularity = fragment_density_offset_granularity;
34539         self
34540     }
34541     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34542     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34543     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM34544     pub fn build(self) -> PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
34545         self.inner
34546     }
34547 }
34548 #[repr(C)]
34549 #[cfg_attr(feature = "debug", derive(Debug))]
34550 #[derive(Copy, Clone)]
34551 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>"]
34552 pub struct RenderPassFragmentDensityMapCreateInfoEXT {
34553     pub s_type: StructureType,
34554     pub p_next: *const c_void,
34555     pub fragment_density_map_attachment: AttachmentReference,
34556 }
34557 impl ::std::default::Default for RenderPassFragmentDensityMapCreateInfoEXT {
default() -> Self34558     fn default() -> Self {
34559         Self {
34560             s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
34561             p_next: ::std::ptr::null(),
34562             fragment_density_map_attachment: AttachmentReference::default(),
34563         }
34564     }
34565 }
34566 impl RenderPassFragmentDensityMapCreateInfoEXT {
builder<'a>() -> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a>34567     pub fn builder<'a>() -> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34568         RenderPassFragmentDensityMapCreateInfoEXTBuilder {
34569             inner: Self::default(),
34570             marker: ::std::marker::PhantomData,
34571         }
34572     }
34573 }
34574 #[repr(transparent)]
34575 pub struct RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34576     inner: RenderPassFragmentDensityMapCreateInfoEXT,
34577     marker: ::std::marker::PhantomData<&'a ()>,
34578 }
34579 unsafe impl ExtendsRenderPassCreateInfo for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'_> {}
34580 unsafe impl ExtendsRenderPassCreateInfo for RenderPassFragmentDensityMapCreateInfoEXT {}
34581 unsafe impl ExtendsRenderPassCreateInfo2 for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'_> {}
34582 unsafe impl ExtendsRenderPassCreateInfo2 for RenderPassFragmentDensityMapCreateInfoEXT {}
34583 impl<'a> ::std::ops::Deref for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
34584     type Target = RenderPassFragmentDensityMapCreateInfoEXT;
deref(&self) -> &Self::Target34585     fn deref(&self) -> &Self::Target {
34586         &self.inner
34587     }
34588 }
34589 impl<'a> ::std::ops::DerefMut for RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34590     fn deref_mut(&mut self) -> &mut Self::Target {
34591         &mut self.inner
34592     }
34593 }
34594 impl<'a> RenderPassFragmentDensityMapCreateInfoEXTBuilder<'a> {
fragment_density_map_attachment( mut self, fragment_density_map_attachment: AttachmentReference, ) -> Self34595     pub fn fragment_density_map_attachment(
34596         mut self,
34597         fragment_density_map_attachment: AttachmentReference,
34598     ) -> Self {
34599         self.inner.fragment_density_map_attachment = fragment_density_map_attachment;
34600         self
34601     }
34602     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34603     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34604     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassFragmentDensityMapCreateInfoEXT34605     pub fn build(self) -> RenderPassFragmentDensityMapCreateInfoEXT {
34606         self.inner
34607     }
34608 }
34609 #[repr(C)]
34610 #[cfg_attr(feature = "debug", derive(Debug))]
34611 #[derive(Copy, Clone)]
34612 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>"]
34613 pub struct SubpassFragmentDensityMapOffsetEndInfoQCOM {
34614     pub s_type: StructureType,
34615     pub p_next: *const c_void,
34616     pub fragment_density_offset_count: u32,
34617     pub p_fragment_density_offsets: *const Offset2D,
34618 }
34619 impl ::std::default::Default for SubpassFragmentDensityMapOffsetEndInfoQCOM {
default() -> Self34620     fn default() -> Self {
34621         Self {
34622             s_type: StructureType::SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM,
34623             p_next: ::std::ptr::null(),
34624             fragment_density_offset_count: u32::default(),
34625             p_fragment_density_offsets: ::std::ptr::null(),
34626         }
34627     }
34628 }
34629 impl SubpassFragmentDensityMapOffsetEndInfoQCOM {
builder<'a>() -> SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder<'a>34630     pub fn builder<'a>() -> SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder<'a> {
34631         SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder {
34632             inner: Self::default(),
34633             marker: ::std::marker::PhantomData,
34634         }
34635     }
34636 }
34637 #[repr(transparent)]
34638 pub struct SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder<'a> {
34639     inner: SubpassFragmentDensityMapOffsetEndInfoQCOM,
34640     marker: ::std::marker::PhantomData<&'a ()>,
34641 }
34642 unsafe impl ExtendsSubpassEndInfo for SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder<'_> {}
34643 unsafe impl ExtendsSubpassEndInfo for SubpassFragmentDensityMapOffsetEndInfoQCOM {}
34644 impl<'a> ::std::ops::Deref for SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder<'a> {
34645     type Target = SubpassFragmentDensityMapOffsetEndInfoQCOM;
deref(&self) -> &Self::Target34646     fn deref(&self) -> &Self::Target {
34647         &self.inner
34648     }
34649 }
34650 impl<'a> ::std::ops::DerefMut for SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34651     fn deref_mut(&mut self) -> &mut Self::Target {
34652         &mut self.inner
34653     }
34654 }
34655 impl<'a> SubpassFragmentDensityMapOffsetEndInfoQCOMBuilder<'a> {
fragment_density_offsets(mut self, fragment_density_offsets: &'a [Offset2D]) -> Self34656     pub fn fragment_density_offsets(mut self, fragment_density_offsets: &'a [Offset2D]) -> Self {
34657         self.inner.fragment_density_offset_count = fragment_density_offsets.len() as _;
34658         self.inner.p_fragment_density_offsets = fragment_density_offsets.as_ptr();
34659         self
34660     }
34661     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34662     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34663     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassFragmentDensityMapOffsetEndInfoQCOM34664     pub fn build(self) -> SubpassFragmentDensityMapOffsetEndInfoQCOM {
34665         self.inner
34666     }
34667 }
34668 #[repr(C)]
34669 #[cfg_attr(feature = "debug", derive(Debug))]
34670 #[derive(Copy, Clone)]
34671 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>"]
34672 pub struct PhysicalDeviceScalarBlockLayoutFeatures {
34673     pub s_type: StructureType,
34674     pub p_next: *mut c_void,
34675     pub scalar_block_layout: Bool32,
34676 }
34677 impl ::std::default::Default for PhysicalDeviceScalarBlockLayoutFeatures {
default() -> Self34678     fn default() -> Self {
34679         Self {
34680             s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
34681             p_next: ::std::ptr::null_mut(),
34682             scalar_block_layout: Bool32::default(),
34683         }
34684     }
34685 }
34686 impl PhysicalDeviceScalarBlockLayoutFeatures {
builder<'a>() -> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a>34687     pub fn builder<'a>() -> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34688         PhysicalDeviceScalarBlockLayoutFeaturesBuilder {
34689             inner: Self::default(),
34690             marker: ::std::marker::PhantomData,
34691         }
34692     }
34693 }
34694 #[repr(transparent)]
34695 pub struct PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34696     inner: PhysicalDeviceScalarBlockLayoutFeatures,
34697     marker: ::std::marker::PhantomData<&'a ()>,
34698 }
34699 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'_> {}
34700 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceScalarBlockLayoutFeatures {}
34701 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'_> {}
34702 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceScalarBlockLayoutFeatures {}
34703 impl<'a> ::std::ops::Deref for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
34704     type Target = PhysicalDeviceScalarBlockLayoutFeatures;
deref(&self) -> &Self::Target34705     fn deref(&self) -> &Self::Target {
34706         &self.inner
34707     }
34708 }
34709 impl<'a> ::std::ops::DerefMut for PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34710     fn deref_mut(&mut self) -> &mut Self::Target {
34711         &mut self.inner
34712     }
34713 }
34714 impl<'a> PhysicalDeviceScalarBlockLayoutFeaturesBuilder<'a> {
scalar_block_layout(mut self, scalar_block_layout: bool) -> Self34715     pub fn scalar_block_layout(mut self, scalar_block_layout: bool) -> Self {
34716         self.inner.scalar_block_layout = scalar_block_layout.into();
34717         self
34718     }
34719     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34720     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34721     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceScalarBlockLayoutFeatures34722     pub fn build(self) -> PhysicalDeviceScalarBlockLayoutFeatures {
34723         self.inner
34724     }
34725 }
34726 #[repr(C)]
34727 #[cfg_attr(feature = "debug", derive(Debug))]
34728 #[derive(Copy, Clone)]
34729 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceProtectedCapabilitiesKHR.html>"]
34730 pub struct SurfaceProtectedCapabilitiesKHR {
34731     pub s_type: StructureType,
34732     pub p_next: *const c_void,
34733     pub supports_protected: Bool32,
34734 }
34735 impl ::std::default::Default for SurfaceProtectedCapabilitiesKHR {
default() -> Self34736     fn default() -> Self {
34737         Self {
34738             s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
34739             p_next: ::std::ptr::null(),
34740             supports_protected: Bool32::default(),
34741         }
34742     }
34743 }
34744 impl SurfaceProtectedCapabilitiesKHR {
builder<'a>() -> SurfaceProtectedCapabilitiesKHRBuilder<'a>34745     pub fn builder<'a>() -> SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34746         SurfaceProtectedCapabilitiesKHRBuilder {
34747             inner: Self::default(),
34748             marker: ::std::marker::PhantomData,
34749         }
34750     }
34751 }
34752 #[repr(transparent)]
34753 pub struct SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34754     inner: SurfaceProtectedCapabilitiesKHR,
34755     marker: ::std::marker::PhantomData<&'a ()>,
34756 }
34757 unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceProtectedCapabilitiesKHRBuilder<'_> {}
34758 unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceProtectedCapabilitiesKHR {}
34759 impl<'a> ::std::ops::Deref for SurfaceProtectedCapabilitiesKHRBuilder<'a> {
34760     type Target = SurfaceProtectedCapabilitiesKHR;
deref(&self) -> &Self::Target34761     fn deref(&self) -> &Self::Target {
34762         &self.inner
34763     }
34764 }
34765 impl<'a> ::std::ops::DerefMut for SurfaceProtectedCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34766     fn deref_mut(&mut self) -> &mut Self::Target {
34767         &mut self.inner
34768     }
34769 }
34770 impl<'a> SurfaceProtectedCapabilitiesKHRBuilder<'a> {
supports_protected(mut self, supports_protected: bool) -> Self34771     pub fn supports_protected(mut self, supports_protected: bool) -> Self {
34772         self.inner.supports_protected = supports_protected.into();
34773         self
34774     }
34775     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34776     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34777     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceProtectedCapabilitiesKHR34778     pub fn build(self) -> SurfaceProtectedCapabilitiesKHR {
34779         self.inner
34780     }
34781 }
34782 #[repr(C)]
34783 #[cfg_attr(feature = "debug", derive(Debug))]
34784 #[derive(Copy, Clone)]
34785 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>"]
34786 pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
34787     pub s_type: StructureType,
34788     pub p_next: *mut c_void,
34789     pub uniform_buffer_standard_layout: Bool32,
34790 }
34791 impl ::std::default::Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
default() -> Self34792     fn default() -> Self {
34793         Self {
34794             s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
34795             p_next: ::std::ptr::null_mut(),
34796             uniform_buffer_standard_layout: Bool32::default(),
34797         }
34798     }
34799 }
34800 impl PhysicalDeviceUniformBufferStandardLayoutFeatures {
builder<'a>() -> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a>34801     pub fn builder<'a>() -> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
34802         PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder {
34803             inner: Self::default(),
34804             marker: ::std::marker::PhantomData,
34805         }
34806     }
34807 }
34808 #[repr(transparent)]
34809 pub struct PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
34810     inner: PhysicalDeviceUniformBufferStandardLayoutFeatures,
34811     marker: ::std::marker::PhantomData<&'a ()>,
34812 }
34813 unsafe impl ExtendsPhysicalDeviceFeatures2
34814     for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'_>
34815 {
34816 }
34817 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
34818 unsafe impl ExtendsDeviceCreateInfo
34819     for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'_>
34820 {
34821 }
34822 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
34823 impl<'a> ::std::ops::Deref for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
34824     type Target = PhysicalDeviceUniformBufferStandardLayoutFeatures;
deref(&self) -> &Self::Target34825     fn deref(&self) -> &Self::Target {
34826         &self.inner
34827     }
34828 }
34829 impl<'a> ::std::ops::DerefMut for PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34830     fn deref_mut(&mut self) -> &mut Self::Target {
34831         &mut self.inner
34832     }
34833 }
34834 impl<'a> PhysicalDeviceUniformBufferStandardLayoutFeaturesBuilder<'a> {
uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self34835     pub fn uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self {
34836         self.inner.uniform_buffer_standard_layout = uniform_buffer_standard_layout.into();
34837         self
34838     }
34839     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34840     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34841     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceUniformBufferStandardLayoutFeatures34842     pub fn build(self) -> PhysicalDeviceUniformBufferStandardLayoutFeatures {
34843         self.inner
34844     }
34845 }
34846 #[repr(C)]
34847 #[cfg_attr(feature = "debug", derive(Debug))]
34848 #[derive(Copy, Clone)]
34849 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>"]
34850 pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
34851     pub s_type: StructureType,
34852     pub p_next: *mut c_void,
34853     pub depth_clip_enable: Bool32,
34854 }
34855 impl ::std::default::Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
default() -> Self34856     fn default() -> Self {
34857         Self {
34858             s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
34859             p_next: ::std::ptr::null_mut(),
34860             depth_clip_enable: Bool32::default(),
34861         }
34862     }
34863 }
34864 impl PhysicalDeviceDepthClipEnableFeaturesEXT {
builder<'a>() -> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a>34865     pub fn builder<'a>() -> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34866         PhysicalDeviceDepthClipEnableFeaturesEXTBuilder {
34867             inner: Self::default(),
34868             marker: ::std::marker::PhantomData,
34869         }
34870     }
34871 }
34872 #[repr(transparent)]
34873 pub struct PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34874     inner: PhysicalDeviceDepthClipEnableFeaturesEXT,
34875     marker: ::std::marker::PhantomData<&'a ()>,
34876 }
34877 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'_> {}
34878 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClipEnableFeaturesEXT {}
34879 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'_> {}
34880 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipEnableFeaturesEXT {}
34881 impl<'a> ::std::ops::Deref for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
34882     type Target = PhysicalDeviceDepthClipEnableFeaturesEXT;
deref(&self) -> &Self::Target34883     fn deref(&self) -> &Self::Target {
34884         &self.inner
34885     }
34886 }
34887 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34888     fn deref_mut(&mut self) -> &mut Self::Target {
34889         &mut self.inner
34890     }
34891 }
34892 impl<'a> PhysicalDeviceDepthClipEnableFeaturesEXTBuilder<'a> {
depth_clip_enable(mut self, depth_clip_enable: bool) -> Self34893     pub fn depth_clip_enable(mut self, depth_clip_enable: bool) -> Self {
34894         self.inner.depth_clip_enable = depth_clip_enable.into();
34895         self
34896     }
34897     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34898     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34899     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDepthClipEnableFeaturesEXT34900     pub fn build(self) -> PhysicalDeviceDepthClipEnableFeaturesEXT {
34901         self.inner
34902     }
34903 }
34904 #[repr(C)]
34905 #[cfg_attr(feature = "debug", derive(Debug))]
34906 #[derive(Copy, Clone)]
34907 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>"]
34908 pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
34909     pub s_type: StructureType,
34910     pub p_next: *const c_void,
34911     pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
34912     pub depth_clip_enable: Bool32,
34913 }
34914 impl ::std::default::Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
default() -> Self34915     fn default() -> Self {
34916         Self {
34917             s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
34918             p_next: ::std::ptr::null(),
34919             flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
34920             depth_clip_enable: Bool32::default(),
34921         }
34922     }
34923 }
34924 impl PipelineRasterizationDepthClipStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a>34925     pub fn builder<'a>() -> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34926         PipelineRasterizationDepthClipStateCreateInfoEXTBuilder {
34927             inner: Self::default(),
34928             marker: ::std::marker::PhantomData,
34929         }
34930     }
34931 }
34932 #[repr(transparent)]
34933 pub struct PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34934     inner: PipelineRasterizationDepthClipStateCreateInfoEXT,
34935     marker: ::std::marker::PhantomData<&'a ()>,
34936 }
34937 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
34938     for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'_>
34939 {
34940 }
34941 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
34942     for PipelineRasterizationDepthClipStateCreateInfoEXT
34943 {
34944 }
34945 impl<'a> ::std::ops::Deref for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
34946     type Target = PipelineRasterizationDepthClipStateCreateInfoEXT;
deref(&self) -> &Self::Target34947     fn deref(&self) -> &Self::Target {
34948         &self.inner
34949     }
34950 }
34951 impl<'a> ::std::ops::DerefMut for PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target34952     fn deref_mut(&mut self) -> &mut Self::Target {
34953         &mut self.inner
34954     }
34955 }
34956 impl<'a> PipelineRasterizationDepthClipStateCreateInfoEXTBuilder<'a> {
flags(mut self, flags: PipelineRasterizationDepthClipStateCreateFlagsEXT) -> Self34957     pub fn flags(mut self, flags: PipelineRasterizationDepthClipStateCreateFlagsEXT) -> Self {
34958         self.inner.flags = flags;
34959         self
34960     }
depth_clip_enable(mut self, depth_clip_enable: bool) -> Self34961     pub fn depth_clip_enable(mut self, depth_clip_enable: bool) -> Self {
34962         self.inner.depth_clip_enable = depth_clip_enable.into();
34963         self
34964     }
34965     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
34966     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
34967     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationDepthClipStateCreateInfoEXT34968     pub fn build(self) -> PipelineRasterizationDepthClipStateCreateInfoEXT {
34969         self.inner
34970     }
34971 }
34972 #[repr(C)]
34973 #[cfg_attr(feature = "debug", derive(Debug))]
34974 #[derive(Copy, Clone)]
34975 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>"]
34976 pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
34977     pub s_type: StructureType,
34978     pub p_next: *mut c_void,
34979     pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS],
34980     pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS],
34981 }
34982 impl ::std::default::Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
default() -> Self34983     fn default() -> Self {
34984         Self {
34985             s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
34986             p_next: ::std::ptr::null_mut(),
34987             heap_budget: unsafe { ::std::mem::zeroed() },
34988             heap_usage: unsafe { ::std::mem::zeroed() },
34989         }
34990     }
34991 }
34992 impl PhysicalDeviceMemoryBudgetPropertiesEXT {
builder<'a>() -> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a>34993     pub fn builder<'a>() -> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
34994         PhysicalDeviceMemoryBudgetPropertiesEXTBuilder {
34995             inner: Self::default(),
34996             marker: ::std::marker::PhantomData,
34997         }
34998     }
34999 }
35000 #[repr(transparent)]
35001 pub struct PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
35002     inner: PhysicalDeviceMemoryBudgetPropertiesEXT,
35003     marker: ::std::marker::PhantomData<&'a ()>,
35004 }
35005 unsafe impl ExtendsPhysicalDeviceMemoryProperties2
35006     for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'_>
35007 {
35008 }
35009 unsafe impl ExtendsPhysicalDeviceMemoryProperties2 for PhysicalDeviceMemoryBudgetPropertiesEXT {}
35010 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
35011     type Target = PhysicalDeviceMemoryBudgetPropertiesEXT;
deref(&self) -> &Self::Target35012     fn deref(&self) -> &Self::Target {
35013         &self.inner
35014     }
35015 }
35016 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35017     fn deref_mut(&mut self) -> &mut Self::Target {
35018         &mut self.inner
35019     }
35020 }
35021 impl<'a> PhysicalDeviceMemoryBudgetPropertiesEXTBuilder<'a> {
heap_budget(mut self, heap_budget: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self35022     pub fn heap_budget(mut self, heap_budget: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self {
35023         self.inner.heap_budget = heap_budget;
35024         self
35025     }
heap_usage(mut self, heap_usage: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self35026     pub fn heap_usage(mut self, heap_usage: [DeviceSize; MAX_MEMORY_HEAPS]) -> Self {
35027         self.inner.heap_usage = heap_usage;
35028         self
35029     }
35030     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35031     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35032     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryBudgetPropertiesEXT35033     pub fn build(self) -> PhysicalDeviceMemoryBudgetPropertiesEXT {
35034         self.inner
35035     }
35036 }
35037 #[repr(C)]
35038 #[cfg_attr(feature = "debug", derive(Debug))]
35039 #[derive(Copy, Clone)]
35040 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>"]
35041 pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
35042     pub s_type: StructureType,
35043     pub p_next: *mut c_void,
35044     pub memory_priority: Bool32,
35045 }
35046 impl ::std::default::Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
default() -> Self35047     fn default() -> Self {
35048         Self {
35049             s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
35050             p_next: ::std::ptr::null_mut(),
35051             memory_priority: Bool32::default(),
35052         }
35053     }
35054 }
35055 impl PhysicalDeviceMemoryPriorityFeaturesEXT {
builder<'a>() -> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a>35056     pub fn builder<'a>() -> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
35057         PhysicalDeviceMemoryPriorityFeaturesEXTBuilder {
35058             inner: Self::default(),
35059             marker: ::std::marker::PhantomData,
35060         }
35061     }
35062 }
35063 #[repr(transparent)]
35064 pub struct PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
35065     inner: PhysicalDeviceMemoryPriorityFeaturesEXT,
35066     marker: ::std::marker::PhantomData<&'a ()>,
35067 }
35068 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'_> {}
35069 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMemoryPriorityFeaturesEXT {}
35070 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'_> {}
35071 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMemoryPriorityFeaturesEXT {}
35072 impl<'a> ::std::ops::Deref for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
35073     type Target = PhysicalDeviceMemoryPriorityFeaturesEXT;
deref(&self) -> &Self::Target35074     fn deref(&self) -> &Self::Target {
35075         &self.inner
35076     }
35077 }
35078 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35079     fn deref_mut(&mut self) -> &mut Self::Target {
35080         &mut self.inner
35081     }
35082 }
35083 impl<'a> PhysicalDeviceMemoryPriorityFeaturesEXTBuilder<'a> {
memory_priority(mut self, memory_priority: bool) -> Self35084     pub fn memory_priority(mut self, memory_priority: bool) -> Self {
35085         self.inner.memory_priority = memory_priority.into();
35086         self
35087     }
35088     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35089     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35090     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMemoryPriorityFeaturesEXT35091     pub fn build(self) -> PhysicalDeviceMemoryPriorityFeaturesEXT {
35092         self.inner
35093     }
35094 }
35095 #[repr(C)]
35096 #[cfg_attr(feature = "debug", derive(Debug))]
35097 #[derive(Copy, Clone)]
35098 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryPriorityAllocateInfoEXT.html>"]
35099 pub struct MemoryPriorityAllocateInfoEXT {
35100     pub s_type: StructureType,
35101     pub p_next: *const c_void,
35102     pub priority: f32,
35103 }
35104 impl ::std::default::Default for MemoryPriorityAllocateInfoEXT {
default() -> Self35105     fn default() -> Self {
35106         Self {
35107             s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
35108             p_next: ::std::ptr::null(),
35109             priority: f32::default(),
35110         }
35111     }
35112 }
35113 impl MemoryPriorityAllocateInfoEXT {
builder<'a>() -> MemoryPriorityAllocateInfoEXTBuilder<'a>35114     pub fn builder<'a>() -> MemoryPriorityAllocateInfoEXTBuilder<'a> {
35115         MemoryPriorityAllocateInfoEXTBuilder {
35116             inner: Self::default(),
35117             marker: ::std::marker::PhantomData,
35118         }
35119     }
35120 }
35121 #[repr(transparent)]
35122 pub struct MemoryPriorityAllocateInfoEXTBuilder<'a> {
35123     inner: MemoryPriorityAllocateInfoEXT,
35124     marker: ::std::marker::PhantomData<&'a ()>,
35125 }
35126 unsafe impl ExtendsMemoryAllocateInfo for MemoryPriorityAllocateInfoEXTBuilder<'_> {}
35127 unsafe impl ExtendsMemoryAllocateInfo for MemoryPriorityAllocateInfoEXT {}
35128 impl<'a> ::std::ops::Deref for MemoryPriorityAllocateInfoEXTBuilder<'a> {
35129     type Target = MemoryPriorityAllocateInfoEXT;
deref(&self) -> &Self::Target35130     fn deref(&self) -> &Self::Target {
35131         &self.inner
35132     }
35133 }
35134 impl<'a> ::std::ops::DerefMut for MemoryPriorityAllocateInfoEXTBuilder<'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> MemoryPriorityAllocateInfoEXTBuilder<'a> {
priority(mut self, priority: f32) -> Self35140     pub fn priority(mut self, priority: f32) -> Self {
35141         self.inner.priority = priority;
35142         self
35143     }
35144     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35145     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35146     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryPriorityAllocateInfoEXT35147     pub fn build(self) -> MemoryPriorityAllocateInfoEXT {
35148         self.inner
35149     }
35150 }
35151 #[repr(C)]
35152 #[cfg_attr(feature = "debug", derive(Debug))]
35153 #[derive(Copy, Clone)]
35154 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>"]
35155 pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
35156     pub s_type: StructureType,
35157     pub p_next: *mut c_void,
35158     pub pageable_device_local_memory: Bool32,
35159 }
35160 impl ::std::default::Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
default() -> Self35161     fn default() -> Self {
35162         Self {
35163             s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
35164             p_next: ::std::ptr::null_mut(),
35165             pageable_device_local_memory: Bool32::default(),
35166         }
35167     }
35168 }
35169 impl PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
builder<'a>() -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a>35170     pub fn builder<'a>() -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
35171         PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder {
35172             inner: Self::default(),
35173             marker: ::std::marker::PhantomData,
35174         }
35175     }
35176 }
35177 #[repr(transparent)]
35178 pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
35179     inner: PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT,
35180     marker: ::std::marker::PhantomData<&'a ()>,
35181 }
35182 unsafe impl ExtendsPhysicalDeviceFeatures2
35183     for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'_>
35184 {
35185 }
35186 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
35187 unsafe impl ExtendsDeviceCreateInfo
35188     for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'_>
35189 {
35190 }
35191 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
35192 impl<'a> ::std::ops::Deref for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
35193     type Target = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
deref(&self) -> &Self::Target35194     fn deref(&self) -> &Self::Target {
35195         &self.inner
35196     }
35197 }
35198 impl<'a> ::std::ops::DerefMut for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35199     fn deref_mut(&mut self) -> &mut Self::Target {
35200         &mut self.inner
35201     }
35202 }
35203 impl<'a> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTBuilder<'a> {
pageable_device_local_memory(mut self, pageable_device_local_memory: bool) -> Self35204     pub fn pageable_device_local_memory(mut self, pageable_device_local_memory: bool) -> Self {
35205         self.inner.pageable_device_local_memory = pageable_device_local_memory.into();
35206         self
35207     }
35208     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35209     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35210     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT35211     pub fn build(self) -> PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
35212         self.inner
35213     }
35214 }
35215 #[repr(C)]
35216 #[cfg_attr(feature = "debug", derive(Debug))]
35217 #[derive(Copy, Clone)]
35218 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>"]
35219 pub struct PhysicalDeviceBufferDeviceAddressFeatures {
35220     pub s_type: StructureType,
35221     pub p_next: *mut c_void,
35222     pub buffer_device_address: Bool32,
35223     pub buffer_device_address_capture_replay: Bool32,
35224     pub buffer_device_address_multi_device: Bool32,
35225 }
35226 impl ::std::default::Default for PhysicalDeviceBufferDeviceAddressFeatures {
default() -> Self35227     fn default() -> Self {
35228         Self {
35229             s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
35230             p_next: ::std::ptr::null_mut(),
35231             buffer_device_address: Bool32::default(),
35232             buffer_device_address_capture_replay: Bool32::default(),
35233             buffer_device_address_multi_device: Bool32::default(),
35234         }
35235     }
35236 }
35237 impl PhysicalDeviceBufferDeviceAddressFeatures {
builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a>35238     pub fn builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
35239         PhysicalDeviceBufferDeviceAddressFeaturesBuilder {
35240             inner: Self::default(),
35241             marker: ::std::marker::PhantomData,
35242         }
35243     }
35244 }
35245 #[repr(transparent)]
35246 pub struct PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
35247     inner: PhysicalDeviceBufferDeviceAddressFeatures,
35248     marker: ::std::marker::PhantomData<&'a ()>,
35249 }
35250 unsafe impl ExtendsPhysicalDeviceFeatures2
35251     for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'_>
35252 {
35253 }
35254 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBufferDeviceAddressFeatures {}
35255 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'_> {}
35256 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeatures {}
35257 impl<'a> ::std::ops::Deref for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
35258     type Target = PhysicalDeviceBufferDeviceAddressFeatures;
deref(&self) -> &Self::Target35259     fn deref(&self) -> &Self::Target {
35260         &self.inner
35261     }
35262 }
35263 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35264     fn deref_mut(&mut self) -> &mut Self::Target {
35265         &mut self.inner
35266     }
35267 }
35268 impl<'a> PhysicalDeviceBufferDeviceAddressFeaturesBuilder<'a> {
buffer_device_address(mut self, buffer_device_address: bool) -> Self35269     pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self {
35270         self.inner.buffer_device_address = buffer_device_address.into();
35271         self
35272     }
buffer_device_address_capture_replay( mut self, buffer_device_address_capture_replay: bool, ) -> Self35273     pub fn buffer_device_address_capture_replay(
35274         mut self,
35275         buffer_device_address_capture_replay: bool,
35276     ) -> Self {
35277         self.inner.buffer_device_address_capture_replay =
35278             buffer_device_address_capture_replay.into();
35279         self
35280     }
buffer_device_address_multi_device( mut self, buffer_device_address_multi_device: bool, ) -> Self35281     pub fn buffer_device_address_multi_device(
35282         mut self,
35283         buffer_device_address_multi_device: bool,
35284     ) -> Self {
35285         self.inner.buffer_device_address_multi_device = buffer_device_address_multi_device.into();
35286         self
35287     }
35288     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35289     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35290     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBufferDeviceAddressFeatures35291     pub fn build(self) -> PhysicalDeviceBufferDeviceAddressFeatures {
35292         self.inner
35293     }
35294 }
35295 #[repr(C)]
35296 #[cfg_attr(feature = "debug", derive(Debug))]
35297 #[derive(Copy, Clone)]
35298 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>"]
35299 pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
35300     pub s_type: StructureType,
35301     pub p_next: *mut c_void,
35302     pub buffer_device_address: Bool32,
35303     pub buffer_device_address_capture_replay: Bool32,
35304     pub buffer_device_address_multi_device: Bool32,
35305 }
35306 impl ::std::default::Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
default() -> Self35307     fn default() -> Self {
35308         Self {
35309             s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
35310             p_next: ::std::ptr::null_mut(),
35311             buffer_device_address: Bool32::default(),
35312             buffer_device_address_capture_replay: Bool32::default(),
35313             buffer_device_address_multi_device: Bool32::default(),
35314         }
35315     }
35316 }
35317 impl PhysicalDeviceBufferDeviceAddressFeaturesEXT {
builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a>35318     pub fn builder<'a>() -> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
35319         PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder {
35320             inner: Self::default(),
35321             marker: ::std::marker::PhantomData,
35322         }
35323     }
35324 }
35325 #[repr(transparent)]
35326 pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
35327     inner: PhysicalDeviceBufferDeviceAddressFeaturesEXT,
35328     marker: ::std::marker::PhantomData<&'a ()>,
35329 }
35330 unsafe impl ExtendsPhysicalDeviceFeatures2
35331     for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'_>
35332 {
35333 }
35334 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
35335 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'_> {}
35336 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
35337 impl<'a> ::std::ops::Deref for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
35338     type Target = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
deref(&self) -> &Self::Target35339     fn deref(&self) -> &Self::Target {
35340         &self.inner
35341     }
35342 }
35343 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35344     fn deref_mut(&mut self) -> &mut Self::Target {
35345         &mut self.inner
35346     }
35347 }
35348 impl<'a> PhysicalDeviceBufferDeviceAddressFeaturesEXTBuilder<'a> {
buffer_device_address(mut self, buffer_device_address: bool) -> Self35349     pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self {
35350         self.inner.buffer_device_address = buffer_device_address.into();
35351         self
35352     }
buffer_device_address_capture_replay( mut self, buffer_device_address_capture_replay: bool, ) -> Self35353     pub fn buffer_device_address_capture_replay(
35354         mut self,
35355         buffer_device_address_capture_replay: bool,
35356     ) -> Self {
35357         self.inner.buffer_device_address_capture_replay =
35358             buffer_device_address_capture_replay.into();
35359         self
35360     }
buffer_device_address_multi_device( mut self, buffer_device_address_multi_device: bool, ) -> Self35361     pub fn buffer_device_address_multi_device(
35362         mut self,
35363         buffer_device_address_multi_device: bool,
35364     ) -> Self {
35365         self.inner.buffer_device_address_multi_device = buffer_device_address_multi_device.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) -> PhysicalDeviceBufferDeviceAddressFeaturesEXT35371     pub fn build(self) -> PhysicalDeviceBufferDeviceAddressFeaturesEXT {
35372         self.inner
35373     }
35374 }
35375 #[repr(C)]
35376 #[cfg_attr(feature = "debug", derive(Debug))]
35377 #[derive(Copy, Clone)]
35378 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferDeviceAddressInfo.html>"]
35379 pub struct BufferDeviceAddressInfo {
35380     pub s_type: StructureType,
35381     pub p_next: *const c_void,
35382     pub buffer: Buffer,
35383 }
35384 impl ::std::default::Default for BufferDeviceAddressInfo {
default() -> Self35385     fn default() -> Self {
35386         Self {
35387             s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
35388             p_next: ::std::ptr::null(),
35389             buffer: Buffer::default(),
35390         }
35391     }
35392 }
35393 impl BufferDeviceAddressInfo {
builder<'a>() -> BufferDeviceAddressInfoBuilder<'a>35394     pub fn builder<'a>() -> BufferDeviceAddressInfoBuilder<'a> {
35395         BufferDeviceAddressInfoBuilder {
35396             inner: Self::default(),
35397             marker: ::std::marker::PhantomData,
35398         }
35399     }
35400 }
35401 #[repr(transparent)]
35402 pub struct BufferDeviceAddressInfoBuilder<'a> {
35403     inner: BufferDeviceAddressInfo,
35404     marker: ::std::marker::PhantomData<&'a ()>,
35405 }
35406 impl<'a> ::std::ops::Deref for BufferDeviceAddressInfoBuilder<'a> {
35407     type Target = BufferDeviceAddressInfo;
deref(&self) -> &Self::Target35408     fn deref(&self) -> &Self::Target {
35409         &self.inner
35410     }
35411 }
35412 impl<'a> ::std::ops::DerefMut for BufferDeviceAddressInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35413     fn deref_mut(&mut self) -> &mut Self::Target {
35414         &mut self.inner
35415     }
35416 }
35417 impl<'a> BufferDeviceAddressInfoBuilder<'a> {
buffer(mut self, buffer: Buffer) -> Self35418     pub fn buffer(mut self, buffer: Buffer) -> Self {
35419         self.inner.buffer = buffer;
35420         self
35421     }
35422     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35423     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35424     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferDeviceAddressInfo35425     pub fn build(self) -> BufferDeviceAddressInfo {
35426         self.inner
35427     }
35428 }
35429 #[repr(C)]
35430 #[cfg_attr(feature = "debug", derive(Debug))]
35431 #[derive(Copy, Clone)]
35432 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>"]
35433 pub struct BufferOpaqueCaptureAddressCreateInfo {
35434     pub s_type: StructureType,
35435     pub p_next: *const c_void,
35436     pub opaque_capture_address: u64,
35437 }
35438 impl ::std::default::Default for BufferOpaqueCaptureAddressCreateInfo {
default() -> Self35439     fn default() -> Self {
35440         Self {
35441             s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
35442             p_next: ::std::ptr::null(),
35443             opaque_capture_address: u64::default(),
35444         }
35445     }
35446 }
35447 impl BufferOpaqueCaptureAddressCreateInfo {
builder<'a>() -> BufferOpaqueCaptureAddressCreateInfoBuilder<'a>35448     pub fn builder<'a>() -> BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
35449         BufferOpaqueCaptureAddressCreateInfoBuilder {
35450             inner: Self::default(),
35451             marker: ::std::marker::PhantomData,
35452         }
35453     }
35454 }
35455 #[repr(transparent)]
35456 pub struct BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
35457     inner: BufferOpaqueCaptureAddressCreateInfo,
35458     marker: ::std::marker::PhantomData<&'a ()>,
35459 }
35460 unsafe impl ExtendsBufferCreateInfo for BufferOpaqueCaptureAddressCreateInfoBuilder<'_> {}
35461 unsafe impl ExtendsBufferCreateInfo for BufferOpaqueCaptureAddressCreateInfo {}
35462 impl<'a> ::std::ops::Deref for BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
35463     type Target = BufferOpaqueCaptureAddressCreateInfo;
deref(&self) -> &Self::Target35464     fn deref(&self) -> &Self::Target {
35465         &self.inner
35466     }
35467 }
35468 impl<'a> ::std::ops::DerefMut for BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35469     fn deref_mut(&mut self) -> &mut Self::Target {
35470         &mut self.inner
35471     }
35472 }
35473 impl<'a> BufferOpaqueCaptureAddressCreateInfoBuilder<'a> {
opaque_capture_address(mut self, opaque_capture_address: u64) -> Self35474     pub fn opaque_capture_address(mut self, opaque_capture_address: u64) -> Self {
35475         self.inner.opaque_capture_address = opaque_capture_address;
35476         self
35477     }
35478     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35479     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35480     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferOpaqueCaptureAddressCreateInfo35481     pub fn build(self) -> BufferOpaqueCaptureAddressCreateInfo {
35482         self.inner
35483     }
35484 }
35485 #[repr(C)]
35486 #[cfg_attr(feature = "debug", derive(Debug))]
35487 #[derive(Copy, Clone)]
35488 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferDeviceAddressCreateInfoEXT.html>"]
35489 pub struct BufferDeviceAddressCreateInfoEXT {
35490     pub s_type: StructureType,
35491     pub p_next: *const c_void,
35492     pub device_address: DeviceAddress,
35493 }
35494 impl ::std::default::Default for BufferDeviceAddressCreateInfoEXT {
default() -> Self35495     fn default() -> Self {
35496         Self {
35497             s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
35498             p_next: ::std::ptr::null(),
35499             device_address: DeviceAddress::default(),
35500         }
35501     }
35502 }
35503 impl BufferDeviceAddressCreateInfoEXT {
builder<'a>() -> BufferDeviceAddressCreateInfoEXTBuilder<'a>35504     pub fn builder<'a>() -> BufferDeviceAddressCreateInfoEXTBuilder<'a> {
35505         BufferDeviceAddressCreateInfoEXTBuilder {
35506             inner: Self::default(),
35507             marker: ::std::marker::PhantomData,
35508         }
35509     }
35510 }
35511 #[repr(transparent)]
35512 pub struct BufferDeviceAddressCreateInfoEXTBuilder<'a> {
35513     inner: BufferDeviceAddressCreateInfoEXT,
35514     marker: ::std::marker::PhantomData<&'a ()>,
35515 }
35516 unsafe impl ExtendsBufferCreateInfo for BufferDeviceAddressCreateInfoEXTBuilder<'_> {}
35517 unsafe impl ExtendsBufferCreateInfo for BufferDeviceAddressCreateInfoEXT {}
35518 impl<'a> ::std::ops::Deref for BufferDeviceAddressCreateInfoEXTBuilder<'a> {
35519     type Target = BufferDeviceAddressCreateInfoEXT;
deref(&self) -> &Self::Target35520     fn deref(&self) -> &Self::Target {
35521         &self.inner
35522     }
35523 }
35524 impl<'a> ::std::ops::DerefMut for BufferDeviceAddressCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35525     fn deref_mut(&mut self) -> &mut Self::Target {
35526         &mut self.inner
35527     }
35528 }
35529 impl<'a> BufferDeviceAddressCreateInfoEXTBuilder<'a> {
device_address(mut self, device_address: DeviceAddress) -> Self35530     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
35531         self.inner.device_address = device_address;
35532         self
35533     }
35534     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35535     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35536     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferDeviceAddressCreateInfoEXT35537     pub fn build(self) -> BufferDeviceAddressCreateInfoEXT {
35538         self.inner
35539     }
35540 }
35541 #[repr(C)]
35542 #[cfg_attr(feature = "debug", derive(Debug))]
35543 #[derive(Copy, Clone)]
35544 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>"]
35545 pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
35546     pub s_type: StructureType,
35547     pub p_next: *mut c_void,
35548     pub image_view_type: ImageViewType,
35549 }
35550 impl ::std::default::Default for PhysicalDeviceImageViewImageFormatInfoEXT {
default() -> Self35551     fn default() -> Self {
35552         Self {
35553             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
35554             p_next: ::std::ptr::null_mut(),
35555             image_view_type: ImageViewType::default(),
35556         }
35557     }
35558 }
35559 impl PhysicalDeviceImageViewImageFormatInfoEXT {
builder<'a>() -> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a>35560     pub fn builder<'a>() -> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
35561         PhysicalDeviceImageViewImageFormatInfoEXTBuilder {
35562             inner: Self::default(),
35563             marker: ::std::marker::PhantomData,
35564         }
35565     }
35566 }
35567 #[repr(transparent)]
35568 pub struct PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
35569     inner: PhysicalDeviceImageViewImageFormatInfoEXT,
35570     marker: ::std::marker::PhantomData<&'a ()>,
35571 }
35572 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2
35573     for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'_>
35574 {
35575 }
35576 unsafe impl ExtendsPhysicalDeviceImageFormatInfo2 for PhysicalDeviceImageViewImageFormatInfoEXT {}
35577 impl<'a> ::std::ops::Deref for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
35578     type Target = PhysicalDeviceImageViewImageFormatInfoEXT;
deref(&self) -> &Self::Target35579     fn deref(&self) -> &Self::Target {
35580         &self.inner
35581     }
35582 }
35583 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35584     fn deref_mut(&mut self) -> &mut Self::Target {
35585         &mut self.inner
35586     }
35587 }
35588 impl<'a> PhysicalDeviceImageViewImageFormatInfoEXTBuilder<'a> {
image_view_type(mut self, image_view_type: ImageViewType) -> Self35589     pub fn image_view_type(mut self, image_view_type: ImageViewType) -> Self {
35590         self.inner.image_view_type = image_view_type;
35591         self
35592     }
35593     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35594     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35595     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageViewImageFormatInfoEXT35596     pub fn build(self) -> PhysicalDeviceImageViewImageFormatInfoEXT {
35597         self.inner
35598     }
35599 }
35600 #[repr(C)]
35601 #[cfg_attr(feature = "debug", derive(Debug))]
35602 #[derive(Copy, Clone)]
35603 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>"]
35604 pub struct FilterCubicImageViewImageFormatPropertiesEXT {
35605     pub s_type: StructureType,
35606     pub p_next: *mut c_void,
35607     pub filter_cubic: Bool32,
35608     pub filter_cubic_minmax: Bool32,
35609 }
35610 impl ::std::default::Default for FilterCubicImageViewImageFormatPropertiesEXT {
default() -> Self35611     fn default() -> Self {
35612         Self {
35613             s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
35614             p_next: ::std::ptr::null_mut(),
35615             filter_cubic: Bool32::default(),
35616             filter_cubic_minmax: Bool32::default(),
35617         }
35618     }
35619 }
35620 impl FilterCubicImageViewImageFormatPropertiesEXT {
builder<'a>() -> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a>35621     pub fn builder<'a>() -> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
35622         FilterCubicImageViewImageFormatPropertiesEXTBuilder {
35623             inner: Self::default(),
35624             marker: ::std::marker::PhantomData,
35625         }
35626     }
35627 }
35628 #[repr(transparent)]
35629 pub struct FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
35630     inner: FilterCubicImageViewImageFormatPropertiesEXT,
35631     marker: ::std::marker::PhantomData<&'a ()>,
35632 }
35633 unsafe impl ExtendsImageFormatProperties2
35634     for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'_>
35635 {
35636 }
35637 unsafe impl ExtendsImageFormatProperties2 for FilterCubicImageViewImageFormatPropertiesEXT {}
35638 impl<'a> ::std::ops::Deref for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
35639     type Target = FilterCubicImageViewImageFormatPropertiesEXT;
deref(&self) -> &Self::Target35640     fn deref(&self) -> &Self::Target {
35641         &self.inner
35642     }
35643 }
35644 impl<'a> ::std::ops::DerefMut for FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35645     fn deref_mut(&mut self) -> &mut Self::Target {
35646         &mut self.inner
35647     }
35648 }
35649 impl<'a> FilterCubicImageViewImageFormatPropertiesEXTBuilder<'a> {
filter_cubic(mut self, filter_cubic: bool) -> Self35650     pub fn filter_cubic(mut self, filter_cubic: bool) -> Self {
35651         self.inner.filter_cubic = filter_cubic.into();
35652         self
35653     }
filter_cubic_minmax(mut self, filter_cubic_minmax: bool) -> Self35654     pub fn filter_cubic_minmax(mut self, filter_cubic_minmax: bool) -> Self {
35655         self.inner.filter_cubic_minmax = filter_cubic_minmax.into();
35656         self
35657     }
35658     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35659     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35660     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FilterCubicImageViewImageFormatPropertiesEXT35661     pub fn build(self) -> FilterCubicImageViewImageFormatPropertiesEXT {
35662         self.inner
35663     }
35664 }
35665 #[repr(C)]
35666 #[cfg_attr(feature = "debug", derive(Debug))]
35667 #[derive(Copy, Clone)]
35668 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>"]
35669 pub struct PhysicalDeviceImagelessFramebufferFeatures {
35670     pub s_type: StructureType,
35671     pub p_next: *mut c_void,
35672     pub imageless_framebuffer: Bool32,
35673 }
35674 impl ::std::default::Default for PhysicalDeviceImagelessFramebufferFeatures {
default() -> Self35675     fn default() -> Self {
35676         Self {
35677             s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
35678             p_next: ::std::ptr::null_mut(),
35679             imageless_framebuffer: Bool32::default(),
35680         }
35681     }
35682 }
35683 impl PhysicalDeviceImagelessFramebufferFeatures {
builder<'a>() -> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a>35684     pub fn builder<'a>() -> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35685         PhysicalDeviceImagelessFramebufferFeaturesBuilder {
35686             inner: Self::default(),
35687             marker: ::std::marker::PhantomData,
35688         }
35689     }
35690 }
35691 #[repr(transparent)]
35692 pub struct PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35693     inner: PhysicalDeviceImagelessFramebufferFeatures,
35694     marker: ::std::marker::PhantomData<&'a ()>,
35695 }
35696 unsafe impl ExtendsPhysicalDeviceFeatures2
35697     for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'_>
35698 {
35699 }
35700 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImagelessFramebufferFeatures {}
35701 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'_> {}
35702 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImagelessFramebufferFeatures {}
35703 impl<'a> ::std::ops::Deref for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
35704     type Target = PhysicalDeviceImagelessFramebufferFeatures;
deref(&self) -> &Self::Target35705     fn deref(&self) -> &Self::Target {
35706         &self.inner
35707     }
35708 }
35709 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35710     fn deref_mut(&mut self) -> &mut Self::Target {
35711         &mut self.inner
35712     }
35713 }
35714 impl<'a> PhysicalDeviceImagelessFramebufferFeaturesBuilder<'a> {
imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self35715     pub fn imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self {
35716         self.inner.imageless_framebuffer = imageless_framebuffer.into();
35717         self
35718     }
35719     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35720     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35721     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImagelessFramebufferFeatures35722     pub fn build(self) -> PhysicalDeviceImagelessFramebufferFeatures {
35723         self.inner
35724     }
35725 }
35726 #[repr(C)]
35727 #[cfg_attr(feature = "debug", derive(Debug))]
35728 #[derive(Copy, Clone)]
35729 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferAttachmentsCreateInfo.html>"]
35730 pub struct FramebufferAttachmentsCreateInfo {
35731     pub s_type: StructureType,
35732     pub p_next: *const c_void,
35733     pub attachment_image_info_count: u32,
35734     pub p_attachment_image_infos: *const FramebufferAttachmentImageInfo,
35735 }
35736 impl ::std::default::Default for FramebufferAttachmentsCreateInfo {
default() -> Self35737     fn default() -> Self {
35738         Self {
35739             s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
35740             p_next: ::std::ptr::null(),
35741             attachment_image_info_count: u32::default(),
35742             p_attachment_image_infos: ::std::ptr::null(),
35743         }
35744     }
35745 }
35746 impl FramebufferAttachmentsCreateInfo {
builder<'a>() -> FramebufferAttachmentsCreateInfoBuilder<'a>35747     pub fn builder<'a>() -> FramebufferAttachmentsCreateInfoBuilder<'a> {
35748         FramebufferAttachmentsCreateInfoBuilder {
35749             inner: Self::default(),
35750             marker: ::std::marker::PhantomData,
35751         }
35752     }
35753 }
35754 #[repr(transparent)]
35755 pub struct FramebufferAttachmentsCreateInfoBuilder<'a> {
35756     inner: FramebufferAttachmentsCreateInfo,
35757     marker: ::std::marker::PhantomData<&'a ()>,
35758 }
35759 unsafe impl ExtendsFramebufferCreateInfo for FramebufferAttachmentsCreateInfoBuilder<'_> {}
35760 unsafe impl ExtendsFramebufferCreateInfo for FramebufferAttachmentsCreateInfo {}
35761 impl<'a> ::std::ops::Deref for FramebufferAttachmentsCreateInfoBuilder<'a> {
35762     type Target = FramebufferAttachmentsCreateInfo;
deref(&self) -> &Self::Target35763     fn deref(&self) -> &Self::Target {
35764         &self.inner
35765     }
35766 }
35767 impl<'a> ::std::ops::DerefMut for FramebufferAttachmentsCreateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35768     fn deref_mut(&mut self) -> &mut Self::Target {
35769         &mut self.inner
35770     }
35771 }
35772 impl<'a> FramebufferAttachmentsCreateInfoBuilder<'a> {
attachment_image_infos( mut self, attachment_image_infos: &'a [FramebufferAttachmentImageInfo], ) -> Self35773     pub fn attachment_image_infos(
35774         mut self,
35775         attachment_image_infos: &'a [FramebufferAttachmentImageInfo],
35776     ) -> Self {
35777         self.inner.attachment_image_info_count = attachment_image_infos.len() as _;
35778         self.inner.p_attachment_image_infos = attachment_image_infos.as_ptr();
35779         self
35780     }
35781     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35782     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35783     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferAttachmentsCreateInfo35784     pub fn build(self) -> FramebufferAttachmentsCreateInfo {
35785         self.inner
35786     }
35787 }
35788 #[repr(C)]
35789 #[cfg_attr(feature = "debug", derive(Debug))]
35790 #[derive(Copy, Clone)]
35791 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferAttachmentImageInfo.html>"]
35792 pub struct FramebufferAttachmentImageInfo {
35793     pub s_type: StructureType,
35794     pub p_next: *const c_void,
35795     pub flags: ImageCreateFlags,
35796     pub usage: ImageUsageFlags,
35797     pub width: u32,
35798     pub height: u32,
35799     pub layer_count: u32,
35800     pub view_format_count: u32,
35801     pub p_view_formats: *const Format,
35802 }
35803 impl ::std::default::Default for FramebufferAttachmentImageInfo {
default() -> Self35804     fn default() -> Self {
35805         Self {
35806             s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
35807             p_next: ::std::ptr::null(),
35808             flags: ImageCreateFlags::default(),
35809             usage: ImageUsageFlags::default(),
35810             width: u32::default(),
35811             height: u32::default(),
35812             layer_count: u32::default(),
35813             view_format_count: u32::default(),
35814             p_view_formats: ::std::ptr::null(),
35815         }
35816     }
35817 }
35818 impl FramebufferAttachmentImageInfo {
builder<'a>() -> FramebufferAttachmentImageInfoBuilder<'a>35819     pub fn builder<'a>() -> FramebufferAttachmentImageInfoBuilder<'a> {
35820         FramebufferAttachmentImageInfoBuilder {
35821             inner: Self::default(),
35822             marker: ::std::marker::PhantomData,
35823         }
35824     }
35825 }
35826 #[repr(transparent)]
35827 pub struct FramebufferAttachmentImageInfoBuilder<'a> {
35828     inner: FramebufferAttachmentImageInfo,
35829     marker: ::std::marker::PhantomData<&'a ()>,
35830 }
35831 impl<'a> ::std::ops::Deref for FramebufferAttachmentImageInfoBuilder<'a> {
35832     type Target = FramebufferAttachmentImageInfo;
deref(&self) -> &Self::Target35833     fn deref(&self) -> &Self::Target {
35834         &self.inner
35835     }
35836 }
35837 impl<'a> ::std::ops::DerefMut for FramebufferAttachmentImageInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35838     fn deref_mut(&mut self) -> &mut Self::Target {
35839         &mut self.inner
35840     }
35841 }
35842 impl<'a> FramebufferAttachmentImageInfoBuilder<'a> {
flags(mut self, flags: ImageCreateFlags) -> Self35843     pub fn flags(mut self, flags: ImageCreateFlags) -> Self {
35844         self.inner.flags = flags;
35845         self
35846     }
usage(mut self, usage: ImageUsageFlags) -> Self35847     pub fn usage(mut self, usage: ImageUsageFlags) -> Self {
35848         self.inner.usage = usage;
35849         self
35850     }
width(mut self, width: u32) -> Self35851     pub fn width(mut self, width: u32) -> Self {
35852         self.inner.width = width;
35853         self
35854     }
height(mut self, height: u32) -> Self35855     pub fn height(mut self, height: u32) -> Self {
35856         self.inner.height = height;
35857         self
35858     }
layer_count(mut self, layer_count: u32) -> Self35859     pub fn layer_count(mut self, layer_count: u32) -> Self {
35860         self.inner.layer_count = layer_count;
35861         self
35862     }
view_formats(mut self, view_formats: &'a [Format]) -> Self35863     pub fn view_formats(mut self, view_formats: &'a [Format]) -> Self {
35864         self.inner.view_format_count = view_formats.len() as _;
35865         self.inner.p_view_formats = view_formats.as_ptr();
35866         self
35867     }
35868     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35869     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35870     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferAttachmentImageInfo35871     pub fn build(self) -> FramebufferAttachmentImageInfo {
35872         self.inner
35873     }
35874 }
35875 #[repr(C)]
35876 #[cfg_attr(feature = "debug", derive(Debug))]
35877 #[derive(Copy, Clone)]
35878 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassAttachmentBeginInfo.html>"]
35879 pub struct RenderPassAttachmentBeginInfo {
35880     pub s_type: StructureType,
35881     pub p_next: *const c_void,
35882     pub attachment_count: u32,
35883     pub p_attachments: *const ImageView,
35884 }
35885 impl ::std::default::Default for RenderPassAttachmentBeginInfo {
default() -> Self35886     fn default() -> Self {
35887         Self {
35888             s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
35889             p_next: ::std::ptr::null(),
35890             attachment_count: u32::default(),
35891             p_attachments: ::std::ptr::null(),
35892         }
35893     }
35894 }
35895 impl RenderPassAttachmentBeginInfo {
builder<'a>() -> RenderPassAttachmentBeginInfoBuilder<'a>35896     pub fn builder<'a>() -> RenderPassAttachmentBeginInfoBuilder<'a> {
35897         RenderPassAttachmentBeginInfoBuilder {
35898             inner: Self::default(),
35899             marker: ::std::marker::PhantomData,
35900         }
35901     }
35902 }
35903 #[repr(transparent)]
35904 pub struct RenderPassAttachmentBeginInfoBuilder<'a> {
35905     inner: RenderPassAttachmentBeginInfo,
35906     marker: ::std::marker::PhantomData<&'a ()>,
35907 }
35908 unsafe impl ExtendsRenderPassBeginInfo for RenderPassAttachmentBeginInfoBuilder<'_> {}
35909 unsafe impl ExtendsRenderPassBeginInfo for RenderPassAttachmentBeginInfo {}
35910 impl<'a> ::std::ops::Deref for RenderPassAttachmentBeginInfoBuilder<'a> {
35911     type Target = RenderPassAttachmentBeginInfo;
deref(&self) -> &Self::Target35912     fn deref(&self) -> &Self::Target {
35913         &self.inner
35914     }
35915 }
35916 impl<'a> ::std::ops::DerefMut for RenderPassAttachmentBeginInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35917     fn deref_mut(&mut self) -> &mut Self::Target {
35918         &mut self.inner
35919     }
35920 }
35921 impl<'a> RenderPassAttachmentBeginInfoBuilder<'a> {
attachments(mut self, attachments: &'a [ImageView]) -> Self35922     pub fn attachments(mut self, attachments: &'a [ImageView]) -> Self {
35923         self.inner.attachment_count = attachments.len() as _;
35924         self.inner.p_attachments = attachments.as_ptr();
35925         self
35926     }
35927     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35928     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35929     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassAttachmentBeginInfo35930     pub fn build(self) -> RenderPassAttachmentBeginInfo {
35931         self.inner
35932     }
35933 }
35934 #[repr(C)]
35935 #[cfg_attr(feature = "debug", derive(Debug))]
35936 #[derive(Copy, Clone)]
35937 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>"]
35938 pub struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
35939     pub s_type: StructureType,
35940     pub p_next: *mut c_void,
35941     pub texture_compression_astc_hdr: Bool32,
35942 }
35943 impl ::std::default::Default for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
default() -> Self35944     fn default() -> Self {
35945         Self {
35946             s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,
35947             p_next: ::std::ptr::null_mut(),
35948             texture_compression_astc_hdr: Bool32::default(),
35949         }
35950     }
35951 }
35952 impl PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
builder<'a>() -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a>35953     pub fn builder<'a>() -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
35954         PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder {
35955             inner: Self::default(),
35956             marker: ::std::marker::PhantomData,
35957         }
35958     }
35959 }
35960 #[repr(transparent)]
35961 pub struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
35962     inner: PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT,
35963     marker: ::std::marker::PhantomData<&'a ()>,
35964 }
35965 unsafe impl ExtendsPhysicalDeviceFeatures2
35966     for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'_>
35967 {
35968 }
35969 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {}
35970 unsafe impl ExtendsDeviceCreateInfo
35971     for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'_>
35972 {
35973 }
35974 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {}
35975 impl<'a> ::std::ops::Deref for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
35976     type Target = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
deref(&self) -> &Self::Target35977     fn deref(&self) -> &Self::Target {
35978         &self.inner
35979     }
35980 }
35981 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target35982     fn deref_mut(&mut self) -> &mut Self::Target {
35983         &mut self.inner
35984     }
35985 }
35986 impl<'a> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXTBuilder<'a> {
texture_compression_astc_hdr(mut self, texture_compression_astc_hdr: bool) -> Self35987     pub fn texture_compression_astc_hdr(mut self, texture_compression_astc_hdr: bool) -> Self {
35988         self.inner.texture_compression_astc_hdr = texture_compression_astc_hdr.into();
35989         self
35990     }
35991     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
35992     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
35993     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT35994     pub fn build(self) -> PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
35995         self.inner
35996     }
35997 }
35998 #[repr(C)]
35999 #[cfg_attr(feature = "debug", derive(Debug))]
36000 #[derive(Copy, Clone)]
36001 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>"]
36002 pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
36003     pub s_type: StructureType,
36004     pub p_next: *mut c_void,
36005     pub cooperative_matrix: Bool32,
36006     pub cooperative_matrix_robust_buffer_access: Bool32,
36007 }
36008 impl ::std::default::Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
default() -> Self36009     fn default() -> Self {
36010         Self {
36011             s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
36012             p_next: ::std::ptr::null_mut(),
36013             cooperative_matrix: Bool32::default(),
36014             cooperative_matrix_robust_buffer_access: Bool32::default(),
36015         }
36016     }
36017 }
36018 impl PhysicalDeviceCooperativeMatrixFeaturesNV {
builder<'a>() -> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a>36019     pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
36020         PhysicalDeviceCooperativeMatrixFeaturesNVBuilder {
36021             inner: Self::default(),
36022             marker: ::std::marker::PhantomData,
36023         }
36024     }
36025 }
36026 #[repr(transparent)]
36027 pub struct PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
36028     inner: PhysicalDeviceCooperativeMatrixFeaturesNV,
36029     marker: ::std::marker::PhantomData<&'a ()>,
36030 }
36031 unsafe impl ExtendsPhysicalDeviceFeatures2
36032     for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'_>
36033 {
36034 }
36035 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCooperativeMatrixFeaturesNV {}
36036 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'_> {}
36037 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCooperativeMatrixFeaturesNV {}
36038 impl<'a> ::std::ops::Deref for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
36039     type Target = PhysicalDeviceCooperativeMatrixFeaturesNV;
deref(&self) -> &Self::Target36040     fn deref(&self) -> &Self::Target {
36041         &self.inner
36042     }
36043 }
36044 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36045     fn deref_mut(&mut self) -> &mut Self::Target {
36046         &mut self.inner
36047     }
36048 }
36049 impl<'a> PhysicalDeviceCooperativeMatrixFeaturesNVBuilder<'a> {
cooperative_matrix(mut self, cooperative_matrix: bool) -> Self36050     pub fn cooperative_matrix(mut self, cooperative_matrix: bool) -> Self {
36051         self.inner.cooperative_matrix = cooperative_matrix.into();
36052         self
36053     }
cooperative_matrix_robust_buffer_access( mut self, cooperative_matrix_robust_buffer_access: bool, ) -> Self36054     pub fn cooperative_matrix_robust_buffer_access(
36055         mut self,
36056         cooperative_matrix_robust_buffer_access: bool,
36057     ) -> Self {
36058         self.inner.cooperative_matrix_robust_buffer_access =
36059             cooperative_matrix_robust_buffer_access.into();
36060         self
36061     }
36062     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36063     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36064     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCooperativeMatrixFeaturesNV36065     pub fn build(self) -> PhysicalDeviceCooperativeMatrixFeaturesNV {
36066         self.inner
36067     }
36068 }
36069 #[repr(C)]
36070 #[cfg_attr(feature = "debug", derive(Debug))]
36071 #[derive(Copy, Clone)]
36072 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>"]
36073 pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
36074     pub s_type: StructureType,
36075     pub p_next: *mut c_void,
36076     pub cooperative_matrix_supported_stages: ShaderStageFlags,
36077 }
36078 impl ::std::default::Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
default() -> Self36079     fn default() -> Self {
36080         Self {
36081             s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
36082             p_next: ::std::ptr::null_mut(),
36083             cooperative_matrix_supported_stages: ShaderStageFlags::default(),
36084         }
36085     }
36086 }
36087 impl PhysicalDeviceCooperativeMatrixPropertiesNV {
builder<'a>() -> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a>36088     pub fn builder<'a>() -> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
36089         PhysicalDeviceCooperativeMatrixPropertiesNVBuilder {
36090             inner: Self::default(),
36091             marker: ::std::marker::PhantomData,
36092         }
36093     }
36094 }
36095 #[repr(transparent)]
36096 pub struct PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
36097     inner: PhysicalDeviceCooperativeMatrixPropertiesNV,
36098     marker: ::std::marker::PhantomData<&'a ()>,
36099 }
36100 unsafe impl ExtendsPhysicalDeviceProperties2
36101     for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'_>
36102 {
36103 }
36104 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCooperativeMatrixPropertiesNV {}
36105 impl<'a> ::std::ops::Deref for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
36106     type Target = PhysicalDeviceCooperativeMatrixPropertiesNV;
deref(&self) -> &Self::Target36107     fn deref(&self) -> &Self::Target {
36108         &self.inner
36109     }
36110 }
36111 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36112     fn deref_mut(&mut self) -> &mut Self::Target {
36113         &mut self.inner
36114     }
36115 }
36116 impl<'a> PhysicalDeviceCooperativeMatrixPropertiesNVBuilder<'a> {
cooperative_matrix_supported_stages( mut self, cooperative_matrix_supported_stages: ShaderStageFlags, ) -> Self36117     pub fn cooperative_matrix_supported_stages(
36118         mut self,
36119         cooperative_matrix_supported_stages: ShaderStageFlags,
36120     ) -> Self {
36121         self.inner.cooperative_matrix_supported_stages = cooperative_matrix_supported_stages;
36122         self
36123     }
36124     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36125     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36126     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCooperativeMatrixPropertiesNV36127     pub fn build(self) -> PhysicalDeviceCooperativeMatrixPropertiesNV {
36128         self.inner
36129     }
36130 }
36131 #[repr(C)]
36132 #[cfg_attr(feature = "debug", derive(Debug))]
36133 #[derive(Copy, Clone)]
36134 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCooperativeMatrixPropertiesNV.html>"]
36135 pub struct CooperativeMatrixPropertiesNV {
36136     pub s_type: StructureType,
36137     pub p_next: *mut c_void,
36138     pub m_size: u32,
36139     pub n_size: u32,
36140     pub k_size: u32,
36141     pub a_type: ComponentTypeNV,
36142     pub b_type: ComponentTypeNV,
36143     pub c_type: ComponentTypeNV,
36144     pub d_type: ComponentTypeNV,
36145     pub scope: ScopeNV,
36146 }
36147 impl ::std::default::Default for CooperativeMatrixPropertiesNV {
default() -> Self36148     fn default() -> Self {
36149         Self {
36150             s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
36151             p_next: ::std::ptr::null_mut(),
36152             m_size: u32::default(),
36153             n_size: u32::default(),
36154             k_size: u32::default(),
36155             a_type: ComponentTypeNV::default(),
36156             b_type: ComponentTypeNV::default(),
36157             c_type: ComponentTypeNV::default(),
36158             d_type: ComponentTypeNV::default(),
36159             scope: ScopeNV::default(),
36160         }
36161     }
36162 }
36163 impl CooperativeMatrixPropertiesNV {
builder<'a>() -> CooperativeMatrixPropertiesNVBuilder<'a>36164     pub fn builder<'a>() -> CooperativeMatrixPropertiesNVBuilder<'a> {
36165         CooperativeMatrixPropertiesNVBuilder {
36166             inner: Self::default(),
36167             marker: ::std::marker::PhantomData,
36168         }
36169     }
36170 }
36171 #[repr(transparent)]
36172 pub struct CooperativeMatrixPropertiesNVBuilder<'a> {
36173     inner: CooperativeMatrixPropertiesNV,
36174     marker: ::std::marker::PhantomData<&'a ()>,
36175 }
36176 impl<'a> ::std::ops::Deref for CooperativeMatrixPropertiesNVBuilder<'a> {
36177     type Target = CooperativeMatrixPropertiesNV;
deref(&self) -> &Self::Target36178     fn deref(&self) -> &Self::Target {
36179         &self.inner
36180     }
36181 }
36182 impl<'a> ::std::ops::DerefMut for CooperativeMatrixPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36183     fn deref_mut(&mut self) -> &mut Self::Target {
36184         &mut self.inner
36185     }
36186 }
36187 impl<'a> CooperativeMatrixPropertiesNVBuilder<'a> {
m_size(mut self, m_size: u32) -> Self36188     pub fn m_size(mut self, m_size: u32) -> Self {
36189         self.inner.m_size = m_size;
36190         self
36191     }
n_size(mut self, n_size: u32) -> Self36192     pub fn n_size(mut self, n_size: u32) -> Self {
36193         self.inner.n_size = n_size;
36194         self
36195     }
k_size(mut self, k_size: u32) -> Self36196     pub fn k_size(mut self, k_size: u32) -> Self {
36197         self.inner.k_size = k_size;
36198         self
36199     }
a_type(mut self, a_type: ComponentTypeNV) -> Self36200     pub fn a_type(mut self, a_type: ComponentTypeNV) -> Self {
36201         self.inner.a_type = a_type;
36202         self
36203     }
b_type(mut self, b_type: ComponentTypeNV) -> Self36204     pub fn b_type(mut self, b_type: ComponentTypeNV) -> Self {
36205         self.inner.b_type = b_type;
36206         self
36207     }
c_type(mut self, c_type: ComponentTypeNV) -> Self36208     pub fn c_type(mut self, c_type: ComponentTypeNV) -> Self {
36209         self.inner.c_type = c_type;
36210         self
36211     }
d_type(mut self, d_type: ComponentTypeNV) -> Self36212     pub fn d_type(mut self, d_type: ComponentTypeNV) -> Self {
36213         self.inner.d_type = d_type;
36214         self
36215     }
scope(mut self, scope: ScopeNV) -> Self36216     pub fn scope(mut self, scope: ScopeNV) -> Self {
36217         self.inner.scope = scope;
36218         self
36219     }
36220     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36221     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36222     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CooperativeMatrixPropertiesNV36223     pub fn build(self) -> CooperativeMatrixPropertiesNV {
36224         self.inner
36225     }
36226 }
36227 #[repr(C)]
36228 #[cfg_attr(feature = "debug", derive(Debug))]
36229 #[derive(Copy, Clone)]
36230 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>"]
36231 pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
36232     pub s_type: StructureType,
36233     pub p_next: *mut c_void,
36234     pub ycbcr_image_arrays: Bool32,
36235 }
36236 impl ::std::default::Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
default() -> Self36237     fn default() -> Self {
36238         Self {
36239             s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
36240             p_next: ::std::ptr::null_mut(),
36241             ycbcr_image_arrays: Bool32::default(),
36242         }
36243     }
36244 }
36245 impl PhysicalDeviceYcbcrImageArraysFeaturesEXT {
builder<'a>() -> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a>36246     pub fn builder<'a>() -> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
36247         PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder {
36248             inner: Self::default(),
36249             marker: ::std::marker::PhantomData,
36250         }
36251     }
36252 }
36253 #[repr(transparent)]
36254 pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
36255     inner: PhysicalDeviceYcbcrImageArraysFeaturesEXT,
36256     marker: ::std::marker::PhantomData<&'a ()>,
36257 }
36258 unsafe impl ExtendsPhysicalDeviceFeatures2
36259     for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'_>
36260 {
36261 }
36262 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
36263 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'_> {}
36264 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
36265 impl<'a> ::std::ops::Deref for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
36266     type Target = PhysicalDeviceYcbcrImageArraysFeaturesEXT;
deref(&self) -> &Self::Target36267     fn deref(&self) -> &Self::Target {
36268         &self.inner
36269     }
36270 }
36271 impl<'a> ::std::ops::DerefMut for PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36272     fn deref_mut(&mut self) -> &mut Self::Target {
36273         &mut self.inner
36274     }
36275 }
36276 impl<'a> PhysicalDeviceYcbcrImageArraysFeaturesEXTBuilder<'a> {
ycbcr_image_arrays(mut self, ycbcr_image_arrays: bool) -> Self36277     pub fn ycbcr_image_arrays(mut self, ycbcr_image_arrays: bool) -> Self {
36278         self.inner.ycbcr_image_arrays = ycbcr_image_arrays.into();
36279         self
36280     }
36281     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36282     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36283     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceYcbcrImageArraysFeaturesEXT36284     pub fn build(self) -> PhysicalDeviceYcbcrImageArraysFeaturesEXT {
36285         self.inner
36286     }
36287 }
36288 #[repr(C)]
36289 #[cfg_attr(feature = "debug", derive(Debug))]
36290 #[derive(Copy, Clone)]
36291 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewHandleInfoNVX.html>"]
36292 pub struct ImageViewHandleInfoNVX {
36293     pub s_type: StructureType,
36294     pub p_next: *const c_void,
36295     pub image_view: ImageView,
36296     pub descriptor_type: DescriptorType,
36297     pub sampler: Sampler,
36298 }
36299 impl ::std::default::Default for ImageViewHandleInfoNVX {
default() -> Self36300     fn default() -> Self {
36301         Self {
36302             s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
36303             p_next: ::std::ptr::null(),
36304             image_view: ImageView::default(),
36305             descriptor_type: DescriptorType::default(),
36306             sampler: Sampler::default(),
36307         }
36308     }
36309 }
36310 impl ImageViewHandleInfoNVX {
builder<'a>() -> ImageViewHandleInfoNVXBuilder<'a>36311     pub fn builder<'a>() -> ImageViewHandleInfoNVXBuilder<'a> {
36312         ImageViewHandleInfoNVXBuilder {
36313             inner: Self::default(),
36314             marker: ::std::marker::PhantomData,
36315         }
36316     }
36317 }
36318 #[repr(transparent)]
36319 pub struct ImageViewHandleInfoNVXBuilder<'a> {
36320     inner: ImageViewHandleInfoNVX,
36321     marker: ::std::marker::PhantomData<&'a ()>,
36322 }
36323 impl<'a> ::std::ops::Deref for ImageViewHandleInfoNVXBuilder<'a> {
36324     type Target = ImageViewHandleInfoNVX;
deref(&self) -> &Self::Target36325     fn deref(&self) -> &Self::Target {
36326         &self.inner
36327     }
36328 }
36329 impl<'a> ::std::ops::DerefMut for ImageViewHandleInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36330     fn deref_mut(&mut self) -> &mut Self::Target {
36331         &mut self.inner
36332     }
36333 }
36334 impl<'a> ImageViewHandleInfoNVXBuilder<'a> {
image_view(mut self, image_view: ImageView) -> Self36335     pub fn image_view(mut self, image_view: ImageView) -> Self {
36336         self.inner.image_view = image_view;
36337         self
36338     }
descriptor_type(mut self, descriptor_type: DescriptorType) -> Self36339     pub fn descriptor_type(mut self, descriptor_type: DescriptorType) -> Self {
36340         self.inner.descriptor_type = descriptor_type;
36341         self
36342     }
sampler(mut self, sampler: Sampler) -> Self36343     pub fn sampler(mut self, sampler: Sampler) -> Self {
36344         self.inner.sampler = sampler;
36345         self
36346     }
36347     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36348     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36349     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewHandleInfoNVX36350     pub fn build(self) -> ImageViewHandleInfoNVX {
36351         self.inner
36352     }
36353 }
36354 #[repr(C)]
36355 #[cfg_attr(feature = "debug", derive(Debug))]
36356 #[derive(Copy, Clone)]
36357 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewAddressPropertiesNVX.html>"]
36358 pub struct ImageViewAddressPropertiesNVX {
36359     pub s_type: StructureType,
36360     pub p_next: *mut c_void,
36361     pub device_address: DeviceAddress,
36362     pub size: DeviceSize,
36363 }
36364 impl ::std::default::Default for ImageViewAddressPropertiesNVX {
default() -> Self36365     fn default() -> Self {
36366         Self {
36367             s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
36368             p_next: ::std::ptr::null_mut(),
36369             device_address: DeviceAddress::default(),
36370             size: DeviceSize::default(),
36371         }
36372     }
36373 }
36374 impl ImageViewAddressPropertiesNVX {
builder<'a>() -> ImageViewAddressPropertiesNVXBuilder<'a>36375     pub fn builder<'a>() -> ImageViewAddressPropertiesNVXBuilder<'a> {
36376         ImageViewAddressPropertiesNVXBuilder {
36377             inner: Self::default(),
36378             marker: ::std::marker::PhantomData,
36379         }
36380     }
36381 }
36382 #[repr(transparent)]
36383 pub struct ImageViewAddressPropertiesNVXBuilder<'a> {
36384     inner: ImageViewAddressPropertiesNVX,
36385     marker: ::std::marker::PhantomData<&'a ()>,
36386 }
36387 impl<'a> ::std::ops::Deref for ImageViewAddressPropertiesNVXBuilder<'a> {
36388     type Target = ImageViewAddressPropertiesNVX;
deref(&self) -> &Self::Target36389     fn deref(&self) -> &Self::Target {
36390         &self.inner
36391     }
36392 }
36393 impl<'a> ::std::ops::DerefMut for ImageViewAddressPropertiesNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36394     fn deref_mut(&mut self) -> &mut Self::Target {
36395         &mut self.inner
36396     }
36397 }
36398 impl<'a> ImageViewAddressPropertiesNVXBuilder<'a> {
device_address(mut self, device_address: DeviceAddress) -> Self36399     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
36400         self.inner.device_address = device_address;
36401         self
36402     }
size(mut self, size: DeviceSize) -> Self36403     pub fn size(mut self, size: DeviceSize) -> Self {
36404         self.inner.size = size;
36405         self
36406     }
36407     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36408     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36409     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewAddressPropertiesNVX36410     pub fn build(self) -> ImageViewAddressPropertiesNVX {
36411         self.inner
36412     }
36413 }
36414 #[repr(C)]
36415 #[cfg_attr(feature = "debug", derive(Debug))]
36416 #[derive(Copy, Clone)]
36417 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentFrameTokenGGP.html>"]
36418 pub struct PresentFrameTokenGGP {
36419     pub s_type: StructureType,
36420     pub p_next: *const c_void,
36421     pub frame_token: GgpFrameToken,
36422 }
36423 impl ::std::default::Default for PresentFrameTokenGGP {
default() -> Self36424     fn default() -> Self {
36425         Self {
36426             s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
36427             p_next: ::std::ptr::null(),
36428             frame_token: GgpFrameToken::default(),
36429         }
36430     }
36431 }
36432 impl PresentFrameTokenGGP {
builder<'a>() -> PresentFrameTokenGGPBuilder<'a>36433     pub fn builder<'a>() -> PresentFrameTokenGGPBuilder<'a> {
36434         PresentFrameTokenGGPBuilder {
36435             inner: Self::default(),
36436             marker: ::std::marker::PhantomData,
36437         }
36438     }
36439 }
36440 #[repr(transparent)]
36441 pub struct PresentFrameTokenGGPBuilder<'a> {
36442     inner: PresentFrameTokenGGP,
36443     marker: ::std::marker::PhantomData<&'a ()>,
36444 }
36445 unsafe impl ExtendsPresentInfoKHR for PresentFrameTokenGGPBuilder<'_> {}
36446 unsafe impl ExtendsPresentInfoKHR for PresentFrameTokenGGP {}
36447 impl<'a> ::std::ops::Deref for PresentFrameTokenGGPBuilder<'a> {
36448     type Target = PresentFrameTokenGGP;
deref(&self) -> &Self::Target36449     fn deref(&self) -> &Self::Target {
36450         &self.inner
36451     }
36452 }
36453 impl<'a> ::std::ops::DerefMut for PresentFrameTokenGGPBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36454     fn deref_mut(&mut self) -> &mut Self::Target {
36455         &mut self.inner
36456     }
36457 }
36458 impl<'a> PresentFrameTokenGGPBuilder<'a> {
frame_token(mut self, frame_token: GgpFrameToken) -> Self36459     pub fn frame_token(mut self, frame_token: GgpFrameToken) -> Self {
36460         self.inner.frame_token = frame_token;
36461         self
36462     }
36463     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36464     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36465     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PresentFrameTokenGGP36466     pub fn build(self) -> PresentFrameTokenGGP {
36467         self.inner
36468     }
36469 }
36470 #[repr(C)]
36471 #[cfg_attr(feature = "debug", derive(Debug))]
36472 #[derive(Copy, Clone, Default)]
36473 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCreationFeedbackEXT.html>"]
36474 pub struct PipelineCreationFeedbackEXT {
36475     pub flags: PipelineCreationFeedbackFlagsEXT,
36476     pub duration: u64,
36477 }
36478 impl PipelineCreationFeedbackEXT {
builder<'a>() -> PipelineCreationFeedbackEXTBuilder<'a>36479     pub fn builder<'a>() -> PipelineCreationFeedbackEXTBuilder<'a> {
36480         PipelineCreationFeedbackEXTBuilder {
36481             inner: Self::default(),
36482             marker: ::std::marker::PhantomData,
36483         }
36484     }
36485 }
36486 #[repr(transparent)]
36487 pub struct PipelineCreationFeedbackEXTBuilder<'a> {
36488     inner: PipelineCreationFeedbackEXT,
36489     marker: ::std::marker::PhantomData<&'a ()>,
36490 }
36491 impl<'a> ::std::ops::Deref for PipelineCreationFeedbackEXTBuilder<'a> {
36492     type Target = PipelineCreationFeedbackEXT;
deref(&self) -> &Self::Target36493     fn deref(&self) -> &Self::Target {
36494         &self.inner
36495     }
36496 }
36497 impl<'a> ::std::ops::DerefMut for PipelineCreationFeedbackEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36498     fn deref_mut(&mut self) -> &mut Self::Target {
36499         &mut self.inner
36500     }
36501 }
36502 impl<'a> PipelineCreationFeedbackEXTBuilder<'a> {
flags(mut self, flags: PipelineCreationFeedbackFlagsEXT) -> Self36503     pub fn flags(mut self, flags: PipelineCreationFeedbackFlagsEXT) -> Self {
36504         self.inner.flags = flags;
36505         self
36506     }
duration(mut self, duration: u64) -> Self36507     pub fn duration(mut self, duration: u64) -> Self {
36508         self.inner.duration = duration;
36509         self
36510     }
36511     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36512     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36513     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCreationFeedbackEXT36514     pub fn build(self) -> PipelineCreationFeedbackEXT {
36515         self.inner
36516     }
36517 }
36518 #[repr(C)]
36519 #[cfg_attr(feature = "debug", derive(Debug))]
36520 #[derive(Copy, Clone)]
36521 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>"]
36522 pub struct PipelineCreationFeedbackCreateInfoEXT {
36523     pub s_type: StructureType,
36524     pub p_next: *const c_void,
36525     pub p_pipeline_creation_feedback: *mut PipelineCreationFeedbackEXT,
36526     pub pipeline_stage_creation_feedback_count: u32,
36527     pub p_pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedbackEXT,
36528 }
36529 impl ::std::default::Default for PipelineCreationFeedbackCreateInfoEXT {
default() -> Self36530     fn default() -> Self {
36531         Self {
36532             s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT,
36533             p_next: ::std::ptr::null(),
36534             p_pipeline_creation_feedback: ::std::ptr::null_mut(),
36535             pipeline_stage_creation_feedback_count: u32::default(),
36536             p_pipeline_stage_creation_feedbacks: ::std::ptr::null_mut(),
36537         }
36538     }
36539 }
36540 impl PipelineCreationFeedbackCreateInfoEXT {
builder<'a>() -> PipelineCreationFeedbackCreateInfoEXTBuilder<'a>36541     pub fn builder<'a>() -> PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
36542         PipelineCreationFeedbackCreateInfoEXTBuilder {
36543             inner: Self::default(),
36544             marker: ::std::marker::PhantomData,
36545         }
36546     }
36547 }
36548 #[repr(transparent)]
36549 pub struct PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
36550     inner: PipelineCreationFeedbackCreateInfoEXT,
36551     marker: ::std::marker::PhantomData<&'a ()>,
36552 }
36553 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXTBuilder<'_> {}
36554 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXT {}
36555 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXTBuilder<'_> {}
36556 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCreationFeedbackCreateInfoEXT {}
36557 unsafe impl ExtendsRayTracingPipelineCreateInfoNV
36558     for PipelineCreationFeedbackCreateInfoEXTBuilder<'_>
36559 {
36560 }
36561 unsafe impl ExtendsRayTracingPipelineCreateInfoNV for PipelineCreationFeedbackCreateInfoEXT {}
36562 unsafe impl ExtendsRayTracingPipelineCreateInfoKHR
36563     for PipelineCreationFeedbackCreateInfoEXTBuilder<'_>
36564 {
36565 }
36566 unsafe impl ExtendsRayTracingPipelineCreateInfoKHR for PipelineCreationFeedbackCreateInfoEXT {}
36567 impl<'a> ::std::ops::Deref for PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
36568     type Target = PipelineCreationFeedbackCreateInfoEXT;
deref(&self) -> &Self::Target36569     fn deref(&self) -> &Self::Target {
36570         &self.inner
36571     }
36572 }
36573 impl<'a> ::std::ops::DerefMut for PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36574     fn deref_mut(&mut self) -> &mut Self::Target {
36575         &mut self.inner
36576     }
36577 }
36578 impl<'a> PipelineCreationFeedbackCreateInfoEXTBuilder<'a> {
pipeline_creation_feedback( mut self, pipeline_creation_feedback: &'a mut PipelineCreationFeedbackEXT, ) -> Self36579     pub fn pipeline_creation_feedback(
36580         mut self,
36581         pipeline_creation_feedback: &'a mut PipelineCreationFeedbackEXT,
36582     ) -> Self {
36583         self.inner.p_pipeline_creation_feedback = pipeline_creation_feedback;
36584         self
36585     }
pipeline_stage_creation_feedbacks( mut self, pipeline_stage_creation_feedbacks: &'a mut [PipelineCreationFeedbackEXT], ) -> Self36586     pub fn pipeline_stage_creation_feedbacks(
36587         mut self,
36588         pipeline_stage_creation_feedbacks: &'a mut [PipelineCreationFeedbackEXT],
36589     ) -> Self {
36590         self.inner.pipeline_stage_creation_feedback_count =
36591             pipeline_stage_creation_feedbacks.len() as _;
36592         self.inner.p_pipeline_stage_creation_feedbacks =
36593             pipeline_stage_creation_feedbacks.as_mut_ptr();
36594         self
36595     }
36596     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36597     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36598     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCreationFeedbackCreateInfoEXT36599     pub fn build(self) -> PipelineCreationFeedbackCreateInfoEXT {
36600         self.inner
36601     }
36602 }
36603 #[repr(C)]
36604 #[cfg_attr(feature = "debug", derive(Debug))]
36605 #[derive(Copy, Clone)]
36606 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>"]
36607 pub struct SurfaceFullScreenExclusiveInfoEXT {
36608     pub s_type: StructureType,
36609     pub p_next: *mut c_void,
36610     pub full_screen_exclusive: FullScreenExclusiveEXT,
36611 }
36612 impl ::std::default::Default for SurfaceFullScreenExclusiveInfoEXT {
default() -> Self36613     fn default() -> Self {
36614         Self {
36615             s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
36616             p_next: ::std::ptr::null_mut(),
36617             full_screen_exclusive: FullScreenExclusiveEXT::default(),
36618         }
36619     }
36620 }
36621 impl SurfaceFullScreenExclusiveInfoEXT {
builder<'a>() -> SurfaceFullScreenExclusiveInfoEXTBuilder<'a>36622     pub fn builder<'a>() -> SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
36623         SurfaceFullScreenExclusiveInfoEXTBuilder {
36624             inner: Self::default(),
36625             marker: ::std::marker::PhantomData,
36626         }
36627     }
36628 }
36629 #[repr(transparent)]
36630 pub struct SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
36631     inner: SurfaceFullScreenExclusiveInfoEXT,
36632     marker: ::std::marker::PhantomData<&'a ()>,
36633 }
36634 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveInfoEXTBuilder<'_> {}
36635 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveInfoEXT {}
36636 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveInfoEXTBuilder<'_> {}
36637 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveInfoEXT {}
36638 impl<'a> ::std::ops::Deref for SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
36639     type Target = SurfaceFullScreenExclusiveInfoEXT;
deref(&self) -> &Self::Target36640     fn deref(&self) -> &Self::Target {
36641         &self.inner
36642     }
36643 }
36644 impl<'a> ::std::ops::DerefMut for SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36645     fn deref_mut(&mut self) -> &mut Self::Target {
36646         &mut self.inner
36647     }
36648 }
36649 impl<'a> SurfaceFullScreenExclusiveInfoEXTBuilder<'a> {
full_screen_exclusive(mut self, full_screen_exclusive: FullScreenExclusiveEXT) -> Self36650     pub fn full_screen_exclusive(mut self, full_screen_exclusive: FullScreenExclusiveEXT) -> Self {
36651         self.inner.full_screen_exclusive = full_screen_exclusive;
36652         self
36653     }
36654     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36655     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36656     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFullScreenExclusiveInfoEXT36657     pub fn build(self) -> SurfaceFullScreenExclusiveInfoEXT {
36658         self.inner
36659     }
36660 }
36661 #[repr(C)]
36662 #[cfg_attr(feature = "debug", derive(Debug))]
36663 #[derive(Copy, Clone)]
36664 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>"]
36665 pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
36666     pub s_type: StructureType,
36667     pub p_next: *const c_void,
36668     pub hmonitor: HMONITOR,
36669 }
36670 impl ::std::default::Default for SurfaceFullScreenExclusiveWin32InfoEXT {
default() -> Self36671     fn default() -> Self {
36672         Self {
36673             s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
36674             p_next: ::std::ptr::null(),
36675             hmonitor: unsafe { ::std::mem::zeroed() },
36676         }
36677     }
36678 }
36679 impl SurfaceFullScreenExclusiveWin32InfoEXT {
builder<'a>() -> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a>36680     pub fn builder<'a>() -> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
36681         SurfaceFullScreenExclusiveWin32InfoEXTBuilder {
36682             inner: Self::default(),
36683             marker: ::std::marker::PhantomData,
36684         }
36685     }
36686 }
36687 #[repr(transparent)]
36688 pub struct SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
36689     inner: SurfaceFullScreenExclusiveWin32InfoEXT,
36690     marker: ::std::marker::PhantomData<&'a ()>,
36691 }
36692 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR
36693     for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'_>
36694 {
36695 }
36696 unsafe impl ExtendsPhysicalDeviceSurfaceInfo2KHR for SurfaceFullScreenExclusiveWin32InfoEXT {}
36697 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'_> {}
36698 unsafe impl ExtendsSwapchainCreateInfoKHR for SurfaceFullScreenExclusiveWin32InfoEXT {}
36699 impl<'a> ::std::ops::Deref for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
36700     type Target = SurfaceFullScreenExclusiveWin32InfoEXT;
deref(&self) -> &Self::Target36701     fn deref(&self) -> &Self::Target {
36702         &self.inner
36703     }
36704 }
36705 impl<'a> ::std::ops::DerefMut for SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36706     fn deref_mut(&mut self) -> &mut Self::Target {
36707         &mut self.inner
36708     }
36709 }
36710 impl<'a> SurfaceFullScreenExclusiveWin32InfoEXTBuilder<'a> {
hmonitor(mut self, hmonitor: HMONITOR) -> Self36711     pub fn hmonitor(mut self, hmonitor: HMONITOR) -> Self {
36712         self.inner.hmonitor = hmonitor;
36713         self
36714     }
36715     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36716     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36717     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceFullScreenExclusiveWin32InfoEXT36718     pub fn build(self) -> SurfaceFullScreenExclusiveWin32InfoEXT {
36719         self.inner
36720     }
36721 }
36722 #[repr(C)]
36723 #[cfg_attr(feature = "debug", derive(Debug))]
36724 #[derive(Copy, Clone)]
36725 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>"]
36726 pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
36727     pub s_type: StructureType,
36728     pub p_next: *mut c_void,
36729     pub full_screen_exclusive_supported: Bool32,
36730 }
36731 impl ::std::default::Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
default() -> Self36732     fn default() -> Self {
36733         Self {
36734             s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
36735             p_next: ::std::ptr::null_mut(),
36736             full_screen_exclusive_supported: Bool32::default(),
36737         }
36738     }
36739 }
36740 impl SurfaceCapabilitiesFullScreenExclusiveEXT {
builder<'a>() -> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a>36741     pub fn builder<'a>() -> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
36742         SurfaceCapabilitiesFullScreenExclusiveEXTBuilder {
36743             inner: Self::default(),
36744             marker: ::std::marker::PhantomData,
36745         }
36746     }
36747 }
36748 #[repr(transparent)]
36749 pub struct SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
36750     inner: SurfaceCapabilitiesFullScreenExclusiveEXT,
36751     marker: ::std::marker::PhantomData<&'a ()>,
36752 }
36753 unsafe impl ExtendsSurfaceCapabilities2KHR
36754     for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'_>
36755 {
36756 }
36757 unsafe impl ExtendsSurfaceCapabilities2KHR for SurfaceCapabilitiesFullScreenExclusiveEXT {}
36758 impl<'a> ::std::ops::Deref for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
36759     type Target = SurfaceCapabilitiesFullScreenExclusiveEXT;
deref(&self) -> &Self::Target36760     fn deref(&self) -> &Self::Target {
36761         &self.inner
36762     }
36763 }
36764 impl<'a> ::std::ops::DerefMut for SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36765     fn deref_mut(&mut self) -> &mut Self::Target {
36766         &mut self.inner
36767     }
36768 }
36769 impl<'a> SurfaceCapabilitiesFullScreenExclusiveEXTBuilder<'a> {
full_screen_exclusive_supported( mut self, full_screen_exclusive_supported: bool, ) -> Self36770     pub fn full_screen_exclusive_supported(
36771         mut self,
36772         full_screen_exclusive_supported: bool,
36773     ) -> Self {
36774         self.inner.full_screen_exclusive_supported = full_screen_exclusive_supported.into();
36775         self
36776     }
36777     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36778     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36779     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SurfaceCapabilitiesFullScreenExclusiveEXT36780     pub fn build(self) -> SurfaceCapabilitiesFullScreenExclusiveEXT {
36781         self.inner
36782     }
36783 }
36784 #[repr(C)]
36785 #[cfg_attr(feature = "debug", derive(Debug))]
36786 #[derive(Copy, Clone)]
36787 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>"]
36788 pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
36789     pub s_type: StructureType,
36790     pub p_next: *mut c_void,
36791     pub performance_counter_query_pools: Bool32,
36792     pub performance_counter_multiple_query_pools: Bool32,
36793 }
36794 impl ::std::default::Default for PhysicalDevicePerformanceQueryFeaturesKHR {
default() -> Self36795     fn default() -> Self {
36796         Self {
36797             s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
36798             p_next: ::std::ptr::null_mut(),
36799             performance_counter_query_pools: Bool32::default(),
36800             performance_counter_multiple_query_pools: Bool32::default(),
36801         }
36802     }
36803 }
36804 impl PhysicalDevicePerformanceQueryFeaturesKHR {
builder<'a>() -> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a>36805     pub fn builder<'a>() -> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36806         PhysicalDevicePerformanceQueryFeaturesKHRBuilder {
36807             inner: Self::default(),
36808             marker: ::std::marker::PhantomData,
36809         }
36810     }
36811 }
36812 #[repr(transparent)]
36813 pub struct PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36814     inner: PhysicalDevicePerformanceQueryFeaturesKHR,
36815     marker: ::std::marker::PhantomData<&'a ()>,
36816 }
36817 unsafe impl ExtendsPhysicalDeviceFeatures2
36818     for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'_>
36819 {
36820 }
36821 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePerformanceQueryFeaturesKHR {}
36822 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'_> {}
36823 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePerformanceQueryFeaturesKHR {}
36824 impl<'a> ::std::ops::Deref for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
36825     type Target = PhysicalDevicePerformanceQueryFeaturesKHR;
deref(&self) -> &Self::Target36826     fn deref(&self) -> &Self::Target {
36827         &self.inner
36828     }
36829 }
36830 impl<'a> ::std::ops::DerefMut for PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36831     fn deref_mut(&mut self) -> &mut Self::Target {
36832         &mut self.inner
36833     }
36834 }
36835 impl<'a> PhysicalDevicePerformanceQueryFeaturesKHRBuilder<'a> {
performance_counter_query_pools( mut self, performance_counter_query_pools: bool, ) -> Self36836     pub fn performance_counter_query_pools(
36837         mut self,
36838         performance_counter_query_pools: bool,
36839     ) -> Self {
36840         self.inner.performance_counter_query_pools = performance_counter_query_pools.into();
36841         self
36842     }
performance_counter_multiple_query_pools( mut self, performance_counter_multiple_query_pools: bool, ) -> Self36843     pub fn performance_counter_multiple_query_pools(
36844         mut self,
36845         performance_counter_multiple_query_pools: bool,
36846     ) -> Self {
36847         self.inner.performance_counter_multiple_query_pools =
36848             performance_counter_multiple_query_pools.into();
36849         self
36850     }
36851     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36852     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36853     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePerformanceQueryFeaturesKHR36854     pub fn build(self) -> PhysicalDevicePerformanceQueryFeaturesKHR {
36855         self.inner
36856     }
36857 }
36858 #[repr(C)]
36859 #[cfg_attr(feature = "debug", derive(Debug))]
36860 #[derive(Copy, Clone)]
36861 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>"]
36862 pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
36863     pub s_type: StructureType,
36864     pub p_next: *mut c_void,
36865     pub allow_command_buffer_query_copies: Bool32,
36866 }
36867 impl ::std::default::Default for PhysicalDevicePerformanceQueryPropertiesKHR {
default() -> Self36868     fn default() -> Self {
36869         Self {
36870             s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
36871             p_next: ::std::ptr::null_mut(),
36872             allow_command_buffer_query_copies: Bool32::default(),
36873         }
36874     }
36875 }
36876 impl PhysicalDevicePerformanceQueryPropertiesKHR {
builder<'a>() -> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a>36877     pub fn builder<'a>() -> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36878         PhysicalDevicePerformanceQueryPropertiesKHRBuilder {
36879             inner: Self::default(),
36880             marker: ::std::marker::PhantomData,
36881         }
36882     }
36883 }
36884 #[repr(transparent)]
36885 pub struct PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36886     inner: PhysicalDevicePerformanceQueryPropertiesKHR,
36887     marker: ::std::marker::PhantomData<&'a ()>,
36888 }
36889 unsafe impl ExtendsPhysicalDeviceProperties2
36890     for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'_>
36891 {
36892 }
36893 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePerformanceQueryPropertiesKHR {}
36894 impl<'a> ::std::ops::Deref for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
36895     type Target = PhysicalDevicePerformanceQueryPropertiesKHR;
deref(&self) -> &Self::Target36896     fn deref(&self) -> &Self::Target {
36897         &self.inner
36898     }
36899 }
36900 impl<'a> ::std::ops::DerefMut for PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36901     fn deref_mut(&mut self) -> &mut Self::Target {
36902         &mut self.inner
36903     }
36904 }
36905 impl<'a> PhysicalDevicePerformanceQueryPropertiesKHRBuilder<'a> {
allow_command_buffer_query_copies( mut self, allow_command_buffer_query_copies: bool, ) -> Self36906     pub fn allow_command_buffer_query_copies(
36907         mut self,
36908         allow_command_buffer_query_copies: bool,
36909     ) -> Self {
36910         self.inner.allow_command_buffer_query_copies = allow_command_buffer_query_copies.into();
36911         self
36912     }
36913     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36914     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36915     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePerformanceQueryPropertiesKHR36916     pub fn build(self) -> PhysicalDevicePerformanceQueryPropertiesKHR {
36917         self.inner
36918     }
36919 }
36920 #[repr(C)]
36921 #[cfg_attr(feature = "debug", derive(Debug))]
36922 #[derive(Copy, Clone)]
36923 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterKHR.html>"]
36924 pub struct PerformanceCounterKHR {
36925     pub s_type: StructureType,
36926     pub p_next: *mut c_void,
36927     pub unit: PerformanceCounterUnitKHR,
36928     pub scope: PerformanceCounterScopeKHR,
36929     pub storage: PerformanceCounterStorageKHR,
36930     pub uuid: [u8; UUID_SIZE],
36931 }
36932 impl ::std::default::Default for PerformanceCounterKHR {
default() -> Self36933     fn default() -> Self {
36934         Self {
36935             s_type: StructureType::PERFORMANCE_COUNTER_KHR,
36936             p_next: ::std::ptr::null_mut(),
36937             unit: PerformanceCounterUnitKHR::default(),
36938             scope: PerformanceCounterScopeKHR::default(),
36939             storage: PerformanceCounterStorageKHR::default(),
36940             uuid: unsafe { ::std::mem::zeroed() },
36941         }
36942     }
36943 }
36944 impl PerformanceCounterKHR {
builder<'a>() -> PerformanceCounterKHRBuilder<'a>36945     pub fn builder<'a>() -> PerformanceCounterKHRBuilder<'a> {
36946         PerformanceCounterKHRBuilder {
36947             inner: Self::default(),
36948             marker: ::std::marker::PhantomData,
36949         }
36950     }
36951 }
36952 #[repr(transparent)]
36953 pub struct PerformanceCounterKHRBuilder<'a> {
36954     inner: PerformanceCounterKHR,
36955     marker: ::std::marker::PhantomData<&'a ()>,
36956 }
36957 impl<'a> ::std::ops::Deref for PerformanceCounterKHRBuilder<'a> {
36958     type Target = PerformanceCounterKHR;
deref(&self) -> &Self::Target36959     fn deref(&self) -> &Self::Target {
36960         &self.inner
36961     }
36962 }
36963 impl<'a> ::std::ops::DerefMut for PerformanceCounterKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target36964     fn deref_mut(&mut self) -> &mut Self::Target {
36965         &mut self.inner
36966     }
36967 }
36968 impl<'a> PerformanceCounterKHRBuilder<'a> {
unit(mut self, unit: PerformanceCounterUnitKHR) -> Self36969     pub fn unit(mut self, unit: PerformanceCounterUnitKHR) -> Self {
36970         self.inner.unit = unit;
36971         self
36972     }
scope(mut self, scope: PerformanceCounterScopeKHR) -> Self36973     pub fn scope(mut self, scope: PerformanceCounterScopeKHR) -> Self {
36974         self.inner.scope = scope;
36975         self
36976     }
storage(mut self, storage: PerformanceCounterStorageKHR) -> Self36977     pub fn storage(mut self, storage: PerformanceCounterStorageKHR) -> Self {
36978         self.inner.storage = storage;
36979         self
36980     }
uuid(mut self, uuid: [u8; UUID_SIZE]) -> Self36981     pub fn uuid(mut self, uuid: [u8; UUID_SIZE]) -> Self {
36982         self.inner.uuid = uuid;
36983         self
36984     }
36985     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
36986     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
36987     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceCounterKHR36988     pub fn build(self) -> PerformanceCounterKHR {
36989         self.inner
36990     }
36991 }
36992 #[repr(C)]
36993 #[derive(Copy, Clone)]
36994 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterDescriptionKHR.html>"]
36995 pub struct PerformanceCounterDescriptionKHR {
36996     pub s_type: StructureType,
36997     pub p_next: *mut c_void,
36998     pub flags: PerformanceCounterDescriptionFlagsKHR,
36999     pub name: [c_char; MAX_DESCRIPTION_SIZE],
37000     pub category: [c_char; MAX_DESCRIPTION_SIZE],
37001     pub description: [c_char; MAX_DESCRIPTION_SIZE],
37002 }
37003 #[cfg(feature = "debug")]
37004 impl fmt::Debug for PerformanceCounterDescriptionKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result37005     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
37006         fmt.debug_struct("PerformanceCounterDescriptionKHR")
37007             .field("s_type", &self.s_type)
37008             .field("p_next", &self.p_next)
37009             .field("flags", &self.flags)
37010             .field("name", &unsafe {
37011                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
37012             })
37013             .field("category", &unsafe {
37014                 ::std::ffi::CStr::from_ptr(self.category.as_ptr() as *const c_char)
37015             })
37016             .field("description", &unsafe {
37017                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
37018             })
37019             .finish()
37020     }
37021 }
37022 impl ::std::default::Default for PerformanceCounterDescriptionKHR {
default() -> Self37023     fn default() -> Self {
37024         Self {
37025             s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
37026             p_next: ::std::ptr::null_mut(),
37027             flags: PerformanceCounterDescriptionFlagsKHR::default(),
37028             name: unsafe { ::std::mem::zeroed() },
37029             category: unsafe { ::std::mem::zeroed() },
37030             description: unsafe { ::std::mem::zeroed() },
37031         }
37032     }
37033 }
37034 impl PerformanceCounterDescriptionKHR {
builder<'a>() -> PerformanceCounterDescriptionKHRBuilder<'a>37035     pub fn builder<'a>() -> PerformanceCounterDescriptionKHRBuilder<'a> {
37036         PerformanceCounterDescriptionKHRBuilder {
37037             inner: Self::default(),
37038             marker: ::std::marker::PhantomData,
37039         }
37040     }
37041 }
37042 #[repr(transparent)]
37043 pub struct PerformanceCounterDescriptionKHRBuilder<'a> {
37044     inner: PerformanceCounterDescriptionKHR,
37045     marker: ::std::marker::PhantomData<&'a ()>,
37046 }
37047 impl<'a> ::std::ops::Deref for PerformanceCounterDescriptionKHRBuilder<'a> {
37048     type Target = PerformanceCounterDescriptionKHR;
deref(&self) -> &Self::Target37049     fn deref(&self) -> &Self::Target {
37050         &self.inner
37051     }
37052 }
37053 impl<'a> ::std::ops::DerefMut for PerformanceCounterDescriptionKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37054     fn deref_mut(&mut self) -> &mut Self::Target {
37055         &mut self.inner
37056     }
37057 }
37058 impl<'a> PerformanceCounterDescriptionKHRBuilder<'a> {
flags(mut self, flags: PerformanceCounterDescriptionFlagsKHR) -> Self37059     pub fn flags(mut self, flags: PerformanceCounterDescriptionFlagsKHR) -> Self {
37060         self.inner.flags = flags;
37061         self
37062     }
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self37063     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
37064         self.inner.name = name;
37065         self
37066     }
category(mut self, category: [c_char; MAX_DESCRIPTION_SIZE]) -> Self37067     pub fn category(mut self, category: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
37068         self.inner.category = category;
37069         self
37070     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self37071     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
37072         self.inner.description = description;
37073         self
37074     }
37075     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37076     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37077     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceCounterDescriptionKHR37078     pub fn build(self) -> PerformanceCounterDescriptionKHR {
37079         self.inner
37080     }
37081 }
37082 #[repr(C)]
37083 #[cfg_attr(feature = "debug", derive(Debug))]
37084 #[derive(Copy, Clone)]
37085 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>"]
37086 pub struct QueryPoolPerformanceCreateInfoKHR {
37087     pub s_type: StructureType,
37088     pub p_next: *const c_void,
37089     pub queue_family_index: u32,
37090     pub counter_index_count: u32,
37091     pub p_counter_indices: *const u32,
37092 }
37093 impl ::std::default::Default for QueryPoolPerformanceCreateInfoKHR {
default() -> Self37094     fn default() -> Self {
37095         Self {
37096             s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
37097             p_next: ::std::ptr::null(),
37098             queue_family_index: u32::default(),
37099             counter_index_count: u32::default(),
37100             p_counter_indices: ::std::ptr::null(),
37101         }
37102     }
37103 }
37104 impl QueryPoolPerformanceCreateInfoKHR {
builder<'a>() -> QueryPoolPerformanceCreateInfoKHRBuilder<'a>37105     pub fn builder<'a>() -> QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
37106         QueryPoolPerformanceCreateInfoKHRBuilder {
37107             inner: Self::default(),
37108             marker: ::std::marker::PhantomData,
37109         }
37110     }
37111 }
37112 #[repr(transparent)]
37113 pub struct QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
37114     inner: QueryPoolPerformanceCreateInfoKHR,
37115     marker: ::std::marker::PhantomData<&'a ()>,
37116 }
37117 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceCreateInfoKHRBuilder<'_> {}
37118 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceCreateInfoKHR {}
37119 impl<'a> ::std::ops::Deref for QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
37120     type Target = QueryPoolPerformanceCreateInfoKHR;
deref(&self) -> &Self::Target37121     fn deref(&self) -> &Self::Target {
37122         &self.inner
37123     }
37124 }
37125 impl<'a> ::std::ops::DerefMut for QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37126     fn deref_mut(&mut self) -> &mut Self::Target {
37127         &mut self.inner
37128     }
37129 }
37130 impl<'a> QueryPoolPerformanceCreateInfoKHRBuilder<'a> {
queue_family_index(mut self, queue_family_index: u32) -> Self37131     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
37132         self.inner.queue_family_index = queue_family_index;
37133         self
37134     }
counter_indices(mut self, counter_indices: &'a [u32]) -> Self37135     pub fn counter_indices(mut self, counter_indices: &'a [u32]) -> Self {
37136         self.inner.counter_index_count = counter_indices.len() as _;
37137         self.inner.p_counter_indices = counter_indices.as_ptr();
37138         self
37139     }
37140     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37141     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37142     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueryPoolPerformanceCreateInfoKHR37143     pub fn build(self) -> QueryPoolPerformanceCreateInfoKHR {
37144         self.inner
37145     }
37146 }
37147 #[repr(C)]
37148 #[derive(Copy, Clone)]
37149 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterResultKHR.html>"]
37150 pub union PerformanceCounterResultKHR {
37151     pub int32: i32,
37152     pub int64: i64,
37153     pub uint32: u32,
37154     pub uint64: u64,
37155     pub float32: f32,
37156     pub float64: f64,
37157 }
37158 impl ::std::default::Default for PerformanceCounterResultKHR {
default() -> Self37159     fn default() -> Self {
37160         unsafe { ::std::mem::zeroed() }
37161     }
37162 }
37163 #[repr(C)]
37164 #[cfg_attr(feature = "debug", derive(Debug))]
37165 #[derive(Copy, Clone)]
37166 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAcquireProfilingLockInfoKHR.html>"]
37167 pub struct AcquireProfilingLockInfoKHR {
37168     pub s_type: StructureType,
37169     pub p_next: *const c_void,
37170     pub flags: AcquireProfilingLockFlagsKHR,
37171     pub timeout: u64,
37172 }
37173 impl ::std::default::Default for AcquireProfilingLockInfoKHR {
default() -> Self37174     fn default() -> Self {
37175         Self {
37176             s_type: StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR,
37177             p_next: ::std::ptr::null(),
37178             flags: AcquireProfilingLockFlagsKHR::default(),
37179             timeout: u64::default(),
37180         }
37181     }
37182 }
37183 impl AcquireProfilingLockInfoKHR {
builder<'a>() -> AcquireProfilingLockInfoKHRBuilder<'a>37184     pub fn builder<'a>() -> AcquireProfilingLockInfoKHRBuilder<'a> {
37185         AcquireProfilingLockInfoKHRBuilder {
37186             inner: Self::default(),
37187             marker: ::std::marker::PhantomData,
37188         }
37189     }
37190 }
37191 #[repr(transparent)]
37192 pub struct AcquireProfilingLockInfoKHRBuilder<'a> {
37193     inner: AcquireProfilingLockInfoKHR,
37194     marker: ::std::marker::PhantomData<&'a ()>,
37195 }
37196 impl<'a> ::std::ops::Deref for AcquireProfilingLockInfoKHRBuilder<'a> {
37197     type Target = AcquireProfilingLockInfoKHR;
deref(&self) -> &Self::Target37198     fn deref(&self) -> &Self::Target {
37199         &self.inner
37200     }
37201 }
37202 impl<'a> ::std::ops::DerefMut for AcquireProfilingLockInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37203     fn deref_mut(&mut self) -> &mut Self::Target {
37204         &mut self.inner
37205     }
37206 }
37207 impl<'a> AcquireProfilingLockInfoKHRBuilder<'a> {
flags(mut self, flags: AcquireProfilingLockFlagsKHR) -> Self37208     pub fn flags(mut self, flags: AcquireProfilingLockFlagsKHR) -> Self {
37209         self.inner.flags = flags;
37210         self
37211     }
timeout(mut self, timeout: u64) -> Self37212     pub fn timeout(mut self, timeout: u64) -> Self {
37213         self.inner.timeout = timeout;
37214         self
37215     }
37216     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37217     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37218     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AcquireProfilingLockInfoKHR37219     pub fn build(self) -> AcquireProfilingLockInfoKHR {
37220         self.inner
37221     }
37222 }
37223 #[repr(C)]
37224 #[cfg_attr(feature = "debug", derive(Debug))]
37225 #[derive(Copy, Clone)]
37226 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceQuerySubmitInfoKHR.html>"]
37227 pub struct PerformanceQuerySubmitInfoKHR {
37228     pub s_type: StructureType,
37229     pub p_next: *const c_void,
37230     pub counter_pass_index: u32,
37231 }
37232 impl ::std::default::Default for PerformanceQuerySubmitInfoKHR {
default() -> Self37233     fn default() -> Self {
37234         Self {
37235             s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
37236             p_next: ::std::ptr::null(),
37237             counter_pass_index: u32::default(),
37238         }
37239     }
37240 }
37241 impl PerformanceQuerySubmitInfoKHR {
builder<'a>() -> PerformanceQuerySubmitInfoKHRBuilder<'a>37242     pub fn builder<'a>() -> PerformanceQuerySubmitInfoKHRBuilder<'a> {
37243         PerformanceQuerySubmitInfoKHRBuilder {
37244             inner: Self::default(),
37245             marker: ::std::marker::PhantomData,
37246         }
37247     }
37248 }
37249 #[repr(transparent)]
37250 pub struct PerformanceQuerySubmitInfoKHRBuilder<'a> {
37251     inner: PerformanceQuerySubmitInfoKHR,
37252     marker: ::std::marker::PhantomData<&'a ()>,
37253 }
37254 unsafe impl ExtendsSubmitInfo for PerformanceQuerySubmitInfoKHRBuilder<'_> {}
37255 unsafe impl ExtendsSubmitInfo for PerformanceQuerySubmitInfoKHR {}
37256 unsafe impl ExtendsSubmitInfo2KHR for PerformanceQuerySubmitInfoKHRBuilder<'_> {}
37257 unsafe impl ExtendsSubmitInfo2KHR for PerformanceQuerySubmitInfoKHR {}
37258 impl<'a> ::std::ops::Deref for PerformanceQuerySubmitInfoKHRBuilder<'a> {
37259     type Target = PerformanceQuerySubmitInfoKHR;
deref(&self) -> &Self::Target37260     fn deref(&self) -> &Self::Target {
37261         &self.inner
37262     }
37263 }
37264 impl<'a> ::std::ops::DerefMut for PerformanceQuerySubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37265     fn deref_mut(&mut self) -> &mut Self::Target {
37266         &mut self.inner
37267     }
37268 }
37269 impl<'a> PerformanceQuerySubmitInfoKHRBuilder<'a> {
counter_pass_index(mut self, counter_pass_index: u32) -> Self37270     pub fn counter_pass_index(mut self, counter_pass_index: u32) -> Self {
37271         self.inner.counter_pass_index = counter_pass_index;
37272         self
37273     }
37274     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37275     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37276     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceQuerySubmitInfoKHR37277     pub fn build(self) -> PerformanceQuerySubmitInfoKHR {
37278         self.inner
37279     }
37280 }
37281 #[repr(C)]
37282 #[cfg_attr(feature = "debug", derive(Debug))]
37283 #[derive(Copy, Clone)]
37284 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkHeadlessSurfaceCreateInfoEXT.html>"]
37285 pub struct HeadlessSurfaceCreateInfoEXT {
37286     pub s_type: StructureType,
37287     pub p_next: *const c_void,
37288     pub flags: HeadlessSurfaceCreateFlagsEXT,
37289 }
37290 impl ::std::default::Default for HeadlessSurfaceCreateInfoEXT {
default() -> Self37291     fn default() -> Self {
37292         Self {
37293             s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
37294             p_next: ::std::ptr::null(),
37295             flags: HeadlessSurfaceCreateFlagsEXT::default(),
37296         }
37297     }
37298 }
37299 impl HeadlessSurfaceCreateInfoEXT {
builder<'a>() -> HeadlessSurfaceCreateInfoEXTBuilder<'a>37300     pub fn builder<'a>() -> HeadlessSurfaceCreateInfoEXTBuilder<'a> {
37301         HeadlessSurfaceCreateInfoEXTBuilder {
37302             inner: Self::default(),
37303             marker: ::std::marker::PhantomData,
37304         }
37305     }
37306 }
37307 #[repr(transparent)]
37308 pub struct HeadlessSurfaceCreateInfoEXTBuilder<'a> {
37309     inner: HeadlessSurfaceCreateInfoEXT,
37310     marker: ::std::marker::PhantomData<&'a ()>,
37311 }
37312 impl<'a> ::std::ops::Deref for HeadlessSurfaceCreateInfoEXTBuilder<'a> {
37313     type Target = HeadlessSurfaceCreateInfoEXT;
deref(&self) -> &Self::Target37314     fn deref(&self) -> &Self::Target {
37315         &self.inner
37316     }
37317 }
37318 impl<'a> ::std::ops::DerefMut for HeadlessSurfaceCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37319     fn deref_mut(&mut self) -> &mut Self::Target {
37320         &mut self.inner
37321     }
37322 }
37323 impl<'a> HeadlessSurfaceCreateInfoEXTBuilder<'a> {
flags(mut self, flags: HeadlessSurfaceCreateFlagsEXT) -> Self37324     pub fn flags(mut self, flags: HeadlessSurfaceCreateFlagsEXT) -> Self {
37325         self.inner.flags = flags;
37326         self
37327     }
37328     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37329     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37330     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> HeadlessSurfaceCreateInfoEXT37331     pub fn build(self) -> HeadlessSurfaceCreateInfoEXT {
37332         self.inner
37333     }
37334 }
37335 #[repr(C)]
37336 #[cfg_attr(feature = "debug", derive(Debug))]
37337 #[derive(Copy, Clone)]
37338 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>"]
37339 pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
37340     pub s_type: StructureType,
37341     pub p_next: *mut c_void,
37342     pub coverage_reduction_mode: Bool32,
37343 }
37344 impl ::std::default::Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
default() -> Self37345     fn default() -> Self {
37346         Self {
37347             s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
37348             p_next: ::std::ptr::null_mut(),
37349             coverage_reduction_mode: Bool32::default(),
37350         }
37351     }
37352 }
37353 impl PhysicalDeviceCoverageReductionModeFeaturesNV {
builder<'a>() -> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a>37354     pub fn builder<'a>() -> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
37355         PhysicalDeviceCoverageReductionModeFeaturesNVBuilder {
37356             inner: Self::default(),
37357             marker: ::std::marker::PhantomData,
37358         }
37359     }
37360 }
37361 #[repr(transparent)]
37362 pub struct PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
37363     inner: PhysicalDeviceCoverageReductionModeFeaturesNV,
37364     marker: ::std::marker::PhantomData<&'a ()>,
37365 }
37366 unsafe impl ExtendsPhysicalDeviceFeatures2
37367     for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'_>
37368 {
37369 }
37370 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoverageReductionModeFeaturesNV {}
37371 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'_> {}
37372 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoverageReductionModeFeaturesNV {}
37373 impl<'a> ::std::ops::Deref for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
37374     type Target = PhysicalDeviceCoverageReductionModeFeaturesNV;
deref(&self) -> &Self::Target37375     fn deref(&self) -> &Self::Target {
37376         &self.inner
37377     }
37378 }
37379 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37380     fn deref_mut(&mut self) -> &mut Self::Target {
37381         &mut self.inner
37382     }
37383 }
37384 impl<'a> PhysicalDeviceCoverageReductionModeFeaturesNVBuilder<'a> {
coverage_reduction_mode(mut self, coverage_reduction_mode: bool) -> Self37385     pub fn coverage_reduction_mode(mut self, coverage_reduction_mode: bool) -> Self {
37386         self.inner.coverage_reduction_mode = coverage_reduction_mode.into();
37387         self
37388     }
37389     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37390     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37391     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCoverageReductionModeFeaturesNV37392     pub fn build(self) -> PhysicalDeviceCoverageReductionModeFeaturesNV {
37393         self.inner
37394     }
37395 }
37396 #[repr(C)]
37397 #[cfg_attr(feature = "debug", derive(Debug))]
37398 #[derive(Copy, Clone)]
37399 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>"]
37400 pub struct PipelineCoverageReductionStateCreateInfoNV {
37401     pub s_type: StructureType,
37402     pub p_next: *const c_void,
37403     pub flags: PipelineCoverageReductionStateCreateFlagsNV,
37404     pub coverage_reduction_mode: CoverageReductionModeNV,
37405 }
37406 impl ::std::default::Default for PipelineCoverageReductionStateCreateInfoNV {
default() -> Self37407     fn default() -> Self {
37408         Self {
37409             s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
37410             p_next: ::std::ptr::null(),
37411             flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
37412             coverage_reduction_mode: CoverageReductionModeNV::default(),
37413         }
37414     }
37415 }
37416 impl PipelineCoverageReductionStateCreateInfoNV {
builder<'a>() -> PipelineCoverageReductionStateCreateInfoNVBuilder<'a>37417     pub fn builder<'a>() -> PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
37418         PipelineCoverageReductionStateCreateInfoNVBuilder {
37419             inner: Self::default(),
37420             marker: ::std::marker::PhantomData,
37421         }
37422     }
37423 }
37424 #[repr(transparent)]
37425 pub struct PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
37426     inner: PipelineCoverageReductionStateCreateInfoNV,
37427     marker: ::std::marker::PhantomData<&'a ()>,
37428 }
37429 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
37430     for PipelineCoverageReductionStateCreateInfoNVBuilder<'_>
37431 {
37432 }
37433 unsafe impl ExtendsPipelineMultisampleStateCreateInfo
37434     for PipelineCoverageReductionStateCreateInfoNV
37435 {
37436 }
37437 impl<'a> ::std::ops::Deref for PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
37438     type Target = PipelineCoverageReductionStateCreateInfoNV;
deref(&self) -> &Self::Target37439     fn deref(&self) -> &Self::Target {
37440         &self.inner
37441     }
37442 }
37443 impl<'a> ::std::ops::DerefMut for PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37444     fn deref_mut(&mut self) -> &mut Self::Target {
37445         &mut self.inner
37446     }
37447 }
37448 impl<'a> PipelineCoverageReductionStateCreateInfoNVBuilder<'a> {
flags(mut self, flags: PipelineCoverageReductionStateCreateFlagsNV) -> Self37449     pub fn flags(mut self, flags: PipelineCoverageReductionStateCreateFlagsNV) -> Self {
37450         self.inner.flags = flags;
37451         self
37452     }
coverage_reduction_mode( mut self, coverage_reduction_mode: CoverageReductionModeNV, ) -> Self37453     pub fn coverage_reduction_mode(
37454         mut self,
37455         coverage_reduction_mode: CoverageReductionModeNV,
37456     ) -> Self {
37457         self.inner.coverage_reduction_mode = coverage_reduction_mode;
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) -> PipelineCoverageReductionStateCreateInfoNV37463     pub fn build(self) -> PipelineCoverageReductionStateCreateInfoNV {
37464         self.inner
37465     }
37466 }
37467 #[repr(C)]
37468 #[cfg_attr(feature = "debug", derive(Debug))]
37469 #[derive(Copy, Clone)]
37470 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferMixedSamplesCombinationNV.html>"]
37471 pub struct FramebufferMixedSamplesCombinationNV {
37472     pub s_type: StructureType,
37473     pub p_next: *mut c_void,
37474     pub coverage_reduction_mode: CoverageReductionModeNV,
37475     pub rasterization_samples: SampleCountFlags,
37476     pub depth_stencil_samples: SampleCountFlags,
37477     pub color_samples: SampleCountFlags,
37478 }
37479 impl ::std::default::Default for FramebufferMixedSamplesCombinationNV {
default() -> Self37480     fn default() -> Self {
37481         Self {
37482             s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
37483             p_next: ::std::ptr::null_mut(),
37484             coverage_reduction_mode: CoverageReductionModeNV::default(),
37485             rasterization_samples: SampleCountFlags::default(),
37486             depth_stencil_samples: SampleCountFlags::default(),
37487             color_samples: SampleCountFlags::default(),
37488         }
37489     }
37490 }
37491 impl FramebufferMixedSamplesCombinationNV {
builder<'a>() -> FramebufferMixedSamplesCombinationNVBuilder<'a>37492     pub fn builder<'a>() -> FramebufferMixedSamplesCombinationNVBuilder<'a> {
37493         FramebufferMixedSamplesCombinationNVBuilder {
37494             inner: Self::default(),
37495             marker: ::std::marker::PhantomData,
37496         }
37497     }
37498 }
37499 #[repr(transparent)]
37500 pub struct FramebufferMixedSamplesCombinationNVBuilder<'a> {
37501     inner: FramebufferMixedSamplesCombinationNV,
37502     marker: ::std::marker::PhantomData<&'a ()>,
37503 }
37504 impl<'a> ::std::ops::Deref for FramebufferMixedSamplesCombinationNVBuilder<'a> {
37505     type Target = FramebufferMixedSamplesCombinationNV;
deref(&self) -> &Self::Target37506     fn deref(&self) -> &Self::Target {
37507         &self.inner
37508     }
37509 }
37510 impl<'a> ::std::ops::DerefMut for FramebufferMixedSamplesCombinationNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37511     fn deref_mut(&mut self) -> &mut Self::Target {
37512         &mut self.inner
37513     }
37514 }
37515 impl<'a> FramebufferMixedSamplesCombinationNVBuilder<'a> {
coverage_reduction_mode( mut self, coverage_reduction_mode: CoverageReductionModeNV, ) -> Self37516     pub fn coverage_reduction_mode(
37517         mut self,
37518         coverage_reduction_mode: CoverageReductionModeNV,
37519     ) -> Self {
37520         self.inner.coverage_reduction_mode = coverage_reduction_mode;
37521         self
37522     }
rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self37523     pub fn rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self {
37524         self.inner.rasterization_samples = rasterization_samples;
37525         self
37526     }
depth_stencil_samples(mut self, depth_stencil_samples: SampleCountFlags) -> Self37527     pub fn depth_stencil_samples(mut self, depth_stencil_samples: SampleCountFlags) -> Self {
37528         self.inner.depth_stencil_samples = depth_stencil_samples;
37529         self
37530     }
color_samples(mut self, color_samples: SampleCountFlags) -> Self37531     pub fn color_samples(mut self, color_samples: SampleCountFlags) -> Self {
37532         self.inner.color_samples = color_samples;
37533         self
37534     }
37535     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37536     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37537     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FramebufferMixedSamplesCombinationNV37538     pub fn build(self) -> FramebufferMixedSamplesCombinationNV {
37539         self.inner
37540     }
37541 }
37542 #[repr(C)]
37543 #[cfg_attr(feature = "debug", derive(Debug))]
37544 #[derive(Copy, Clone)]
37545 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>"]
37546 pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
37547     pub s_type: StructureType,
37548     pub p_next: *mut c_void,
37549     pub shader_integer_functions2: Bool32,
37550 }
37551 impl ::std::default::Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
default() -> Self37552     fn default() -> Self {
37553         Self {
37554             s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
37555             p_next: ::std::ptr::null_mut(),
37556             shader_integer_functions2: Bool32::default(),
37557         }
37558     }
37559 }
37560 impl PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
builder<'a>() -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a>37561     pub fn builder<'a>() -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
37562         PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder {
37563             inner: Self::default(),
37564             marker: ::std::marker::PhantomData,
37565         }
37566     }
37567 }
37568 #[repr(transparent)]
37569 pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
37570     inner: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL,
37571     marker: ::std::marker::PhantomData<&'a ()>,
37572 }
37573 unsafe impl ExtendsPhysicalDeviceFeatures2
37574     for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'_>
37575 {
37576 }
37577 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
37578 unsafe impl ExtendsDeviceCreateInfo
37579     for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'_>
37580 {
37581 }
37582 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
37583 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
37584     type Target = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
deref(&self) -> &Self::Target37585     fn deref(&self) -> &Self::Target {
37586         &self.inner
37587     }
37588 }
37589 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37590     fn deref_mut(&mut self) -> &mut Self::Target {
37591         &mut self.inner
37592     }
37593 }
37594 impl<'a> PhysicalDeviceShaderIntegerFunctions2FeaturesINTELBuilder<'a> {
shader_integer_functions2(mut self, shader_integer_functions2: bool) -> Self37595     pub fn shader_integer_functions2(mut self, shader_integer_functions2: bool) -> Self {
37596         self.inner.shader_integer_functions2 = shader_integer_functions2.into();
37597         self
37598     }
37599     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37600     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37601     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL37602     pub fn build(self) -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
37603         self.inner
37604     }
37605 }
37606 #[repr(C)]
37607 #[derive(Copy, Clone)]
37608 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceValueDataINTEL.html>"]
37609 pub union PerformanceValueDataINTEL {
37610     pub value32: u32,
37611     pub value64: u64,
37612     pub value_float: f32,
37613     pub value_bool: Bool32,
37614     pub value_string: *const c_char,
37615 }
37616 impl ::std::default::Default for PerformanceValueDataINTEL {
default() -> Self37617     fn default() -> Self {
37618         unsafe { ::std::mem::zeroed() }
37619     }
37620 }
37621 #[repr(C)]
37622 #[derive(Copy, Clone, Default)]
37623 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceValueINTEL.html>"]
37624 pub struct PerformanceValueINTEL {
37625     pub ty: PerformanceValueTypeINTEL,
37626     pub data: PerformanceValueDataINTEL,
37627 }
37628 #[cfg(feature = "debug")]
37629 impl fmt::Debug for PerformanceValueINTEL {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result37630     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
37631         fmt.debug_struct("PerformanceValueINTEL")
37632             .field("ty", &self.ty)
37633             .field("data", &"union")
37634             .finish()
37635     }
37636 }
37637 impl PerformanceValueINTEL {
builder<'a>() -> PerformanceValueINTELBuilder<'a>37638     pub fn builder<'a>() -> PerformanceValueINTELBuilder<'a> {
37639         PerformanceValueINTELBuilder {
37640             inner: Self::default(),
37641             marker: ::std::marker::PhantomData,
37642         }
37643     }
37644 }
37645 #[repr(transparent)]
37646 pub struct PerformanceValueINTELBuilder<'a> {
37647     inner: PerformanceValueINTEL,
37648     marker: ::std::marker::PhantomData<&'a ()>,
37649 }
37650 impl<'a> ::std::ops::Deref for PerformanceValueINTELBuilder<'a> {
37651     type Target = PerformanceValueINTEL;
deref(&self) -> &Self::Target37652     fn deref(&self) -> &Self::Target {
37653         &self.inner
37654     }
37655 }
37656 impl<'a> ::std::ops::DerefMut for PerformanceValueINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37657     fn deref_mut(&mut self) -> &mut Self::Target {
37658         &mut self.inner
37659     }
37660 }
37661 impl<'a> PerformanceValueINTELBuilder<'a> {
ty(mut self, ty: PerformanceValueTypeINTEL) -> Self37662     pub fn ty(mut self, ty: PerformanceValueTypeINTEL) -> Self {
37663         self.inner.ty = ty;
37664         self
37665     }
data(mut self, data: PerformanceValueDataINTEL) -> Self37666     pub fn data(mut self, data: PerformanceValueDataINTEL) -> Self {
37667         self.inner.data = data;
37668         self
37669     }
37670     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37671     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37672     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceValueINTEL37673     pub fn build(self) -> PerformanceValueINTEL {
37674         self.inner
37675     }
37676 }
37677 #[repr(C)]
37678 #[cfg_attr(feature = "debug", derive(Debug))]
37679 #[derive(Copy, Clone)]
37680 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInitializePerformanceApiInfoINTEL.html>"]
37681 pub struct InitializePerformanceApiInfoINTEL {
37682     pub s_type: StructureType,
37683     pub p_next: *const c_void,
37684     pub p_user_data: *mut c_void,
37685 }
37686 impl ::std::default::Default for InitializePerformanceApiInfoINTEL {
default() -> Self37687     fn default() -> Self {
37688         Self {
37689             s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
37690             p_next: ::std::ptr::null(),
37691             p_user_data: ::std::ptr::null_mut(),
37692         }
37693     }
37694 }
37695 impl InitializePerformanceApiInfoINTEL {
builder<'a>() -> InitializePerformanceApiInfoINTELBuilder<'a>37696     pub fn builder<'a>() -> InitializePerformanceApiInfoINTELBuilder<'a> {
37697         InitializePerformanceApiInfoINTELBuilder {
37698             inner: Self::default(),
37699             marker: ::std::marker::PhantomData,
37700         }
37701     }
37702 }
37703 #[repr(transparent)]
37704 pub struct InitializePerformanceApiInfoINTELBuilder<'a> {
37705     inner: InitializePerformanceApiInfoINTEL,
37706     marker: ::std::marker::PhantomData<&'a ()>,
37707 }
37708 impl<'a> ::std::ops::Deref for InitializePerformanceApiInfoINTELBuilder<'a> {
37709     type Target = InitializePerformanceApiInfoINTEL;
deref(&self) -> &Self::Target37710     fn deref(&self) -> &Self::Target {
37711         &self.inner
37712     }
37713 }
37714 impl<'a> ::std::ops::DerefMut for InitializePerformanceApiInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37715     fn deref_mut(&mut self) -> &mut Self::Target {
37716         &mut self.inner
37717     }
37718 }
37719 impl<'a> InitializePerformanceApiInfoINTELBuilder<'a> {
user_data(mut self, user_data: *mut c_void) -> Self37720     pub fn user_data(mut self, user_data: *mut c_void) -> Self {
37721         self.inner.p_user_data = user_data;
37722         self
37723     }
37724     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37725     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37726     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> InitializePerformanceApiInfoINTEL37727     pub fn build(self) -> InitializePerformanceApiInfoINTEL {
37728         self.inner
37729     }
37730 }
37731 #[repr(C)]
37732 #[cfg_attr(feature = "debug", derive(Debug))]
37733 #[derive(Copy, Clone)]
37734 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>"]
37735 pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
37736     pub s_type: StructureType,
37737     pub p_next: *const c_void,
37738     pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
37739 }
37740 impl ::std::default::Default for QueryPoolPerformanceQueryCreateInfoINTEL {
default() -> Self37741     fn default() -> Self {
37742         Self {
37743             s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
37744             p_next: ::std::ptr::null(),
37745             performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
37746         }
37747     }
37748 }
37749 impl QueryPoolPerformanceQueryCreateInfoINTEL {
builder<'a>() -> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a>37750     pub fn builder<'a>() -> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
37751         QueryPoolPerformanceQueryCreateInfoINTELBuilder {
37752             inner: Self::default(),
37753             marker: ::std::marker::PhantomData,
37754         }
37755     }
37756 }
37757 #[repr(transparent)]
37758 pub struct QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
37759     inner: QueryPoolPerformanceQueryCreateInfoINTEL,
37760     marker: ::std::marker::PhantomData<&'a ()>,
37761 }
37762 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'_> {}
37763 unsafe impl ExtendsQueryPoolCreateInfo for QueryPoolPerformanceQueryCreateInfoINTEL {}
37764 impl<'a> ::std::ops::Deref for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
37765     type Target = QueryPoolPerformanceQueryCreateInfoINTEL;
deref(&self) -> &Self::Target37766     fn deref(&self) -> &Self::Target {
37767         &self.inner
37768     }
37769 }
37770 impl<'a> ::std::ops::DerefMut for QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37771     fn deref_mut(&mut self) -> &mut Self::Target {
37772         &mut self.inner
37773     }
37774 }
37775 impl<'a> QueryPoolPerformanceQueryCreateInfoINTELBuilder<'a> {
performance_counters_sampling( mut self, performance_counters_sampling: QueryPoolSamplingModeINTEL, ) -> Self37776     pub fn performance_counters_sampling(
37777         mut self,
37778         performance_counters_sampling: QueryPoolSamplingModeINTEL,
37779     ) -> Self {
37780         self.inner.performance_counters_sampling = performance_counters_sampling;
37781         self
37782     }
37783     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37784     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37785     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueryPoolPerformanceQueryCreateInfoINTEL37786     pub fn build(self) -> QueryPoolPerformanceQueryCreateInfoINTEL {
37787         self.inner
37788     }
37789 }
37790 #[repr(C)]
37791 #[cfg_attr(feature = "debug", derive(Debug))]
37792 #[derive(Copy, Clone)]
37793 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceMarkerInfoINTEL.html>"]
37794 pub struct PerformanceMarkerInfoINTEL {
37795     pub s_type: StructureType,
37796     pub p_next: *const c_void,
37797     pub marker: u64,
37798 }
37799 impl ::std::default::Default for PerformanceMarkerInfoINTEL {
default() -> Self37800     fn default() -> Self {
37801         Self {
37802             s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
37803             p_next: ::std::ptr::null(),
37804             marker: u64::default(),
37805         }
37806     }
37807 }
37808 impl PerformanceMarkerInfoINTEL {
builder<'a>() -> PerformanceMarkerInfoINTELBuilder<'a>37809     pub fn builder<'a>() -> PerformanceMarkerInfoINTELBuilder<'a> {
37810         PerformanceMarkerInfoINTELBuilder {
37811             inner: Self::default(),
37812             marker: ::std::marker::PhantomData,
37813         }
37814     }
37815 }
37816 #[repr(transparent)]
37817 pub struct PerformanceMarkerInfoINTELBuilder<'a> {
37818     inner: PerformanceMarkerInfoINTEL,
37819     marker: ::std::marker::PhantomData<&'a ()>,
37820 }
37821 impl<'a> ::std::ops::Deref for PerformanceMarkerInfoINTELBuilder<'a> {
37822     type Target = PerformanceMarkerInfoINTEL;
deref(&self) -> &Self::Target37823     fn deref(&self) -> &Self::Target {
37824         &self.inner
37825     }
37826 }
37827 impl<'a> ::std::ops::DerefMut for PerformanceMarkerInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37828     fn deref_mut(&mut self) -> &mut Self::Target {
37829         &mut self.inner
37830     }
37831 }
37832 impl<'a> PerformanceMarkerInfoINTELBuilder<'a> {
marker(mut self, marker: u64) -> Self37833     pub fn marker(mut self, marker: u64) -> Self {
37834         self.inner.marker = marker;
37835         self
37836     }
37837     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37838     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37839     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceMarkerInfoINTEL37840     pub fn build(self) -> PerformanceMarkerInfoINTEL {
37841         self.inner
37842     }
37843 }
37844 #[repr(C)]
37845 #[cfg_attr(feature = "debug", derive(Debug))]
37846 #[derive(Copy, Clone)]
37847 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceStreamMarkerInfoINTEL.html>"]
37848 pub struct PerformanceStreamMarkerInfoINTEL {
37849     pub s_type: StructureType,
37850     pub p_next: *const c_void,
37851     pub marker: u32,
37852 }
37853 impl ::std::default::Default for PerformanceStreamMarkerInfoINTEL {
default() -> Self37854     fn default() -> Self {
37855         Self {
37856             s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
37857             p_next: ::std::ptr::null(),
37858             marker: u32::default(),
37859         }
37860     }
37861 }
37862 impl PerformanceStreamMarkerInfoINTEL {
builder<'a>() -> PerformanceStreamMarkerInfoINTELBuilder<'a>37863     pub fn builder<'a>() -> PerformanceStreamMarkerInfoINTELBuilder<'a> {
37864         PerformanceStreamMarkerInfoINTELBuilder {
37865             inner: Self::default(),
37866             marker: ::std::marker::PhantomData,
37867         }
37868     }
37869 }
37870 #[repr(transparent)]
37871 pub struct PerformanceStreamMarkerInfoINTELBuilder<'a> {
37872     inner: PerformanceStreamMarkerInfoINTEL,
37873     marker: ::std::marker::PhantomData<&'a ()>,
37874 }
37875 impl<'a> ::std::ops::Deref for PerformanceStreamMarkerInfoINTELBuilder<'a> {
37876     type Target = PerformanceStreamMarkerInfoINTEL;
deref(&self) -> &Self::Target37877     fn deref(&self) -> &Self::Target {
37878         &self.inner
37879     }
37880 }
37881 impl<'a> ::std::ops::DerefMut for PerformanceStreamMarkerInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37882     fn deref_mut(&mut self) -> &mut Self::Target {
37883         &mut self.inner
37884     }
37885 }
37886 impl<'a> PerformanceStreamMarkerInfoINTELBuilder<'a> {
marker(mut self, marker: u32) -> Self37887     pub fn marker(mut self, marker: u32) -> Self {
37888         self.inner.marker = marker;
37889         self
37890     }
37891     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37892     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37893     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceStreamMarkerInfoINTEL37894     pub fn build(self) -> PerformanceStreamMarkerInfoINTEL {
37895         self.inner
37896     }
37897 }
37898 #[repr(C)]
37899 #[cfg_attr(feature = "debug", derive(Debug))]
37900 #[derive(Copy, Clone)]
37901 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceOverrideInfoINTEL.html>"]
37902 pub struct PerformanceOverrideInfoINTEL {
37903     pub s_type: StructureType,
37904     pub p_next: *const c_void,
37905     pub ty: PerformanceOverrideTypeINTEL,
37906     pub enable: Bool32,
37907     pub parameter: u64,
37908 }
37909 impl ::std::default::Default for PerformanceOverrideInfoINTEL {
default() -> Self37910     fn default() -> Self {
37911         Self {
37912             s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
37913             p_next: ::std::ptr::null(),
37914             ty: PerformanceOverrideTypeINTEL::default(),
37915             enable: Bool32::default(),
37916             parameter: u64::default(),
37917         }
37918     }
37919 }
37920 impl PerformanceOverrideInfoINTEL {
builder<'a>() -> PerformanceOverrideInfoINTELBuilder<'a>37921     pub fn builder<'a>() -> PerformanceOverrideInfoINTELBuilder<'a> {
37922         PerformanceOverrideInfoINTELBuilder {
37923             inner: Self::default(),
37924             marker: ::std::marker::PhantomData,
37925         }
37926     }
37927 }
37928 #[repr(transparent)]
37929 pub struct PerformanceOverrideInfoINTELBuilder<'a> {
37930     inner: PerformanceOverrideInfoINTEL,
37931     marker: ::std::marker::PhantomData<&'a ()>,
37932 }
37933 impl<'a> ::std::ops::Deref for PerformanceOverrideInfoINTELBuilder<'a> {
37934     type Target = PerformanceOverrideInfoINTEL;
deref(&self) -> &Self::Target37935     fn deref(&self) -> &Self::Target {
37936         &self.inner
37937     }
37938 }
37939 impl<'a> ::std::ops::DerefMut for PerformanceOverrideInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target37940     fn deref_mut(&mut self) -> &mut Self::Target {
37941         &mut self.inner
37942     }
37943 }
37944 impl<'a> PerformanceOverrideInfoINTELBuilder<'a> {
ty(mut self, ty: PerformanceOverrideTypeINTEL) -> Self37945     pub fn ty(mut self, ty: PerformanceOverrideTypeINTEL) -> Self {
37946         self.inner.ty = ty;
37947         self
37948     }
enable(mut self, enable: bool) -> Self37949     pub fn enable(mut self, enable: bool) -> Self {
37950         self.inner.enable = enable.into();
37951         self
37952     }
parameter(mut self, parameter: u64) -> Self37953     pub fn parameter(mut self, parameter: u64) -> Self {
37954         self.inner.parameter = parameter;
37955         self
37956     }
37957     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
37958     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
37959     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceOverrideInfoINTEL37960     pub fn build(self) -> PerformanceOverrideInfoINTEL {
37961         self.inner
37962     }
37963 }
37964 #[repr(C)]
37965 #[cfg_attr(feature = "debug", derive(Debug))]
37966 #[derive(Copy, Clone)]
37967 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>"]
37968 pub struct PerformanceConfigurationAcquireInfoINTEL {
37969     pub s_type: StructureType,
37970     pub p_next: *const c_void,
37971     pub ty: PerformanceConfigurationTypeINTEL,
37972 }
37973 impl ::std::default::Default for PerformanceConfigurationAcquireInfoINTEL {
default() -> Self37974     fn default() -> Self {
37975         Self {
37976             s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
37977             p_next: ::std::ptr::null(),
37978             ty: PerformanceConfigurationTypeINTEL::default(),
37979         }
37980     }
37981 }
37982 impl PerformanceConfigurationAcquireInfoINTEL {
builder<'a>() -> PerformanceConfigurationAcquireInfoINTELBuilder<'a>37983     pub fn builder<'a>() -> PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37984         PerformanceConfigurationAcquireInfoINTELBuilder {
37985             inner: Self::default(),
37986             marker: ::std::marker::PhantomData,
37987         }
37988     }
37989 }
37990 #[repr(transparent)]
37991 pub struct PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37992     inner: PerformanceConfigurationAcquireInfoINTEL,
37993     marker: ::std::marker::PhantomData<&'a ()>,
37994 }
37995 impl<'a> ::std::ops::Deref for PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
37996     type Target = PerformanceConfigurationAcquireInfoINTEL;
deref(&self) -> &Self::Target37997     fn deref(&self) -> &Self::Target {
37998         &self.inner
37999     }
38000 }
38001 impl<'a> ::std::ops::DerefMut for PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38002     fn deref_mut(&mut self) -> &mut Self::Target {
38003         &mut self.inner
38004     }
38005 }
38006 impl<'a> PerformanceConfigurationAcquireInfoINTELBuilder<'a> {
ty(mut self, ty: PerformanceConfigurationTypeINTEL) -> Self38007     pub fn ty(mut self, ty: PerformanceConfigurationTypeINTEL) -> Self {
38008         self.inner.ty = ty;
38009         self
38010     }
38011     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38012     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38013     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PerformanceConfigurationAcquireInfoINTEL38014     pub fn build(self) -> PerformanceConfigurationAcquireInfoINTEL {
38015         self.inner
38016     }
38017 }
38018 #[repr(C)]
38019 #[cfg_attr(feature = "debug", derive(Debug))]
38020 #[derive(Copy, Clone)]
38021 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>"]
38022 pub struct PhysicalDeviceShaderClockFeaturesKHR {
38023     pub s_type: StructureType,
38024     pub p_next: *mut c_void,
38025     pub shader_subgroup_clock: Bool32,
38026     pub shader_device_clock: Bool32,
38027 }
38028 impl ::std::default::Default for PhysicalDeviceShaderClockFeaturesKHR {
default() -> Self38029     fn default() -> Self {
38030         Self {
38031             s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
38032             p_next: ::std::ptr::null_mut(),
38033             shader_subgroup_clock: Bool32::default(),
38034             shader_device_clock: Bool32::default(),
38035         }
38036     }
38037 }
38038 impl PhysicalDeviceShaderClockFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a>38039     pub fn builder<'a>() -> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
38040         PhysicalDeviceShaderClockFeaturesKHRBuilder {
38041             inner: Self::default(),
38042             marker: ::std::marker::PhantomData,
38043         }
38044     }
38045 }
38046 #[repr(transparent)]
38047 pub struct PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
38048     inner: PhysicalDeviceShaderClockFeaturesKHR,
38049     marker: ::std::marker::PhantomData<&'a ()>,
38050 }
38051 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderClockFeaturesKHRBuilder<'_> {}
38052 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderClockFeaturesKHR {}
38053 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderClockFeaturesKHRBuilder<'_> {}
38054 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderClockFeaturesKHR {}
38055 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
38056     type Target = PhysicalDeviceShaderClockFeaturesKHR;
deref(&self) -> &Self::Target38057     fn deref(&self) -> &Self::Target {
38058         &self.inner
38059     }
38060 }
38061 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38062     fn deref_mut(&mut self) -> &mut Self::Target {
38063         &mut self.inner
38064     }
38065 }
38066 impl<'a> PhysicalDeviceShaderClockFeaturesKHRBuilder<'a> {
shader_subgroup_clock(mut self, shader_subgroup_clock: bool) -> Self38067     pub fn shader_subgroup_clock(mut self, shader_subgroup_clock: bool) -> Self {
38068         self.inner.shader_subgroup_clock = shader_subgroup_clock.into();
38069         self
38070     }
shader_device_clock(mut self, shader_device_clock: bool) -> Self38071     pub fn shader_device_clock(mut self, shader_device_clock: bool) -> Self {
38072         self.inner.shader_device_clock = shader_device_clock.into();
38073         self
38074     }
38075     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38076     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38077     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderClockFeaturesKHR38078     pub fn build(self) -> PhysicalDeviceShaderClockFeaturesKHR {
38079         self.inner
38080     }
38081 }
38082 #[repr(C)]
38083 #[cfg_attr(feature = "debug", derive(Debug))]
38084 #[derive(Copy, Clone)]
38085 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>"]
38086 pub struct PhysicalDeviceIndexTypeUint8FeaturesEXT {
38087     pub s_type: StructureType,
38088     pub p_next: *mut c_void,
38089     pub index_type_uint8: Bool32,
38090 }
38091 impl ::std::default::Default for PhysicalDeviceIndexTypeUint8FeaturesEXT {
default() -> Self38092     fn default() -> Self {
38093         Self {
38094             s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT,
38095             p_next: ::std::ptr::null_mut(),
38096             index_type_uint8: Bool32::default(),
38097         }
38098     }
38099 }
38100 impl PhysicalDeviceIndexTypeUint8FeaturesEXT {
builder<'a>() -> PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a>38101     pub fn builder<'a>() -> PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
38102         PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder {
38103             inner: Self::default(),
38104             marker: ::std::marker::PhantomData,
38105         }
38106     }
38107 }
38108 #[repr(transparent)]
38109 pub struct PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
38110     inner: PhysicalDeviceIndexTypeUint8FeaturesEXT,
38111     marker: ::std::marker::PhantomData<&'a ()>,
38112 }
38113 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'_> {}
38114 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceIndexTypeUint8FeaturesEXT {}
38115 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'_> {}
38116 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceIndexTypeUint8FeaturesEXT {}
38117 impl<'a> ::std::ops::Deref for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
38118     type Target = PhysicalDeviceIndexTypeUint8FeaturesEXT;
deref(&self) -> &Self::Target38119     fn deref(&self) -> &Self::Target {
38120         &self.inner
38121     }
38122 }
38123 impl<'a> ::std::ops::DerefMut for PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38124     fn deref_mut(&mut self) -> &mut Self::Target {
38125         &mut self.inner
38126     }
38127 }
38128 impl<'a> PhysicalDeviceIndexTypeUint8FeaturesEXTBuilder<'a> {
index_type_uint8(mut self, index_type_uint8: bool) -> Self38129     pub fn index_type_uint8(mut self, index_type_uint8: bool) -> Self {
38130         self.inner.index_type_uint8 = index_type_uint8.into();
38131         self
38132     }
38133     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38134     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38135     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceIndexTypeUint8FeaturesEXT38136     pub fn build(self) -> PhysicalDeviceIndexTypeUint8FeaturesEXT {
38137         self.inner
38138     }
38139 }
38140 #[repr(C)]
38141 #[cfg_attr(feature = "debug", derive(Debug))]
38142 #[derive(Copy, Clone)]
38143 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>"]
38144 pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
38145     pub s_type: StructureType,
38146     pub p_next: *mut c_void,
38147     pub shader_sm_count: u32,
38148     pub shader_warps_per_sm: u32,
38149 }
38150 impl ::std::default::Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
default() -> Self38151     fn default() -> Self {
38152         Self {
38153             s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
38154             p_next: ::std::ptr::null_mut(),
38155             shader_sm_count: u32::default(),
38156             shader_warps_per_sm: u32::default(),
38157         }
38158     }
38159 }
38160 impl PhysicalDeviceShaderSMBuiltinsPropertiesNV {
builder<'a>() -> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a>38161     pub fn builder<'a>() -> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
38162         PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder {
38163             inner: Self::default(),
38164             marker: ::std::marker::PhantomData,
38165         }
38166     }
38167 }
38168 #[repr(transparent)]
38169 pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
38170     inner: PhysicalDeviceShaderSMBuiltinsPropertiesNV,
38171     marker: ::std::marker::PhantomData<&'a ()>,
38172 }
38173 unsafe impl ExtendsPhysicalDeviceProperties2
38174     for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'_>
38175 {
38176 }
38177 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
38178 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
38179     type Target = PhysicalDeviceShaderSMBuiltinsPropertiesNV;
deref(&self) -> &Self::Target38180     fn deref(&self) -> &Self::Target {
38181         &self.inner
38182     }
38183 }
38184 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38185     fn deref_mut(&mut self) -> &mut Self::Target {
38186         &mut self.inner
38187     }
38188 }
38189 impl<'a> PhysicalDeviceShaderSMBuiltinsPropertiesNVBuilder<'a> {
shader_sm_count(mut self, shader_sm_count: u32) -> Self38190     pub fn shader_sm_count(mut self, shader_sm_count: u32) -> Self {
38191         self.inner.shader_sm_count = shader_sm_count;
38192         self
38193     }
shader_warps_per_sm(mut self, shader_warps_per_sm: u32) -> Self38194     pub fn shader_warps_per_sm(mut self, shader_warps_per_sm: u32) -> Self {
38195         self.inner.shader_warps_per_sm = shader_warps_per_sm;
38196         self
38197     }
38198     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38199     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38200     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSMBuiltinsPropertiesNV38201     pub fn build(self) -> PhysicalDeviceShaderSMBuiltinsPropertiesNV {
38202         self.inner
38203     }
38204 }
38205 #[repr(C)]
38206 #[cfg_attr(feature = "debug", derive(Debug))]
38207 #[derive(Copy, Clone)]
38208 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>"]
38209 pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
38210     pub s_type: StructureType,
38211     pub p_next: *mut c_void,
38212     pub shader_sm_builtins: Bool32,
38213 }
38214 impl ::std::default::Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
default() -> Self38215     fn default() -> Self {
38216         Self {
38217             s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
38218             p_next: ::std::ptr::null_mut(),
38219             shader_sm_builtins: Bool32::default(),
38220         }
38221     }
38222 }
38223 impl PhysicalDeviceShaderSMBuiltinsFeaturesNV {
builder<'a>() -> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a>38224     pub fn builder<'a>() -> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
38225         PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder {
38226             inner: Self::default(),
38227             marker: ::std::marker::PhantomData,
38228         }
38229     }
38230 }
38231 #[repr(transparent)]
38232 pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
38233     inner: PhysicalDeviceShaderSMBuiltinsFeaturesNV,
38234     marker: ::std::marker::PhantomData<&'a ()>,
38235 }
38236 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'_> {}
38237 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
38238 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'_> {}
38239 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
38240 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
38241     type Target = PhysicalDeviceShaderSMBuiltinsFeaturesNV;
deref(&self) -> &Self::Target38242     fn deref(&self) -> &Self::Target {
38243         &self.inner
38244     }
38245 }
38246 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38247     fn deref_mut(&mut self) -> &mut Self::Target {
38248         &mut self.inner
38249     }
38250 }
38251 impl<'a> PhysicalDeviceShaderSMBuiltinsFeaturesNVBuilder<'a> {
shader_sm_builtins(mut self, shader_sm_builtins: bool) -> Self38252     pub fn shader_sm_builtins(mut self, shader_sm_builtins: bool) -> Self {
38253         self.inner.shader_sm_builtins = shader_sm_builtins.into();
38254         self
38255     }
38256     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38257     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38258     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSMBuiltinsFeaturesNV38259     pub fn build(self) -> PhysicalDeviceShaderSMBuiltinsFeaturesNV {
38260         self.inner
38261     }
38262 }
38263 #[repr(C)]
38264 #[cfg_attr(feature = "debug", derive(Debug))]
38265 #[derive(Copy, Clone)]
38266 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>"]
38267 pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
38268     pub s_type: StructureType,
38269     pub p_next: *mut c_void,
38270     pub fragment_shader_sample_interlock: Bool32,
38271     pub fragment_shader_pixel_interlock: Bool32,
38272     pub fragment_shader_shading_rate_interlock: Bool32,
38273 }
38274 impl ::std::default::Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
default() -> Self38275     fn default() -> Self {
38276         Self {
38277             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
38278             p_next: ::std::ptr::null_mut(),
38279             fragment_shader_sample_interlock: Bool32::default(),
38280             fragment_shader_pixel_interlock: Bool32::default(),
38281             fragment_shader_shading_rate_interlock: Bool32::default(),
38282         }
38283     }
38284 }
38285 impl PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
builder<'a>() -> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a>38286     pub fn builder<'a>() -> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
38287         PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder {
38288             inner: Self::default(),
38289             marker: ::std::marker::PhantomData,
38290         }
38291     }
38292 }
38293 #[repr(transparent)]
38294 pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
38295     inner: PhysicalDeviceFragmentShaderInterlockFeaturesEXT,
38296     marker: ::std::marker::PhantomData<&'a ()>,
38297 }
38298 unsafe impl ExtendsPhysicalDeviceFeatures2
38299     for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'_>
38300 {
38301 }
38302 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
38303 unsafe impl ExtendsDeviceCreateInfo
38304     for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'_>
38305 {
38306 }
38307 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
38308 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
38309     type Target = PhysicalDeviceFragmentShaderInterlockFeaturesEXT;
deref(&self) -> &Self::Target38310     fn deref(&self) -> &Self::Target {
38311         &self.inner
38312     }
38313 }
38314 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38315     fn deref_mut(&mut self) -> &mut Self::Target {
38316         &mut self.inner
38317     }
38318 }
38319 impl<'a> PhysicalDeviceFragmentShaderInterlockFeaturesEXTBuilder<'a> {
fragment_shader_sample_interlock( mut self, fragment_shader_sample_interlock: bool, ) -> Self38320     pub fn fragment_shader_sample_interlock(
38321         mut self,
38322         fragment_shader_sample_interlock: bool,
38323     ) -> Self {
38324         self.inner.fragment_shader_sample_interlock = fragment_shader_sample_interlock.into();
38325         self
38326     }
fragment_shader_pixel_interlock( mut self, fragment_shader_pixel_interlock: bool, ) -> Self38327     pub fn fragment_shader_pixel_interlock(
38328         mut self,
38329         fragment_shader_pixel_interlock: bool,
38330     ) -> Self {
38331         self.inner.fragment_shader_pixel_interlock = fragment_shader_pixel_interlock.into();
38332         self
38333     }
fragment_shader_shading_rate_interlock( mut self, fragment_shader_shading_rate_interlock: bool, ) -> Self38334     pub fn fragment_shader_shading_rate_interlock(
38335         mut self,
38336         fragment_shader_shading_rate_interlock: bool,
38337     ) -> Self {
38338         self.inner.fragment_shader_shading_rate_interlock =
38339             fragment_shader_shading_rate_interlock.into();
38340         self
38341     }
38342     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38343     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38344     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT38345     pub fn build(self) -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
38346         self.inner
38347     }
38348 }
38349 #[repr(C)]
38350 #[cfg_attr(feature = "debug", derive(Debug))]
38351 #[derive(Copy, Clone)]
38352 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>"]
38353 pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
38354     pub s_type: StructureType,
38355     pub p_next: *mut c_void,
38356     pub separate_depth_stencil_layouts: Bool32,
38357 }
38358 impl ::std::default::Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
default() -> Self38359     fn default() -> Self {
38360         Self {
38361             s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
38362             p_next: ::std::ptr::null_mut(),
38363             separate_depth_stencil_layouts: Bool32::default(),
38364         }
38365     }
38366 }
38367 impl PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
builder<'a>() -> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a>38368     pub fn builder<'a>() -> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
38369         PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder {
38370             inner: Self::default(),
38371             marker: ::std::marker::PhantomData,
38372         }
38373     }
38374 }
38375 #[repr(transparent)]
38376 pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
38377     inner: PhysicalDeviceSeparateDepthStencilLayoutsFeatures,
38378     marker: ::std::marker::PhantomData<&'a ()>,
38379 }
38380 unsafe impl ExtendsPhysicalDeviceFeatures2
38381     for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'_>
38382 {
38383 }
38384 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
38385 unsafe impl ExtendsDeviceCreateInfo
38386     for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'_>
38387 {
38388 }
38389 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
38390 impl<'a> ::std::ops::Deref for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
38391     type Target = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
deref(&self) -> &Self::Target38392     fn deref(&self) -> &Self::Target {
38393         &self.inner
38394     }
38395 }
38396 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38397     fn deref_mut(&mut self) -> &mut Self::Target {
38398         &mut self.inner
38399     }
38400 }
38401 impl<'a> PhysicalDeviceSeparateDepthStencilLayoutsFeaturesBuilder<'a> {
separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self38402     pub fn separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self {
38403         self.inner.separate_depth_stencil_layouts = separate_depth_stencil_layouts.into();
38404         self
38405     }
38406     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38407     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38408     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSeparateDepthStencilLayoutsFeatures38409     pub fn build(self) -> PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
38410         self.inner
38411     }
38412 }
38413 #[repr(C)]
38414 #[cfg_attr(feature = "debug", derive(Debug))]
38415 #[derive(Copy, Clone)]
38416 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReferenceStencilLayout.html>"]
38417 pub struct AttachmentReferenceStencilLayout {
38418     pub s_type: StructureType,
38419     pub p_next: *mut c_void,
38420     pub stencil_layout: ImageLayout,
38421 }
38422 impl ::std::default::Default for AttachmentReferenceStencilLayout {
default() -> Self38423     fn default() -> Self {
38424         Self {
38425             s_type: StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
38426             p_next: ::std::ptr::null_mut(),
38427             stencil_layout: ImageLayout::default(),
38428         }
38429     }
38430 }
38431 impl AttachmentReferenceStencilLayout {
builder<'a>() -> AttachmentReferenceStencilLayoutBuilder<'a>38432     pub fn builder<'a>() -> AttachmentReferenceStencilLayoutBuilder<'a> {
38433         AttachmentReferenceStencilLayoutBuilder {
38434             inner: Self::default(),
38435             marker: ::std::marker::PhantomData,
38436         }
38437     }
38438 }
38439 #[repr(transparent)]
38440 pub struct AttachmentReferenceStencilLayoutBuilder<'a> {
38441     inner: AttachmentReferenceStencilLayout,
38442     marker: ::std::marker::PhantomData<&'a ()>,
38443 }
38444 unsafe impl ExtendsAttachmentReference2 for AttachmentReferenceStencilLayoutBuilder<'_> {}
38445 unsafe impl ExtendsAttachmentReference2 for AttachmentReferenceStencilLayout {}
38446 impl<'a> ::std::ops::Deref for AttachmentReferenceStencilLayoutBuilder<'a> {
38447     type Target = AttachmentReferenceStencilLayout;
deref(&self) -> &Self::Target38448     fn deref(&self) -> &Self::Target {
38449         &self.inner
38450     }
38451 }
38452 impl<'a> ::std::ops::DerefMut for AttachmentReferenceStencilLayoutBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38453     fn deref_mut(&mut self) -> &mut Self::Target {
38454         &mut self.inner
38455     }
38456 }
38457 impl<'a> AttachmentReferenceStencilLayoutBuilder<'a> {
stencil_layout(mut self, stencil_layout: ImageLayout) -> Self38458     pub fn stencil_layout(mut self, stencil_layout: ImageLayout) -> Self {
38459         self.inner.stencil_layout = stencil_layout;
38460         self
38461     }
38462     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38463     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38464     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentReferenceStencilLayout38465     pub fn build(self) -> AttachmentReferenceStencilLayout {
38466         self.inner
38467     }
38468 }
38469 #[repr(C)]
38470 #[cfg_attr(feature = "debug", derive(Debug))]
38471 #[derive(Copy, Clone)]
38472 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>"]
38473 pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
38474     pub s_type: StructureType,
38475     pub p_next: *mut c_void,
38476     pub primitive_topology_list_restart: Bool32,
38477     pub primitive_topology_patch_list_restart: Bool32,
38478 }
38479 impl ::std::default::Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
default() -> Self38480     fn default() -> Self {
38481         Self {
38482             s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
38483             p_next: ::std::ptr::null_mut(),
38484             primitive_topology_list_restart: Bool32::default(),
38485             primitive_topology_patch_list_restart: Bool32::default(),
38486         }
38487     }
38488 }
38489 impl PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
builder<'a>() -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a>38490     pub fn builder<'a>() -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
38491         PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder {
38492             inner: Self::default(),
38493             marker: ::std::marker::PhantomData,
38494         }
38495     }
38496 }
38497 #[repr(transparent)]
38498 pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
38499     inner: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT,
38500     marker: ::std::marker::PhantomData<&'a ()>,
38501 }
38502 unsafe impl ExtendsPhysicalDeviceFeatures2
38503     for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'_>
38504 {
38505 }
38506 unsafe impl ExtendsPhysicalDeviceFeatures2
38507     for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
38508 {
38509 }
38510 unsafe impl ExtendsDeviceCreateInfo
38511     for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'_>
38512 {
38513 }
38514 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
38515 impl<'a> ::std::ops::Deref for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
38516     type Target = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
deref(&self) -> &Self::Target38517     fn deref(&self) -> &Self::Target {
38518         &self.inner
38519     }
38520 }
38521 impl<'a> ::std::ops::DerefMut for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38522     fn deref_mut(&mut self) -> &mut Self::Target {
38523         &mut self.inner
38524     }
38525 }
38526 impl<'a> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTBuilder<'a> {
primitive_topology_list_restart( mut self, primitive_topology_list_restart: bool, ) -> Self38527     pub fn primitive_topology_list_restart(
38528         mut self,
38529         primitive_topology_list_restart: bool,
38530     ) -> Self {
38531         self.inner.primitive_topology_list_restart = primitive_topology_list_restart.into();
38532         self
38533     }
primitive_topology_patch_list_restart( mut self, primitive_topology_patch_list_restart: bool, ) -> Self38534     pub fn primitive_topology_patch_list_restart(
38535         mut self,
38536         primitive_topology_patch_list_restart: bool,
38537     ) -> Self {
38538         self.inner.primitive_topology_patch_list_restart =
38539             primitive_topology_patch_list_restart.into();
38540         self
38541     }
38542     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38543     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38544     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT38545     pub fn build(self) -> PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
38546         self.inner
38547     }
38548 }
38549 #[repr(C)]
38550 #[cfg_attr(feature = "debug", derive(Debug))]
38551 #[derive(Copy, Clone)]
38552 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescriptionStencilLayout.html>"]
38553 pub struct AttachmentDescriptionStencilLayout {
38554     pub s_type: StructureType,
38555     pub p_next: *mut c_void,
38556     pub stencil_initial_layout: ImageLayout,
38557     pub stencil_final_layout: ImageLayout,
38558 }
38559 impl ::std::default::Default for AttachmentDescriptionStencilLayout {
default() -> Self38560     fn default() -> Self {
38561         Self {
38562             s_type: StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
38563             p_next: ::std::ptr::null_mut(),
38564             stencil_initial_layout: ImageLayout::default(),
38565             stencil_final_layout: ImageLayout::default(),
38566         }
38567     }
38568 }
38569 impl AttachmentDescriptionStencilLayout {
builder<'a>() -> AttachmentDescriptionStencilLayoutBuilder<'a>38570     pub fn builder<'a>() -> AttachmentDescriptionStencilLayoutBuilder<'a> {
38571         AttachmentDescriptionStencilLayoutBuilder {
38572             inner: Self::default(),
38573             marker: ::std::marker::PhantomData,
38574         }
38575     }
38576 }
38577 #[repr(transparent)]
38578 pub struct AttachmentDescriptionStencilLayoutBuilder<'a> {
38579     inner: AttachmentDescriptionStencilLayout,
38580     marker: ::std::marker::PhantomData<&'a ()>,
38581 }
38582 unsafe impl ExtendsAttachmentDescription2 for AttachmentDescriptionStencilLayoutBuilder<'_> {}
38583 unsafe impl ExtendsAttachmentDescription2 for AttachmentDescriptionStencilLayout {}
38584 impl<'a> ::std::ops::Deref for AttachmentDescriptionStencilLayoutBuilder<'a> {
38585     type Target = AttachmentDescriptionStencilLayout;
deref(&self) -> &Self::Target38586     fn deref(&self) -> &Self::Target {
38587         &self.inner
38588     }
38589 }
38590 impl<'a> ::std::ops::DerefMut for AttachmentDescriptionStencilLayoutBuilder<'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> AttachmentDescriptionStencilLayoutBuilder<'a> {
stencil_initial_layout(mut self, stencil_initial_layout: ImageLayout) -> Self38596     pub fn stencil_initial_layout(mut self, stencil_initial_layout: ImageLayout) -> Self {
38597         self.inner.stencil_initial_layout = stencil_initial_layout;
38598         self
38599     }
stencil_final_layout(mut self, stencil_final_layout: ImageLayout) -> Self38600     pub fn stencil_final_layout(mut self, stencil_final_layout: ImageLayout) -> Self {
38601         self.inner.stencil_final_layout = stencil_final_layout;
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) -> AttachmentDescriptionStencilLayout38607     pub fn build(self) -> AttachmentDescriptionStencilLayout {
38608         self.inner
38609     }
38610 }
38611 #[repr(C)]
38612 #[cfg_attr(feature = "debug", derive(Debug))]
38613 #[derive(Copy, Clone)]
38614 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>"]
38615 pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
38616     pub s_type: StructureType,
38617     pub p_next: *mut c_void,
38618     pub pipeline_executable_info: Bool32,
38619 }
38620 impl ::std::default::Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
default() -> Self38621     fn default() -> Self {
38622         Self {
38623             s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
38624             p_next: ::std::ptr::null_mut(),
38625             pipeline_executable_info: Bool32::default(),
38626         }
38627     }
38628 }
38629 impl PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
builder<'a>() -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a>38630     pub fn builder<'a>() -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
38631         PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder {
38632             inner: Self::default(),
38633             marker: ::std::marker::PhantomData,
38634         }
38635     }
38636 }
38637 #[repr(transparent)]
38638 pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
38639     inner: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR,
38640     marker: ::std::marker::PhantomData<&'a ()>,
38641 }
38642 unsafe impl ExtendsPhysicalDeviceFeatures2
38643     for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'_>
38644 {
38645 }
38646 unsafe impl ExtendsPhysicalDeviceFeatures2
38647     for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
38648 {
38649 }
38650 unsafe impl ExtendsDeviceCreateInfo
38651     for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'_>
38652 {
38653 }
38654 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
38655 impl<'a> ::std::ops::Deref for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
38656     type Target = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
deref(&self) -> &Self::Target38657     fn deref(&self) -> &Self::Target {
38658         &self.inner
38659     }
38660 }
38661 impl<'a> ::std::ops::DerefMut for PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38662     fn deref_mut(&mut self) -> &mut Self::Target {
38663         &mut self.inner
38664     }
38665 }
38666 impl<'a> PhysicalDevicePipelineExecutablePropertiesFeaturesKHRBuilder<'a> {
pipeline_executable_info(mut self, pipeline_executable_info: bool) -> Self38667     pub fn pipeline_executable_info(mut self, pipeline_executable_info: bool) -> Self {
38668         self.inner.pipeline_executable_info = pipeline_executable_info.into();
38669         self
38670     }
38671     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38672     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38673     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHR38674     pub fn build(self) -> PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
38675         self.inner
38676     }
38677 }
38678 #[repr(C)]
38679 #[cfg_attr(feature = "debug", derive(Debug))]
38680 #[derive(Copy, Clone)]
38681 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInfoKHR.html>"]
38682 pub struct PipelineInfoKHR {
38683     pub s_type: StructureType,
38684     pub p_next: *const c_void,
38685     pub pipeline: Pipeline,
38686 }
38687 impl ::std::default::Default for PipelineInfoKHR {
default() -> Self38688     fn default() -> Self {
38689         Self {
38690             s_type: StructureType::PIPELINE_INFO_KHR,
38691             p_next: ::std::ptr::null(),
38692             pipeline: Pipeline::default(),
38693         }
38694     }
38695 }
38696 impl PipelineInfoKHR {
builder<'a>() -> PipelineInfoKHRBuilder<'a>38697     pub fn builder<'a>() -> PipelineInfoKHRBuilder<'a> {
38698         PipelineInfoKHRBuilder {
38699             inner: Self::default(),
38700             marker: ::std::marker::PhantomData,
38701         }
38702     }
38703 }
38704 #[repr(transparent)]
38705 pub struct PipelineInfoKHRBuilder<'a> {
38706     inner: PipelineInfoKHR,
38707     marker: ::std::marker::PhantomData<&'a ()>,
38708 }
38709 impl<'a> ::std::ops::Deref for PipelineInfoKHRBuilder<'a> {
38710     type Target = PipelineInfoKHR;
deref(&self) -> &Self::Target38711     fn deref(&self) -> &Self::Target {
38712         &self.inner
38713     }
38714 }
38715 impl<'a> ::std::ops::DerefMut for PipelineInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38716     fn deref_mut(&mut self) -> &mut Self::Target {
38717         &mut self.inner
38718     }
38719 }
38720 impl<'a> PipelineInfoKHRBuilder<'a> {
pipeline(mut self, pipeline: Pipeline) -> Self38721     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
38722         self.inner.pipeline = pipeline;
38723         self
38724     }
38725     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38726     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38727     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineInfoKHR38728     pub fn build(self) -> PipelineInfoKHR {
38729         self.inner
38730     }
38731 }
38732 #[repr(C)]
38733 #[derive(Copy, Clone)]
38734 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutablePropertiesKHR.html>"]
38735 pub struct PipelineExecutablePropertiesKHR {
38736     pub s_type: StructureType,
38737     pub p_next: *mut c_void,
38738     pub stages: ShaderStageFlags,
38739     pub name: [c_char; MAX_DESCRIPTION_SIZE],
38740     pub description: [c_char; MAX_DESCRIPTION_SIZE],
38741     pub subgroup_size: u32,
38742 }
38743 #[cfg(feature = "debug")]
38744 impl fmt::Debug for PipelineExecutablePropertiesKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result38745     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
38746         fmt.debug_struct("PipelineExecutablePropertiesKHR")
38747             .field("s_type", &self.s_type)
38748             .field("p_next", &self.p_next)
38749             .field("stages", &self.stages)
38750             .field("name", &unsafe {
38751                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
38752             })
38753             .field("description", &unsafe {
38754                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
38755             })
38756             .field("subgroup_size", &self.subgroup_size)
38757             .finish()
38758     }
38759 }
38760 impl ::std::default::Default for PipelineExecutablePropertiesKHR {
default() -> Self38761     fn default() -> Self {
38762         Self {
38763             s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
38764             p_next: ::std::ptr::null_mut(),
38765             stages: ShaderStageFlags::default(),
38766             name: unsafe { ::std::mem::zeroed() },
38767             description: unsafe { ::std::mem::zeroed() },
38768             subgroup_size: u32::default(),
38769         }
38770     }
38771 }
38772 impl PipelineExecutablePropertiesKHR {
builder<'a>() -> PipelineExecutablePropertiesKHRBuilder<'a>38773     pub fn builder<'a>() -> PipelineExecutablePropertiesKHRBuilder<'a> {
38774         PipelineExecutablePropertiesKHRBuilder {
38775             inner: Self::default(),
38776             marker: ::std::marker::PhantomData,
38777         }
38778     }
38779 }
38780 #[repr(transparent)]
38781 pub struct PipelineExecutablePropertiesKHRBuilder<'a> {
38782     inner: PipelineExecutablePropertiesKHR,
38783     marker: ::std::marker::PhantomData<&'a ()>,
38784 }
38785 impl<'a> ::std::ops::Deref for PipelineExecutablePropertiesKHRBuilder<'a> {
38786     type Target = PipelineExecutablePropertiesKHR;
deref(&self) -> &Self::Target38787     fn deref(&self) -> &Self::Target {
38788         &self.inner
38789     }
38790 }
38791 impl<'a> ::std::ops::DerefMut for PipelineExecutablePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38792     fn deref_mut(&mut self) -> &mut Self::Target {
38793         &mut self.inner
38794     }
38795 }
38796 impl<'a> PipelineExecutablePropertiesKHRBuilder<'a> {
stages(mut self, stages: ShaderStageFlags) -> Self38797     pub fn stages(mut self, stages: ShaderStageFlags) -> Self {
38798         self.inner.stages = stages;
38799         self
38800     }
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38801     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38802         self.inner.name = name;
38803         self
38804     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38805     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38806         self.inner.description = description;
38807         self
38808     }
subgroup_size(mut self, subgroup_size: u32) -> Self38809     pub fn subgroup_size(mut self, subgroup_size: u32) -> Self {
38810         self.inner.subgroup_size = subgroup_size;
38811         self
38812     }
38813     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38814     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38815     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutablePropertiesKHR38816     pub fn build(self) -> PipelineExecutablePropertiesKHR {
38817         self.inner
38818     }
38819 }
38820 #[repr(C)]
38821 #[cfg_attr(feature = "debug", derive(Debug))]
38822 #[derive(Copy, Clone)]
38823 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableInfoKHR.html>"]
38824 pub struct PipelineExecutableInfoKHR {
38825     pub s_type: StructureType,
38826     pub p_next: *const c_void,
38827     pub pipeline: Pipeline,
38828     pub executable_index: u32,
38829 }
38830 impl ::std::default::Default for PipelineExecutableInfoKHR {
default() -> Self38831     fn default() -> Self {
38832         Self {
38833             s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
38834             p_next: ::std::ptr::null(),
38835             pipeline: Pipeline::default(),
38836             executable_index: u32::default(),
38837         }
38838     }
38839 }
38840 impl PipelineExecutableInfoKHR {
builder<'a>() -> PipelineExecutableInfoKHRBuilder<'a>38841     pub fn builder<'a>() -> PipelineExecutableInfoKHRBuilder<'a> {
38842         PipelineExecutableInfoKHRBuilder {
38843             inner: Self::default(),
38844             marker: ::std::marker::PhantomData,
38845         }
38846     }
38847 }
38848 #[repr(transparent)]
38849 pub struct PipelineExecutableInfoKHRBuilder<'a> {
38850     inner: PipelineExecutableInfoKHR,
38851     marker: ::std::marker::PhantomData<&'a ()>,
38852 }
38853 impl<'a> ::std::ops::Deref for PipelineExecutableInfoKHRBuilder<'a> {
38854     type Target = PipelineExecutableInfoKHR;
deref(&self) -> &Self::Target38855     fn deref(&self) -> &Self::Target {
38856         &self.inner
38857     }
38858 }
38859 impl<'a> ::std::ops::DerefMut for PipelineExecutableInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38860     fn deref_mut(&mut self) -> &mut Self::Target {
38861         &mut self.inner
38862     }
38863 }
38864 impl<'a> PipelineExecutableInfoKHRBuilder<'a> {
pipeline(mut self, pipeline: Pipeline) -> Self38865     pub fn pipeline(mut self, pipeline: Pipeline) -> Self {
38866         self.inner.pipeline = pipeline;
38867         self
38868     }
executable_index(mut self, executable_index: u32) -> Self38869     pub fn executable_index(mut self, executable_index: u32) -> Self {
38870         self.inner.executable_index = executable_index;
38871         self
38872     }
38873     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38874     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38875     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutableInfoKHR38876     pub fn build(self) -> PipelineExecutableInfoKHR {
38877         self.inner
38878     }
38879 }
38880 #[repr(C)]
38881 #[derive(Copy, Clone)]
38882 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableStatisticValueKHR.html>"]
38883 pub union PipelineExecutableStatisticValueKHR {
38884     pub b32: Bool32,
38885     pub i64: i64,
38886     pub u64: u64,
38887     pub f64: f64,
38888 }
38889 impl ::std::default::Default for PipelineExecutableStatisticValueKHR {
default() -> Self38890     fn default() -> Self {
38891         unsafe { ::std::mem::zeroed() }
38892     }
38893 }
38894 #[repr(C)]
38895 #[derive(Copy, Clone)]
38896 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableStatisticKHR.html>"]
38897 pub struct PipelineExecutableStatisticKHR {
38898     pub s_type: StructureType,
38899     pub p_next: *mut c_void,
38900     pub name: [c_char; MAX_DESCRIPTION_SIZE],
38901     pub description: [c_char; MAX_DESCRIPTION_SIZE],
38902     pub format: PipelineExecutableStatisticFormatKHR,
38903     pub value: PipelineExecutableStatisticValueKHR,
38904 }
38905 #[cfg(feature = "debug")]
38906 impl fmt::Debug for PipelineExecutableStatisticKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result38907     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
38908         fmt.debug_struct("PipelineExecutableStatisticKHR")
38909             .field("s_type", &self.s_type)
38910             .field("p_next", &self.p_next)
38911             .field("name", &unsafe {
38912                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
38913             })
38914             .field("description", &unsafe {
38915                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
38916             })
38917             .field("format", &self.format)
38918             .field("value", &"union")
38919             .finish()
38920     }
38921 }
38922 impl ::std::default::Default for PipelineExecutableStatisticKHR {
default() -> Self38923     fn default() -> Self {
38924         Self {
38925             s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
38926             p_next: ::std::ptr::null_mut(),
38927             name: unsafe { ::std::mem::zeroed() },
38928             description: unsafe { ::std::mem::zeroed() },
38929             format: PipelineExecutableStatisticFormatKHR::default(),
38930             value: PipelineExecutableStatisticValueKHR::default(),
38931         }
38932     }
38933 }
38934 impl PipelineExecutableStatisticKHR {
builder<'a>() -> PipelineExecutableStatisticKHRBuilder<'a>38935     pub fn builder<'a>() -> PipelineExecutableStatisticKHRBuilder<'a> {
38936         PipelineExecutableStatisticKHRBuilder {
38937             inner: Self::default(),
38938             marker: ::std::marker::PhantomData,
38939         }
38940     }
38941 }
38942 #[repr(transparent)]
38943 pub struct PipelineExecutableStatisticKHRBuilder<'a> {
38944     inner: PipelineExecutableStatisticKHR,
38945     marker: ::std::marker::PhantomData<&'a ()>,
38946 }
38947 impl<'a> ::std::ops::Deref for PipelineExecutableStatisticKHRBuilder<'a> {
38948     type Target = PipelineExecutableStatisticKHR;
deref(&self) -> &Self::Target38949     fn deref(&self) -> &Self::Target {
38950         &self.inner
38951     }
38952 }
38953 impl<'a> ::std::ops::DerefMut for PipelineExecutableStatisticKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target38954     fn deref_mut(&mut self) -> &mut Self::Target {
38955         &mut self.inner
38956     }
38957 }
38958 impl<'a> PipelineExecutableStatisticKHRBuilder<'a> {
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38959     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38960         self.inner.name = name;
38961         self
38962     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self38963     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
38964         self.inner.description = description;
38965         self
38966     }
format(mut self, format: PipelineExecutableStatisticFormatKHR) -> Self38967     pub fn format(mut self, format: PipelineExecutableStatisticFormatKHR) -> Self {
38968         self.inner.format = format;
38969         self
38970     }
value(mut self, value: PipelineExecutableStatisticValueKHR) -> Self38971     pub fn value(mut self, value: PipelineExecutableStatisticValueKHR) -> Self {
38972         self.inner.value = value;
38973         self
38974     }
38975     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
38976     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
38977     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutableStatisticKHR38978     pub fn build(self) -> PipelineExecutableStatisticKHR {
38979         self.inner
38980     }
38981 }
38982 #[repr(C)]
38983 #[derive(Copy, Clone)]
38984 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableInternalRepresentationKHR.html>"]
38985 pub struct PipelineExecutableInternalRepresentationKHR {
38986     pub s_type: StructureType,
38987     pub p_next: *mut c_void,
38988     pub name: [c_char; MAX_DESCRIPTION_SIZE],
38989     pub description: [c_char; MAX_DESCRIPTION_SIZE],
38990     pub is_text: Bool32,
38991     pub data_size: usize,
38992     pub p_data: *mut c_void,
38993 }
38994 #[cfg(feature = "debug")]
38995 impl fmt::Debug for PipelineExecutableInternalRepresentationKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result38996     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
38997         fmt.debug_struct("PipelineExecutableInternalRepresentationKHR")
38998             .field("s_type", &self.s_type)
38999             .field("p_next", &self.p_next)
39000             .field("name", &unsafe {
39001                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
39002             })
39003             .field("description", &unsafe {
39004                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
39005             })
39006             .field("is_text", &self.is_text)
39007             .field("data_size", &self.data_size)
39008             .field("p_data", &self.p_data)
39009             .finish()
39010     }
39011 }
39012 impl ::std::default::Default for PipelineExecutableInternalRepresentationKHR {
default() -> Self39013     fn default() -> Self {
39014         Self {
39015             s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
39016             p_next: ::std::ptr::null_mut(),
39017             name: unsafe { ::std::mem::zeroed() },
39018             description: unsafe { ::std::mem::zeroed() },
39019             is_text: Bool32::default(),
39020             data_size: usize::default(),
39021             p_data: ::std::ptr::null_mut(),
39022         }
39023     }
39024 }
39025 impl PipelineExecutableInternalRepresentationKHR {
builder<'a>() -> PipelineExecutableInternalRepresentationKHRBuilder<'a>39026     pub fn builder<'a>() -> PipelineExecutableInternalRepresentationKHRBuilder<'a> {
39027         PipelineExecutableInternalRepresentationKHRBuilder {
39028             inner: Self::default(),
39029             marker: ::std::marker::PhantomData,
39030         }
39031     }
39032 }
39033 #[repr(transparent)]
39034 pub struct PipelineExecutableInternalRepresentationKHRBuilder<'a> {
39035     inner: PipelineExecutableInternalRepresentationKHR,
39036     marker: ::std::marker::PhantomData<&'a ()>,
39037 }
39038 impl<'a> ::std::ops::Deref for PipelineExecutableInternalRepresentationKHRBuilder<'a> {
39039     type Target = PipelineExecutableInternalRepresentationKHR;
deref(&self) -> &Self::Target39040     fn deref(&self) -> &Self::Target {
39041         &self.inner
39042     }
39043 }
39044 impl<'a> ::std::ops::DerefMut for PipelineExecutableInternalRepresentationKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39045     fn deref_mut(&mut self) -> &mut Self::Target {
39046         &mut self.inner
39047     }
39048 }
39049 impl<'a> PipelineExecutableInternalRepresentationKHRBuilder<'a> {
name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self39050     pub fn name(mut self, name: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
39051         self.inner.name = name;
39052         self
39053     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self39054     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
39055         self.inner.description = description;
39056         self
39057     }
is_text(mut self, is_text: bool) -> Self39058     pub fn is_text(mut self, is_text: bool) -> Self {
39059         self.inner.is_text = is_text.into();
39060         self
39061     }
data(mut self, data: &'a mut [u8]) -> Self39062     pub fn data(mut self, data: &'a mut [u8]) -> Self {
39063         self.inner.data_size = data.len() as _;
39064         self.inner.p_data = data.as_mut_ptr() as *mut c_void;
39065         self
39066     }
39067     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39068     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39069     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineExecutableInternalRepresentationKHR39070     pub fn build(self) -> PipelineExecutableInternalRepresentationKHR {
39071         self.inner
39072     }
39073 }
39074 #[repr(C)]
39075 #[cfg_attr(feature = "debug", derive(Debug))]
39076 #[derive(Copy, Clone)]
39077 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>"]
39078 pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
39079     pub s_type: StructureType,
39080     pub p_next: *mut c_void,
39081     pub shader_demote_to_helper_invocation: Bool32,
39082 }
39083 impl ::std::default::Default for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
default() -> Self39084     fn default() -> Self {
39085         Self {
39086             s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,
39087             p_next: ::std::ptr::null_mut(),
39088             shader_demote_to_helper_invocation: Bool32::default(),
39089         }
39090     }
39091 }
39092 impl PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a>39093     pub fn builder<'a>() -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
39094         PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder {
39095             inner: Self::default(),
39096             marker: ::std::marker::PhantomData,
39097         }
39098     }
39099 }
39100 #[repr(transparent)]
39101 pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
39102     inner: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT,
39103     marker: ::std::marker::PhantomData<&'a ()>,
39104 }
39105 unsafe impl ExtendsPhysicalDeviceFeatures2
39106     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'_>
39107 {
39108 }
39109 unsafe impl ExtendsPhysicalDeviceFeatures2
39110     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
39111 {
39112 }
39113 unsafe impl ExtendsDeviceCreateInfo
39114     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'_>
39115 {
39116 }
39117 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {}
39118 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
39119     type Target = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
deref(&self) -> &Self::Target39120     fn deref(&self) -> &Self::Target {
39121         &self.inner
39122     }
39123 }
39124 impl<'a> ::std::ops::DerefMut
39125     for PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a>
39126 {
deref_mut(&mut self) -> &mut Self::Target39127     fn deref_mut(&mut self) -> &mut Self::Target {
39128         &mut self.inner
39129     }
39130 }
39131 impl<'a> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTBuilder<'a> {
shader_demote_to_helper_invocation( mut self, shader_demote_to_helper_invocation: bool, ) -> Self39132     pub fn shader_demote_to_helper_invocation(
39133         mut self,
39134         shader_demote_to_helper_invocation: bool,
39135     ) -> Self {
39136         self.inner.shader_demote_to_helper_invocation = shader_demote_to_helper_invocation.into();
39137         self
39138     }
39139     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39140     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39141     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT39142     pub fn build(self) -> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
39143         self.inner
39144     }
39145 }
39146 #[repr(C)]
39147 #[cfg_attr(feature = "debug", derive(Debug))]
39148 #[derive(Copy, Clone)]
39149 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>"]
39150 pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
39151     pub s_type: StructureType,
39152     pub p_next: *mut c_void,
39153     pub texel_buffer_alignment: Bool32,
39154 }
39155 impl ::std::default::Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
default() -> Self39156     fn default() -> Self {
39157         Self {
39158             s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
39159             p_next: ::std::ptr::null_mut(),
39160             texel_buffer_alignment: Bool32::default(),
39161         }
39162     }
39163 }
39164 impl PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
builder<'a>() -> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a>39165     pub fn builder<'a>() -> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
39166         PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder {
39167             inner: Self::default(),
39168             marker: ::std::marker::PhantomData,
39169         }
39170     }
39171 }
39172 #[repr(transparent)]
39173 pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
39174     inner: PhysicalDeviceTexelBufferAlignmentFeaturesEXT,
39175     marker: ::std::marker::PhantomData<&'a ()>,
39176 }
39177 unsafe impl ExtendsPhysicalDeviceFeatures2
39178     for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'_>
39179 {
39180 }
39181 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
39182 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'_> {}
39183 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
39184 impl<'a> ::std::ops::Deref for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
39185     type Target = PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
deref(&self) -> &Self::Target39186     fn deref(&self) -> &Self::Target {
39187         &self.inner
39188     }
39189 }
39190 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39191     fn deref_mut(&mut self) -> &mut Self::Target {
39192         &mut self.inner
39193     }
39194 }
39195 impl<'a> PhysicalDeviceTexelBufferAlignmentFeaturesEXTBuilder<'a> {
texel_buffer_alignment(mut self, texel_buffer_alignment: bool) -> Self39196     pub fn texel_buffer_alignment(mut self, texel_buffer_alignment: bool) -> Self {
39197         self.inner.texel_buffer_alignment = texel_buffer_alignment.into();
39198         self
39199     }
39200     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39201     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39202     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTexelBufferAlignmentFeaturesEXT39203     pub fn build(self) -> PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
39204         self.inner
39205     }
39206 }
39207 #[repr(C)]
39208 #[cfg_attr(feature = "debug", derive(Debug))]
39209 #[derive(Copy, Clone)]
39210 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>"]
39211 pub struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
39212     pub s_type: StructureType,
39213     pub p_next: *mut c_void,
39214     pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
39215     pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
39216     pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
39217     pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
39218 }
39219 impl ::std::default::Default for PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
default() -> Self39220     fn default() -> Self {
39221         Self {
39222             s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,
39223             p_next: ::std::ptr::null_mut(),
39224             storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
39225             storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
39226             uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
39227             uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
39228         }
39229     }
39230 }
39231 impl PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
builder<'a>() -> PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a>39232     pub fn builder<'a>() -> PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
39233         PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder {
39234             inner: Self::default(),
39235             marker: ::std::marker::PhantomData,
39236         }
39237     }
39238 }
39239 #[repr(transparent)]
39240 pub struct PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
39241     inner: PhysicalDeviceTexelBufferAlignmentPropertiesEXT,
39242     marker: ::std::marker::PhantomData<&'a ()>,
39243 }
39244 unsafe impl ExtendsPhysicalDeviceProperties2
39245     for PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'_>
39246 {
39247 }
39248 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceTexelBufferAlignmentPropertiesEXT {}
39249 impl<'a> ::std::ops::Deref for PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
39250     type Target = PhysicalDeviceTexelBufferAlignmentPropertiesEXT;
deref(&self) -> &Self::Target39251     fn deref(&self) -> &Self::Target {
39252         &self.inner
39253     }
39254 }
39255 impl<'a> ::std::ops::DerefMut for PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39256     fn deref_mut(&mut self) -> &mut Self::Target {
39257         &mut self.inner
39258     }
39259 }
39260 impl<'a> PhysicalDeviceTexelBufferAlignmentPropertiesEXTBuilder<'a> {
storage_texel_buffer_offset_alignment_bytes( mut self, storage_texel_buffer_offset_alignment_bytes: DeviceSize, ) -> Self39261     pub fn storage_texel_buffer_offset_alignment_bytes(
39262         mut self,
39263         storage_texel_buffer_offset_alignment_bytes: DeviceSize,
39264     ) -> Self {
39265         self.inner.storage_texel_buffer_offset_alignment_bytes =
39266             storage_texel_buffer_offset_alignment_bytes;
39267         self
39268     }
storage_texel_buffer_offset_single_texel_alignment( mut self, storage_texel_buffer_offset_single_texel_alignment: bool, ) -> Self39269     pub fn storage_texel_buffer_offset_single_texel_alignment(
39270         mut self,
39271         storage_texel_buffer_offset_single_texel_alignment: bool,
39272     ) -> Self {
39273         self.inner
39274             .storage_texel_buffer_offset_single_texel_alignment =
39275             storage_texel_buffer_offset_single_texel_alignment.into();
39276         self
39277     }
uniform_texel_buffer_offset_alignment_bytes( mut self, uniform_texel_buffer_offset_alignment_bytes: DeviceSize, ) -> Self39278     pub fn uniform_texel_buffer_offset_alignment_bytes(
39279         mut self,
39280         uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
39281     ) -> Self {
39282         self.inner.uniform_texel_buffer_offset_alignment_bytes =
39283             uniform_texel_buffer_offset_alignment_bytes;
39284         self
39285     }
uniform_texel_buffer_offset_single_texel_alignment( mut self, uniform_texel_buffer_offset_single_texel_alignment: bool, ) -> Self39286     pub fn uniform_texel_buffer_offset_single_texel_alignment(
39287         mut self,
39288         uniform_texel_buffer_offset_single_texel_alignment: bool,
39289     ) -> Self {
39290         self.inner
39291             .uniform_texel_buffer_offset_single_texel_alignment =
39292             uniform_texel_buffer_offset_single_texel_alignment.into();
39293         self
39294     }
39295     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39296     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39297     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceTexelBufferAlignmentPropertiesEXT39298     pub fn build(self) -> PhysicalDeviceTexelBufferAlignmentPropertiesEXT {
39299         self.inner
39300     }
39301 }
39302 #[repr(C)]
39303 #[cfg_attr(feature = "debug", derive(Debug))]
39304 #[derive(Copy, Clone)]
39305 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>"]
39306 pub struct PhysicalDeviceSubgroupSizeControlFeaturesEXT {
39307     pub s_type: StructureType,
39308     pub p_next: *mut c_void,
39309     pub subgroup_size_control: Bool32,
39310     pub compute_full_subgroups: Bool32,
39311 }
39312 impl ::std::default::Default for PhysicalDeviceSubgroupSizeControlFeaturesEXT {
default() -> Self39313     fn default() -> Self {
39314         Self {
39315             s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,
39316             p_next: ::std::ptr::null_mut(),
39317             subgroup_size_control: Bool32::default(),
39318             compute_full_subgroups: Bool32::default(),
39319         }
39320     }
39321 }
39322 impl PhysicalDeviceSubgroupSizeControlFeaturesEXT {
builder<'a>() -> PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a>39323     pub fn builder<'a>() -> PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
39324         PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder {
39325             inner: Self::default(),
39326             marker: ::std::marker::PhantomData,
39327         }
39328     }
39329 }
39330 #[repr(transparent)]
39331 pub struct PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
39332     inner: PhysicalDeviceSubgroupSizeControlFeaturesEXT,
39333     marker: ::std::marker::PhantomData<&'a ()>,
39334 }
39335 unsafe impl ExtendsPhysicalDeviceFeatures2
39336     for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'_>
39337 {
39338 }
39339 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSubgroupSizeControlFeaturesEXT {}
39340 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'_> {}
39341 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubgroupSizeControlFeaturesEXT {}
39342 impl<'a> ::std::ops::Deref for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
39343     type Target = PhysicalDeviceSubgroupSizeControlFeaturesEXT;
deref(&self) -> &Self::Target39344     fn deref(&self) -> &Self::Target {
39345         &self.inner
39346     }
39347 }
39348 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39349     fn deref_mut(&mut self) -> &mut Self::Target {
39350         &mut self.inner
39351     }
39352 }
39353 impl<'a> PhysicalDeviceSubgroupSizeControlFeaturesEXTBuilder<'a> {
subgroup_size_control(mut self, subgroup_size_control: bool) -> Self39354     pub fn subgroup_size_control(mut self, subgroup_size_control: bool) -> Self {
39355         self.inner.subgroup_size_control = subgroup_size_control.into();
39356         self
39357     }
compute_full_subgroups(mut self, compute_full_subgroups: bool) -> Self39358     pub fn compute_full_subgroups(mut self, compute_full_subgroups: bool) -> Self {
39359         self.inner.compute_full_subgroups = compute_full_subgroups.into();
39360         self
39361     }
39362     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39363     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39364     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubgroupSizeControlFeaturesEXT39365     pub fn build(self) -> PhysicalDeviceSubgroupSizeControlFeaturesEXT {
39366         self.inner
39367     }
39368 }
39369 #[repr(C)]
39370 #[cfg_attr(feature = "debug", derive(Debug))]
39371 #[derive(Copy, Clone)]
39372 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>"]
39373 pub struct PhysicalDeviceSubgroupSizeControlPropertiesEXT {
39374     pub s_type: StructureType,
39375     pub p_next: *mut c_void,
39376     pub min_subgroup_size: u32,
39377     pub max_subgroup_size: u32,
39378     pub max_compute_workgroup_subgroups: u32,
39379     pub required_subgroup_size_stages: ShaderStageFlags,
39380 }
39381 impl ::std::default::Default for PhysicalDeviceSubgroupSizeControlPropertiesEXT {
default() -> Self39382     fn default() -> Self {
39383         Self {
39384             s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT,
39385             p_next: ::std::ptr::null_mut(),
39386             min_subgroup_size: u32::default(),
39387             max_subgroup_size: u32::default(),
39388             max_compute_workgroup_subgroups: u32::default(),
39389             required_subgroup_size_stages: ShaderStageFlags::default(),
39390         }
39391     }
39392 }
39393 impl PhysicalDeviceSubgroupSizeControlPropertiesEXT {
builder<'a>() -> PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a>39394     pub fn builder<'a>() -> PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
39395         PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder {
39396             inner: Self::default(),
39397             marker: ::std::marker::PhantomData,
39398         }
39399     }
39400 }
39401 #[repr(transparent)]
39402 pub struct PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
39403     inner: PhysicalDeviceSubgroupSizeControlPropertiesEXT,
39404     marker: ::std::marker::PhantomData<&'a ()>,
39405 }
39406 unsafe impl ExtendsPhysicalDeviceProperties2
39407     for PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'_>
39408 {
39409 }
39410 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubgroupSizeControlPropertiesEXT {}
39411 impl<'a> ::std::ops::Deref for PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
39412     type Target = PhysicalDeviceSubgroupSizeControlPropertiesEXT;
deref(&self) -> &Self::Target39413     fn deref(&self) -> &Self::Target {
39414         &self.inner
39415     }
39416 }
39417 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39418     fn deref_mut(&mut self) -> &mut Self::Target {
39419         &mut self.inner
39420     }
39421 }
39422 impl<'a> PhysicalDeviceSubgroupSizeControlPropertiesEXTBuilder<'a> {
min_subgroup_size(mut self, min_subgroup_size: u32) -> Self39423     pub fn min_subgroup_size(mut self, min_subgroup_size: u32) -> Self {
39424         self.inner.min_subgroup_size = min_subgroup_size;
39425         self
39426     }
max_subgroup_size(mut self, max_subgroup_size: u32) -> Self39427     pub fn max_subgroup_size(mut self, max_subgroup_size: u32) -> Self {
39428         self.inner.max_subgroup_size = max_subgroup_size;
39429         self
39430     }
max_compute_workgroup_subgroups(mut self, max_compute_workgroup_subgroups: u32) -> Self39431     pub fn max_compute_workgroup_subgroups(mut self, max_compute_workgroup_subgroups: u32) -> Self {
39432         self.inner.max_compute_workgroup_subgroups = max_compute_workgroup_subgroups;
39433         self
39434     }
required_subgroup_size_stages( mut self, required_subgroup_size_stages: ShaderStageFlags, ) -> Self39435     pub fn required_subgroup_size_stages(
39436         mut self,
39437         required_subgroup_size_stages: ShaderStageFlags,
39438     ) -> Self {
39439         self.inner.required_subgroup_size_stages = required_subgroup_size_stages;
39440         self
39441     }
39442     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39443     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39444     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubgroupSizeControlPropertiesEXT39445     pub fn build(self) -> PhysicalDeviceSubgroupSizeControlPropertiesEXT {
39446         self.inner
39447     }
39448 }
39449 #[repr(C)]
39450 #[cfg_attr(feature = "debug", derive(Debug))]
39451 #[derive(Copy, Clone)]
39452 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>"]
39453 pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
39454     pub s_type: StructureType,
39455     pub p_next: *mut c_void,
39456     pub required_subgroup_size: u32,
39457 }
39458 impl ::std::default::Default for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
default() -> Self39459     fn default() -> Self {
39460         Self {
39461             s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,
39462             p_next: ::std::ptr::null_mut(),
39463             required_subgroup_size: u32::default(),
39464         }
39465     }
39466 }
39467 impl PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
builder<'a>() -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a>39468     pub fn builder<'a>() -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
39469         PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder {
39470             inner: Self::default(),
39471             marker: ::std::marker::PhantomData,
39472         }
39473     }
39474 }
39475 #[repr(transparent)]
39476 pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
39477     inner: PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT,
39478     marker: ::std::marker::PhantomData<&'a ()>,
39479 }
39480 unsafe impl ExtendsPipelineShaderStageCreateInfo
39481     for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'_>
39482 {
39483 }
39484 unsafe impl ExtendsPipelineShaderStageCreateInfo
39485     for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
39486 {
39487 }
39488 impl<'a> ::std::ops::Deref for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
39489     type Target = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
deref(&self) -> &Self::Target39490     fn deref(&self) -> &Self::Target {
39491         &self.inner
39492     }
39493 }
39494 impl<'a> ::std::ops::DerefMut for PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'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> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTBuilder<'a> {
required_subgroup_size(mut self, required_subgroup_size: u32) -> Self39500     pub fn required_subgroup_size(mut self, required_subgroup_size: u32) -> Self {
39501         self.inner.required_subgroup_size = required_subgroup_size;
39502         self
39503     }
39504     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39505     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39506     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT39507     pub fn build(self) -> PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
39508         self.inner
39509     }
39510 }
39511 #[repr(C)]
39512 #[cfg_attr(feature = "debug", derive(Debug))]
39513 #[derive(Copy, Clone)]
39514 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>"]
39515 pub struct SubpassShadingPipelineCreateInfoHUAWEI {
39516     pub s_type: StructureType,
39517     pub p_next: *mut c_void,
39518     pub render_pass: RenderPass,
39519     pub subpass: u32,
39520 }
39521 impl ::std::default::Default for SubpassShadingPipelineCreateInfoHUAWEI {
default() -> Self39522     fn default() -> Self {
39523         Self {
39524             s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
39525             p_next: ::std::ptr::null_mut(),
39526             render_pass: RenderPass::default(),
39527             subpass: u32::default(),
39528         }
39529     }
39530 }
39531 impl SubpassShadingPipelineCreateInfoHUAWEI {
builder<'a>() -> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a>39532     pub fn builder<'a>() -> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
39533         SubpassShadingPipelineCreateInfoHUAWEIBuilder {
39534             inner: Self::default(),
39535             marker: ::std::marker::PhantomData,
39536         }
39537     }
39538 }
39539 #[repr(transparent)]
39540 pub struct SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
39541     inner: SubpassShadingPipelineCreateInfoHUAWEI,
39542     marker: ::std::marker::PhantomData<&'a ()>,
39543 }
39544 unsafe impl ExtendsComputePipelineCreateInfo for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'_> {}
39545 unsafe impl ExtendsComputePipelineCreateInfo for SubpassShadingPipelineCreateInfoHUAWEI {}
39546 impl<'a> ::std::ops::Deref for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
39547     type Target = SubpassShadingPipelineCreateInfoHUAWEI;
deref(&self) -> &Self::Target39548     fn deref(&self) -> &Self::Target {
39549         &self.inner
39550     }
39551 }
39552 impl<'a> ::std::ops::DerefMut for SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39553     fn deref_mut(&mut self) -> &mut Self::Target {
39554         &mut self.inner
39555     }
39556 }
39557 impl<'a> SubpassShadingPipelineCreateInfoHUAWEIBuilder<'a> {
render_pass(mut self, render_pass: RenderPass) -> Self39558     pub fn render_pass(mut self, render_pass: RenderPass) -> Self {
39559         self.inner.render_pass = render_pass;
39560         self
39561     }
subpass(mut self, subpass: u32) -> Self39562     pub fn subpass(mut self, subpass: u32) -> Self {
39563         self.inner.subpass = subpass;
39564         self
39565     }
39566     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39567     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39568     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubpassShadingPipelineCreateInfoHUAWEI39569     pub fn build(self) -> SubpassShadingPipelineCreateInfoHUAWEI {
39570         self.inner
39571     }
39572 }
39573 #[repr(C)]
39574 #[cfg_attr(feature = "debug", derive(Debug))]
39575 #[derive(Copy, Clone)]
39576 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>"]
39577 pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
39578     pub s_type: StructureType,
39579     pub p_next: *mut c_void,
39580     pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
39581 }
39582 impl ::std::default::Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
default() -> Self39583     fn default() -> Self {
39584         Self {
39585             s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
39586             p_next: ::std::ptr::null_mut(),
39587             max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
39588         }
39589     }
39590 }
39591 impl PhysicalDeviceSubpassShadingPropertiesHUAWEI {
builder<'a>() -> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a>39592     pub fn builder<'a>() -> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
39593         PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder {
39594             inner: Self::default(),
39595             marker: ::std::marker::PhantomData,
39596         }
39597     }
39598 }
39599 #[repr(transparent)]
39600 pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
39601     inner: PhysicalDeviceSubpassShadingPropertiesHUAWEI,
39602     marker: ::std::marker::PhantomData<&'a ()>,
39603 }
39604 unsafe impl ExtendsPhysicalDeviceProperties2
39605     for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'_>
39606 {
39607 }
39608 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
39609 impl<'a> ::std::ops::Deref for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
39610     type Target = PhysicalDeviceSubpassShadingPropertiesHUAWEI;
deref(&self) -> &Self::Target39611     fn deref(&self) -> &Self::Target {
39612         &self.inner
39613     }
39614 }
39615 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39616     fn deref_mut(&mut self) -> &mut Self::Target {
39617         &mut self.inner
39618     }
39619 }
39620 impl<'a> PhysicalDeviceSubpassShadingPropertiesHUAWEIBuilder<'a> {
max_subpass_shading_workgroup_size_aspect_ratio( mut self, max_subpass_shading_workgroup_size_aspect_ratio: u32, ) -> Self39621     pub fn max_subpass_shading_workgroup_size_aspect_ratio(
39622         mut self,
39623         max_subpass_shading_workgroup_size_aspect_ratio: u32,
39624     ) -> Self {
39625         self.inner.max_subpass_shading_workgroup_size_aspect_ratio =
39626             max_subpass_shading_workgroup_size_aspect_ratio;
39627         self
39628     }
39629     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39630     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39631     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubpassShadingPropertiesHUAWEI39632     pub fn build(self) -> PhysicalDeviceSubpassShadingPropertiesHUAWEI {
39633         self.inner
39634     }
39635 }
39636 #[repr(C)]
39637 #[cfg_attr(feature = "debug", derive(Debug))]
39638 #[derive(Copy, Clone)]
39639 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>"]
39640 pub struct MemoryOpaqueCaptureAddressAllocateInfo {
39641     pub s_type: StructureType,
39642     pub p_next: *const c_void,
39643     pub opaque_capture_address: u64,
39644 }
39645 impl ::std::default::Default for MemoryOpaqueCaptureAddressAllocateInfo {
default() -> Self39646     fn default() -> Self {
39647         Self {
39648             s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
39649             p_next: ::std::ptr::null(),
39650             opaque_capture_address: u64::default(),
39651         }
39652     }
39653 }
39654 impl MemoryOpaqueCaptureAddressAllocateInfo {
builder<'a>() -> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a>39655     pub fn builder<'a>() -> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
39656         MemoryOpaqueCaptureAddressAllocateInfoBuilder {
39657             inner: Self::default(),
39658             marker: ::std::marker::PhantomData,
39659         }
39660     }
39661 }
39662 #[repr(transparent)]
39663 pub struct MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
39664     inner: MemoryOpaqueCaptureAddressAllocateInfo,
39665     marker: ::std::marker::PhantomData<&'a ()>,
39666 }
39667 unsafe impl ExtendsMemoryAllocateInfo for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'_> {}
39668 unsafe impl ExtendsMemoryAllocateInfo for MemoryOpaqueCaptureAddressAllocateInfo {}
39669 impl<'a> ::std::ops::Deref for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
39670     type Target = MemoryOpaqueCaptureAddressAllocateInfo;
deref(&self) -> &Self::Target39671     fn deref(&self) -> &Self::Target {
39672         &self.inner
39673     }
39674 }
39675 impl<'a> ::std::ops::DerefMut for MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39676     fn deref_mut(&mut self) -> &mut Self::Target {
39677         &mut self.inner
39678     }
39679 }
39680 impl<'a> MemoryOpaqueCaptureAddressAllocateInfoBuilder<'a> {
opaque_capture_address(mut self, opaque_capture_address: u64) -> Self39681     pub fn opaque_capture_address(mut self, opaque_capture_address: u64) -> Self {
39682         self.inner.opaque_capture_address = opaque_capture_address;
39683         self
39684     }
39685     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39686     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39687     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryOpaqueCaptureAddressAllocateInfo39688     pub fn build(self) -> MemoryOpaqueCaptureAddressAllocateInfo {
39689         self.inner
39690     }
39691 }
39692 #[repr(C)]
39693 #[cfg_attr(feature = "debug", derive(Debug))]
39694 #[derive(Copy, Clone)]
39695 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>"]
39696 pub struct DeviceMemoryOpaqueCaptureAddressInfo {
39697     pub s_type: StructureType,
39698     pub p_next: *const c_void,
39699     pub memory: DeviceMemory,
39700 }
39701 impl ::std::default::Default for DeviceMemoryOpaqueCaptureAddressInfo {
default() -> Self39702     fn default() -> Self {
39703         Self {
39704             s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
39705             p_next: ::std::ptr::null(),
39706             memory: DeviceMemory::default(),
39707         }
39708     }
39709 }
39710 impl DeviceMemoryOpaqueCaptureAddressInfo {
builder<'a>() -> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a>39711     pub fn builder<'a>() -> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
39712         DeviceMemoryOpaqueCaptureAddressInfoBuilder {
39713             inner: Self::default(),
39714             marker: ::std::marker::PhantomData,
39715         }
39716     }
39717 }
39718 #[repr(transparent)]
39719 pub struct DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
39720     inner: DeviceMemoryOpaqueCaptureAddressInfo,
39721     marker: ::std::marker::PhantomData<&'a ()>,
39722 }
39723 impl<'a> ::std::ops::Deref for DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
39724     type Target = DeviceMemoryOpaqueCaptureAddressInfo;
deref(&self) -> &Self::Target39725     fn deref(&self) -> &Self::Target {
39726         &self.inner
39727     }
39728 }
39729 impl<'a> ::std::ops::DerefMut for DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39730     fn deref_mut(&mut self) -> &mut Self::Target {
39731         &mut self.inner
39732     }
39733 }
39734 impl<'a> DeviceMemoryOpaqueCaptureAddressInfoBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self39735     pub fn memory(mut self, memory: DeviceMemory) -> Self {
39736         self.inner.memory = memory;
39737         self
39738     }
39739     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39740     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39741     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceMemoryOpaqueCaptureAddressInfo39742     pub fn build(self) -> DeviceMemoryOpaqueCaptureAddressInfo {
39743         self.inner
39744     }
39745 }
39746 #[repr(C)]
39747 #[cfg_attr(feature = "debug", derive(Debug))]
39748 #[derive(Copy, Clone)]
39749 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>"]
39750 pub struct PhysicalDeviceLineRasterizationFeaturesEXT {
39751     pub s_type: StructureType,
39752     pub p_next: *mut c_void,
39753     pub rectangular_lines: Bool32,
39754     pub bresenham_lines: Bool32,
39755     pub smooth_lines: Bool32,
39756     pub stippled_rectangular_lines: Bool32,
39757     pub stippled_bresenham_lines: Bool32,
39758     pub stippled_smooth_lines: Bool32,
39759 }
39760 impl ::std::default::Default for PhysicalDeviceLineRasterizationFeaturesEXT {
default() -> Self39761     fn default() -> Self {
39762         Self {
39763             s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT,
39764             p_next: ::std::ptr::null_mut(),
39765             rectangular_lines: Bool32::default(),
39766             bresenham_lines: Bool32::default(),
39767             smooth_lines: Bool32::default(),
39768             stippled_rectangular_lines: Bool32::default(),
39769             stippled_bresenham_lines: Bool32::default(),
39770             stippled_smooth_lines: Bool32::default(),
39771         }
39772     }
39773 }
39774 impl PhysicalDeviceLineRasterizationFeaturesEXT {
builder<'a>() -> PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a>39775     pub fn builder<'a>() -> PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
39776         PhysicalDeviceLineRasterizationFeaturesEXTBuilder {
39777             inner: Self::default(),
39778             marker: ::std::marker::PhantomData,
39779         }
39780     }
39781 }
39782 #[repr(transparent)]
39783 pub struct PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
39784     inner: PhysicalDeviceLineRasterizationFeaturesEXT,
39785     marker: ::std::marker::PhantomData<&'a ()>,
39786 }
39787 unsafe impl ExtendsPhysicalDeviceFeatures2
39788     for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'_>
39789 {
39790 }
39791 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceLineRasterizationFeaturesEXT {}
39792 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'_> {}
39793 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLineRasterizationFeaturesEXT {}
39794 impl<'a> ::std::ops::Deref for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
39795     type Target = PhysicalDeviceLineRasterizationFeaturesEXT;
deref(&self) -> &Self::Target39796     fn deref(&self) -> &Self::Target {
39797         &self.inner
39798     }
39799 }
39800 impl<'a> ::std::ops::DerefMut for PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39801     fn deref_mut(&mut self) -> &mut Self::Target {
39802         &mut self.inner
39803     }
39804 }
39805 impl<'a> PhysicalDeviceLineRasterizationFeaturesEXTBuilder<'a> {
rectangular_lines(mut self, rectangular_lines: bool) -> Self39806     pub fn rectangular_lines(mut self, rectangular_lines: bool) -> Self {
39807         self.inner.rectangular_lines = rectangular_lines.into();
39808         self
39809     }
bresenham_lines(mut self, bresenham_lines: bool) -> Self39810     pub fn bresenham_lines(mut self, bresenham_lines: bool) -> Self {
39811         self.inner.bresenham_lines = bresenham_lines.into();
39812         self
39813     }
smooth_lines(mut self, smooth_lines: bool) -> Self39814     pub fn smooth_lines(mut self, smooth_lines: bool) -> Self {
39815         self.inner.smooth_lines = smooth_lines.into();
39816         self
39817     }
stippled_rectangular_lines(mut self, stippled_rectangular_lines: bool) -> Self39818     pub fn stippled_rectangular_lines(mut self, stippled_rectangular_lines: bool) -> Self {
39819         self.inner.stippled_rectangular_lines = stippled_rectangular_lines.into();
39820         self
39821     }
stippled_bresenham_lines(mut self, stippled_bresenham_lines: bool) -> Self39822     pub fn stippled_bresenham_lines(mut self, stippled_bresenham_lines: bool) -> Self {
39823         self.inner.stippled_bresenham_lines = stippled_bresenham_lines.into();
39824         self
39825     }
stippled_smooth_lines(mut self, stippled_smooth_lines: bool) -> Self39826     pub fn stippled_smooth_lines(mut self, stippled_smooth_lines: bool) -> Self {
39827         self.inner.stippled_smooth_lines = stippled_smooth_lines.into();
39828         self
39829     }
39830     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39831     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39832     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceLineRasterizationFeaturesEXT39833     pub fn build(self) -> PhysicalDeviceLineRasterizationFeaturesEXT {
39834         self.inner
39835     }
39836 }
39837 #[repr(C)]
39838 #[cfg_attr(feature = "debug", derive(Debug))]
39839 #[derive(Copy, Clone)]
39840 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>"]
39841 pub struct PhysicalDeviceLineRasterizationPropertiesEXT {
39842     pub s_type: StructureType,
39843     pub p_next: *mut c_void,
39844     pub line_sub_pixel_precision_bits: u32,
39845 }
39846 impl ::std::default::Default for PhysicalDeviceLineRasterizationPropertiesEXT {
default() -> Self39847     fn default() -> Self {
39848         Self {
39849             s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT,
39850             p_next: ::std::ptr::null_mut(),
39851             line_sub_pixel_precision_bits: u32::default(),
39852         }
39853     }
39854 }
39855 impl PhysicalDeviceLineRasterizationPropertiesEXT {
builder<'a>() -> PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a>39856     pub fn builder<'a>() -> PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
39857         PhysicalDeviceLineRasterizationPropertiesEXTBuilder {
39858             inner: Self::default(),
39859             marker: ::std::marker::PhantomData,
39860         }
39861     }
39862 }
39863 #[repr(transparent)]
39864 pub struct PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
39865     inner: PhysicalDeviceLineRasterizationPropertiesEXT,
39866     marker: ::std::marker::PhantomData<&'a ()>,
39867 }
39868 unsafe impl ExtendsPhysicalDeviceProperties2
39869     for PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'_>
39870 {
39871 }
39872 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceLineRasterizationPropertiesEXT {}
39873 impl<'a> ::std::ops::Deref for PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
39874     type Target = PhysicalDeviceLineRasterizationPropertiesEXT;
deref(&self) -> &Self::Target39875     fn deref(&self) -> &Self::Target {
39876         &self.inner
39877     }
39878 }
39879 impl<'a> ::std::ops::DerefMut for PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39880     fn deref_mut(&mut self) -> &mut Self::Target {
39881         &mut self.inner
39882     }
39883 }
39884 impl<'a> PhysicalDeviceLineRasterizationPropertiesEXTBuilder<'a> {
line_sub_pixel_precision_bits(mut self, line_sub_pixel_precision_bits: u32) -> Self39885     pub fn line_sub_pixel_precision_bits(mut self, line_sub_pixel_precision_bits: u32) -> Self {
39886         self.inner.line_sub_pixel_precision_bits = line_sub_pixel_precision_bits;
39887         self
39888     }
39889     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39890     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39891     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceLineRasterizationPropertiesEXT39892     pub fn build(self) -> PhysicalDeviceLineRasterizationPropertiesEXT {
39893         self.inner
39894     }
39895 }
39896 #[repr(C)]
39897 #[cfg_attr(feature = "debug", derive(Debug))]
39898 #[derive(Copy, Clone)]
39899 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>"]
39900 pub struct PipelineRasterizationLineStateCreateInfoEXT {
39901     pub s_type: StructureType,
39902     pub p_next: *const c_void,
39903     pub line_rasterization_mode: LineRasterizationModeEXT,
39904     pub stippled_line_enable: Bool32,
39905     pub line_stipple_factor: u32,
39906     pub line_stipple_pattern: u16,
39907 }
39908 impl ::std::default::Default for PipelineRasterizationLineStateCreateInfoEXT {
default() -> Self39909     fn default() -> Self {
39910         Self {
39911             s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT,
39912             p_next: ::std::ptr::null(),
39913             line_rasterization_mode: LineRasterizationModeEXT::default(),
39914             stippled_line_enable: Bool32::default(),
39915             line_stipple_factor: u32::default(),
39916             line_stipple_pattern: u16::default(),
39917         }
39918     }
39919 }
39920 impl PipelineRasterizationLineStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationLineStateCreateInfoEXTBuilder<'a>39921     pub fn builder<'a>() -> PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
39922         PipelineRasterizationLineStateCreateInfoEXTBuilder {
39923             inner: Self::default(),
39924             marker: ::std::marker::PhantomData,
39925         }
39926     }
39927 }
39928 #[repr(transparent)]
39929 pub struct PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
39930     inner: PipelineRasterizationLineStateCreateInfoEXT,
39931     marker: ::std::marker::PhantomData<&'a ()>,
39932 }
39933 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
39934     for PipelineRasterizationLineStateCreateInfoEXTBuilder<'_>
39935 {
39936 }
39937 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
39938     for PipelineRasterizationLineStateCreateInfoEXT
39939 {
39940 }
39941 impl<'a> ::std::ops::Deref for PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
39942     type Target = PipelineRasterizationLineStateCreateInfoEXT;
deref(&self) -> &Self::Target39943     fn deref(&self) -> &Self::Target {
39944         &self.inner
39945     }
39946 }
39947 impl<'a> ::std::ops::DerefMut for PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target39948     fn deref_mut(&mut self) -> &mut Self::Target {
39949         &mut self.inner
39950     }
39951 }
39952 impl<'a> PipelineRasterizationLineStateCreateInfoEXTBuilder<'a> {
line_rasterization_mode( mut self, line_rasterization_mode: LineRasterizationModeEXT, ) -> Self39953     pub fn line_rasterization_mode(
39954         mut self,
39955         line_rasterization_mode: LineRasterizationModeEXT,
39956     ) -> Self {
39957         self.inner.line_rasterization_mode = line_rasterization_mode;
39958         self
39959     }
stippled_line_enable(mut self, stippled_line_enable: bool) -> Self39960     pub fn stippled_line_enable(mut self, stippled_line_enable: bool) -> Self {
39961         self.inner.stippled_line_enable = stippled_line_enable.into();
39962         self
39963     }
line_stipple_factor(mut self, line_stipple_factor: u32) -> Self39964     pub fn line_stipple_factor(mut self, line_stipple_factor: u32) -> Self {
39965         self.inner.line_stipple_factor = line_stipple_factor;
39966         self
39967     }
line_stipple_pattern(mut self, line_stipple_pattern: u16) -> Self39968     pub fn line_stipple_pattern(mut self, line_stipple_pattern: u16) -> Self {
39969         self.inner.line_stipple_pattern = line_stipple_pattern;
39970         self
39971     }
39972     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
39973     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
39974     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationLineStateCreateInfoEXT39975     pub fn build(self) -> PipelineRasterizationLineStateCreateInfoEXT {
39976         self.inner
39977     }
39978 }
39979 #[repr(C)]
39980 #[cfg_attr(feature = "debug", derive(Debug))]
39981 #[derive(Copy, Clone)]
39982 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>"]
39983 pub struct PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
39984     pub s_type: StructureType,
39985     pub p_next: *mut c_void,
39986     pub pipeline_creation_cache_control: Bool32,
39987 }
39988 impl ::std::default::Default for PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
default() -> Self39989     fn default() -> Self {
39990         Self {
39991             s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT,
39992             p_next: ::std::ptr::null_mut(),
39993             pipeline_creation_cache_control: Bool32::default(),
39994         }
39995     }
39996 }
39997 impl PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
builder<'a>() -> PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a>39998     pub fn builder<'a>() -> PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
39999         PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder {
40000             inner: Self::default(),
40001             marker: ::std::marker::PhantomData,
40002         }
40003     }
40004 }
40005 #[repr(transparent)]
40006 pub struct PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
40007     inner: PhysicalDevicePipelineCreationCacheControlFeaturesEXT,
40008     marker: ::std::marker::PhantomData<&'a ()>,
40009 }
40010 unsafe impl ExtendsPhysicalDeviceFeatures2
40011     for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'_>
40012 {
40013 }
40014 unsafe impl ExtendsPhysicalDeviceFeatures2
40015     for PhysicalDevicePipelineCreationCacheControlFeaturesEXT
40016 {
40017 }
40018 unsafe impl ExtendsDeviceCreateInfo
40019     for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'_>
40020 {
40021 }
40022 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePipelineCreationCacheControlFeaturesEXT {}
40023 impl<'a> ::std::ops::Deref for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
40024     type Target = PhysicalDevicePipelineCreationCacheControlFeaturesEXT;
deref(&self) -> &Self::Target40025     fn deref(&self) -> &Self::Target {
40026         &self.inner
40027     }
40028 }
40029 impl<'a> ::std::ops::DerefMut for PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40030     fn deref_mut(&mut self) -> &mut Self::Target {
40031         &mut self.inner
40032     }
40033 }
40034 impl<'a> PhysicalDevicePipelineCreationCacheControlFeaturesEXTBuilder<'a> {
pipeline_creation_cache_control( mut self, pipeline_creation_cache_control: bool, ) -> Self40035     pub fn pipeline_creation_cache_control(
40036         mut self,
40037         pipeline_creation_cache_control: bool,
40038     ) -> Self {
40039         self.inner.pipeline_creation_cache_control = pipeline_creation_cache_control.into();
40040         self
40041     }
40042     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40043     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40044     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePipelineCreationCacheControlFeaturesEXT40045     pub fn build(self) -> PhysicalDevicePipelineCreationCacheControlFeaturesEXT {
40046         self.inner
40047     }
40048 }
40049 #[repr(C)]
40050 #[cfg_attr(feature = "debug", derive(Debug))]
40051 #[derive(Copy, Clone)]
40052 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan11Features.html>"]
40053 pub struct PhysicalDeviceVulkan11Features {
40054     pub s_type: StructureType,
40055     pub p_next: *mut c_void,
40056     pub storage_buffer16_bit_access: Bool32,
40057     pub uniform_and_storage_buffer16_bit_access: Bool32,
40058     pub storage_push_constant16: Bool32,
40059     pub storage_input_output16: Bool32,
40060     pub multiview: Bool32,
40061     pub multiview_geometry_shader: Bool32,
40062     pub multiview_tessellation_shader: Bool32,
40063     pub variable_pointers_storage_buffer: Bool32,
40064     pub variable_pointers: Bool32,
40065     pub protected_memory: Bool32,
40066     pub sampler_ycbcr_conversion: Bool32,
40067     pub shader_draw_parameters: Bool32,
40068 }
40069 impl ::std::default::Default for PhysicalDeviceVulkan11Features {
default() -> Self40070     fn default() -> Self {
40071         Self {
40072             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
40073             p_next: ::std::ptr::null_mut(),
40074             storage_buffer16_bit_access: Bool32::default(),
40075             uniform_and_storage_buffer16_bit_access: Bool32::default(),
40076             storage_push_constant16: Bool32::default(),
40077             storage_input_output16: Bool32::default(),
40078             multiview: Bool32::default(),
40079             multiview_geometry_shader: Bool32::default(),
40080             multiview_tessellation_shader: Bool32::default(),
40081             variable_pointers_storage_buffer: Bool32::default(),
40082             variable_pointers: Bool32::default(),
40083             protected_memory: Bool32::default(),
40084             sampler_ycbcr_conversion: Bool32::default(),
40085             shader_draw_parameters: Bool32::default(),
40086         }
40087     }
40088 }
40089 impl PhysicalDeviceVulkan11Features {
builder<'a>() -> PhysicalDeviceVulkan11FeaturesBuilder<'a>40090     pub fn builder<'a>() -> PhysicalDeviceVulkan11FeaturesBuilder<'a> {
40091         PhysicalDeviceVulkan11FeaturesBuilder {
40092             inner: Self::default(),
40093             marker: ::std::marker::PhantomData,
40094         }
40095     }
40096 }
40097 #[repr(transparent)]
40098 pub struct PhysicalDeviceVulkan11FeaturesBuilder<'a> {
40099     inner: PhysicalDeviceVulkan11Features,
40100     marker: ::std::marker::PhantomData<&'a ()>,
40101 }
40102 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan11FeaturesBuilder<'_> {}
40103 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan11Features {}
40104 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan11FeaturesBuilder<'_> {}
40105 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan11Features {}
40106 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan11FeaturesBuilder<'a> {
40107     type Target = PhysicalDeviceVulkan11Features;
deref(&self) -> &Self::Target40108     fn deref(&self) -> &Self::Target {
40109         &self.inner
40110     }
40111 }
40112 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan11FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40113     fn deref_mut(&mut self) -> &mut Self::Target {
40114         &mut self.inner
40115     }
40116 }
40117 impl<'a> PhysicalDeviceVulkan11FeaturesBuilder<'a> {
storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self40118     pub fn storage_buffer16_bit_access(mut self, storage_buffer16_bit_access: bool) -> Self {
40119         self.inner.storage_buffer16_bit_access = storage_buffer16_bit_access.into();
40120         self
40121     }
uniform_and_storage_buffer16_bit_access( mut self, uniform_and_storage_buffer16_bit_access: bool, ) -> Self40122     pub fn uniform_and_storage_buffer16_bit_access(
40123         mut self,
40124         uniform_and_storage_buffer16_bit_access: bool,
40125     ) -> Self {
40126         self.inner.uniform_and_storage_buffer16_bit_access =
40127             uniform_and_storage_buffer16_bit_access.into();
40128         self
40129     }
storage_push_constant16(mut self, storage_push_constant16: bool) -> Self40130     pub fn storage_push_constant16(mut self, storage_push_constant16: bool) -> Self {
40131         self.inner.storage_push_constant16 = storage_push_constant16.into();
40132         self
40133     }
storage_input_output16(mut self, storage_input_output16: bool) -> Self40134     pub fn storage_input_output16(mut self, storage_input_output16: bool) -> Self {
40135         self.inner.storage_input_output16 = storage_input_output16.into();
40136         self
40137     }
multiview(mut self, multiview: bool) -> Self40138     pub fn multiview(mut self, multiview: bool) -> Self {
40139         self.inner.multiview = multiview.into();
40140         self
40141     }
multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self40142     pub fn multiview_geometry_shader(mut self, multiview_geometry_shader: bool) -> Self {
40143         self.inner.multiview_geometry_shader = multiview_geometry_shader.into();
40144         self
40145     }
multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self40146     pub fn multiview_tessellation_shader(mut self, multiview_tessellation_shader: bool) -> Self {
40147         self.inner.multiview_tessellation_shader = multiview_tessellation_shader.into();
40148         self
40149     }
variable_pointers_storage_buffer( mut self, variable_pointers_storage_buffer: bool, ) -> Self40150     pub fn variable_pointers_storage_buffer(
40151         mut self,
40152         variable_pointers_storage_buffer: bool,
40153     ) -> Self {
40154         self.inner.variable_pointers_storage_buffer = variable_pointers_storage_buffer.into();
40155         self
40156     }
variable_pointers(mut self, variable_pointers: bool) -> Self40157     pub fn variable_pointers(mut self, variable_pointers: bool) -> Self {
40158         self.inner.variable_pointers = variable_pointers.into();
40159         self
40160     }
protected_memory(mut self, protected_memory: bool) -> Self40161     pub fn protected_memory(mut self, protected_memory: bool) -> Self {
40162         self.inner.protected_memory = protected_memory.into();
40163         self
40164     }
sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self40165     pub fn sampler_ycbcr_conversion(mut self, sampler_ycbcr_conversion: bool) -> Self {
40166         self.inner.sampler_ycbcr_conversion = sampler_ycbcr_conversion.into();
40167         self
40168     }
shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self40169     pub fn shader_draw_parameters(mut self, shader_draw_parameters: bool) -> Self {
40170         self.inner.shader_draw_parameters = shader_draw_parameters.into();
40171         self
40172     }
40173     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40174     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40175     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan11Features40176     pub fn build(self) -> PhysicalDeviceVulkan11Features {
40177         self.inner
40178     }
40179 }
40180 #[repr(C)]
40181 #[cfg_attr(feature = "debug", derive(Debug))]
40182 #[derive(Copy, Clone)]
40183 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html>"]
40184 pub struct PhysicalDeviceVulkan11Properties {
40185     pub s_type: StructureType,
40186     pub p_next: *mut c_void,
40187     pub device_uuid: [u8; UUID_SIZE],
40188     pub driver_uuid: [u8; UUID_SIZE],
40189     pub device_luid: [u8; LUID_SIZE],
40190     pub device_node_mask: u32,
40191     pub device_luid_valid: Bool32,
40192     pub subgroup_size: u32,
40193     pub subgroup_supported_stages: ShaderStageFlags,
40194     pub subgroup_supported_operations: SubgroupFeatureFlags,
40195     pub subgroup_quad_operations_in_all_stages: Bool32,
40196     pub point_clipping_behavior: PointClippingBehavior,
40197     pub max_multiview_view_count: u32,
40198     pub max_multiview_instance_index: u32,
40199     pub protected_no_fault: Bool32,
40200     pub max_per_set_descriptors: u32,
40201     pub max_memory_allocation_size: DeviceSize,
40202 }
40203 impl ::std::default::Default for PhysicalDeviceVulkan11Properties {
default() -> Self40204     fn default() -> Self {
40205         Self {
40206             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
40207             p_next: ::std::ptr::null_mut(),
40208             device_uuid: unsafe { ::std::mem::zeroed() },
40209             driver_uuid: unsafe { ::std::mem::zeroed() },
40210             device_luid: unsafe { ::std::mem::zeroed() },
40211             device_node_mask: u32::default(),
40212             device_luid_valid: Bool32::default(),
40213             subgroup_size: u32::default(),
40214             subgroup_supported_stages: ShaderStageFlags::default(),
40215             subgroup_supported_operations: SubgroupFeatureFlags::default(),
40216             subgroup_quad_operations_in_all_stages: Bool32::default(),
40217             point_clipping_behavior: PointClippingBehavior::default(),
40218             max_multiview_view_count: u32::default(),
40219             max_multiview_instance_index: u32::default(),
40220             protected_no_fault: Bool32::default(),
40221             max_per_set_descriptors: u32::default(),
40222             max_memory_allocation_size: DeviceSize::default(),
40223         }
40224     }
40225 }
40226 impl PhysicalDeviceVulkan11Properties {
builder<'a>() -> PhysicalDeviceVulkan11PropertiesBuilder<'a>40227     pub fn builder<'a>() -> PhysicalDeviceVulkan11PropertiesBuilder<'a> {
40228         PhysicalDeviceVulkan11PropertiesBuilder {
40229             inner: Self::default(),
40230             marker: ::std::marker::PhantomData,
40231         }
40232     }
40233 }
40234 #[repr(transparent)]
40235 pub struct PhysicalDeviceVulkan11PropertiesBuilder<'a> {
40236     inner: PhysicalDeviceVulkan11Properties,
40237     marker: ::std::marker::PhantomData<&'a ()>,
40238 }
40239 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan11PropertiesBuilder<'_> {}
40240 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan11Properties {}
40241 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan11PropertiesBuilder<'a> {
40242     type Target = PhysicalDeviceVulkan11Properties;
deref(&self) -> &Self::Target40243     fn deref(&self) -> &Self::Target {
40244         &self.inner
40245     }
40246 }
40247 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan11PropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40248     fn deref_mut(&mut self) -> &mut Self::Target {
40249         &mut self.inner
40250     }
40251 }
40252 impl<'a> PhysicalDeviceVulkan11PropertiesBuilder<'a> {
device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self40253     pub fn device_uuid(mut self, device_uuid: [u8; UUID_SIZE]) -> Self {
40254         self.inner.device_uuid = device_uuid;
40255         self
40256     }
driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self40257     pub fn driver_uuid(mut self, driver_uuid: [u8; UUID_SIZE]) -> Self {
40258         self.inner.driver_uuid = driver_uuid;
40259         self
40260     }
device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self40261     pub fn device_luid(mut self, device_luid: [u8; LUID_SIZE]) -> Self {
40262         self.inner.device_luid = device_luid;
40263         self
40264     }
device_node_mask(mut self, device_node_mask: u32) -> Self40265     pub fn device_node_mask(mut self, device_node_mask: u32) -> Self {
40266         self.inner.device_node_mask = device_node_mask;
40267         self
40268     }
device_luid_valid(mut self, device_luid_valid: bool) -> Self40269     pub fn device_luid_valid(mut self, device_luid_valid: bool) -> Self {
40270         self.inner.device_luid_valid = device_luid_valid.into();
40271         self
40272     }
subgroup_size(mut self, subgroup_size: u32) -> Self40273     pub fn subgroup_size(mut self, subgroup_size: u32) -> Self {
40274         self.inner.subgroup_size = subgroup_size;
40275         self
40276     }
subgroup_supported_stages( mut self, subgroup_supported_stages: ShaderStageFlags, ) -> Self40277     pub fn subgroup_supported_stages(
40278         mut self,
40279         subgroup_supported_stages: ShaderStageFlags,
40280     ) -> Self {
40281         self.inner.subgroup_supported_stages = subgroup_supported_stages;
40282         self
40283     }
subgroup_supported_operations( mut self, subgroup_supported_operations: SubgroupFeatureFlags, ) -> Self40284     pub fn subgroup_supported_operations(
40285         mut self,
40286         subgroup_supported_operations: SubgroupFeatureFlags,
40287     ) -> Self {
40288         self.inner.subgroup_supported_operations = subgroup_supported_operations;
40289         self
40290     }
subgroup_quad_operations_in_all_stages( mut self, subgroup_quad_operations_in_all_stages: bool, ) -> Self40291     pub fn subgroup_quad_operations_in_all_stages(
40292         mut self,
40293         subgroup_quad_operations_in_all_stages: bool,
40294     ) -> Self {
40295         self.inner.subgroup_quad_operations_in_all_stages =
40296             subgroup_quad_operations_in_all_stages.into();
40297         self
40298     }
point_clipping_behavior( mut self, point_clipping_behavior: PointClippingBehavior, ) -> Self40299     pub fn point_clipping_behavior(
40300         mut self,
40301         point_clipping_behavior: PointClippingBehavior,
40302     ) -> Self {
40303         self.inner.point_clipping_behavior = point_clipping_behavior;
40304         self
40305     }
max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self40306     pub fn max_multiview_view_count(mut self, max_multiview_view_count: u32) -> Self {
40307         self.inner.max_multiview_view_count = max_multiview_view_count;
40308         self
40309     }
max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self40310     pub fn max_multiview_instance_index(mut self, max_multiview_instance_index: u32) -> Self {
40311         self.inner.max_multiview_instance_index = max_multiview_instance_index;
40312         self
40313     }
protected_no_fault(mut self, protected_no_fault: bool) -> Self40314     pub fn protected_no_fault(mut self, protected_no_fault: bool) -> Self {
40315         self.inner.protected_no_fault = protected_no_fault.into();
40316         self
40317     }
max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self40318     pub fn max_per_set_descriptors(mut self, max_per_set_descriptors: u32) -> Self {
40319         self.inner.max_per_set_descriptors = max_per_set_descriptors;
40320         self
40321     }
max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self40322     pub fn max_memory_allocation_size(mut self, max_memory_allocation_size: DeviceSize) -> Self {
40323         self.inner.max_memory_allocation_size = max_memory_allocation_size;
40324         self
40325     }
40326     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40327     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40328     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan11Properties40329     pub fn build(self) -> PhysicalDeviceVulkan11Properties {
40330         self.inner
40331     }
40332 }
40333 #[repr(C)]
40334 #[cfg_attr(feature = "debug", derive(Debug))]
40335 #[derive(Copy, Clone)]
40336 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan12Features.html>"]
40337 pub struct PhysicalDeviceVulkan12Features {
40338     pub s_type: StructureType,
40339     pub p_next: *mut c_void,
40340     pub sampler_mirror_clamp_to_edge: Bool32,
40341     pub draw_indirect_count: Bool32,
40342     pub storage_buffer8_bit_access: Bool32,
40343     pub uniform_and_storage_buffer8_bit_access: Bool32,
40344     pub storage_push_constant8: Bool32,
40345     pub shader_buffer_int64_atomics: Bool32,
40346     pub shader_shared_int64_atomics: Bool32,
40347     pub shader_float16: Bool32,
40348     pub shader_int8: Bool32,
40349     pub descriptor_indexing: Bool32,
40350     pub shader_input_attachment_array_dynamic_indexing: Bool32,
40351     pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
40352     pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
40353     pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
40354     pub shader_sampled_image_array_non_uniform_indexing: Bool32,
40355     pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
40356     pub shader_storage_image_array_non_uniform_indexing: Bool32,
40357     pub shader_input_attachment_array_non_uniform_indexing: Bool32,
40358     pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
40359     pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
40360     pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
40361     pub descriptor_binding_sampled_image_update_after_bind: Bool32,
40362     pub descriptor_binding_storage_image_update_after_bind: Bool32,
40363     pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
40364     pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
40365     pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
40366     pub descriptor_binding_update_unused_while_pending: Bool32,
40367     pub descriptor_binding_partially_bound: Bool32,
40368     pub descriptor_binding_variable_descriptor_count: Bool32,
40369     pub runtime_descriptor_array: Bool32,
40370     pub sampler_filter_minmax: Bool32,
40371     pub scalar_block_layout: Bool32,
40372     pub imageless_framebuffer: Bool32,
40373     pub uniform_buffer_standard_layout: Bool32,
40374     pub shader_subgroup_extended_types: Bool32,
40375     pub separate_depth_stencil_layouts: Bool32,
40376     pub host_query_reset: Bool32,
40377     pub timeline_semaphore: Bool32,
40378     pub buffer_device_address: Bool32,
40379     pub buffer_device_address_capture_replay: Bool32,
40380     pub buffer_device_address_multi_device: Bool32,
40381     pub vulkan_memory_model: Bool32,
40382     pub vulkan_memory_model_device_scope: Bool32,
40383     pub vulkan_memory_model_availability_visibility_chains: Bool32,
40384     pub shader_output_viewport_index: Bool32,
40385     pub shader_output_layer: Bool32,
40386     pub subgroup_broadcast_dynamic_id: Bool32,
40387 }
40388 impl ::std::default::Default for PhysicalDeviceVulkan12Features {
default() -> Self40389     fn default() -> Self {
40390         Self {
40391             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
40392             p_next: ::std::ptr::null_mut(),
40393             sampler_mirror_clamp_to_edge: Bool32::default(),
40394             draw_indirect_count: Bool32::default(),
40395             storage_buffer8_bit_access: Bool32::default(),
40396             uniform_and_storage_buffer8_bit_access: Bool32::default(),
40397             storage_push_constant8: Bool32::default(),
40398             shader_buffer_int64_atomics: Bool32::default(),
40399             shader_shared_int64_atomics: Bool32::default(),
40400             shader_float16: Bool32::default(),
40401             shader_int8: Bool32::default(),
40402             descriptor_indexing: Bool32::default(),
40403             shader_input_attachment_array_dynamic_indexing: Bool32::default(),
40404             shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
40405             shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
40406             shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
40407             shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
40408             shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
40409             shader_storage_image_array_non_uniform_indexing: Bool32::default(),
40410             shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
40411             shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
40412             shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
40413             descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
40414             descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
40415             descriptor_binding_storage_image_update_after_bind: Bool32::default(),
40416             descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
40417             descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
40418             descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
40419             descriptor_binding_update_unused_while_pending: Bool32::default(),
40420             descriptor_binding_partially_bound: Bool32::default(),
40421             descriptor_binding_variable_descriptor_count: Bool32::default(),
40422             runtime_descriptor_array: Bool32::default(),
40423             sampler_filter_minmax: Bool32::default(),
40424             scalar_block_layout: Bool32::default(),
40425             imageless_framebuffer: Bool32::default(),
40426             uniform_buffer_standard_layout: Bool32::default(),
40427             shader_subgroup_extended_types: Bool32::default(),
40428             separate_depth_stencil_layouts: Bool32::default(),
40429             host_query_reset: Bool32::default(),
40430             timeline_semaphore: Bool32::default(),
40431             buffer_device_address: Bool32::default(),
40432             buffer_device_address_capture_replay: Bool32::default(),
40433             buffer_device_address_multi_device: Bool32::default(),
40434             vulkan_memory_model: Bool32::default(),
40435             vulkan_memory_model_device_scope: Bool32::default(),
40436             vulkan_memory_model_availability_visibility_chains: Bool32::default(),
40437             shader_output_viewport_index: Bool32::default(),
40438             shader_output_layer: Bool32::default(),
40439             subgroup_broadcast_dynamic_id: Bool32::default(),
40440         }
40441     }
40442 }
40443 impl PhysicalDeviceVulkan12Features {
builder<'a>() -> PhysicalDeviceVulkan12FeaturesBuilder<'a>40444     pub fn builder<'a>() -> PhysicalDeviceVulkan12FeaturesBuilder<'a> {
40445         PhysicalDeviceVulkan12FeaturesBuilder {
40446             inner: Self::default(),
40447             marker: ::std::marker::PhantomData,
40448         }
40449     }
40450 }
40451 #[repr(transparent)]
40452 pub struct PhysicalDeviceVulkan12FeaturesBuilder<'a> {
40453     inner: PhysicalDeviceVulkan12Features,
40454     marker: ::std::marker::PhantomData<&'a ()>,
40455 }
40456 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan12FeaturesBuilder<'_> {}
40457 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVulkan12Features {}
40458 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan12FeaturesBuilder<'_> {}
40459 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVulkan12Features {}
40460 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan12FeaturesBuilder<'a> {
40461     type Target = PhysicalDeviceVulkan12Features;
deref(&self) -> &Self::Target40462     fn deref(&self) -> &Self::Target {
40463         &self.inner
40464     }
40465 }
40466 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan12FeaturesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target40467     fn deref_mut(&mut self) -> &mut Self::Target {
40468         &mut self.inner
40469     }
40470 }
40471 impl<'a> PhysicalDeviceVulkan12FeaturesBuilder<'a> {
sampler_mirror_clamp_to_edge(mut self, sampler_mirror_clamp_to_edge: bool) -> Self40472     pub fn sampler_mirror_clamp_to_edge(mut self, sampler_mirror_clamp_to_edge: bool) -> Self {
40473         self.inner.sampler_mirror_clamp_to_edge = sampler_mirror_clamp_to_edge.into();
40474         self
40475     }
draw_indirect_count(mut self, draw_indirect_count: bool) -> Self40476     pub fn draw_indirect_count(mut self, draw_indirect_count: bool) -> Self {
40477         self.inner.draw_indirect_count = draw_indirect_count.into();
40478         self
40479     }
storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self40480     pub fn storage_buffer8_bit_access(mut self, storage_buffer8_bit_access: bool) -> Self {
40481         self.inner.storage_buffer8_bit_access = storage_buffer8_bit_access.into();
40482         self
40483     }
uniform_and_storage_buffer8_bit_access( mut self, uniform_and_storage_buffer8_bit_access: bool, ) -> Self40484     pub fn uniform_and_storage_buffer8_bit_access(
40485         mut self,
40486         uniform_and_storage_buffer8_bit_access: bool,
40487     ) -> Self {
40488         self.inner.uniform_and_storage_buffer8_bit_access =
40489             uniform_and_storage_buffer8_bit_access.into();
40490         self
40491     }
storage_push_constant8(mut self, storage_push_constant8: bool) -> Self40492     pub fn storage_push_constant8(mut self, storage_push_constant8: bool) -> Self {
40493         self.inner.storage_push_constant8 = storage_push_constant8.into();
40494         self
40495     }
shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self40496     pub fn shader_buffer_int64_atomics(mut self, shader_buffer_int64_atomics: bool) -> Self {
40497         self.inner.shader_buffer_int64_atomics = shader_buffer_int64_atomics.into();
40498         self
40499     }
shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self40500     pub fn shader_shared_int64_atomics(mut self, shader_shared_int64_atomics: bool) -> Self {
40501         self.inner.shader_shared_int64_atomics = shader_shared_int64_atomics.into();
40502         self
40503     }
shader_float16(mut self, shader_float16: bool) -> Self40504     pub fn shader_float16(mut self, shader_float16: bool) -> Self {
40505         self.inner.shader_float16 = shader_float16.into();
40506         self
40507     }
shader_int8(mut self, shader_int8: bool) -> Self40508     pub fn shader_int8(mut self, shader_int8: bool) -> Self {
40509         self.inner.shader_int8 = shader_int8.into();
40510         self
40511     }
descriptor_indexing(mut self, descriptor_indexing: bool) -> Self40512     pub fn descriptor_indexing(mut self, descriptor_indexing: bool) -> Self {
40513         self.inner.descriptor_indexing = descriptor_indexing.into();
40514         self
40515     }
shader_input_attachment_array_dynamic_indexing( mut self, shader_input_attachment_array_dynamic_indexing: bool, ) -> Self40516     pub fn shader_input_attachment_array_dynamic_indexing(
40517         mut self,
40518         shader_input_attachment_array_dynamic_indexing: bool,
40519     ) -> Self {
40520         self.inner.shader_input_attachment_array_dynamic_indexing =
40521             shader_input_attachment_array_dynamic_indexing.into();
40522         self
40523     }
shader_uniform_texel_buffer_array_dynamic_indexing( mut self, shader_uniform_texel_buffer_array_dynamic_indexing: bool, ) -> Self40524     pub fn shader_uniform_texel_buffer_array_dynamic_indexing(
40525         mut self,
40526         shader_uniform_texel_buffer_array_dynamic_indexing: bool,
40527     ) -> Self {
40528         self.inner
40529             .shader_uniform_texel_buffer_array_dynamic_indexing =
40530             shader_uniform_texel_buffer_array_dynamic_indexing.into();
40531         self
40532     }
shader_storage_texel_buffer_array_dynamic_indexing( mut self, shader_storage_texel_buffer_array_dynamic_indexing: bool, ) -> Self40533     pub fn shader_storage_texel_buffer_array_dynamic_indexing(
40534         mut self,
40535         shader_storage_texel_buffer_array_dynamic_indexing: bool,
40536     ) -> Self {
40537         self.inner
40538             .shader_storage_texel_buffer_array_dynamic_indexing =
40539             shader_storage_texel_buffer_array_dynamic_indexing.into();
40540         self
40541     }
shader_uniform_buffer_array_non_uniform_indexing( mut self, shader_uniform_buffer_array_non_uniform_indexing: bool, ) -> Self40542     pub fn shader_uniform_buffer_array_non_uniform_indexing(
40543         mut self,
40544         shader_uniform_buffer_array_non_uniform_indexing: bool,
40545     ) -> Self {
40546         self.inner.shader_uniform_buffer_array_non_uniform_indexing =
40547             shader_uniform_buffer_array_non_uniform_indexing.into();
40548         self
40549     }
shader_sampled_image_array_non_uniform_indexing( mut self, shader_sampled_image_array_non_uniform_indexing: bool, ) -> Self40550     pub fn shader_sampled_image_array_non_uniform_indexing(
40551         mut self,
40552         shader_sampled_image_array_non_uniform_indexing: bool,
40553     ) -> Self {
40554         self.inner.shader_sampled_image_array_non_uniform_indexing =
40555             shader_sampled_image_array_non_uniform_indexing.into();
40556         self
40557     }
shader_storage_buffer_array_non_uniform_indexing( mut self, shader_storage_buffer_array_non_uniform_indexing: bool, ) -> Self40558     pub fn shader_storage_buffer_array_non_uniform_indexing(
40559         mut self,
40560         shader_storage_buffer_array_non_uniform_indexing: bool,
40561     ) -> Self {
40562         self.inner.shader_storage_buffer_array_non_uniform_indexing =
40563             shader_storage_buffer_array_non_uniform_indexing.into();
40564         self
40565     }
shader_storage_image_array_non_uniform_indexing( mut self, shader_storage_image_array_non_uniform_indexing: bool, ) -> Self40566     pub fn shader_storage_image_array_non_uniform_indexing(
40567         mut self,
40568         shader_storage_image_array_non_uniform_indexing: bool,
40569     ) -> Self {
40570         self.inner.shader_storage_image_array_non_uniform_indexing =
40571             shader_storage_image_array_non_uniform_indexing.into();
40572         self
40573     }
shader_input_attachment_array_non_uniform_indexing( mut self, shader_input_attachment_array_non_uniform_indexing: bool, ) -> Self40574     pub fn shader_input_attachment_array_non_uniform_indexing(
40575         mut self,
40576         shader_input_attachment_array_non_uniform_indexing: bool,
40577     ) -> Self {
40578         self.inner
40579             .shader_input_attachment_array_non_uniform_indexing =
40580             shader_input_attachment_array_non_uniform_indexing.into();
40581         self
40582     }
shader_uniform_texel_buffer_array_non_uniform_indexing( mut self, shader_uniform_texel_buffer_array_non_uniform_indexing: bool, ) -> Self40583     pub fn shader_uniform_texel_buffer_array_non_uniform_indexing(
40584         mut self,
40585         shader_uniform_texel_buffer_array_non_uniform_indexing: bool,
40586     ) -> Self {
40587         self.inner
40588             .shader_uniform_texel_buffer_array_non_uniform_indexing =
40589             shader_uniform_texel_buffer_array_non_uniform_indexing.into();
40590         self
40591     }
shader_storage_texel_buffer_array_non_uniform_indexing( mut self, shader_storage_texel_buffer_array_non_uniform_indexing: bool, ) -> Self40592     pub fn shader_storage_texel_buffer_array_non_uniform_indexing(
40593         mut self,
40594         shader_storage_texel_buffer_array_non_uniform_indexing: bool,
40595     ) -> Self {
40596         self.inner
40597             .shader_storage_texel_buffer_array_non_uniform_indexing =
40598             shader_storage_texel_buffer_array_non_uniform_indexing.into();
40599         self
40600     }
descriptor_binding_uniform_buffer_update_after_bind( mut self, descriptor_binding_uniform_buffer_update_after_bind: bool, ) -> Self40601     pub fn descriptor_binding_uniform_buffer_update_after_bind(
40602         mut self,
40603         descriptor_binding_uniform_buffer_update_after_bind: bool,
40604     ) -> Self {
40605         self.inner
40606             .descriptor_binding_uniform_buffer_update_after_bind =
40607             descriptor_binding_uniform_buffer_update_after_bind.into();
40608         self
40609     }
descriptor_binding_sampled_image_update_after_bind( mut self, descriptor_binding_sampled_image_update_after_bind: bool, ) -> Self40610     pub fn descriptor_binding_sampled_image_update_after_bind(
40611         mut self,
40612         descriptor_binding_sampled_image_update_after_bind: bool,
40613     ) -> Self {
40614         self.inner
40615             .descriptor_binding_sampled_image_update_after_bind =
40616             descriptor_binding_sampled_image_update_after_bind.into();
40617         self
40618     }
descriptor_binding_storage_image_update_after_bind( mut self, descriptor_binding_storage_image_update_after_bind: bool, ) -> Self40619     pub fn descriptor_binding_storage_image_update_after_bind(
40620         mut self,
40621         descriptor_binding_storage_image_update_after_bind: bool,
40622     ) -> Self {
40623         self.inner
40624             .descriptor_binding_storage_image_update_after_bind =
40625             descriptor_binding_storage_image_update_after_bind.into();
40626         self
40627     }
descriptor_binding_storage_buffer_update_after_bind( mut self, descriptor_binding_storage_buffer_update_after_bind: bool, ) -> Self40628     pub fn descriptor_binding_storage_buffer_update_after_bind(
40629         mut self,
40630         descriptor_binding_storage_buffer_update_after_bind: bool,
40631     ) -> Self {
40632         self.inner
40633             .descriptor_binding_storage_buffer_update_after_bind =
40634             descriptor_binding_storage_buffer_update_after_bind.into();
40635         self
40636     }
descriptor_binding_uniform_texel_buffer_update_after_bind( mut self, descriptor_binding_uniform_texel_buffer_update_after_bind: bool, ) -> Self40637     pub fn descriptor_binding_uniform_texel_buffer_update_after_bind(
40638         mut self,
40639         descriptor_binding_uniform_texel_buffer_update_after_bind: bool,
40640     ) -> Self {
40641         self.inner
40642             .descriptor_binding_uniform_texel_buffer_update_after_bind =
40643             descriptor_binding_uniform_texel_buffer_update_after_bind.into();
40644         self
40645     }
descriptor_binding_storage_texel_buffer_update_after_bind( mut self, descriptor_binding_storage_texel_buffer_update_after_bind: bool, ) -> Self40646     pub fn descriptor_binding_storage_texel_buffer_update_after_bind(
40647         mut self,
40648         descriptor_binding_storage_texel_buffer_update_after_bind: bool,
40649     ) -> Self {
40650         self.inner
40651             .descriptor_binding_storage_texel_buffer_update_after_bind =
40652             descriptor_binding_storage_texel_buffer_update_after_bind.into();
40653         self
40654     }
descriptor_binding_update_unused_while_pending( mut self, descriptor_binding_update_unused_while_pending: bool, ) -> Self40655     pub fn descriptor_binding_update_unused_while_pending(
40656         mut self,
40657         descriptor_binding_update_unused_while_pending: bool,
40658     ) -> Self {
40659         self.inner.descriptor_binding_update_unused_while_pending =
40660             descriptor_binding_update_unused_while_pending.into();
40661         self
40662     }
descriptor_binding_partially_bound( mut self, descriptor_binding_partially_bound: bool, ) -> Self40663     pub fn descriptor_binding_partially_bound(
40664         mut self,
40665         descriptor_binding_partially_bound: bool,
40666     ) -> Self {
40667         self.inner.descriptor_binding_partially_bound = descriptor_binding_partially_bound.into();
40668         self
40669     }
descriptor_binding_variable_descriptor_count( mut self, descriptor_binding_variable_descriptor_count: bool, ) -> Self40670     pub fn descriptor_binding_variable_descriptor_count(
40671         mut self,
40672         descriptor_binding_variable_descriptor_count: bool,
40673     ) -> Self {
40674         self.inner.descriptor_binding_variable_descriptor_count =
40675             descriptor_binding_variable_descriptor_count.into();
40676         self
40677     }
runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self40678     pub fn runtime_descriptor_array(mut self, runtime_descriptor_array: bool) -> Self {
40679         self.inner.runtime_descriptor_array = runtime_descriptor_array.into();
40680         self
40681     }
sampler_filter_minmax(mut self, sampler_filter_minmax: bool) -> Self40682     pub fn sampler_filter_minmax(mut self, sampler_filter_minmax: bool) -> Self {
40683         self.inner.sampler_filter_minmax = sampler_filter_minmax.into();
40684         self
40685     }
scalar_block_layout(mut self, scalar_block_layout: bool) -> Self40686     pub fn scalar_block_layout(mut self, scalar_block_layout: bool) -> Self {
40687         self.inner.scalar_block_layout = scalar_block_layout.into();
40688         self
40689     }
imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self40690     pub fn imageless_framebuffer(mut self, imageless_framebuffer: bool) -> Self {
40691         self.inner.imageless_framebuffer = imageless_framebuffer.into();
40692         self
40693     }
uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self40694     pub fn uniform_buffer_standard_layout(mut self, uniform_buffer_standard_layout: bool) -> Self {
40695         self.inner.uniform_buffer_standard_layout = uniform_buffer_standard_layout.into();
40696         self
40697     }
shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self40698     pub fn shader_subgroup_extended_types(mut self, shader_subgroup_extended_types: bool) -> Self {
40699         self.inner.shader_subgroup_extended_types = shader_subgroup_extended_types.into();
40700         self
40701     }
separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self40702     pub fn separate_depth_stencil_layouts(mut self, separate_depth_stencil_layouts: bool) -> Self {
40703         self.inner.separate_depth_stencil_layouts = separate_depth_stencil_layouts.into();
40704         self
40705     }
host_query_reset(mut self, host_query_reset: bool) -> Self40706     pub fn host_query_reset(mut self, host_query_reset: bool) -> Self {
40707         self.inner.host_query_reset = host_query_reset.into();
40708         self
40709     }
timeline_semaphore(mut self, timeline_semaphore: bool) -> Self40710     pub fn timeline_semaphore(mut self, timeline_semaphore: bool) -> Self {
40711         self.inner.timeline_semaphore = timeline_semaphore.into();
40712         self
40713     }
buffer_device_address(mut self, buffer_device_address: bool) -> Self40714     pub fn buffer_device_address(mut self, buffer_device_address: bool) -> Self {
40715         self.inner.buffer_device_address = buffer_device_address.into();
40716         self
40717     }
buffer_device_address_capture_replay( mut self, buffer_device_address_capture_replay: bool, ) -> Self40718     pub fn buffer_device_address_capture_replay(
40719         mut self,
40720         buffer_device_address_capture_replay: bool,
40721     ) -> Self {
40722         self.inner.buffer_device_address_capture_replay =
40723             buffer_device_address_capture_replay.into();
40724         self
40725     }
buffer_device_address_multi_device( mut self, buffer_device_address_multi_device: bool, ) -> Self40726     pub fn buffer_device_address_multi_device(
40727         mut self,
40728         buffer_device_address_multi_device: bool,
40729     ) -> Self {
40730         self.inner.buffer_device_address_multi_device = buffer_device_address_multi_device.into();
40731         self
40732     }
vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self40733     pub fn vulkan_memory_model(mut self, vulkan_memory_model: bool) -> Self {
40734         self.inner.vulkan_memory_model = vulkan_memory_model.into();
40735         self
40736     }
vulkan_memory_model_device_scope( mut self, vulkan_memory_model_device_scope: bool, ) -> Self40737     pub fn vulkan_memory_model_device_scope(
40738         mut self,
40739         vulkan_memory_model_device_scope: bool,
40740     ) -> Self {
40741         self.inner.vulkan_memory_model_device_scope = vulkan_memory_model_device_scope.into();
40742         self
40743     }
vulkan_memory_model_availability_visibility_chains( mut self, vulkan_memory_model_availability_visibility_chains: bool, ) -> Self40744     pub fn vulkan_memory_model_availability_visibility_chains(
40745         mut self,
40746         vulkan_memory_model_availability_visibility_chains: bool,
40747     ) -> Self {
40748         self.inner
40749             .vulkan_memory_model_availability_visibility_chains =
40750             vulkan_memory_model_availability_visibility_chains.into();
40751         self
40752     }
shader_output_viewport_index(mut self, shader_output_viewport_index: bool) -> Self40753     pub fn shader_output_viewport_index(mut self, shader_output_viewport_index: bool) -> Self {
40754         self.inner.shader_output_viewport_index = shader_output_viewport_index.into();
40755         self
40756     }
shader_output_layer(mut self, shader_output_layer: bool) -> Self40757     pub fn shader_output_layer(mut self, shader_output_layer: bool) -> Self {
40758         self.inner.shader_output_layer = shader_output_layer.into();
40759         self
40760     }
subgroup_broadcast_dynamic_id(mut self, subgroup_broadcast_dynamic_id: bool) -> Self40761     pub fn subgroup_broadcast_dynamic_id(mut self, subgroup_broadcast_dynamic_id: bool) -> Self {
40762         self.inner.subgroup_broadcast_dynamic_id = subgroup_broadcast_dynamic_id.into();
40763         self
40764     }
40765     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
40766     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
40767     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan12Features40768     pub fn build(self) -> PhysicalDeviceVulkan12Features {
40769         self.inner
40770     }
40771 }
40772 #[repr(C)]
40773 #[derive(Copy, Clone)]
40774 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html>"]
40775 pub struct PhysicalDeviceVulkan12Properties {
40776     pub s_type: StructureType,
40777     pub p_next: *mut c_void,
40778     pub driver_id: DriverId,
40779     pub driver_name: [c_char; MAX_DRIVER_NAME_SIZE],
40780     pub driver_info: [c_char; MAX_DRIVER_INFO_SIZE],
40781     pub conformance_version: ConformanceVersion,
40782     pub denorm_behavior_independence: ShaderFloatControlsIndependence,
40783     pub rounding_mode_independence: ShaderFloatControlsIndependence,
40784     pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
40785     pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
40786     pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
40787     pub shader_denorm_preserve_float16: Bool32,
40788     pub shader_denorm_preserve_float32: Bool32,
40789     pub shader_denorm_preserve_float64: Bool32,
40790     pub shader_denorm_flush_to_zero_float16: Bool32,
40791     pub shader_denorm_flush_to_zero_float32: Bool32,
40792     pub shader_denorm_flush_to_zero_float64: Bool32,
40793     pub shader_rounding_mode_rte_float16: Bool32,
40794     pub shader_rounding_mode_rte_float32: Bool32,
40795     pub shader_rounding_mode_rte_float64: Bool32,
40796     pub shader_rounding_mode_rtz_float16: Bool32,
40797     pub shader_rounding_mode_rtz_float32: Bool32,
40798     pub shader_rounding_mode_rtz_float64: Bool32,
40799     pub max_update_after_bind_descriptors_in_all_pools: u32,
40800     pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
40801     pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
40802     pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
40803     pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
40804     pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
40805     pub robust_buffer_access_update_after_bind: Bool32,
40806     pub quad_divergent_implicit_lod: Bool32,
40807     pub max_per_stage_descriptor_update_after_bind_samplers: u32,
40808     pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
40809     pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
40810     pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
40811     pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
40812     pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
40813     pub max_per_stage_update_after_bind_resources: u32,
40814     pub max_descriptor_set_update_after_bind_samplers: u32,
40815     pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
40816     pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
40817     pub max_descriptor_set_update_after_bind_storage_buffers: u32,
40818     pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
40819     pub max_descriptor_set_update_after_bind_sampled_images: u32,
40820     pub max_descriptor_set_update_after_bind_storage_images: u32,
40821     pub max_descriptor_set_update_after_bind_input_attachments: u32,
40822     pub supported_depth_resolve_modes: ResolveModeFlags,
40823     pub supported_stencil_resolve_modes: ResolveModeFlags,
40824     pub independent_resolve_none: Bool32,
40825     pub independent_resolve: Bool32,
40826     pub filter_minmax_single_component_formats: Bool32,
40827     pub filter_minmax_image_component_mapping: Bool32,
40828     pub max_timeline_semaphore_value_difference: u64,
40829     pub framebuffer_integer_color_sample_counts: SampleCountFlags,
40830 }
40831 #[cfg(feature = "debug")]
40832 impl fmt::Debug for PhysicalDeviceVulkan12Properties {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result40833     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
40834         fmt.debug_struct("PhysicalDeviceVulkan12Properties")
40835             .field("s_type", &self.s_type)
40836             .field("p_next", &self.p_next)
40837             .field("driver_id", &self.driver_id)
40838             .field("driver_name", &unsafe {
40839                 ::std::ffi::CStr::from_ptr(self.driver_name.as_ptr() as *const c_char)
40840             })
40841             .field("driver_info", &unsafe {
40842                 ::std::ffi::CStr::from_ptr(self.driver_info.as_ptr() as *const c_char)
40843             })
40844             .field("conformance_version", &self.conformance_version)
40845             .field(
40846                 "denorm_behavior_independence",
40847                 &self.denorm_behavior_independence,
40848             )
40849             .field(
40850                 "rounding_mode_independence",
40851                 &self.rounding_mode_independence,
40852             )
40853             .field(
40854                 "shader_signed_zero_inf_nan_preserve_float16",
40855                 &self.shader_signed_zero_inf_nan_preserve_float16,
40856             )
40857             .field(
40858                 "shader_signed_zero_inf_nan_preserve_float32",
40859                 &self.shader_signed_zero_inf_nan_preserve_float32,
40860             )
40861             .field(
40862                 "shader_signed_zero_inf_nan_preserve_float64",
40863                 &self.shader_signed_zero_inf_nan_preserve_float64,
40864             )
40865             .field(
40866                 "shader_denorm_preserve_float16",
40867                 &self.shader_denorm_preserve_float16,
40868             )
40869             .field(
40870                 "shader_denorm_preserve_float32",
40871                 &self.shader_denorm_preserve_float32,
40872             )
40873             .field(
40874                 "shader_denorm_preserve_float64",
40875                 &self.shader_denorm_preserve_float64,
40876             )
40877             .field(
40878                 "shader_denorm_flush_to_zero_float16",
40879                 &self.shader_denorm_flush_to_zero_float16,
40880             )
40881             .field(
40882                 "shader_denorm_flush_to_zero_float32",
40883                 &self.shader_denorm_flush_to_zero_float32,
40884             )
40885             .field(
40886                 "shader_denorm_flush_to_zero_float64",
40887                 &self.shader_denorm_flush_to_zero_float64,
40888             )
40889             .field(
40890                 "shader_rounding_mode_rte_float16",
40891                 &self.shader_rounding_mode_rte_float16,
40892             )
40893             .field(
40894                 "shader_rounding_mode_rte_float32",
40895                 &self.shader_rounding_mode_rte_float32,
40896             )
40897             .field(
40898                 "shader_rounding_mode_rte_float64",
40899                 &self.shader_rounding_mode_rte_float64,
40900             )
40901             .field(
40902                 "shader_rounding_mode_rtz_float16",
40903                 &self.shader_rounding_mode_rtz_float16,
40904             )
40905             .field(
40906                 "shader_rounding_mode_rtz_float32",
40907                 &self.shader_rounding_mode_rtz_float32,
40908             )
40909             .field(
40910                 "shader_rounding_mode_rtz_float64",
40911                 &self.shader_rounding_mode_rtz_float64,
40912             )
40913             .field(
40914                 "max_update_after_bind_descriptors_in_all_pools",
40915                 &self.max_update_after_bind_descriptors_in_all_pools,
40916             )
40917             .field(
40918                 "shader_uniform_buffer_array_non_uniform_indexing_native",
40919                 &self.shader_uniform_buffer_array_non_uniform_indexing_native,
40920             )
40921             .field(
40922                 "shader_sampled_image_array_non_uniform_indexing_native",
40923                 &self.shader_sampled_image_array_non_uniform_indexing_native,
40924             )
40925             .field(
40926                 "shader_storage_buffer_array_non_uniform_indexing_native",
40927                 &self.shader_storage_buffer_array_non_uniform_indexing_native,
40928             )
40929             .field(
40930                 "shader_storage_image_array_non_uniform_indexing_native",
40931                 &self.shader_storage_image_array_non_uniform_indexing_native,
40932             )
40933             .field(
40934                 "shader_input_attachment_array_non_uniform_indexing_native",
40935                 &self.shader_input_attachment_array_non_uniform_indexing_native,
40936             )
40937             .field(
40938                 "robust_buffer_access_update_after_bind",
40939                 &self.robust_buffer_access_update_after_bind,
40940             )
40941             .field(
40942                 "quad_divergent_implicit_lod",
40943                 &self.quad_divergent_implicit_lod,
40944             )
40945             .field(
40946                 "max_per_stage_descriptor_update_after_bind_samplers",
40947                 &self.max_per_stage_descriptor_update_after_bind_samplers,
40948             )
40949             .field(
40950                 "max_per_stage_descriptor_update_after_bind_uniform_buffers",
40951                 &self.max_per_stage_descriptor_update_after_bind_uniform_buffers,
40952             )
40953             .field(
40954                 "max_per_stage_descriptor_update_after_bind_storage_buffers",
40955                 &self.max_per_stage_descriptor_update_after_bind_storage_buffers,
40956             )
40957             .field(
40958                 "max_per_stage_descriptor_update_after_bind_sampled_images",
40959                 &self.max_per_stage_descriptor_update_after_bind_sampled_images,
40960             )
40961             .field(
40962                 "max_per_stage_descriptor_update_after_bind_storage_images",
40963                 &self.max_per_stage_descriptor_update_after_bind_storage_images,
40964             )
40965             .field(
40966                 "max_per_stage_descriptor_update_after_bind_input_attachments",
40967                 &self.max_per_stage_descriptor_update_after_bind_input_attachments,
40968             )
40969             .field(
40970                 "max_per_stage_update_after_bind_resources",
40971                 &self.max_per_stage_update_after_bind_resources,
40972             )
40973             .field(
40974                 "max_descriptor_set_update_after_bind_samplers",
40975                 &self.max_descriptor_set_update_after_bind_samplers,
40976             )
40977             .field(
40978                 "max_descriptor_set_update_after_bind_uniform_buffers",
40979                 &self.max_descriptor_set_update_after_bind_uniform_buffers,
40980             )
40981             .field(
40982                 "max_descriptor_set_update_after_bind_uniform_buffers_dynamic",
40983                 &self.max_descriptor_set_update_after_bind_uniform_buffers_dynamic,
40984             )
40985             .field(
40986                 "max_descriptor_set_update_after_bind_storage_buffers",
40987                 &self.max_descriptor_set_update_after_bind_storage_buffers,
40988             )
40989             .field(
40990                 "max_descriptor_set_update_after_bind_storage_buffers_dynamic",
40991                 &self.max_descriptor_set_update_after_bind_storage_buffers_dynamic,
40992             )
40993             .field(
40994                 "max_descriptor_set_update_after_bind_sampled_images",
40995                 &self.max_descriptor_set_update_after_bind_sampled_images,
40996             )
40997             .field(
40998                 "max_descriptor_set_update_after_bind_storage_images",
40999                 &self.max_descriptor_set_update_after_bind_storage_images,
41000             )
41001             .field(
41002                 "max_descriptor_set_update_after_bind_input_attachments",
41003                 &self.max_descriptor_set_update_after_bind_input_attachments,
41004             )
41005             .field(
41006                 "supported_depth_resolve_modes",
41007                 &self.supported_depth_resolve_modes,
41008             )
41009             .field(
41010                 "supported_stencil_resolve_modes",
41011                 &self.supported_stencil_resolve_modes,
41012             )
41013             .field("independent_resolve_none", &self.independent_resolve_none)
41014             .field("independent_resolve", &self.independent_resolve)
41015             .field(
41016                 "filter_minmax_single_component_formats",
41017                 &self.filter_minmax_single_component_formats,
41018             )
41019             .field(
41020                 "filter_minmax_image_component_mapping",
41021                 &self.filter_minmax_image_component_mapping,
41022             )
41023             .field(
41024                 "max_timeline_semaphore_value_difference",
41025                 &self.max_timeline_semaphore_value_difference,
41026             )
41027             .field(
41028                 "framebuffer_integer_color_sample_counts",
41029                 &self.framebuffer_integer_color_sample_counts,
41030             )
41031             .finish()
41032     }
41033 }
41034 impl ::std::default::Default for PhysicalDeviceVulkan12Properties {
default() -> Self41035     fn default() -> Self {
41036         Self {
41037             s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
41038             p_next: ::std::ptr::null_mut(),
41039             driver_id: DriverId::default(),
41040             driver_name: unsafe { ::std::mem::zeroed() },
41041             driver_info: unsafe { ::std::mem::zeroed() },
41042             conformance_version: ConformanceVersion::default(),
41043             denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
41044             rounding_mode_independence: ShaderFloatControlsIndependence::default(),
41045             shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
41046             shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
41047             shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
41048             shader_denorm_preserve_float16: Bool32::default(),
41049             shader_denorm_preserve_float32: Bool32::default(),
41050             shader_denorm_preserve_float64: Bool32::default(),
41051             shader_denorm_flush_to_zero_float16: Bool32::default(),
41052             shader_denorm_flush_to_zero_float32: Bool32::default(),
41053             shader_denorm_flush_to_zero_float64: Bool32::default(),
41054             shader_rounding_mode_rte_float16: Bool32::default(),
41055             shader_rounding_mode_rte_float32: Bool32::default(),
41056             shader_rounding_mode_rte_float64: Bool32::default(),
41057             shader_rounding_mode_rtz_float16: Bool32::default(),
41058             shader_rounding_mode_rtz_float32: Bool32::default(),
41059             shader_rounding_mode_rtz_float64: Bool32::default(),
41060             max_update_after_bind_descriptors_in_all_pools: u32::default(),
41061             shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
41062             shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
41063             shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
41064             shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
41065             shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
41066             robust_buffer_access_update_after_bind: Bool32::default(),
41067             quad_divergent_implicit_lod: Bool32::default(),
41068             max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
41069             max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
41070             max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
41071             max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
41072             max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
41073             max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
41074             max_per_stage_update_after_bind_resources: u32::default(),
41075             max_descriptor_set_update_after_bind_samplers: u32::default(),
41076             max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
41077             max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
41078             max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
41079             max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
41080             max_descriptor_set_update_after_bind_sampled_images: u32::default(),
41081             max_descriptor_set_update_after_bind_storage_images: u32::default(),
41082             max_descriptor_set_update_after_bind_input_attachments: u32::default(),
41083             supported_depth_resolve_modes: ResolveModeFlags::default(),
41084             supported_stencil_resolve_modes: ResolveModeFlags::default(),
41085             independent_resolve_none: Bool32::default(),
41086             independent_resolve: Bool32::default(),
41087             filter_minmax_single_component_formats: Bool32::default(),
41088             filter_minmax_image_component_mapping: Bool32::default(),
41089             max_timeline_semaphore_value_difference: u64::default(),
41090             framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
41091         }
41092     }
41093 }
41094 impl PhysicalDeviceVulkan12Properties {
builder<'a>() -> PhysicalDeviceVulkan12PropertiesBuilder<'a>41095     pub fn builder<'a>() -> PhysicalDeviceVulkan12PropertiesBuilder<'a> {
41096         PhysicalDeviceVulkan12PropertiesBuilder {
41097             inner: Self::default(),
41098             marker: ::std::marker::PhantomData,
41099         }
41100     }
41101 }
41102 #[repr(transparent)]
41103 pub struct PhysicalDeviceVulkan12PropertiesBuilder<'a> {
41104     inner: PhysicalDeviceVulkan12Properties,
41105     marker: ::std::marker::PhantomData<&'a ()>,
41106 }
41107 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan12PropertiesBuilder<'_> {}
41108 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceVulkan12Properties {}
41109 impl<'a> ::std::ops::Deref for PhysicalDeviceVulkan12PropertiesBuilder<'a> {
41110     type Target = PhysicalDeviceVulkan12Properties;
deref(&self) -> &Self::Target41111     fn deref(&self) -> &Self::Target {
41112         &self.inner
41113     }
41114 }
41115 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVulkan12PropertiesBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41116     fn deref_mut(&mut self) -> &mut Self::Target {
41117         &mut self.inner
41118     }
41119 }
41120 impl<'a> PhysicalDeviceVulkan12PropertiesBuilder<'a> {
driver_id(mut self, driver_id: DriverId) -> Self41121     pub fn driver_id(mut self, driver_id: DriverId) -> Self {
41122         self.inner.driver_id = driver_id;
41123         self
41124     }
driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self41125     pub fn driver_name(mut self, driver_name: [c_char; MAX_DRIVER_NAME_SIZE]) -> Self {
41126         self.inner.driver_name = driver_name;
41127         self
41128     }
driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self41129     pub fn driver_info(mut self, driver_info: [c_char; MAX_DRIVER_INFO_SIZE]) -> Self {
41130         self.inner.driver_info = driver_info;
41131         self
41132     }
conformance_version(mut self, conformance_version: ConformanceVersion) -> Self41133     pub fn conformance_version(mut self, conformance_version: ConformanceVersion) -> Self {
41134         self.inner.conformance_version = conformance_version;
41135         self
41136     }
denorm_behavior_independence( mut self, denorm_behavior_independence: ShaderFloatControlsIndependence, ) -> Self41137     pub fn denorm_behavior_independence(
41138         mut self,
41139         denorm_behavior_independence: ShaderFloatControlsIndependence,
41140     ) -> Self {
41141         self.inner.denorm_behavior_independence = denorm_behavior_independence;
41142         self
41143     }
rounding_mode_independence( mut self, rounding_mode_independence: ShaderFloatControlsIndependence, ) -> Self41144     pub fn rounding_mode_independence(
41145         mut self,
41146         rounding_mode_independence: ShaderFloatControlsIndependence,
41147     ) -> Self {
41148         self.inner.rounding_mode_independence = rounding_mode_independence;
41149         self
41150     }
shader_signed_zero_inf_nan_preserve_float16( mut self, shader_signed_zero_inf_nan_preserve_float16: bool, ) -> Self41151     pub fn shader_signed_zero_inf_nan_preserve_float16(
41152         mut self,
41153         shader_signed_zero_inf_nan_preserve_float16: bool,
41154     ) -> Self {
41155         self.inner.shader_signed_zero_inf_nan_preserve_float16 =
41156             shader_signed_zero_inf_nan_preserve_float16.into();
41157         self
41158     }
shader_signed_zero_inf_nan_preserve_float32( mut self, shader_signed_zero_inf_nan_preserve_float32: bool, ) -> Self41159     pub fn shader_signed_zero_inf_nan_preserve_float32(
41160         mut self,
41161         shader_signed_zero_inf_nan_preserve_float32: bool,
41162     ) -> Self {
41163         self.inner.shader_signed_zero_inf_nan_preserve_float32 =
41164             shader_signed_zero_inf_nan_preserve_float32.into();
41165         self
41166     }
shader_signed_zero_inf_nan_preserve_float64( mut self, shader_signed_zero_inf_nan_preserve_float64: bool, ) -> Self41167     pub fn shader_signed_zero_inf_nan_preserve_float64(
41168         mut self,
41169         shader_signed_zero_inf_nan_preserve_float64: bool,
41170     ) -> Self {
41171         self.inner.shader_signed_zero_inf_nan_preserve_float64 =
41172             shader_signed_zero_inf_nan_preserve_float64.into();
41173         self
41174     }
shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self41175     pub fn shader_denorm_preserve_float16(mut self, shader_denorm_preserve_float16: bool) -> Self {
41176         self.inner.shader_denorm_preserve_float16 = shader_denorm_preserve_float16.into();
41177         self
41178     }
shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self41179     pub fn shader_denorm_preserve_float32(mut self, shader_denorm_preserve_float32: bool) -> Self {
41180         self.inner.shader_denorm_preserve_float32 = shader_denorm_preserve_float32.into();
41181         self
41182     }
shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self41183     pub fn shader_denorm_preserve_float64(mut self, shader_denorm_preserve_float64: bool) -> Self {
41184         self.inner.shader_denorm_preserve_float64 = shader_denorm_preserve_float64.into();
41185         self
41186     }
shader_denorm_flush_to_zero_float16( mut self, shader_denorm_flush_to_zero_float16: bool, ) -> Self41187     pub fn shader_denorm_flush_to_zero_float16(
41188         mut self,
41189         shader_denorm_flush_to_zero_float16: bool,
41190     ) -> Self {
41191         self.inner.shader_denorm_flush_to_zero_float16 = shader_denorm_flush_to_zero_float16.into();
41192         self
41193     }
shader_denorm_flush_to_zero_float32( mut self, shader_denorm_flush_to_zero_float32: bool, ) -> Self41194     pub fn shader_denorm_flush_to_zero_float32(
41195         mut self,
41196         shader_denorm_flush_to_zero_float32: bool,
41197     ) -> Self {
41198         self.inner.shader_denorm_flush_to_zero_float32 = shader_denorm_flush_to_zero_float32.into();
41199         self
41200     }
shader_denorm_flush_to_zero_float64( mut self, shader_denorm_flush_to_zero_float64: bool, ) -> Self41201     pub fn shader_denorm_flush_to_zero_float64(
41202         mut self,
41203         shader_denorm_flush_to_zero_float64: bool,
41204     ) -> Self {
41205         self.inner.shader_denorm_flush_to_zero_float64 = shader_denorm_flush_to_zero_float64.into();
41206         self
41207     }
shader_rounding_mode_rte_float16( mut self, shader_rounding_mode_rte_float16: bool, ) -> Self41208     pub fn shader_rounding_mode_rte_float16(
41209         mut self,
41210         shader_rounding_mode_rte_float16: bool,
41211     ) -> Self {
41212         self.inner.shader_rounding_mode_rte_float16 = shader_rounding_mode_rte_float16.into();
41213         self
41214     }
shader_rounding_mode_rte_float32( mut self, shader_rounding_mode_rte_float32: bool, ) -> Self41215     pub fn shader_rounding_mode_rte_float32(
41216         mut self,
41217         shader_rounding_mode_rte_float32: bool,
41218     ) -> Self {
41219         self.inner.shader_rounding_mode_rte_float32 = shader_rounding_mode_rte_float32.into();
41220         self
41221     }
shader_rounding_mode_rte_float64( mut self, shader_rounding_mode_rte_float64: bool, ) -> Self41222     pub fn shader_rounding_mode_rte_float64(
41223         mut self,
41224         shader_rounding_mode_rte_float64: bool,
41225     ) -> Self {
41226         self.inner.shader_rounding_mode_rte_float64 = shader_rounding_mode_rte_float64.into();
41227         self
41228     }
shader_rounding_mode_rtz_float16( mut self, shader_rounding_mode_rtz_float16: bool, ) -> Self41229     pub fn shader_rounding_mode_rtz_float16(
41230         mut self,
41231         shader_rounding_mode_rtz_float16: bool,
41232     ) -> Self {
41233         self.inner.shader_rounding_mode_rtz_float16 = shader_rounding_mode_rtz_float16.into();
41234         self
41235     }
shader_rounding_mode_rtz_float32( mut self, shader_rounding_mode_rtz_float32: bool, ) -> Self41236     pub fn shader_rounding_mode_rtz_float32(
41237         mut self,
41238         shader_rounding_mode_rtz_float32: bool,
41239     ) -> Self {
41240         self.inner.shader_rounding_mode_rtz_float32 = shader_rounding_mode_rtz_float32.into();
41241         self
41242     }
shader_rounding_mode_rtz_float64( mut self, shader_rounding_mode_rtz_float64: bool, ) -> Self41243     pub fn shader_rounding_mode_rtz_float64(
41244         mut self,
41245         shader_rounding_mode_rtz_float64: bool,
41246     ) -> Self {
41247         self.inner.shader_rounding_mode_rtz_float64 = shader_rounding_mode_rtz_float64.into();
41248         self
41249     }
max_update_after_bind_descriptors_in_all_pools( mut self, max_update_after_bind_descriptors_in_all_pools: u32, ) -> Self41250     pub fn max_update_after_bind_descriptors_in_all_pools(
41251         mut self,
41252         max_update_after_bind_descriptors_in_all_pools: u32,
41253     ) -> Self {
41254         self.inner.max_update_after_bind_descriptors_in_all_pools =
41255             max_update_after_bind_descriptors_in_all_pools;
41256         self
41257     }
shader_uniform_buffer_array_non_uniform_indexing_native( mut self, shader_uniform_buffer_array_non_uniform_indexing_native: bool, ) -> Self41258     pub fn shader_uniform_buffer_array_non_uniform_indexing_native(
41259         mut self,
41260         shader_uniform_buffer_array_non_uniform_indexing_native: bool,
41261     ) -> Self {
41262         self.inner
41263             .shader_uniform_buffer_array_non_uniform_indexing_native =
41264             shader_uniform_buffer_array_non_uniform_indexing_native.into();
41265         self
41266     }
shader_sampled_image_array_non_uniform_indexing_native( mut self, shader_sampled_image_array_non_uniform_indexing_native: bool, ) -> Self41267     pub fn shader_sampled_image_array_non_uniform_indexing_native(
41268         mut self,
41269         shader_sampled_image_array_non_uniform_indexing_native: bool,
41270     ) -> Self {
41271         self.inner
41272             .shader_sampled_image_array_non_uniform_indexing_native =
41273             shader_sampled_image_array_non_uniform_indexing_native.into();
41274         self
41275     }
shader_storage_buffer_array_non_uniform_indexing_native( mut self, shader_storage_buffer_array_non_uniform_indexing_native: bool, ) -> Self41276     pub fn shader_storage_buffer_array_non_uniform_indexing_native(
41277         mut self,
41278         shader_storage_buffer_array_non_uniform_indexing_native: bool,
41279     ) -> Self {
41280         self.inner
41281             .shader_storage_buffer_array_non_uniform_indexing_native =
41282             shader_storage_buffer_array_non_uniform_indexing_native.into();
41283         self
41284     }
shader_storage_image_array_non_uniform_indexing_native( mut self, shader_storage_image_array_non_uniform_indexing_native: bool, ) -> Self41285     pub fn shader_storage_image_array_non_uniform_indexing_native(
41286         mut self,
41287         shader_storage_image_array_non_uniform_indexing_native: bool,
41288     ) -> Self {
41289         self.inner
41290             .shader_storage_image_array_non_uniform_indexing_native =
41291             shader_storage_image_array_non_uniform_indexing_native.into();
41292         self
41293     }
shader_input_attachment_array_non_uniform_indexing_native( mut self, shader_input_attachment_array_non_uniform_indexing_native: bool, ) -> Self41294     pub fn shader_input_attachment_array_non_uniform_indexing_native(
41295         mut self,
41296         shader_input_attachment_array_non_uniform_indexing_native: bool,
41297     ) -> Self {
41298         self.inner
41299             .shader_input_attachment_array_non_uniform_indexing_native =
41300             shader_input_attachment_array_non_uniform_indexing_native.into();
41301         self
41302     }
robust_buffer_access_update_after_bind( mut self, robust_buffer_access_update_after_bind: bool, ) -> Self41303     pub fn robust_buffer_access_update_after_bind(
41304         mut self,
41305         robust_buffer_access_update_after_bind: bool,
41306     ) -> Self {
41307         self.inner.robust_buffer_access_update_after_bind =
41308             robust_buffer_access_update_after_bind.into();
41309         self
41310     }
quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self41311     pub fn quad_divergent_implicit_lod(mut self, quad_divergent_implicit_lod: bool) -> Self {
41312         self.inner.quad_divergent_implicit_lod = quad_divergent_implicit_lod.into();
41313         self
41314     }
max_per_stage_descriptor_update_after_bind_samplers( mut self, max_per_stage_descriptor_update_after_bind_samplers: u32, ) -> Self41315     pub fn max_per_stage_descriptor_update_after_bind_samplers(
41316         mut self,
41317         max_per_stage_descriptor_update_after_bind_samplers: u32,
41318     ) -> Self {
41319         self.inner
41320             .max_per_stage_descriptor_update_after_bind_samplers =
41321             max_per_stage_descriptor_update_after_bind_samplers;
41322         self
41323     }
max_per_stage_descriptor_update_after_bind_uniform_buffers( mut self, max_per_stage_descriptor_update_after_bind_uniform_buffers: u32, ) -> Self41324     pub fn max_per_stage_descriptor_update_after_bind_uniform_buffers(
41325         mut self,
41326         max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
41327     ) -> Self {
41328         self.inner
41329             .max_per_stage_descriptor_update_after_bind_uniform_buffers =
41330             max_per_stage_descriptor_update_after_bind_uniform_buffers;
41331         self
41332     }
max_per_stage_descriptor_update_after_bind_storage_buffers( mut self, max_per_stage_descriptor_update_after_bind_storage_buffers: u32, ) -> Self41333     pub fn max_per_stage_descriptor_update_after_bind_storage_buffers(
41334         mut self,
41335         max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
41336     ) -> Self {
41337         self.inner
41338             .max_per_stage_descriptor_update_after_bind_storage_buffers =
41339             max_per_stage_descriptor_update_after_bind_storage_buffers;
41340         self
41341     }
max_per_stage_descriptor_update_after_bind_sampled_images( mut self, max_per_stage_descriptor_update_after_bind_sampled_images: u32, ) -> Self41342     pub fn max_per_stage_descriptor_update_after_bind_sampled_images(
41343         mut self,
41344         max_per_stage_descriptor_update_after_bind_sampled_images: u32,
41345     ) -> Self {
41346         self.inner
41347             .max_per_stage_descriptor_update_after_bind_sampled_images =
41348             max_per_stage_descriptor_update_after_bind_sampled_images;
41349         self
41350     }
max_per_stage_descriptor_update_after_bind_storage_images( mut self, max_per_stage_descriptor_update_after_bind_storage_images: u32, ) -> Self41351     pub fn max_per_stage_descriptor_update_after_bind_storage_images(
41352         mut self,
41353         max_per_stage_descriptor_update_after_bind_storage_images: u32,
41354     ) -> Self {
41355         self.inner
41356             .max_per_stage_descriptor_update_after_bind_storage_images =
41357             max_per_stage_descriptor_update_after_bind_storage_images;
41358         self
41359     }
max_per_stage_descriptor_update_after_bind_input_attachments( mut self, max_per_stage_descriptor_update_after_bind_input_attachments: u32, ) -> Self41360     pub fn max_per_stage_descriptor_update_after_bind_input_attachments(
41361         mut self,
41362         max_per_stage_descriptor_update_after_bind_input_attachments: u32,
41363     ) -> Self {
41364         self.inner
41365             .max_per_stage_descriptor_update_after_bind_input_attachments =
41366             max_per_stage_descriptor_update_after_bind_input_attachments;
41367         self
41368     }
max_per_stage_update_after_bind_resources( mut self, max_per_stage_update_after_bind_resources: u32, ) -> Self41369     pub fn max_per_stage_update_after_bind_resources(
41370         mut self,
41371         max_per_stage_update_after_bind_resources: u32,
41372     ) -> Self {
41373         self.inner.max_per_stage_update_after_bind_resources =
41374             max_per_stage_update_after_bind_resources;
41375         self
41376     }
max_descriptor_set_update_after_bind_samplers( mut self, max_descriptor_set_update_after_bind_samplers: u32, ) -> Self41377     pub fn max_descriptor_set_update_after_bind_samplers(
41378         mut self,
41379         max_descriptor_set_update_after_bind_samplers: u32,
41380     ) -> Self {
41381         self.inner.max_descriptor_set_update_after_bind_samplers =
41382             max_descriptor_set_update_after_bind_samplers;
41383         self
41384     }
max_descriptor_set_update_after_bind_uniform_buffers( mut self, max_descriptor_set_update_after_bind_uniform_buffers: u32, ) -> Self41385     pub fn max_descriptor_set_update_after_bind_uniform_buffers(
41386         mut self,
41387         max_descriptor_set_update_after_bind_uniform_buffers: u32,
41388     ) -> Self {
41389         self.inner
41390             .max_descriptor_set_update_after_bind_uniform_buffers =
41391             max_descriptor_set_update_after_bind_uniform_buffers;
41392         self
41393     }
max_descriptor_set_update_after_bind_uniform_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32, ) -> Self41394     pub fn max_descriptor_set_update_after_bind_uniform_buffers_dynamic(
41395         mut self,
41396         max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
41397     ) -> Self {
41398         self.inner
41399             .max_descriptor_set_update_after_bind_uniform_buffers_dynamic =
41400             max_descriptor_set_update_after_bind_uniform_buffers_dynamic;
41401         self
41402     }
max_descriptor_set_update_after_bind_storage_buffers( mut self, max_descriptor_set_update_after_bind_storage_buffers: u32, ) -> Self41403     pub fn max_descriptor_set_update_after_bind_storage_buffers(
41404         mut self,
41405         max_descriptor_set_update_after_bind_storage_buffers: u32,
41406     ) -> Self {
41407         self.inner
41408             .max_descriptor_set_update_after_bind_storage_buffers =
41409             max_descriptor_set_update_after_bind_storage_buffers;
41410         self
41411     }
max_descriptor_set_update_after_bind_storage_buffers_dynamic( mut self, max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32, ) -> Self41412     pub fn max_descriptor_set_update_after_bind_storage_buffers_dynamic(
41413         mut self,
41414         max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
41415     ) -> Self {
41416         self.inner
41417             .max_descriptor_set_update_after_bind_storage_buffers_dynamic =
41418             max_descriptor_set_update_after_bind_storage_buffers_dynamic;
41419         self
41420     }
max_descriptor_set_update_after_bind_sampled_images( mut self, max_descriptor_set_update_after_bind_sampled_images: u32, ) -> Self41421     pub fn max_descriptor_set_update_after_bind_sampled_images(
41422         mut self,
41423         max_descriptor_set_update_after_bind_sampled_images: u32,
41424     ) -> Self {
41425         self.inner
41426             .max_descriptor_set_update_after_bind_sampled_images =
41427             max_descriptor_set_update_after_bind_sampled_images;
41428         self
41429     }
max_descriptor_set_update_after_bind_storage_images( mut self, max_descriptor_set_update_after_bind_storage_images: u32, ) -> Self41430     pub fn max_descriptor_set_update_after_bind_storage_images(
41431         mut self,
41432         max_descriptor_set_update_after_bind_storage_images: u32,
41433     ) -> Self {
41434         self.inner
41435             .max_descriptor_set_update_after_bind_storage_images =
41436             max_descriptor_set_update_after_bind_storage_images;
41437         self
41438     }
max_descriptor_set_update_after_bind_input_attachments( mut self, max_descriptor_set_update_after_bind_input_attachments: u32, ) -> Self41439     pub fn max_descriptor_set_update_after_bind_input_attachments(
41440         mut self,
41441         max_descriptor_set_update_after_bind_input_attachments: u32,
41442     ) -> Self {
41443         self.inner
41444             .max_descriptor_set_update_after_bind_input_attachments =
41445             max_descriptor_set_update_after_bind_input_attachments;
41446         self
41447     }
supported_depth_resolve_modes( mut self, supported_depth_resolve_modes: ResolveModeFlags, ) -> Self41448     pub fn supported_depth_resolve_modes(
41449         mut self,
41450         supported_depth_resolve_modes: ResolveModeFlags,
41451     ) -> Self {
41452         self.inner.supported_depth_resolve_modes = supported_depth_resolve_modes;
41453         self
41454     }
supported_stencil_resolve_modes( mut self, supported_stencil_resolve_modes: ResolveModeFlags, ) -> Self41455     pub fn supported_stencil_resolve_modes(
41456         mut self,
41457         supported_stencil_resolve_modes: ResolveModeFlags,
41458     ) -> Self {
41459         self.inner.supported_stencil_resolve_modes = supported_stencil_resolve_modes;
41460         self
41461     }
independent_resolve_none(mut self, independent_resolve_none: bool) -> Self41462     pub fn independent_resolve_none(mut self, independent_resolve_none: bool) -> Self {
41463         self.inner.independent_resolve_none = independent_resolve_none.into();
41464         self
41465     }
independent_resolve(mut self, independent_resolve: bool) -> Self41466     pub fn independent_resolve(mut self, independent_resolve: bool) -> Self {
41467         self.inner.independent_resolve = independent_resolve.into();
41468         self
41469     }
filter_minmax_single_component_formats( mut self, filter_minmax_single_component_formats: bool, ) -> Self41470     pub fn filter_minmax_single_component_formats(
41471         mut self,
41472         filter_minmax_single_component_formats: bool,
41473     ) -> Self {
41474         self.inner.filter_minmax_single_component_formats =
41475             filter_minmax_single_component_formats.into();
41476         self
41477     }
filter_minmax_image_component_mapping( mut self, filter_minmax_image_component_mapping: bool, ) -> Self41478     pub fn filter_minmax_image_component_mapping(
41479         mut self,
41480         filter_minmax_image_component_mapping: bool,
41481     ) -> Self {
41482         self.inner.filter_minmax_image_component_mapping =
41483             filter_minmax_image_component_mapping.into();
41484         self
41485     }
max_timeline_semaphore_value_difference( mut self, max_timeline_semaphore_value_difference: u64, ) -> Self41486     pub fn max_timeline_semaphore_value_difference(
41487         mut self,
41488         max_timeline_semaphore_value_difference: u64,
41489     ) -> Self {
41490         self.inner.max_timeline_semaphore_value_difference =
41491             max_timeline_semaphore_value_difference;
41492         self
41493     }
framebuffer_integer_color_sample_counts( mut self, framebuffer_integer_color_sample_counts: SampleCountFlags, ) -> Self41494     pub fn framebuffer_integer_color_sample_counts(
41495         mut self,
41496         framebuffer_integer_color_sample_counts: SampleCountFlags,
41497     ) -> Self {
41498         self.inner.framebuffer_integer_color_sample_counts =
41499             framebuffer_integer_color_sample_counts;
41500         self
41501     }
41502     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41503     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41504     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVulkan12Properties41505     pub fn build(self) -> PhysicalDeviceVulkan12Properties {
41506         self.inner
41507     }
41508 }
41509 #[repr(C)]
41510 #[cfg_attr(feature = "debug", derive(Debug))]
41511 #[derive(Copy, Clone)]
41512 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCompilerControlCreateInfoAMD.html>"]
41513 pub struct PipelineCompilerControlCreateInfoAMD {
41514     pub s_type: StructureType,
41515     pub p_next: *const c_void,
41516     pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
41517 }
41518 impl ::std::default::Default for PipelineCompilerControlCreateInfoAMD {
default() -> Self41519     fn default() -> Self {
41520         Self {
41521             s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
41522             p_next: ::std::ptr::null(),
41523             compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
41524         }
41525     }
41526 }
41527 impl PipelineCompilerControlCreateInfoAMD {
builder<'a>() -> PipelineCompilerControlCreateInfoAMDBuilder<'a>41528     pub fn builder<'a>() -> PipelineCompilerControlCreateInfoAMDBuilder<'a> {
41529         PipelineCompilerControlCreateInfoAMDBuilder {
41530             inner: Self::default(),
41531             marker: ::std::marker::PhantomData,
41532         }
41533     }
41534 }
41535 #[repr(transparent)]
41536 pub struct PipelineCompilerControlCreateInfoAMDBuilder<'a> {
41537     inner: PipelineCompilerControlCreateInfoAMD,
41538     marker: ::std::marker::PhantomData<&'a ()>,
41539 }
41540 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCompilerControlCreateInfoAMDBuilder<'_> {}
41541 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineCompilerControlCreateInfoAMD {}
41542 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCompilerControlCreateInfoAMDBuilder<'_> {}
41543 unsafe impl ExtendsComputePipelineCreateInfo for PipelineCompilerControlCreateInfoAMD {}
41544 impl<'a> ::std::ops::Deref for PipelineCompilerControlCreateInfoAMDBuilder<'a> {
41545     type Target = PipelineCompilerControlCreateInfoAMD;
deref(&self) -> &Self::Target41546     fn deref(&self) -> &Self::Target {
41547         &self.inner
41548     }
41549 }
41550 impl<'a> ::std::ops::DerefMut for PipelineCompilerControlCreateInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41551     fn deref_mut(&mut self) -> &mut Self::Target {
41552         &mut self.inner
41553     }
41554 }
41555 impl<'a> PipelineCompilerControlCreateInfoAMDBuilder<'a> {
compiler_control_flags( mut self, compiler_control_flags: PipelineCompilerControlFlagsAMD, ) -> Self41556     pub fn compiler_control_flags(
41557         mut self,
41558         compiler_control_flags: PipelineCompilerControlFlagsAMD,
41559     ) -> Self {
41560         self.inner.compiler_control_flags = compiler_control_flags;
41561         self
41562     }
41563     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41564     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41565     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineCompilerControlCreateInfoAMD41566     pub fn build(self) -> PipelineCompilerControlCreateInfoAMD {
41567         self.inner
41568     }
41569 }
41570 #[repr(C)]
41571 #[cfg_attr(feature = "debug", derive(Debug))]
41572 #[derive(Copy, Clone)]
41573 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>"]
41574 pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
41575     pub s_type: StructureType,
41576     pub p_next: *mut c_void,
41577     pub device_coherent_memory: Bool32,
41578 }
41579 impl ::std::default::Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
default() -> Self41580     fn default() -> Self {
41581         Self {
41582             s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
41583             p_next: ::std::ptr::null_mut(),
41584             device_coherent_memory: Bool32::default(),
41585         }
41586     }
41587 }
41588 impl PhysicalDeviceCoherentMemoryFeaturesAMD {
builder<'a>() -> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a>41589     pub fn builder<'a>() -> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
41590         PhysicalDeviceCoherentMemoryFeaturesAMDBuilder {
41591             inner: Self::default(),
41592             marker: ::std::marker::PhantomData,
41593         }
41594     }
41595 }
41596 #[repr(transparent)]
41597 pub struct PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
41598     inner: PhysicalDeviceCoherentMemoryFeaturesAMD,
41599     marker: ::std::marker::PhantomData<&'a ()>,
41600 }
41601 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'_> {}
41602 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCoherentMemoryFeaturesAMD {}
41603 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'_> {}
41604 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCoherentMemoryFeaturesAMD {}
41605 impl<'a> ::std::ops::Deref for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
41606     type Target = PhysicalDeviceCoherentMemoryFeaturesAMD;
deref(&self) -> &Self::Target41607     fn deref(&self) -> &Self::Target {
41608         &self.inner
41609     }
41610 }
41611 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41612     fn deref_mut(&mut self) -> &mut Self::Target {
41613         &mut self.inner
41614     }
41615 }
41616 impl<'a> PhysicalDeviceCoherentMemoryFeaturesAMDBuilder<'a> {
device_coherent_memory(mut self, device_coherent_memory: bool) -> Self41617     pub fn device_coherent_memory(mut self, device_coherent_memory: bool) -> Self {
41618         self.inner.device_coherent_memory = device_coherent_memory.into();
41619         self
41620     }
41621     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41622     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41623     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCoherentMemoryFeaturesAMD41624     pub fn build(self) -> PhysicalDeviceCoherentMemoryFeaturesAMD {
41625         self.inner
41626     }
41627 }
41628 #[repr(C)]
41629 #[derive(Copy, Clone)]
41630 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceToolPropertiesEXT.html>"]
41631 pub struct PhysicalDeviceToolPropertiesEXT {
41632     pub s_type: StructureType,
41633     pub p_next: *mut c_void,
41634     pub name: [c_char; MAX_EXTENSION_NAME_SIZE],
41635     pub version: [c_char; MAX_EXTENSION_NAME_SIZE],
41636     pub purposes: ToolPurposeFlagsEXT,
41637     pub description: [c_char; MAX_DESCRIPTION_SIZE],
41638     pub layer: [c_char; MAX_EXTENSION_NAME_SIZE],
41639 }
41640 #[cfg(feature = "debug")]
41641 impl fmt::Debug for PhysicalDeviceToolPropertiesEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41642     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41643         fmt.debug_struct("PhysicalDeviceToolPropertiesEXT")
41644             .field("s_type", &self.s_type)
41645             .field("p_next", &self.p_next)
41646             .field("name", &unsafe {
41647                 ::std::ffi::CStr::from_ptr(self.name.as_ptr() as *const c_char)
41648             })
41649             .field("version", &unsafe {
41650                 ::std::ffi::CStr::from_ptr(self.version.as_ptr() as *const c_char)
41651             })
41652             .field("purposes", &self.purposes)
41653             .field("description", &unsafe {
41654                 ::std::ffi::CStr::from_ptr(self.description.as_ptr() as *const c_char)
41655             })
41656             .field("layer", &unsafe {
41657                 ::std::ffi::CStr::from_ptr(self.layer.as_ptr() as *const c_char)
41658             })
41659             .finish()
41660     }
41661 }
41662 impl ::std::default::Default for PhysicalDeviceToolPropertiesEXT {
default() -> Self41663     fn default() -> Self {
41664         Self {
41665             s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,
41666             p_next: ::std::ptr::null_mut(),
41667             name: unsafe { ::std::mem::zeroed() },
41668             version: unsafe { ::std::mem::zeroed() },
41669             purposes: ToolPurposeFlagsEXT::default(),
41670             description: unsafe { ::std::mem::zeroed() },
41671             layer: unsafe { ::std::mem::zeroed() },
41672         }
41673     }
41674 }
41675 impl PhysicalDeviceToolPropertiesEXT {
builder<'a>() -> PhysicalDeviceToolPropertiesEXTBuilder<'a>41676     pub fn builder<'a>() -> PhysicalDeviceToolPropertiesEXTBuilder<'a> {
41677         PhysicalDeviceToolPropertiesEXTBuilder {
41678             inner: Self::default(),
41679             marker: ::std::marker::PhantomData,
41680         }
41681     }
41682 }
41683 #[repr(transparent)]
41684 pub struct PhysicalDeviceToolPropertiesEXTBuilder<'a> {
41685     inner: PhysicalDeviceToolPropertiesEXT,
41686     marker: ::std::marker::PhantomData<&'a ()>,
41687 }
41688 impl<'a> ::std::ops::Deref for PhysicalDeviceToolPropertiesEXTBuilder<'a> {
41689     type Target = PhysicalDeviceToolPropertiesEXT;
deref(&self) -> &Self::Target41690     fn deref(&self) -> &Self::Target {
41691         &self.inner
41692     }
41693 }
41694 impl<'a> ::std::ops::DerefMut for PhysicalDeviceToolPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41695     fn deref_mut(&mut self) -> &mut Self::Target {
41696         &mut self.inner
41697     }
41698 }
41699 impl<'a> PhysicalDeviceToolPropertiesEXTBuilder<'a> {
name(mut self, name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self41700     pub fn name(mut self, name: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
41701         self.inner.name = name;
41702         self
41703     }
version(mut self, version: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self41704     pub fn version(mut self, version: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
41705         self.inner.version = version;
41706         self
41707     }
purposes(mut self, purposes: ToolPurposeFlagsEXT) -> Self41708     pub fn purposes(mut self, purposes: ToolPurposeFlagsEXT) -> Self {
41709         self.inner.purposes = purposes;
41710         self
41711     }
description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self41712     pub fn description(mut self, description: [c_char; MAX_DESCRIPTION_SIZE]) -> Self {
41713         self.inner.description = description;
41714         self
41715     }
layer(mut self, layer: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self41716     pub fn layer(mut self, layer: [c_char; MAX_EXTENSION_NAME_SIZE]) -> Self {
41717         self.inner.layer = layer;
41718         self
41719     }
41720     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41721     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41722     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceToolPropertiesEXT41723     pub fn build(self) -> PhysicalDeviceToolPropertiesEXT {
41724         self.inner
41725     }
41726 }
41727 #[repr(C)]
41728 #[derive(Copy, Clone)]
41729 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>"]
41730 pub struct SamplerCustomBorderColorCreateInfoEXT {
41731     pub s_type: StructureType,
41732     pub p_next: *const c_void,
41733     pub custom_border_color: ClearColorValue,
41734     pub format: Format,
41735 }
41736 #[cfg(feature = "debug")]
41737 impl fmt::Debug for SamplerCustomBorderColorCreateInfoEXT {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result41738     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
41739         fmt.debug_struct("SamplerCustomBorderColorCreateInfoEXT")
41740             .field("s_type", &self.s_type)
41741             .field("p_next", &self.p_next)
41742             .field("custom_border_color", &"union")
41743             .field("format", &self.format)
41744             .finish()
41745     }
41746 }
41747 impl ::std::default::Default for SamplerCustomBorderColorCreateInfoEXT {
default() -> Self41748     fn default() -> Self {
41749         Self {
41750             s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
41751             p_next: ::std::ptr::null(),
41752             custom_border_color: ClearColorValue::default(),
41753             format: Format::default(),
41754         }
41755     }
41756 }
41757 impl SamplerCustomBorderColorCreateInfoEXT {
builder<'a>() -> SamplerCustomBorderColorCreateInfoEXTBuilder<'a>41758     pub fn builder<'a>() -> SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
41759         SamplerCustomBorderColorCreateInfoEXTBuilder {
41760             inner: Self::default(),
41761             marker: ::std::marker::PhantomData,
41762         }
41763     }
41764 }
41765 #[repr(transparent)]
41766 pub struct SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
41767     inner: SamplerCustomBorderColorCreateInfoEXT,
41768     marker: ::std::marker::PhantomData<&'a ()>,
41769 }
41770 unsafe impl ExtendsSamplerCreateInfo for SamplerCustomBorderColorCreateInfoEXTBuilder<'_> {}
41771 unsafe impl ExtendsSamplerCreateInfo for SamplerCustomBorderColorCreateInfoEXT {}
41772 impl<'a> ::std::ops::Deref for SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
41773     type Target = SamplerCustomBorderColorCreateInfoEXT;
deref(&self) -> &Self::Target41774     fn deref(&self) -> &Self::Target {
41775         &self.inner
41776     }
41777 }
41778 impl<'a> ::std::ops::DerefMut for SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41779     fn deref_mut(&mut self) -> &mut Self::Target {
41780         &mut self.inner
41781     }
41782 }
41783 impl<'a> SamplerCustomBorderColorCreateInfoEXTBuilder<'a> {
custom_border_color(mut self, custom_border_color: ClearColorValue) -> Self41784     pub fn custom_border_color(mut self, custom_border_color: ClearColorValue) -> Self {
41785         self.inner.custom_border_color = custom_border_color;
41786         self
41787     }
format(mut self, format: Format) -> Self41788     pub fn format(mut self, format: Format) -> Self {
41789         self.inner.format = format;
41790         self
41791     }
41792     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41793     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41794     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerCustomBorderColorCreateInfoEXT41795     pub fn build(self) -> SamplerCustomBorderColorCreateInfoEXT {
41796         self.inner
41797     }
41798 }
41799 #[repr(C)]
41800 #[cfg_attr(feature = "debug", derive(Debug))]
41801 #[derive(Copy, Clone)]
41802 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>"]
41803 pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
41804     pub s_type: StructureType,
41805     pub p_next: *mut c_void,
41806     pub max_custom_border_color_samplers: u32,
41807 }
41808 impl ::std::default::Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
default() -> Self41809     fn default() -> Self {
41810         Self {
41811             s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
41812             p_next: ::std::ptr::null_mut(),
41813             max_custom_border_color_samplers: u32::default(),
41814         }
41815     }
41816 }
41817 impl PhysicalDeviceCustomBorderColorPropertiesEXT {
builder<'a>() -> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a>41818     pub fn builder<'a>() -> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41819         PhysicalDeviceCustomBorderColorPropertiesEXTBuilder {
41820             inner: Self::default(),
41821             marker: ::std::marker::PhantomData,
41822         }
41823     }
41824 }
41825 #[repr(transparent)]
41826 pub struct PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41827     inner: PhysicalDeviceCustomBorderColorPropertiesEXT,
41828     marker: ::std::marker::PhantomData<&'a ()>,
41829 }
41830 unsafe impl ExtendsPhysicalDeviceProperties2
41831     for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'_>
41832 {
41833 }
41834 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceCustomBorderColorPropertiesEXT {}
41835 impl<'a> ::std::ops::Deref for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
41836     type Target = PhysicalDeviceCustomBorderColorPropertiesEXT;
deref(&self) -> &Self::Target41837     fn deref(&self) -> &Self::Target {
41838         &self.inner
41839     }
41840 }
41841 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41842     fn deref_mut(&mut self) -> &mut Self::Target {
41843         &mut self.inner
41844     }
41845 }
41846 impl<'a> PhysicalDeviceCustomBorderColorPropertiesEXTBuilder<'a> {
max_custom_border_color_samplers( mut self, max_custom_border_color_samplers: u32, ) -> Self41847     pub fn max_custom_border_color_samplers(
41848         mut self,
41849         max_custom_border_color_samplers: u32,
41850     ) -> Self {
41851         self.inner.max_custom_border_color_samplers = max_custom_border_color_samplers;
41852         self
41853     }
41854     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41855     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41856     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCustomBorderColorPropertiesEXT41857     pub fn build(self) -> PhysicalDeviceCustomBorderColorPropertiesEXT {
41858         self.inner
41859     }
41860 }
41861 #[repr(C)]
41862 #[cfg_attr(feature = "debug", derive(Debug))]
41863 #[derive(Copy, Clone)]
41864 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>"]
41865 pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
41866     pub s_type: StructureType,
41867     pub p_next: *mut c_void,
41868     pub custom_border_colors: Bool32,
41869     pub custom_border_color_without_format: Bool32,
41870 }
41871 impl ::std::default::Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
default() -> Self41872     fn default() -> Self {
41873         Self {
41874             s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
41875             p_next: ::std::ptr::null_mut(),
41876             custom_border_colors: Bool32::default(),
41877             custom_border_color_without_format: Bool32::default(),
41878         }
41879     }
41880 }
41881 impl PhysicalDeviceCustomBorderColorFeaturesEXT {
builder<'a>() -> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a>41882     pub fn builder<'a>() -> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41883         PhysicalDeviceCustomBorderColorFeaturesEXTBuilder {
41884             inner: Self::default(),
41885             marker: ::std::marker::PhantomData,
41886         }
41887     }
41888 }
41889 #[repr(transparent)]
41890 pub struct PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41891     inner: PhysicalDeviceCustomBorderColorFeaturesEXT,
41892     marker: ::std::marker::PhantomData<&'a ()>,
41893 }
41894 unsafe impl ExtendsPhysicalDeviceFeatures2
41895     for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'_>
41896 {
41897 }
41898 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceCustomBorderColorFeaturesEXT {}
41899 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'_> {}
41900 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceCustomBorderColorFeaturesEXT {}
41901 impl<'a> ::std::ops::Deref for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
41902     type Target = PhysicalDeviceCustomBorderColorFeaturesEXT;
deref(&self) -> &Self::Target41903     fn deref(&self) -> &Self::Target {
41904         &self.inner
41905     }
41906 }
41907 impl<'a> ::std::ops::DerefMut for PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41908     fn deref_mut(&mut self) -> &mut Self::Target {
41909         &mut self.inner
41910     }
41911 }
41912 impl<'a> PhysicalDeviceCustomBorderColorFeaturesEXTBuilder<'a> {
custom_border_colors(mut self, custom_border_colors: bool) -> Self41913     pub fn custom_border_colors(mut self, custom_border_colors: bool) -> Self {
41914         self.inner.custom_border_colors = custom_border_colors.into();
41915         self
41916     }
custom_border_color_without_format( mut self, custom_border_color_without_format: bool, ) -> Self41917     pub fn custom_border_color_without_format(
41918         mut self,
41919         custom_border_color_without_format: bool,
41920     ) -> Self {
41921         self.inner.custom_border_color_without_format = custom_border_color_without_format.into();
41922         self
41923     }
41924     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41925     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41926     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceCustomBorderColorFeaturesEXT41927     pub fn build(self) -> PhysicalDeviceCustomBorderColorFeaturesEXT {
41928         self.inner
41929     }
41930 }
41931 #[repr(C)]
41932 #[cfg_attr(feature = "debug", derive(Debug))]
41933 #[derive(Copy, Clone)]
41934 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>"]
41935 pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
41936     pub s_type: StructureType,
41937     pub p_next: *const c_void,
41938     pub components: ComponentMapping,
41939     pub srgb: Bool32,
41940 }
41941 impl ::std::default::Default for SamplerBorderColorComponentMappingCreateInfoEXT {
default() -> Self41942     fn default() -> Self {
41943         Self {
41944             s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
41945             p_next: ::std::ptr::null(),
41946             components: ComponentMapping::default(),
41947             srgb: Bool32::default(),
41948         }
41949     }
41950 }
41951 impl SamplerBorderColorComponentMappingCreateInfoEXT {
builder<'a>() -> SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a>41952     pub fn builder<'a>() -> SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41953         SamplerBorderColorComponentMappingCreateInfoEXTBuilder {
41954             inner: Self::default(),
41955             marker: ::std::marker::PhantomData,
41956         }
41957     }
41958 }
41959 #[repr(transparent)]
41960 pub struct SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41961     inner: SamplerBorderColorComponentMappingCreateInfoEXT,
41962     marker: ::std::marker::PhantomData<&'a ()>,
41963 }
41964 unsafe impl ExtendsSamplerCreateInfo
41965     for SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'_>
41966 {
41967 }
41968 unsafe impl ExtendsSamplerCreateInfo for SamplerBorderColorComponentMappingCreateInfoEXT {}
41969 impl<'a> ::std::ops::Deref for SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
41970     type Target = SamplerBorderColorComponentMappingCreateInfoEXT;
deref(&self) -> &Self::Target41971     fn deref(&self) -> &Self::Target {
41972         &self.inner
41973     }
41974 }
41975 impl<'a> ::std::ops::DerefMut for SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target41976     fn deref_mut(&mut self) -> &mut Self::Target {
41977         &mut self.inner
41978     }
41979 }
41980 impl<'a> SamplerBorderColorComponentMappingCreateInfoEXTBuilder<'a> {
components(mut self, components: ComponentMapping) -> Self41981     pub fn components(mut self, components: ComponentMapping) -> Self {
41982         self.inner.components = components;
41983         self
41984     }
srgb(mut self, srgb: bool) -> Self41985     pub fn srgb(mut self, srgb: bool) -> Self {
41986         self.inner.srgb = srgb.into();
41987         self
41988     }
41989     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
41990     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
41991     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SamplerBorderColorComponentMappingCreateInfoEXT41992     pub fn build(self) -> SamplerBorderColorComponentMappingCreateInfoEXT {
41993         self.inner
41994     }
41995 }
41996 #[repr(C)]
41997 #[cfg_attr(feature = "debug", derive(Debug))]
41998 #[derive(Copy, Clone)]
41999 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>"]
42000 pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
42001     pub s_type: StructureType,
42002     pub p_next: *mut c_void,
42003     pub border_color_swizzle: Bool32,
42004     pub border_color_swizzle_from_image: Bool32,
42005 }
42006 impl ::std::default::Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
default() -> Self42007     fn default() -> Self {
42008         Self {
42009             s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
42010             p_next: ::std::ptr::null_mut(),
42011             border_color_swizzle: Bool32::default(),
42012             border_color_swizzle_from_image: Bool32::default(),
42013         }
42014     }
42015 }
42016 impl PhysicalDeviceBorderColorSwizzleFeaturesEXT {
builder<'a>() -> PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a>42017     pub fn builder<'a>() -> PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
42018         PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder {
42019             inner: Self::default(),
42020             marker: ::std::marker::PhantomData,
42021         }
42022     }
42023 }
42024 #[repr(transparent)]
42025 pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
42026     inner: PhysicalDeviceBorderColorSwizzleFeaturesEXT,
42027     marker: ::std::marker::PhantomData<&'a ()>,
42028 }
42029 unsafe impl ExtendsPhysicalDeviceFeatures2
42030     for PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'_>
42031 {
42032 }
42033 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
42034 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'_> {}
42035 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
42036 impl<'a> ::std::ops::Deref for PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
42037     type Target = PhysicalDeviceBorderColorSwizzleFeaturesEXT;
deref(&self) -> &Self::Target42038     fn deref(&self) -> &Self::Target {
42039         &self.inner
42040     }
42041 }
42042 impl<'a> ::std::ops::DerefMut for PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42043     fn deref_mut(&mut self) -> &mut Self::Target {
42044         &mut self.inner
42045     }
42046 }
42047 impl<'a> PhysicalDeviceBorderColorSwizzleFeaturesEXTBuilder<'a> {
border_color_swizzle(mut self, border_color_swizzle: bool) -> Self42048     pub fn border_color_swizzle(mut self, border_color_swizzle: bool) -> Self {
42049         self.inner.border_color_swizzle = border_color_swizzle.into();
42050         self
42051     }
border_color_swizzle_from_image( mut self, border_color_swizzle_from_image: bool, ) -> Self42052     pub fn border_color_swizzle_from_image(
42053         mut self,
42054         border_color_swizzle_from_image: bool,
42055     ) -> Self {
42056         self.inner.border_color_swizzle_from_image = border_color_swizzle_from_image.into();
42057         self
42058     }
42059     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42060     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42061     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceBorderColorSwizzleFeaturesEXT42062     pub fn build(self) -> PhysicalDeviceBorderColorSwizzleFeaturesEXT {
42063         self.inner
42064     }
42065 }
42066 #[repr(C)]
42067 #[derive(Copy, Clone)]
42068 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceOrHostAddressKHR.html>"]
42069 pub union DeviceOrHostAddressKHR {
42070     pub device_address: DeviceAddress,
42071     pub host_address: *mut c_void,
42072 }
42073 impl ::std::default::Default for DeviceOrHostAddressKHR {
default() -> Self42074     fn default() -> Self {
42075         unsafe { ::std::mem::zeroed() }
42076     }
42077 }
42078 #[repr(C)]
42079 #[derive(Copy, Clone)]
42080 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceOrHostAddressConstKHR.html>"]
42081 pub union DeviceOrHostAddressConstKHR {
42082     pub device_address: DeviceAddress,
42083     pub host_address: *const c_void,
42084 }
42085 impl ::std::default::Default for DeviceOrHostAddressConstKHR {
default() -> Self42086     fn default() -> Self {
42087         unsafe { ::std::mem::zeroed() }
42088     }
42089 }
42090 #[repr(C)]
42091 #[derive(Copy, Clone)]
42092 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html>"]
42093 pub struct AccelerationStructureGeometryTrianglesDataKHR {
42094     pub s_type: StructureType,
42095     pub p_next: *const c_void,
42096     pub vertex_format: Format,
42097     pub vertex_data: DeviceOrHostAddressConstKHR,
42098     pub vertex_stride: DeviceSize,
42099     pub max_vertex: u32,
42100     pub index_type: IndexType,
42101     pub index_data: DeviceOrHostAddressConstKHR,
42102     pub transform_data: DeviceOrHostAddressConstKHR,
42103 }
42104 #[cfg(feature = "debug")]
42105 impl fmt::Debug for AccelerationStructureGeometryTrianglesDataKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result42106     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
42107         fmt.debug_struct("AccelerationStructureGeometryTrianglesDataKHR")
42108             .field("s_type", &self.s_type)
42109             .field("p_next", &self.p_next)
42110             .field("vertex_format", &self.vertex_format)
42111             .field("vertex_data", &"union")
42112             .field("vertex_stride", &self.vertex_stride)
42113             .field("max_vertex", &self.max_vertex)
42114             .field("index_type", &self.index_type)
42115             .field("index_data", &"union")
42116             .field("transform_data", &"union")
42117             .finish()
42118     }
42119 }
42120 impl ::std::default::Default for AccelerationStructureGeometryTrianglesDataKHR {
default() -> Self42121     fn default() -> Self {
42122         Self {
42123             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,
42124             p_next: ::std::ptr::null(),
42125             vertex_format: Format::default(),
42126             vertex_data: DeviceOrHostAddressConstKHR::default(),
42127             vertex_stride: DeviceSize::default(),
42128             max_vertex: u32::default(),
42129             index_type: IndexType::default(),
42130             index_data: DeviceOrHostAddressConstKHR::default(),
42131             transform_data: DeviceOrHostAddressConstKHR::default(),
42132         }
42133     }
42134 }
42135 impl AccelerationStructureGeometryTrianglesDataKHR {
builder<'a>() -> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a>42136     pub fn builder<'a>() -> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
42137         AccelerationStructureGeometryTrianglesDataKHRBuilder {
42138             inner: Self::default(),
42139             marker: ::std::marker::PhantomData,
42140         }
42141     }
42142 }
42143 #[repr(transparent)]
42144 pub struct AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
42145     inner: AccelerationStructureGeometryTrianglesDataKHR,
42146     marker: ::std::marker::PhantomData<&'a ()>,
42147 }
42148 pub unsafe trait ExtendsAccelerationStructureGeometryTrianglesDataKHR {}
42149 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
42150     type Target = AccelerationStructureGeometryTrianglesDataKHR;
deref(&self) -> &Self::Target42151     fn deref(&self) -> &Self::Target {
42152         &self.inner
42153     }
42154 }
42155 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42156     fn deref_mut(&mut self) -> &mut Self::Target {
42157         &mut self.inner
42158     }
42159 }
42160 impl<'a> AccelerationStructureGeometryTrianglesDataKHRBuilder<'a> {
vertex_format(mut self, vertex_format: Format) -> Self42161     pub fn vertex_format(mut self, vertex_format: Format) -> Self {
42162         self.inner.vertex_format = vertex_format;
42163         self
42164     }
vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self42165     pub fn vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self {
42166         self.inner.vertex_data = vertex_data;
42167         self
42168     }
vertex_stride(mut self, vertex_stride: DeviceSize) -> Self42169     pub fn vertex_stride(mut self, vertex_stride: DeviceSize) -> Self {
42170         self.inner.vertex_stride = vertex_stride;
42171         self
42172     }
max_vertex(mut self, max_vertex: u32) -> Self42173     pub fn max_vertex(mut self, max_vertex: u32) -> Self {
42174         self.inner.max_vertex = max_vertex;
42175         self
42176     }
index_type(mut self, index_type: IndexType) -> Self42177     pub fn index_type(mut self, index_type: IndexType) -> Self {
42178         self.inner.index_type = index_type;
42179         self
42180     }
index_data(mut self, index_data: DeviceOrHostAddressConstKHR) -> Self42181     pub fn index_data(mut self, index_data: DeviceOrHostAddressConstKHR) -> Self {
42182         self.inner.index_data = index_data;
42183         self
42184     }
transform_data(mut self, transform_data: DeviceOrHostAddressConstKHR) -> Self42185     pub fn transform_data(mut self, transform_data: DeviceOrHostAddressConstKHR) -> Self {
42186         self.inner.transform_data = transform_data;
42187         self
42188     }
42189     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
42190     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
42191     #[doc = r" valid extension structs can be pushed into the chain."]
42192     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
42193     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR>( mut self, next: &'a mut T, ) -> Self42194     pub fn push_next<T: ExtendsAccelerationStructureGeometryTrianglesDataKHR>(
42195         mut self,
42196         next: &'a mut T,
42197     ) -> Self {
42198         unsafe {
42199             let next_ptr = next as *mut T as *mut BaseOutStructure;
42200             let last_next = ptr_chain_iter(next).last().unwrap();
42201             (*last_next).p_next = self.inner.p_next as _;
42202             self.inner.p_next = next_ptr as _;
42203         }
42204         self
42205     }
42206     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42207     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42208     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryTrianglesDataKHR42209     pub fn build(self) -> AccelerationStructureGeometryTrianglesDataKHR {
42210         self.inner
42211     }
42212 }
42213 #[repr(C)]
42214 #[derive(Copy, Clone)]
42215 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html>"]
42216 pub struct AccelerationStructureGeometryAabbsDataKHR {
42217     pub s_type: StructureType,
42218     pub p_next: *const c_void,
42219     pub data: DeviceOrHostAddressConstKHR,
42220     pub stride: DeviceSize,
42221 }
42222 #[cfg(feature = "debug")]
42223 impl fmt::Debug for AccelerationStructureGeometryAabbsDataKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result42224     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
42225         fmt.debug_struct("AccelerationStructureGeometryAabbsDataKHR")
42226             .field("s_type", &self.s_type)
42227             .field("p_next", &self.p_next)
42228             .field("data", &"union")
42229             .field("stride", &self.stride)
42230             .finish()
42231     }
42232 }
42233 impl ::std::default::Default for AccelerationStructureGeometryAabbsDataKHR {
default() -> Self42234     fn default() -> Self {
42235         Self {
42236             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,
42237             p_next: ::std::ptr::null(),
42238             data: DeviceOrHostAddressConstKHR::default(),
42239             stride: DeviceSize::default(),
42240         }
42241     }
42242 }
42243 impl AccelerationStructureGeometryAabbsDataKHR {
builder<'a>() -> AccelerationStructureGeometryAabbsDataKHRBuilder<'a>42244     pub fn builder<'a>() -> AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
42245         AccelerationStructureGeometryAabbsDataKHRBuilder {
42246             inner: Self::default(),
42247             marker: ::std::marker::PhantomData,
42248         }
42249     }
42250 }
42251 #[repr(transparent)]
42252 pub struct AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
42253     inner: AccelerationStructureGeometryAabbsDataKHR,
42254     marker: ::std::marker::PhantomData<&'a ()>,
42255 }
42256 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
42257     type Target = AccelerationStructureGeometryAabbsDataKHR;
deref(&self) -> &Self::Target42258     fn deref(&self) -> &Self::Target {
42259         &self.inner
42260     }
42261 }
42262 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42263     fn deref_mut(&mut self) -> &mut Self::Target {
42264         &mut self.inner
42265     }
42266 }
42267 impl<'a> AccelerationStructureGeometryAabbsDataKHRBuilder<'a> {
data(mut self, data: DeviceOrHostAddressConstKHR) -> Self42268     pub fn data(mut self, data: DeviceOrHostAddressConstKHR) -> Self {
42269         self.inner.data = data;
42270         self
42271     }
stride(mut self, stride: DeviceSize) -> Self42272     pub fn stride(mut self, stride: DeviceSize) -> Self {
42273         self.inner.stride = stride;
42274         self
42275     }
42276     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42277     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42278     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryAabbsDataKHR42279     pub fn build(self) -> AccelerationStructureGeometryAabbsDataKHR {
42280         self.inner
42281     }
42282 }
42283 #[repr(C)]
42284 #[derive(Copy, Clone)]
42285 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html>"]
42286 pub struct AccelerationStructureGeometryInstancesDataKHR {
42287     pub s_type: StructureType,
42288     pub p_next: *const c_void,
42289     pub array_of_pointers: Bool32,
42290     pub data: DeviceOrHostAddressConstKHR,
42291 }
42292 #[cfg(feature = "debug")]
42293 impl fmt::Debug for AccelerationStructureGeometryInstancesDataKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result42294     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
42295         fmt.debug_struct("AccelerationStructureGeometryInstancesDataKHR")
42296             .field("s_type", &self.s_type)
42297             .field("p_next", &self.p_next)
42298             .field("array_of_pointers", &self.array_of_pointers)
42299             .field("data", &"union")
42300             .finish()
42301     }
42302 }
42303 impl ::std::default::Default for AccelerationStructureGeometryInstancesDataKHR {
default() -> Self42304     fn default() -> Self {
42305         Self {
42306             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,
42307             p_next: ::std::ptr::null(),
42308             array_of_pointers: Bool32::default(),
42309             data: DeviceOrHostAddressConstKHR::default(),
42310         }
42311     }
42312 }
42313 impl AccelerationStructureGeometryInstancesDataKHR {
builder<'a>() -> AccelerationStructureGeometryInstancesDataKHRBuilder<'a>42314     pub fn builder<'a>() -> AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
42315         AccelerationStructureGeometryInstancesDataKHRBuilder {
42316             inner: Self::default(),
42317             marker: ::std::marker::PhantomData,
42318         }
42319     }
42320 }
42321 #[repr(transparent)]
42322 pub struct AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
42323     inner: AccelerationStructureGeometryInstancesDataKHR,
42324     marker: ::std::marker::PhantomData<&'a ()>,
42325 }
42326 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
42327     type Target = AccelerationStructureGeometryInstancesDataKHR;
deref(&self) -> &Self::Target42328     fn deref(&self) -> &Self::Target {
42329         &self.inner
42330     }
42331 }
42332 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42333     fn deref_mut(&mut self) -> &mut Self::Target {
42334         &mut self.inner
42335     }
42336 }
42337 impl<'a> AccelerationStructureGeometryInstancesDataKHRBuilder<'a> {
array_of_pointers(mut self, array_of_pointers: bool) -> Self42338     pub fn array_of_pointers(mut self, array_of_pointers: bool) -> Self {
42339         self.inner.array_of_pointers = array_of_pointers.into();
42340         self
42341     }
data(mut self, data: DeviceOrHostAddressConstKHR) -> Self42342     pub fn data(mut self, data: DeviceOrHostAddressConstKHR) -> Self {
42343         self.inner.data = data;
42344         self
42345     }
42346     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42347     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42348     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryInstancesDataKHR42349     pub fn build(self) -> AccelerationStructureGeometryInstancesDataKHR {
42350         self.inner
42351     }
42352 }
42353 #[repr(C)]
42354 #[derive(Copy, Clone)]
42355 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryDataKHR.html>"]
42356 pub union AccelerationStructureGeometryDataKHR {
42357     pub triangles: AccelerationStructureGeometryTrianglesDataKHR,
42358     pub aabbs: AccelerationStructureGeometryAabbsDataKHR,
42359     pub instances: AccelerationStructureGeometryInstancesDataKHR,
42360 }
42361 impl ::std::default::Default for AccelerationStructureGeometryDataKHR {
default() -> Self42362     fn default() -> Self {
42363         unsafe { ::std::mem::zeroed() }
42364     }
42365 }
42366 #[repr(C)]
42367 #[derive(Copy, Clone)]
42368 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryKHR.html>"]
42369 pub struct AccelerationStructureGeometryKHR {
42370     pub s_type: StructureType,
42371     pub p_next: *const c_void,
42372     pub geometry_type: GeometryTypeKHR,
42373     pub geometry: AccelerationStructureGeometryDataKHR,
42374     pub flags: GeometryFlagsKHR,
42375 }
42376 #[cfg(feature = "debug")]
42377 impl fmt::Debug for AccelerationStructureGeometryKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result42378     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
42379         fmt.debug_struct("AccelerationStructureGeometryKHR")
42380             .field("s_type", &self.s_type)
42381             .field("p_next", &self.p_next)
42382             .field("geometry_type", &self.geometry_type)
42383             .field("geometry", &"union")
42384             .field("flags", &self.flags)
42385             .finish()
42386     }
42387 }
42388 impl ::std::default::Default for AccelerationStructureGeometryKHR {
default() -> Self42389     fn default() -> Self {
42390         Self {
42391             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR,
42392             p_next: ::std::ptr::null(),
42393             geometry_type: GeometryTypeKHR::default(),
42394             geometry: AccelerationStructureGeometryDataKHR::default(),
42395             flags: GeometryFlagsKHR::default(),
42396         }
42397     }
42398 }
42399 impl AccelerationStructureGeometryKHR {
builder<'a>() -> AccelerationStructureGeometryKHRBuilder<'a>42400     pub fn builder<'a>() -> AccelerationStructureGeometryKHRBuilder<'a> {
42401         AccelerationStructureGeometryKHRBuilder {
42402             inner: Self::default(),
42403             marker: ::std::marker::PhantomData,
42404         }
42405     }
42406 }
42407 #[repr(transparent)]
42408 pub struct AccelerationStructureGeometryKHRBuilder<'a> {
42409     inner: AccelerationStructureGeometryKHR,
42410     marker: ::std::marker::PhantomData<&'a ()>,
42411 }
42412 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryKHRBuilder<'a> {
42413     type Target = AccelerationStructureGeometryKHR;
deref(&self) -> &Self::Target42414     fn deref(&self) -> &Self::Target {
42415         &self.inner
42416     }
42417 }
42418 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42419     fn deref_mut(&mut self) -> &mut Self::Target {
42420         &mut self.inner
42421     }
42422 }
42423 impl<'a> AccelerationStructureGeometryKHRBuilder<'a> {
geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self42424     pub fn geometry_type(mut self, geometry_type: GeometryTypeKHR) -> Self {
42425         self.inner.geometry_type = geometry_type;
42426         self
42427     }
geometry(mut self, geometry: AccelerationStructureGeometryDataKHR) -> Self42428     pub fn geometry(mut self, geometry: AccelerationStructureGeometryDataKHR) -> Self {
42429         self.inner.geometry = geometry;
42430         self
42431     }
flags(mut self, flags: GeometryFlagsKHR) -> Self42432     pub fn flags(mut self, flags: GeometryFlagsKHR) -> Self {
42433         self.inner.flags = flags;
42434         self
42435     }
42436     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42437     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42438     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryKHR42439     pub fn build(self) -> AccelerationStructureGeometryKHR {
42440         self.inner
42441     }
42442 }
42443 #[repr(C)]
42444 #[derive(Copy, Clone)]
42445 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html>"]
42446 pub struct AccelerationStructureBuildGeometryInfoKHR {
42447     pub s_type: StructureType,
42448     pub p_next: *const c_void,
42449     pub ty: AccelerationStructureTypeKHR,
42450     pub flags: BuildAccelerationStructureFlagsKHR,
42451     pub mode: BuildAccelerationStructureModeKHR,
42452     pub src_acceleration_structure: AccelerationStructureKHR,
42453     pub dst_acceleration_structure: AccelerationStructureKHR,
42454     pub geometry_count: u32,
42455     pub p_geometries: *const AccelerationStructureGeometryKHR,
42456     pub pp_geometries: *const *const AccelerationStructureGeometryKHR,
42457     pub scratch_data: DeviceOrHostAddressKHR,
42458 }
42459 #[cfg(feature = "debug")]
42460 impl fmt::Debug for AccelerationStructureBuildGeometryInfoKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result42461     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
42462         fmt.debug_struct("AccelerationStructureBuildGeometryInfoKHR")
42463             .field("s_type", &self.s_type)
42464             .field("p_next", &self.p_next)
42465             .field("ty", &self.ty)
42466             .field("flags", &self.flags)
42467             .field("mode", &self.mode)
42468             .field(
42469                 "src_acceleration_structure",
42470                 &self.src_acceleration_structure,
42471             )
42472             .field(
42473                 "dst_acceleration_structure",
42474                 &self.dst_acceleration_structure,
42475             )
42476             .field("geometry_count", &self.geometry_count)
42477             .field("p_geometries", &self.p_geometries)
42478             .field("pp_geometries", &self.pp_geometries)
42479             .field("scratch_data", &"union")
42480             .finish()
42481     }
42482 }
42483 impl ::std::default::Default for AccelerationStructureBuildGeometryInfoKHR {
default() -> Self42484     fn default() -> Self {
42485         Self {
42486             s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,
42487             p_next: ::std::ptr::null(),
42488             ty: AccelerationStructureTypeKHR::default(),
42489             flags: BuildAccelerationStructureFlagsKHR::default(),
42490             mode: BuildAccelerationStructureModeKHR::default(),
42491             src_acceleration_structure: AccelerationStructureKHR::default(),
42492             dst_acceleration_structure: AccelerationStructureKHR::default(),
42493             geometry_count: u32::default(),
42494             p_geometries: ::std::ptr::null(),
42495             pp_geometries: ::std::ptr::null(),
42496             scratch_data: DeviceOrHostAddressKHR::default(),
42497         }
42498     }
42499 }
42500 impl AccelerationStructureBuildGeometryInfoKHR {
builder<'a>() -> AccelerationStructureBuildGeometryInfoKHRBuilder<'a>42501     pub fn builder<'a>() -> AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
42502         AccelerationStructureBuildGeometryInfoKHRBuilder {
42503             inner: Self::default(),
42504             marker: ::std::marker::PhantomData,
42505         }
42506     }
42507 }
42508 #[repr(transparent)]
42509 pub struct AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
42510     inner: AccelerationStructureBuildGeometryInfoKHR,
42511     marker: ::std::marker::PhantomData<&'a ()>,
42512 }
42513 impl<'a> ::std::ops::Deref for AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
42514     type Target = AccelerationStructureBuildGeometryInfoKHR;
deref(&self) -> &Self::Target42515     fn deref(&self) -> &Self::Target {
42516         &self.inner
42517     }
42518 }
42519 impl<'a> ::std::ops::DerefMut for AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42520     fn deref_mut(&mut self) -> &mut Self::Target {
42521         &mut self.inner
42522     }
42523 }
42524 impl<'a> AccelerationStructureBuildGeometryInfoKHRBuilder<'a> {
ty(mut self, ty: AccelerationStructureTypeKHR) -> Self42525     pub fn ty(mut self, ty: AccelerationStructureTypeKHR) -> Self {
42526         self.inner.ty = ty;
42527         self
42528     }
flags(mut self, flags: BuildAccelerationStructureFlagsKHR) -> Self42529     pub fn flags(mut self, flags: BuildAccelerationStructureFlagsKHR) -> Self {
42530         self.inner.flags = flags;
42531         self
42532     }
mode(mut self, mode: BuildAccelerationStructureModeKHR) -> Self42533     pub fn mode(mut self, mode: BuildAccelerationStructureModeKHR) -> Self {
42534         self.inner.mode = mode;
42535         self
42536     }
src_acceleration_structure( mut self, src_acceleration_structure: AccelerationStructureKHR, ) -> Self42537     pub fn src_acceleration_structure(
42538         mut self,
42539         src_acceleration_structure: AccelerationStructureKHR,
42540     ) -> Self {
42541         self.inner.src_acceleration_structure = src_acceleration_structure;
42542         self
42543     }
dst_acceleration_structure( mut self, dst_acceleration_structure: AccelerationStructureKHR, ) -> Self42544     pub fn dst_acceleration_structure(
42545         mut self,
42546         dst_acceleration_structure: AccelerationStructureKHR,
42547     ) -> Self {
42548         self.inner.dst_acceleration_structure = dst_acceleration_structure;
42549         self
42550     }
geometries(mut self, geometries: &'a [AccelerationStructureGeometryKHR]) -> Self42551     pub fn geometries(mut self, geometries: &'a [AccelerationStructureGeometryKHR]) -> Self {
42552         self.inner.geometry_count = geometries.len() as _;
42553         self.inner.p_geometries = geometries.as_ptr();
42554         self
42555     }
geometries_ptrs( mut self, geometries: &'a [&'a AccelerationStructureGeometryKHR], ) -> Self42556     pub fn geometries_ptrs(
42557         mut self,
42558         geometries: &'a [&'a AccelerationStructureGeometryKHR],
42559     ) -> Self {
42560         self.inner.geometry_count = geometries.len() as _;
42561         self.inner.pp_geometries = geometries.as_ptr() as *const *const _;
42562         self
42563     }
scratch_data(mut self, scratch_data: DeviceOrHostAddressKHR) -> Self42564     pub fn scratch_data(mut self, scratch_data: DeviceOrHostAddressKHR) -> Self {
42565         self.inner.scratch_data = scratch_data;
42566         self
42567     }
42568     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42569     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42570     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureBuildGeometryInfoKHR42571     pub fn build(self) -> AccelerationStructureBuildGeometryInfoKHR {
42572         self.inner
42573     }
42574 }
42575 #[repr(C)]
42576 #[cfg_attr(feature = "debug", derive(Debug))]
42577 #[derive(Copy, Clone, Default)]
42578 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildRangeInfoKHR.html>"]
42579 pub struct AccelerationStructureBuildRangeInfoKHR {
42580     pub primitive_count: u32,
42581     pub primitive_offset: u32,
42582     pub first_vertex: u32,
42583     pub transform_offset: u32,
42584 }
42585 impl AccelerationStructureBuildRangeInfoKHR {
builder<'a>() -> AccelerationStructureBuildRangeInfoKHRBuilder<'a>42586     pub fn builder<'a>() -> AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
42587         AccelerationStructureBuildRangeInfoKHRBuilder {
42588             inner: Self::default(),
42589             marker: ::std::marker::PhantomData,
42590         }
42591     }
42592 }
42593 #[repr(transparent)]
42594 pub struct AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
42595     inner: AccelerationStructureBuildRangeInfoKHR,
42596     marker: ::std::marker::PhantomData<&'a ()>,
42597 }
42598 impl<'a> ::std::ops::Deref for AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
42599     type Target = AccelerationStructureBuildRangeInfoKHR;
deref(&self) -> &Self::Target42600     fn deref(&self) -> &Self::Target {
42601         &self.inner
42602     }
42603 }
42604 impl<'a> ::std::ops::DerefMut for AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42605     fn deref_mut(&mut self) -> &mut Self::Target {
42606         &mut self.inner
42607     }
42608 }
42609 impl<'a> AccelerationStructureBuildRangeInfoKHRBuilder<'a> {
primitive_count(mut self, primitive_count: u32) -> Self42610     pub fn primitive_count(mut self, primitive_count: u32) -> Self {
42611         self.inner.primitive_count = primitive_count;
42612         self
42613     }
primitive_offset(mut self, primitive_offset: u32) -> Self42614     pub fn primitive_offset(mut self, primitive_offset: u32) -> Self {
42615         self.inner.primitive_offset = primitive_offset;
42616         self
42617     }
first_vertex(mut self, first_vertex: u32) -> Self42618     pub fn first_vertex(mut self, first_vertex: u32) -> Self {
42619         self.inner.first_vertex = first_vertex;
42620         self
42621     }
transform_offset(mut self, transform_offset: u32) -> Self42622     pub fn transform_offset(mut self, transform_offset: u32) -> Self {
42623         self.inner.transform_offset = transform_offset;
42624         self
42625     }
42626     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42627     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42628     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureBuildRangeInfoKHR42629     pub fn build(self) -> AccelerationStructureBuildRangeInfoKHR {
42630         self.inner
42631     }
42632 }
42633 #[repr(C)]
42634 #[cfg_attr(feature = "debug", derive(Debug))]
42635 #[derive(Copy, Clone)]
42636 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureCreateInfoKHR.html>"]
42637 pub struct AccelerationStructureCreateInfoKHR {
42638     pub s_type: StructureType,
42639     pub p_next: *const c_void,
42640     pub create_flags: AccelerationStructureCreateFlagsKHR,
42641     pub buffer: Buffer,
42642     pub offset: DeviceSize,
42643     pub size: DeviceSize,
42644     pub ty: AccelerationStructureTypeKHR,
42645     pub device_address: DeviceAddress,
42646 }
42647 impl ::std::default::Default for AccelerationStructureCreateInfoKHR {
default() -> Self42648     fn default() -> Self {
42649         Self {
42650             s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR,
42651             p_next: ::std::ptr::null(),
42652             create_flags: AccelerationStructureCreateFlagsKHR::default(),
42653             buffer: Buffer::default(),
42654             offset: DeviceSize::default(),
42655             size: DeviceSize::default(),
42656             ty: AccelerationStructureTypeKHR::default(),
42657             device_address: DeviceAddress::default(),
42658         }
42659     }
42660 }
42661 impl AccelerationStructureCreateInfoKHR {
builder<'a>() -> AccelerationStructureCreateInfoKHRBuilder<'a>42662     pub fn builder<'a>() -> AccelerationStructureCreateInfoKHRBuilder<'a> {
42663         AccelerationStructureCreateInfoKHRBuilder {
42664             inner: Self::default(),
42665             marker: ::std::marker::PhantomData,
42666         }
42667     }
42668 }
42669 #[repr(transparent)]
42670 pub struct AccelerationStructureCreateInfoKHRBuilder<'a> {
42671     inner: AccelerationStructureCreateInfoKHR,
42672     marker: ::std::marker::PhantomData<&'a ()>,
42673 }
42674 pub unsafe trait ExtendsAccelerationStructureCreateInfoKHR {}
42675 impl<'a> ::std::ops::Deref for AccelerationStructureCreateInfoKHRBuilder<'a> {
42676     type Target = AccelerationStructureCreateInfoKHR;
deref(&self) -> &Self::Target42677     fn deref(&self) -> &Self::Target {
42678         &self.inner
42679     }
42680 }
42681 impl<'a> ::std::ops::DerefMut for AccelerationStructureCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42682     fn deref_mut(&mut self) -> &mut Self::Target {
42683         &mut self.inner
42684     }
42685 }
42686 impl<'a> AccelerationStructureCreateInfoKHRBuilder<'a> {
create_flags(mut self, create_flags: AccelerationStructureCreateFlagsKHR) -> Self42687     pub fn create_flags(mut self, create_flags: AccelerationStructureCreateFlagsKHR) -> Self {
42688         self.inner.create_flags = create_flags;
42689         self
42690     }
buffer(mut self, buffer: Buffer) -> Self42691     pub fn buffer(mut self, buffer: Buffer) -> Self {
42692         self.inner.buffer = buffer;
42693         self
42694     }
offset(mut self, offset: DeviceSize) -> Self42695     pub fn offset(mut self, offset: DeviceSize) -> Self {
42696         self.inner.offset = offset;
42697         self
42698     }
size(mut self, size: DeviceSize) -> Self42699     pub fn size(mut self, size: DeviceSize) -> Self {
42700         self.inner.size = size;
42701         self
42702     }
ty(mut self, ty: AccelerationStructureTypeKHR) -> Self42703     pub fn ty(mut self, ty: AccelerationStructureTypeKHR) -> Self {
42704         self.inner.ty = ty;
42705         self
42706     }
device_address(mut self, device_address: DeviceAddress) -> Self42707     pub fn device_address(mut self, device_address: DeviceAddress) -> Self {
42708         self.inner.device_address = device_address;
42709         self
42710     }
42711     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
42712     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
42713     #[doc = r" valid extension structs can be pushed into the chain."]
42714     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
42715     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsAccelerationStructureCreateInfoKHR>( mut self, next: &'a mut T, ) -> Self42716     pub fn push_next<T: ExtendsAccelerationStructureCreateInfoKHR>(
42717         mut self,
42718         next: &'a mut T,
42719     ) -> Self {
42720         unsafe {
42721             let next_ptr = next as *mut T as *mut BaseOutStructure;
42722             let last_next = ptr_chain_iter(next).last().unwrap();
42723             (*last_next).p_next = self.inner.p_next as _;
42724             self.inner.p_next = next_ptr as _;
42725         }
42726         self
42727     }
42728     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42729     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42730     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureCreateInfoKHR42731     pub fn build(self) -> AccelerationStructureCreateInfoKHR {
42732         self.inner
42733     }
42734 }
42735 #[repr(C)]
42736 #[cfg_attr(feature = "debug", derive(Debug))]
42737 #[derive(Copy, Clone, Default)]
42738 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAabbPositionsKHR.html>"]
42739 pub struct AabbPositionsKHR {
42740     pub min_x: f32,
42741     pub min_y: f32,
42742     pub min_z: f32,
42743     pub max_x: f32,
42744     pub max_y: f32,
42745     pub max_z: f32,
42746 }
42747 impl AabbPositionsKHR {
builder<'a>() -> AabbPositionsKHRBuilder<'a>42748     pub fn builder<'a>() -> AabbPositionsKHRBuilder<'a> {
42749         AabbPositionsKHRBuilder {
42750             inner: Self::default(),
42751             marker: ::std::marker::PhantomData,
42752         }
42753     }
42754 }
42755 #[repr(transparent)]
42756 pub struct AabbPositionsKHRBuilder<'a> {
42757     inner: AabbPositionsKHR,
42758     marker: ::std::marker::PhantomData<&'a ()>,
42759 }
42760 impl<'a> ::std::ops::Deref for AabbPositionsKHRBuilder<'a> {
42761     type Target = AabbPositionsKHR;
deref(&self) -> &Self::Target42762     fn deref(&self) -> &Self::Target {
42763         &self.inner
42764     }
42765 }
42766 impl<'a> ::std::ops::DerefMut for AabbPositionsKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42767     fn deref_mut(&mut self) -> &mut Self::Target {
42768         &mut self.inner
42769     }
42770 }
42771 impl<'a> AabbPositionsKHRBuilder<'a> {
min_x(mut self, min_x: f32) -> Self42772     pub fn min_x(mut self, min_x: f32) -> Self {
42773         self.inner.min_x = min_x;
42774         self
42775     }
min_y(mut self, min_y: f32) -> Self42776     pub fn min_y(mut self, min_y: f32) -> Self {
42777         self.inner.min_y = min_y;
42778         self
42779     }
min_z(mut self, min_z: f32) -> Self42780     pub fn min_z(mut self, min_z: f32) -> Self {
42781         self.inner.min_z = min_z;
42782         self
42783     }
max_x(mut self, max_x: f32) -> Self42784     pub fn max_x(mut self, max_x: f32) -> Self {
42785         self.inner.max_x = max_x;
42786         self
42787     }
max_y(mut self, max_y: f32) -> Self42788     pub fn max_y(mut self, max_y: f32) -> Self {
42789         self.inner.max_y = max_y;
42790         self
42791     }
max_z(mut self, max_z: f32) -> Self42792     pub fn max_z(mut self, max_z: f32) -> Self {
42793         self.inner.max_z = max_z;
42794         self
42795     }
42796     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42797     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42798     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AabbPositionsKHR42799     pub fn build(self) -> AabbPositionsKHR {
42800         self.inner
42801     }
42802 }
42803 #[repr(C)]
42804 #[derive(Copy, Clone)]
42805 pub struct TransformMatrixKHR {
42806     pub matrix: [f32; 12],
42807 }
42808 #[repr(C)]
42809 #[derive(Copy, Clone)]
42810 pub union AccelerationStructureReferenceKHR {
42811     pub device_handle: DeviceAddress,
42812     pub host_handle: AccelerationStructureKHR,
42813 }
42814 #[repr(C)]
42815 #[derive(Copy, Clone)]
42816 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureInstanceKHR.html>"]
42817 pub struct AccelerationStructureInstanceKHR {
42818     pub transform: TransformMatrixKHR,
42819     #[doc = r" Use [`Packed24_8::new(instance_custom_index, mask)`][Packed24_8::new()] to construct this field"]
42820     pub instance_custom_index_and_mask: Packed24_8,
42821     #[doc = r" Use [`Packed24_8::new(instance_shader_binding_table_record_offset, flags)`][Packed24_8::new()] to construct this field"]
42822     pub instance_shader_binding_table_record_offset_and_flags: Packed24_8,
42823     pub acceleration_structure_reference: AccelerationStructureReferenceKHR,
42824 }
42825 #[repr(C)]
42826 #[cfg_attr(feature = "debug", derive(Debug))]
42827 #[derive(Copy, Clone)]
42828 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html>"]
42829 pub struct AccelerationStructureDeviceAddressInfoKHR {
42830     pub s_type: StructureType,
42831     pub p_next: *const c_void,
42832     pub acceleration_structure: AccelerationStructureKHR,
42833 }
42834 impl ::std::default::Default for AccelerationStructureDeviceAddressInfoKHR {
default() -> Self42835     fn default() -> Self {
42836         Self {
42837             s_type: StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,
42838             p_next: ::std::ptr::null(),
42839             acceleration_structure: AccelerationStructureKHR::default(),
42840         }
42841     }
42842 }
42843 impl AccelerationStructureDeviceAddressInfoKHR {
builder<'a>() -> AccelerationStructureDeviceAddressInfoKHRBuilder<'a>42844     pub fn builder<'a>() -> AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42845         AccelerationStructureDeviceAddressInfoKHRBuilder {
42846             inner: Self::default(),
42847             marker: ::std::marker::PhantomData,
42848         }
42849     }
42850 }
42851 #[repr(transparent)]
42852 pub struct AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42853     inner: AccelerationStructureDeviceAddressInfoKHR,
42854     marker: ::std::marker::PhantomData<&'a ()>,
42855 }
42856 impl<'a> ::std::ops::Deref for AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
42857     type Target = AccelerationStructureDeviceAddressInfoKHR;
deref(&self) -> &Self::Target42858     fn deref(&self) -> &Self::Target {
42859         &self.inner
42860     }
42861 }
42862 impl<'a> ::std::ops::DerefMut for AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42863     fn deref_mut(&mut self) -> &mut Self::Target {
42864         &mut self.inner
42865     }
42866 }
42867 impl<'a> AccelerationStructureDeviceAddressInfoKHRBuilder<'a> {
acceleration_structure( mut self, acceleration_structure: AccelerationStructureKHR, ) -> Self42868     pub fn acceleration_structure(
42869         mut self,
42870         acceleration_structure: AccelerationStructureKHR,
42871     ) -> Self {
42872         self.inner.acceleration_structure = acceleration_structure;
42873         self
42874     }
42875     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42876     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42877     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureDeviceAddressInfoKHR42878     pub fn build(self) -> AccelerationStructureDeviceAddressInfoKHR {
42879         self.inner
42880     }
42881 }
42882 #[repr(C)]
42883 #[cfg_attr(feature = "debug", derive(Debug))]
42884 #[derive(Copy, Clone)]
42885 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureVersionInfoKHR.html>"]
42886 pub struct AccelerationStructureVersionInfoKHR {
42887     pub s_type: StructureType,
42888     pub p_next: *const c_void,
42889     pub p_version_data: *const [u8; 2 * UUID_SIZE],
42890 }
42891 impl ::std::default::Default for AccelerationStructureVersionInfoKHR {
default() -> Self42892     fn default() -> Self {
42893         Self {
42894             s_type: StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR,
42895             p_next: ::std::ptr::null(),
42896             p_version_data: ::std::ptr::null(),
42897         }
42898     }
42899 }
42900 impl AccelerationStructureVersionInfoKHR {
builder<'a>() -> AccelerationStructureVersionInfoKHRBuilder<'a>42901     pub fn builder<'a>() -> AccelerationStructureVersionInfoKHRBuilder<'a> {
42902         AccelerationStructureVersionInfoKHRBuilder {
42903             inner: Self::default(),
42904             marker: ::std::marker::PhantomData,
42905         }
42906     }
42907 }
42908 #[repr(transparent)]
42909 pub struct AccelerationStructureVersionInfoKHRBuilder<'a> {
42910     inner: AccelerationStructureVersionInfoKHR,
42911     marker: ::std::marker::PhantomData<&'a ()>,
42912 }
42913 impl<'a> ::std::ops::Deref for AccelerationStructureVersionInfoKHRBuilder<'a> {
42914     type Target = AccelerationStructureVersionInfoKHR;
deref(&self) -> &Self::Target42915     fn deref(&self) -> &Self::Target {
42916         &self.inner
42917     }
42918 }
42919 impl<'a> ::std::ops::DerefMut for AccelerationStructureVersionInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42920     fn deref_mut(&mut self) -> &mut Self::Target {
42921         &mut self.inner
42922     }
42923 }
42924 impl<'a> AccelerationStructureVersionInfoKHRBuilder<'a> {
version_data(mut self, version_data: &'a [u8; 2 * UUID_SIZE]) -> Self42925     pub fn version_data(mut self, version_data: &'a [u8; 2 * UUID_SIZE]) -> Self {
42926         self.inner.p_version_data = version_data as *const [u8; 2 * UUID_SIZE];
42927         self
42928     }
42929     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42930     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42931     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureVersionInfoKHR42932     pub fn build(self) -> AccelerationStructureVersionInfoKHR {
42933         self.inner
42934     }
42935 }
42936 #[repr(C)]
42937 #[cfg_attr(feature = "debug", derive(Debug))]
42938 #[derive(Copy, Clone)]
42939 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyAccelerationStructureInfoKHR.html>"]
42940 pub struct CopyAccelerationStructureInfoKHR {
42941     pub s_type: StructureType,
42942     pub p_next: *const c_void,
42943     pub src: AccelerationStructureKHR,
42944     pub dst: AccelerationStructureKHR,
42945     pub mode: CopyAccelerationStructureModeKHR,
42946 }
42947 impl ::std::default::Default for CopyAccelerationStructureInfoKHR {
default() -> Self42948     fn default() -> Self {
42949         Self {
42950             s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
42951             p_next: ::std::ptr::null(),
42952             src: AccelerationStructureKHR::default(),
42953             dst: AccelerationStructureKHR::default(),
42954             mode: CopyAccelerationStructureModeKHR::default(),
42955         }
42956     }
42957 }
42958 impl CopyAccelerationStructureInfoKHR {
builder<'a>() -> CopyAccelerationStructureInfoKHRBuilder<'a>42959     pub fn builder<'a>() -> CopyAccelerationStructureInfoKHRBuilder<'a> {
42960         CopyAccelerationStructureInfoKHRBuilder {
42961             inner: Self::default(),
42962             marker: ::std::marker::PhantomData,
42963         }
42964     }
42965 }
42966 #[repr(transparent)]
42967 pub struct CopyAccelerationStructureInfoKHRBuilder<'a> {
42968     inner: CopyAccelerationStructureInfoKHR,
42969     marker: ::std::marker::PhantomData<&'a ()>,
42970 }
42971 impl<'a> ::std::ops::Deref for CopyAccelerationStructureInfoKHRBuilder<'a> {
42972     type Target = CopyAccelerationStructureInfoKHR;
deref(&self) -> &Self::Target42973     fn deref(&self) -> &Self::Target {
42974         &self.inner
42975     }
42976 }
42977 impl<'a> ::std::ops::DerefMut for CopyAccelerationStructureInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target42978     fn deref_mut(&mut self) -> &mut Self::Target {
42979         &mut self.inner
42980     }
42981 }
42982 impl<'a> CopyAccelerationStructureInfoKHRBuilder<'a> {
src(mut self, src: AccelerationStructureKHR) -> Self42983     pub fn src(mut self, src: AccelerationStructureKHR) -> Self {
42984         self.inner.src = src;
42985         self
42986     }
dst(mut self, dst: AccelerationStructureKHR) -> Self42987     pub fn dst(mut self, dst: AccelerationStructureKHR) -> Self {
42988         self.inner.dst = dst;
42989         self
42990     }
mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self42991     pub fn mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self {
42992         self.inner.mode = mode;
42993         self
42994     }
42995     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
42996     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
42997     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyAccelerationStructureInfoKHR42998     pub fn build(self) -> CopyAccelerationStructureInfoKHR {
42999         self.inner
43000     }
43001 }
43002 #[repr(C)]
43003 #[derive(Copy, Clone)]
43004 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>"]
43005 pub struct CopyAccelerationStructureToMemoryInfoKHR {
43006     pub s_type: StructureType,
43007     pub p_next: *const c_void,
43008     pub src: AccelerationStructureKHR,
43009     pub dst: DeviceOrHostAddressKHR,
43010     pub mode: CopyAccelerationStructureModeKHR,
43011 }
43012 #[cfg(feature = "debug")]
43013 impl fmt::Debug for CopyAccelerationStructureToMemoryInfoKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result43014     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
43015         fmt.debug_struct("CopyAccelerationStructureToMemoryInfoKHR")
43016             .field("s_type", &self.s_type)
43017             .field("p_next", &self.p_next)
43018             .field("src", &self.src)
43019             .field("dst", &"union")
43020             .field("mode", &self.mode)
43021             .finish()
43022     }
43023 }
43024 impl ::std::default::Default for CopyAccelerationStructureToMemoryInfoKHR {
default() -> Self43025     fn default() -> Self {
43026         Self {
43027             s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
43028             p_next: ::std::ptr::null(),
43029             src: AccelerationStructureKHR::default(),
43030             dst: DeviceOrHostAddressKHR::default(),
43031             mode: CopyAccelerationStructureModeKHR::default(),
43032         }
43033     }
43034 }
43035 impl CopyAccelerationStructureToMemoryInfoKHR {
builder<'a>() -> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a>43036     pub fn builder<'a>() -> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
43037         CopyAccelerationStructureToMemoryInfoKHRBuilder {
43038             inner: Self::default(),
43039             marker: ::std::marker::PhantomData,
43040         }
43041     }
43042 }
43043 #[repr(transparent)]
43044 pub struct CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
43045     inner: CopyAccelerationStructureToMemoryInfoKHR,
43046     marker: ::std::marker::PhantomData<&'a ()>,
43047 }
43048 impl<'a> ::std::ops::Deref for CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
43049     type Target = CopyAccelerationStructureToMemoryInfoKHR;
deref(&self) -> &Self::Target43050     fn deref(&self) -> &Self::Target {
43051         &self.inner
43052     }
43053 }
43054 impl<'a> ::std::ops::DerefMut for CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43055     fn deref_mut(&mut self) -> &mut Self::Target {
43056         &mut self.inner
43057     }
43058 }
43059 impl<'a> CopyAccelerationStructureToMemoryInfoKHRBuilder<'a> {
src(mut self, src: AccelerationStructureKHR) -> Self43060     pub fn src(mut self, src: AccelerationStructureKHR) -> Self {
43061         self.inner.src = src;
43062         self
43063     }
dst(mut self, dst: DeviceOrHostAddressKHR) -> Self43064     pub fn dst(mut self, dst: DeviceOrHostAddressKHR) -> Self {
43065         self.inner.dst = dst;
43066         self
43067     }
mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self43068     pub fn mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self {
43069         self.inner.mode = mode;
43070         self
43071     }
43072     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43073     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43074     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyAccelerationStructureToMemoryInfoKHR43075     pub fn build(self) -> CopyAccelerationStructureToMemoryInfoKHR {
43076         self.inner
43077     }
43078 }
43079 #[repr(C)]
43080 #[derive(Copy, Clone)]
43081 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>"]
43082 pub struct CopyMemoryToAccelerationStructureInfoKHR {
43083     pub s_type: StructureType,
43084     pub p_next: *const c_void,
43085     pub src: DeviceOrHostAddressConstKHR,
43086     pub dst: AccelerationStructureKHR,
43087     pub mode: CopyAccelerationStructureModeKHR,
43088 }
43089 #[cfg(feature = "debug")]
43090 impl fmt::Debug for CopyMemoryToAccelerationStructureInfoKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result43091     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
43092         fmt.debug_struct("CopyMemoryToAccelerationStructureInfoKHR")
43093             .field("s_type", &self.s_type)
43094             .field("p_next", &self.p_next)
43095             .field("src", &"union")
43096             .field("dst", &self.dst)
43097             .field("mode", &self.mode)
43098             .finish()
43099     }
43100 }
43101 impl ::std::default::Default for CopyMemoryToAccelerationStructureInfoKHR {
default() -> Self43102     fn default() -> Self {
43103         Self {
43104             s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
43105             p_next: ::std::ptr::null(),
43106             src: DeviceOrHostAddressConstKHR::default(),
43107             dst: AccelerationStructureKHR::default(),
43108             mode: CopyAccelerationStructureModeKHR::default(),
43109         }
43110     }
43111 }
43112 impl CopyMemoryToAccelerationStructureInfoKHR {
builder<'a>() -> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a>43113     pub fn builder<'a>() -> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
43114         CopyMemoryToAccelerationStructureInfoKHRBuilder {
43115             inner: Self::default(),
43116             marker: ::std::marker::PhantomData,
43117         }
43118     }
43119 }
43120 #[repr(transparent)]
43121 pub struct CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
43122     inner: CopyMemoryToAccelerationStructureInfoKHR,
43123     marker: ::std::marker::PhantomData<&'a ()>,
43124 }
43125 impl<'a> ::std::ops::Deref for CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
43126     type Target = CopyMemoryToAccelerationStructureInfoKHR;
deref(&self) -> &Self::Target43127     fn deref(&self) -> &Self::Target {
43128         &self.inner
43129     }
43130 }
43131 impl<'a> ::std::ops::DerefMut for CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43132     fn deref_mut(&mut self) -> &mut Self::Target {
43133         &mut self.inner
43134     }
43135 }
43136 impl<'a> CopyMemoryToAccelerationStructureInfoKHRBuilder<'a> {
src(mut self, src: DeviceOrHostAddressConstKHR) -> Self43137     pub fn src(mut self, src: DeviceOrHostAddressConstKHR) -> Self {
43138         self.inner.src = src;
43139         self
43140     }
dst(mut self, dst: AccelerationStructureKHR) -> Self43141     pub fn dst(mut self, dst: AccelerationStructureKHR) -> Self {
43142         self.inner.dst = dst;
43143         self
43144     }
mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self43145     pub fn mode(mut self, mode: CopyAccelerationStructureModeKHR) -> Self {
43146         self.inner.mode = mode;
43147         self
43148     }
43149     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43150     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43151     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyMemoryToAccelerationStructureInfoKHR43152     pub fn build(self) -> CopyMemoryToAccelerationStructureInfoKHR {
43153         self.inner
43154     }
43155 }
43156 #[repr(C)]
43157 #[cfg_attr(feature = "debug", derive(Debug))]
43158 #[derive(Copy, Clone)]
43159 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>"]
43160 pub struct RayTracingPipelineInterfaceCreateInfoKHR {
43161     pub s_type: StructureType,
43162     pub p_next: *const c_void,
43163     pub max_pipeline_ray_payload_size: u32,
43164     pub max_pipeline_ray_hit_attribute_size: u32,
43165 }
43166 impl ::std::default::Default for RayTracingPipelineInterfaceCreateInfoKHR {
default() -> Self43167     fn default() -> Self {
43168         Self {
43169             s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
43170             p_next: ::std::ptr::null(),
43171             max_pipeline_ray_payload_size: u32::default(),
43172             max_pipeline_ray_hit_attribute_size: u32::default(),
43173         }
43174     }
43175 }
43176 impl RayTracingPipelineInterfaceCreateInfoKHR {
builder<'a>() -> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a>43177     pub fn builder<'a>() -> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
43178         RayTracingPipelineInterfaceCreateInfoKHRBuilder {
43179             inner: Self::default(),
43180             marker: ::std::marker::PhantomData,
43181         }
43182     }
43183 }
43184 #[repr(transparent)]
43185 pub struct RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
43186     inner: RayTracingPipelineInterfaceCreateInfoKHR,
43187     marker: ::std::marker::PhantomData<&'a ()>,
43188 }
43189 impl<'a> ::std::ops::Deref for RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
43190     type Target = RayTracingPipelineInterfaceCreateInfoKHR;
deref(&self) -> &Self::Target43191     fn deref(&self) -> &Self::Target {
43192         &self.inner
43193     }
43194 }
43195 impl<'a> ::std::ops::DerefMut for RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43196     fn deref_mut(&mut self) -> &mut Self::Target {
43197         &mut self.inner
43198     }
43199 }
43200 impl<'a> RayTracingPipelineInterfaceCreateInfoKHRBuilder<'a> {
max_pipeline_ray_payload_size(mut self, max_pipeline_ray_payload_size: u32) -> Self43201     pub fn max_pipeline_ray_payload_size(mut self, max_pipeline_ray_payload_size: u32) -> Self {
43202         self.inner.max_pipeline_ray_payload_size = max_pipeline_ray_payload_size;
43203         self
43204     }
max_pipeline_ray_hit_attribute_size( mut self, max_pipeline_ray_hit_attribute_size: u32, ) -> Self43205     pub fn max_pipeline_ray_hit_attribute_size(
43206         mut self,
43207         max_pipeline_ray_hit_attribute_size: u32,
43208     ) -> Self {
43209         self.inner.max_pipeline_ray_hit_attribute_size = max_pipeline_ray_hit_attribute_size;
43210         self
43211     }
43212     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43213     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43214     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RayTracingPipelineInterfaceCreateInfoKHR43215     pub fn build(self) -> RayTracingPipelineInterfaceCreateInfoKHR {
43216         self.inner
43217     }
43218 }
43219 #[repr(C)]
43220 #[cfg_attr(feature = "debug", derive(Debug))]
43221 #[derive(Copy, Clone)]
43222 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLibraryCreateInfoKHR.html>"]
43223 pub struct PipelineLibraryCreateInfoKHR {
43224     pub s_type: StructureType,
43225     pub p_next: *const c_void,
43226     pub library_count: u32,
43227     pub p_libraries: *const Pipeline,
43228 }
43229 impl ::std::default::Default for PipelineLibraryCreateInfoKHR {
default() -> Self43230     fn default() -> Self {
43231         Self {
43232             s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
43233             p_next: ::std::ptr::null(),
43234             library_count: u32::default(),
43235             p_libraries: ::std::ptr::null(),
43236         }
43237     }
43238 }
43239 impl PipelineLibraryCreateInfoKHR {
builder<'a>() -> PipelineLibraryCreateInfoKHRBuilder<'a>43240     pub fn builder<'a>() -> PipelineLibraryCreateInfoKHRBuilder<'a> {
43241         PipelineLibraryCreateInfoKHRBuilder {
43242             inner: Self::default(),
43243             marker: ::std::marker::PhantomData,
43244         }
43245     }
43246 }
43247 #[repr(transparent)]
43248 pub struct PipelineLibraryCreateInfoKHRBuilder<'a> {
43249     inner: PipelineLibraryCreateInfoKHR,
43250     marker: ::std::marker::PhantomData<&'a ()>,
43251 }
43252 impl<'a> ::std::ops::Deref for PipelineLibraryCreateInfoKHRBuilder<'a> {
43253     type Target = PipelineLibraryCreateInfoKHR;
deref(&self) -> &Self::Target43254     fn deref(&self) -> &Self::Target {
43255         &self.inner
43256     }
43257 }
43258 impl<'a> ::std::ops::DerefMut for PipelineLibraryCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43259     fn deref_mut(&mut self) -> &mut Self::Target {
43260         &mut self.inner
43261     }
43262 }
43263 impl<'a> PipelineLibraryCreateInfoKHRBuilder<'a> {
libraries(mut self, libraries: &'a [Pipeline]) -> Self43264     pub fn libraries(mut self, libraries: &'a [Pipeline]) -> Self {
43265         self.inner.library_count = libraries.len() as _;
43266         self.inner.p_libraries = libraries.as_ptr();
43267         self
43268     }
43269     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43270     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43271     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineLibraryCreateInfoKHR43272     pub fn build(self) -> PipelineLibraryCreateInfoKHR {
43273         self.inner
43274     }
43275 }
43276 #[repr(C)]
43277 #[cfg_attr(feature = "debug", derive(Debug))]
43278 #[derive(Copy, Clone)]
43279 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>"]
43280 pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
43281     pub s_type: StructureType,
43282     pub p_next: *mut c_void,
43283     pub extended_dynamic_state: Bool32,
43284 }
43285 impl ::std::default::Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
default() -> Self43286     fn default() -> Self {
43287         Self {
43288             s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
43289             p_next: ::std::ptr::null_mut(),
43290             extended_dynamic_state: Bool32::default(),
43291         }
43292     }
43293 }
43294 impl PhysicalDeviceExtendedDynamicStateFeaturesEXT {
builder<'a>() -> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a>43295     pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
43296         PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder {
43297             inner: Self::default(),
43298             marker: ::std::marker::PhantomData,
43299         }
43300     }
43301 }
43302 #[repr(transparent)]
43303 pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
43304     inner: PhysicalDeviceExtendedDynamicStateFeaturesEXT,
43305     marker: ::std::marker::PhantomData<&'a ()>,
43306 }
43307 unsafe impl ExtendsPhysicalDeviceFeatures2
43308     for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'_>
43309 {
43310 }
43311 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
43312 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'_> {}
43313 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
43314 impl<'a> ::std::ops::Deref for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
43315     type Target = PhysicalDeviceExtendedDynamicStateFeaturesEXT;
deref(&self) -> &Self::Target43316     fn deref(&self) -> &Self::Target {
43317         &self.inner
43318     }
43319 }
43320 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43321     fn deref_mut(&mut self) -> &mut Self::Target {
43322         &mut self.inner
43323     }
43324 }
43325 impl<'a> PhysicalDeviceExtendedDynamicStateFeaturesEXTBuilder<'a> {
extended_dynamic_state(mut self, extended_dynamic_state: bool) -> Self43326     pub fn extended_dynamic_state(mut self, extended_dynamic_state: bool) -> Self {
43327         self.inner.extended_dynamic_state = extended_dynamic_state.into();
43328         self
43329     }
43330     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43331     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43332     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExtendedDynamicStateFeaturesEXT43333     pub fn build(self) -> PhysicalDeviceExtendedDynamicStateFeaturesEXT {
43334         self.inner
43335     }
43336 }
43337 #[repr(C)]
43338 #[cfg_attr(feature = "debug", derive(Debug))]
43339 #[derive(Copy, Clone)]
43340 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>"]
43341 pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
43342     pub s_type: StructureType,
43343     pub p_next: *mut c_void,
43344     pub extended_dynamic_state2: Bool32,
43345     pub extended_dynamic_state2_logic_op: Bool32,
43346     pub extended_dynamic_state2_patch_control_points: Bool32,
43347 }
43348 impl ::std::default::Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
default() -> Self43349     fn default() -> Self {
43350         Self {
43351             s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
43352             p_next: ::std::ptr::null_mut(),
43353             extended_dynamic_state2: Bool32::default(),
43354             extended_dynamic_state2_logic_op: Bool32::default(),
43355             extended_dynamic_state2_patch_control_points: Bool32::default(),
43356         }
43357     }
43358 }
43359 impl PhysicalDeviceExtendedDynamicState2FeaturesEXT {
builder<'a>() -> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a>43360     pub fn builder<'a>() -> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
43361         PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder {
43362             inner: Self::default(),
43363             marker: ::std::marker::PhantomData,
43364         }
43365     }
43366 }
43367 #[repr(transparent)]
43368 pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
43369     inner: PhysicalDeviceExtendedDynamicState2FeaturesEXT,
43370     marker: ::std::marker::PhantomData<&'a ()>,
43371 }
43372 unsafe impl ExtendsPhysicalDeviceFeatures2
43373     for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'_>
43374 {
43375 }
43376 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
43377 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'_> {}
43378 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
43379 impl<'a> ::std::ops::Deref for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
43380     type Target = PhysicalDeviceExtendedDynamicState2FeaturesEXT;
deref(&self) -> &Self::Target43381     fn deref(&self) -> &Self::Target {
43382         &self.inner
43383     }
43384 }
43385 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43386     fn deref_mut(&mut self) -> &mut Self::Target {
43387         &mut self.inner
43388     }
43389 }
43390 impl<'a> PhysicalDeviceExtendedDynamicState2FeaturesEXTBuilder<'a> {
extended_dynamic_state2(mut self, extended_dynamic_state2: bool) -> Self43391     pub fn extended_dynamic_state2(mut self, extended_dynamic_state2: bool) -> Self {
43392         self.inner.extended_dynamic_state2 = extended_dynamic_state2.into();
43393         self
43394     }
extended_dynamic_state2_logic_op( mut self, extended_dynamic_state2_logic_op: bool, ) -> Self43395     pub fn extended_dynamic_state2_logic_op(
43396         mut self,
43397         extended_dynamic_state2_logic_op: bool,
43398     ) -> Self {
43399         self.inner.extended_dynamic_state2_logic_op = extended_dynamic_state2_logic_op.into();
43400         self
43401     }
extended_dynamic_state2_patch_control_points( mut self, extended_dynamic_state2_patch_control_points: bool, ) -> Self43402     pub fn extended_dynamic_state2_patch_control_points(
43403         mut self,
43404         extended_dynamic_state2_patch_control_points: bool,
43405     ) -> Self {
43406         self.inner.extended_dynamic_state2_patch_control_points =
43407             extended_dynamic_state2_patch_control_points.into();
43408         self
43409     }
43410     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43411     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43412     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExtendedDynamicState2FeaturesEXT43413     pub fn build(self) -> PhysicalDeviceExtendedDynamicState2FeaturesEXT {
43414         self.inner
43415     }
43416 }
43417 #[repr(C)]
43418 #[cfg_attr(feature = "debug", derive(Debug))]
43419 #[derive(Copy, Clone)]
43420 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassTransformBeginInfoQCOM.html>"]
43421 pub struct RenderPassTransformBeginInfoQCOM {
43422     pub s_type: StructureType,
43423     pub p_next: *mut c_void,
43424     pub transform: SurfaceTransformFlagsKHR,
43425 }
43426 impl ::std::default::Default for RenderPassTransformBeginInfoQCOM {
default() -> Self43427     fn default() -> Self {
43428         Self {
43429             s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
43430             p_next: ::std::ptr::null_mut(),
43431             transform: SurfaceTransformFlagsKHR::default(),
43432         }
43433     }
43434 }
43435 impl RenderPassTransformBeginInfoQCOM {
builder<'a>() -> RenderPassTransformBeginInfoQCOMBuilder<'a>43436     pub fn builder<'a>() -> RenderPassTransformBeginInfoQCOMBuilder<'a> {
43437         RenderPassTransformBeginInfoQCOMBuilder {
43438             inner: Self::default(),
43439             marker: ::std::marker::PhantomData,
43440         }
43441     }
43442 }
43443 #[repr(transparent)]
43444 pub struct RenderPassTransformBeginInfoQCOMBuilder<'a> {
43445     inner: RenderPassTransformBeginInfoQCOM,
43446     marker: ::std::marker::PhantomData<&'a ()>,
43447 }
43448 unsafe impl ExtendsRenderPassBeginInfo for RenderPassTransformBeginInfoQCOMBuilder<'_> {}
43449 unsafe impl ExtendsRenderPassBeginInfo for RenderPassTransformBeginInfoQCOM {}
43450 impl<'a> ::std::ops::Deref for RenderPassTransformBeginInfoQCOMBuilder<'a> {
43451     type Target = RenderPassTransformBeginInfoQCOM;
deref(&self) -> &Self::Target43452     fn deref(&self) -> &Self::Target {
43453         &self.inner
43454     }
43455 }
43456 impl<'a> ::std::ops::DerefMut for RenderPassTransformBeginInfoQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43457     fn deref_mut(&mut self) -> &mut Self::Target {
43458         &mut self.inner
43459     }
43460 }
43461 impl<'a> RenderPassTransformBeginInfoQCOMBuilder<'a> {
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self43462     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
43463         self.inner.transform = transform;
43464         self
43465     }
43466     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43467     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43468     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderPassTransformBeginInfoQCOM43469     pub fn build(self) -> RenderPassTransformBeginInfoQCOM {
43470         self.inner
43471     }
43472 }
43473 #[repr(C)]
43474 #[cfg_attr(feature = "debug", derive(Debug))]
43475 #[derive(Copy, Clone)]
43476 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyCommandTransformInfoQCOM.html>"]
43477 pub struct CopyCommandTransformInfoQCOM {
43478     pub s_type: StructureType,
43479     pub p_next: *const c_void,
43480     pub transform: SurfaceTransformFlagsKHR,
43481 }
43482 impl ::std::default::Default for CopyCommandTransformInfoQCOM {
default() -> Self43483     fn default() -> Self {
43484         Self {
43485             s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
43486             p_next: ::std::ptr::null(),
43487             transform: SurfaceTransformFlagsKHR::default(),
43488         }
43489     }
43490 }
43491 impl CopyCommandTransformInfoQCOM {
builder<'a>() -> CopyCommandTransformInfoQCOMBuilder<'a>43492     pub fn builder<'a>() -> CopyCommandTransformInfoQCOMBuilder<'a> {
43493         CopyCommandTransformInfoQCOMBuilder {
43494             inner: Self::default(),
43495             marker: ::std::marker::PhantomData,
43496         }
43497     }
43498 }
43499 #[repr(transparent)]
43500 pub struct CopyCommandTransformInfoQCOMBuilder<'a> {
43501     inner: CopyCommandTransformInfoQCOM,
43502     marker: ::std::marker::PhantomData<&'a ()>,
43503 }
43504 unsafe impl ExtendsBufferImageCopy2KHR for CopyCommandTransformInfoQCOMBuilder<'_> {}
43505 unsafe impl ExtendsBufferImageCopy2KHR for CopyCommandTransformInfoQCOM {}
43506 unsafe impl ExtendsImageBlit2KHR for CopyCommandTransformInfoQCOMBuilder<'_> {}
43507 unsafe impl ExtendsImageBlit2KHR for CopyCommandTransformInfoQCOM {}
43508 impl<'a> ::std::ops::Deref for CopyCommandTransformInfoQCOMBuilder<'a> {
43509     type Target = CopyCommandTransformInfoQCOM;
deref(&self) -> &Self::Target43510     fn deref(&self) -> &Self::Target {
43511         &self.inner
43512     }
43513 }
43514 impl<'a> ::std::ops::DerefMut for CopyCommandTransformInfoQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43515     fn deref_mut(&mut self) -> &mut Self::Target {
43516         &mut self.inner
43517     }
43518 }
43519 impl<'a> CopyCommandTransformInfoQCOMBuilder<'a> {
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self43520     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
43521         self.inner.transform = transform;
43522         self
43523     }
43524     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43525     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43526     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyCommandTransformInfoQCOM43527     pub fn build(self) -> CopyCommandTransformInfoQCOM {
43528         self.inner
43529     }
43530 }
43531 #[repr(C)]
43532 #[cfg_attr(feature = "debug", derive(Debug))]
43533 #[derive(Copy, Clone)]
43534 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>"]
43535 pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
43536     pub s_type: StructureType,
43537     pub p_next: *mut c_void,
43538     pub transform: SurfaceTransformFlagsKHR,
43539     pub render_area: Rect2D,
43540 }
43541 impl ::std::default::Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
default() -> Self43542     fn default() -> Self {
43543         Self {
43544             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
43545             p_next: ::std::ptr::null_mut(),
43546             transform: SurfaceTransformFlagsKHR::default(),
43547             render_area: Rect2D::default(),
43548         }
43549     }
43550 }
43551 impl CommandBufferInheritanceRenderPassTransformInfoQCOM {
builder<'a>() -> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a>43552     pub fn builder<'a>() -> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
43553         CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder {
43554             inner: Self::default(),
43555             marker: ::std::marker::PhantomData,
43556         }
43557     }
43558 }
43559 #[repr(transparent)]
43560 pub struct CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
43561     inner: CommandBufferInheritanceRenderPassTransformInfoQCOM,
43562     marker: ::std::marker::PhantomData<&'a ()>,
43563 }
43564 unsafe impl ExtendsCommandBufferInheritanceInfo
43565     for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'_>
43566 {
43567 }
43568 unsafe impl ExtendsCommandBufferInheritanceInfo
43569     for CommandBufferInheritanceRenderPassTransformInfoQCOM
43570 {
43571 }
43572 impl<'a> ::std::ops::Deref for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
43573     type Target = CommandBufferInheritanceRenderPassTransformInfoQCOM;
deref(&self) -> &Self::Target43574     fn deref(&self) -> &Self::Target {
43575         &self.inner
43576     }
43577 }
43578 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43579     fn deref_mut(&mut self) -> &mut Self::Target {
43580         &mut self.inner
43581     }
43582 }
43583 impl<'a> CommandBufferInheritanceRenderPassTransformInfoQCOMBuilder<'a> {
transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self43584     pub fn transform(mut self, transform: SurfaceTransformFlagsKHR) -> Self {
43585         self.inner.transform = transform;
43586         self
43587     }
render_area(mut self, render_area: Rect2D) -> Self43588     pub fn render_area(mut self, render_area: Rect2D) -> Self {
43589         self.inner.render_area = render_area;
43590         self
43591     }
43592     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43593     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43594     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceRenderPassTransformInfoQCOM43595     pub fn build(self) -> CommandBufferInheritanceRenderPassTransformInfoQCOM {
43596         self.inner
43597     }
43598 }
43599 #[repr(C)]
43600 #[cfg_attr(feature = "debug", derive(Debug))]
43601 #[derive(Copy, Clone)]
43602 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>"]
43603 pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
43604     pub s_type: StructureType,
43605     pub p_next: *mut c_void,
43606     pub diagnostics_config: Bool32,
43607 }
43608 impl ::std::default::Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
default() -> Self43609     fn default() -> Self {
43610         Self {
43611             s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
43612             p_next: ::std::ptr::null_mut(),
43613             diagnostics_config: Bool32::default(),
43614         }
43615     }
43616 }
43617 impl PhysicalDeviceDiagnosticsConfigFeaturesNV {
builder<'a>() -> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a>43618     pub fn builder<'a>() -> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43619         PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder {
43620             inner: Self::default(),
43621             marker: ::std::marker::PhantomData,
43622         }
43623     }
43624 }
43625 #[repr(transparent)]
43626 pub struct PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43627     inner: PhysicalDeviceDiagnosticsConfigFeaturesNV,
43628     marker: ::std::marker::PhantomData<&'a ()>,
43629 }
43630 unsafe impl ExtendsPhysicalDeviceFeatures2
43631     for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'_>
43632 {
43633 }
43634 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
43635 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'_> {}
43636 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
43637 impl<'a> ::std::ops::Deref for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
43638     type Target = PhysicalDeviceDiagnosticsConfigFeaturesNV;
deref(&self) -> &Self::Target43639     fn deref(&self) -> &Self::Target {
43640         &self.inner
43641     }
43642 }
43643 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43644     fn deref_mut(&mut self) -> &mut Self::Target {
43645         &mut self.inner
43646     }
43647 }
43648 impl<'a> PhysicalDeviceDiagnosticsConfigFeaturesNVBuilder<'a> {
diagnostics_config(mut self, diagnostics_config: bool) -> Self43649     pub fn diagnostics_config(mut self, diagnostics_config: bool) -> Self {
43650         self.inner.diagnostics_config = diagnostics_config.into();
43651         self
43652     }
43653     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43654     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43655     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDiagnosticsConfigFeaturesNV43656     pub fn build(self) -> PhysicalDeviceDiagnosticsConfigFeaturesNV {
43657         self.inner
43658     }
43659 }
43660 #[repr(C)]
43661 #[cfg_attr(feature = "debug", derive(Debug))]
43662 #[derive(Copy, Clone)]
43663 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>"]
43664 pub struct DeviceDiagnosticsConfigCreateInfoNV {
43665     pub s_type: StructureType,
43666     pub p_next: *const c_void,
43667     pub flags: DeviceDiagnosticsConfigFlagsNV,
43668 }
43669 impl ::std::default::Default for DeviceDiagnosticsConfigCreateInfoNV {
default() -> Self43670     fn default() -> Self {
43671         Self {
43672             s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
43673             p_next: ::std::ptr::null(),
43674             flags: DeviceDiagnosticsConfigFlagsNV::default(),
43675         }
43676     }
43677 }
43678 impl DeviceDiagnosticsConfigCreateInfoNV {
builder<'a>() -> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a>43679     pub fn builder<'a>() -> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43680         DeviceDiagnosticsConfigCreateInfoNVBuilder {
43681             inner: Self::default(),
43682             marker: ::std::marker::PhantomData,
43683         }
43684     }
43685 }
43686 #[repr(transparent)]
43687 pub struct DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43688     inner: DeviceDiagnosticsConfigCreateInfoNV,
43689     marker: ::std::marker::PhantomData<&'a ()>,
43690 }
43691 unsafe impl ExtendsDeviceCreateInfo for DeviceDiagnosticsConfigCreateInfoNVBuilder<'_> {}
43692 unsafe impl ExtendsDeviceCreateInfo for DeviceDiagnosticsConfigCreateInfoNV {}
43693 impl<'a> ::std::ops::Deref for DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
43694     type Target = DeviceDiagnosticsConfigCreateInfoNV;
deref(&self) -> &Self::Target43695     fn deref(&self) -> &Self::Target {
43696         &self.inner
43697     }
43698 }
43699 impl<'a> ::std::ops::DerefMut for DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43700     fn deref_mut(&mut self) -> &mut Self::Target {
43701         &mut self.inner
43702     }
43703 }
43704 impl<'a> DeviceDiagnosticsConfigCreateInfoNVBuilder<'a> {
flags(mut self, flags: DeviceDiagnosticsConfigFlagsNV) -> Self43705     pub fn flags(mut self, flags: DeviceDiagnosticsConfigFlagsNV) -> Self {
43706         self.inner.flags = flags;
43707         self
43708     }
43709     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43710     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43711     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DeviceDiagnosticsConfigCreateInfoNV43712     pub fn build(self) -> DeviceDiagnosticsConfigCreateInfoNV {
43713         self.inner
43714     }
43715 }
43716 #[repr(C)]
43717 #[cfg_attr(feature = "debug", derive(Debug))]
43718 #[derive(Copy, Clone)]
43719 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>"]
43720 pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
43721     pub s_type: StructureType,
43722     pub p_next: *mut c_void,
43723     pub shader_zero_initialize_workgroup_memory: Bool32,
43724 }
43725 impl ::std::default::Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
default() -> Self43726     fn default() -> Self {
43727         Self {
43728             s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR,
43729             p_next: ::std::ptr::null_mut(),
43730             shader_zero_initialize_workgroup_memory: Bool32::default(),
43731         }
43732     }
43733 }
43734 impl PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
builder<'a>() -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a>43735     pub fn builder<'a>() -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
43736         PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder {
43737             inner: Self::default(),
43738             marker: ::std::marker::PhantomData,
43739         }
43740     }
43741 }
43742 #[repr(transparent)]
43743 pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
43744     inner: PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR,
43745     marker: ::std::marker::PhantomData<&'a ()>,
43746 }
43747 unsafe impl ExtendsPhysicalDeviceFeatures2
43748     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'_>
43749 {
43750 }
43751 unsafe impl ExtendsPhysicalDeviceFeatures2
43752     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
43753 {
43754 }
43755 unsafe impl ExtendsDeviceCreateInfo
43756     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'_>
43757 {
43758 }
43759 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {}
43760 impl<'a> ::std::ops::Deref for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
43761     type Target = PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
deref(&self) -> &Self::Target43762     fn deref(&self) -> &Self::Target {
43763         &self.inner
43764     }
43765 }
43766 impl<'a> ::std::ops::DerefMut
43767     for PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a>
43768 {
deref_mut(&mut self) -> &mut Self::Target43769     fn deref_mut(&mut self) -> &mut Self::Target {
43770         &mut self.inner
43771     }
43772 }
43773 impl<'a> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRBuilder<'a> {
shader_zero_initialize_workgroup_memory( mut self, shader_zero_initialize_workgroup_memory: bool, ) -> Self43774     pub fn shader_zero_initialize_workgroup_memory(
43775         mut self,
43776         shader_zero_initialize_workgroup_memory: bool,
43777     ) -> Self {
43778         self.inner.shader_zero_initialize_workgroup_memory =
43779             shader_zero_initialize_workgroup_memory.into();
43780         self
43781     }
43782     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43783     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43784     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR43785     pub fn build(self) -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
43786         self.inner
43787     }
43788 }
43789 #[repr(C)]
43790 #[cfg_attr(feature = "debug", derive(Debug))]
43791 #[derive(Copy, Clone)]
43792 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>"]
43793 pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
43794     pub s_type: StructureType,
43795     pub p_next: *mut c_void,
43796     pub shader_subgroup_uniform_control_flow: Bool32,
43797 }
43798 impl ::std::default::Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
default() -> Self43799     fn default() -> Self {
43800         Self {
43801             s_type:
43802                 StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
43803             p_next: ::std::ptr::null_mut(),
43804             shader_subgroup_uniform_control_flow: Bool32::default(),
43805         }
43806     }
43807 }
43808 impl PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a>43809     pub fn builder<'a>() -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
43810         PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder {
43811             inner: Self::default(),
43812             marker: ::std::marker::PhantomData,
43813         }
43814     }
43815 }
43816 #[repr(transparent)]
43817 pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
43818     inner: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR,
43819     marker: ::std::marker::PhantomData<&'a ()>,
43820 }
43821 unsafe impl ExtendsPhysicalDeviceFeatures2
43822     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'_>
43823 {
43824 }
43825 unsafe impl ExtendsPhysicalDeviceFeatures2
43826     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
43827 {
43828 }
43829 unsafe impl ExtendsDeviceCreateInfo
43830     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'_>
43831 {
43832 }
43833 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
43834 impl<'a> ::std::ops::Deref
43835     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a>
43836 {
43837     type Target = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
deref(&self) -> &Self::Target43838     fn deref(&self) -> &Self::Target {
43839         &self.inner
43840     }
43841 }
43842 impl<'a> ::std::ops::DerefMut
43843     for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a>
43844 {
deref_mut(&mut self) -> &mut Self::Target43845     fn deref_mut(&mut self) -> &mut Self::Target {
43846         &mut self.inner
43847     }
43848 }
43849 impl<'a> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRBuilder<'a> {
shader_subgroup_uniform_control_flow( mut self, shader_subgroup_uniform_control_flow: bool, ) -> Self43850     pub fn shader_subgroup_uniform_control_flow(
43851         mut self,
43852         shader_subgroup_uniform_control_flow: bool,
43853     ) -> Self {
43854         self.inner.shader_subgroup_uniform_control_flow =
43855             shader_subgroup_uniform_control_flow.into();
43856         self
43857     }
43858     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43859     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43860     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR43861     pub fn build(self) -> PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
43862         self.inner
43863     }
43864 }
43865 #[repr(C)]
43866 #[cfg_attr(feature = "debug", derive(Debug))]
43867 #[derive(Copy, Clone)]
43868 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>"]
43869 pub struct PhysicalDeviceRobustness2FeaturesEXT {
43870     pub s_type: StructureType,
43871     pub p_next: *mut c_void,
43872     pub robust_buffer_access2: Bool32,
43873     pub robust_image_access2: Bool32,
43874     pub null_descriptor: Bool32,
43875 }
43876 impl ::std::default::Default for PhysicalDeviceRobustness2FeaturesEXT {
default() -> Self43877     fn default() -> Self {
43878         Self {
43879             s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT,
43880             p_next: ::std::ptr::null_mut(),
43881             robust_buffer_access2: Bool32::default(),
43882             robust_image_access2: Bool32::default(),
43883             null_descriptor: Bool32::default(),
43884         }
43885     }
43886 }
43887 impl PhysicalDeviceRobustness2FeaturesEXT {
builder<'a>() -> PhysicalDeviceRobustness2FeaturesEXTBuilder<'a>43888     pub fn builder<'a>() -> PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
43889         PhysicalDeviceRobustness2FeaturesEXTBuilder {
43890             inner: Self::default(),
43891             marker: ::std::marker::PhantomData,
43892         }
43893     }
43894 }
43895 #[repr(transparent)]
43896 pub struct PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
43897     inner: PhysicalDeviceRobustness2FeaturesEXT,
43898     marker: ::std::marker::PhantomData<&'a ()>,
43899 }
43900 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRobustness2FeaturesEXTBuilder<'_> {}
43901 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRobustness2FeaturesEXT {}
43902 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRobustness2FeaturesEXTBuilder<'_> {}
43903 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRobustness2FeaturesEXT {}
43904 impl<'a> ::std::ops::Deref for PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
43905     type Target = PhysicalDeviceRobustness2FeaturesEXT;
deref(&self) -> &Self::Target43906     fn deref(&self) -> &Self::Target {
43907         &self.inner
43908     }
43909 }
43910 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43911     fn deref_mut(&mut self) -> &mut Self::Target {
43912         &mut self.inner
43913     }
43914 }
43915 impl<'a> PhysicalDeviceRobustness2FeaturesEXTBuilder<'a> {
robust_buffer_access2(mut self, robust_buffer_access2: bool) -> Self43916     pub fn robust_buffer_access2(mut self, robust_buffer_access2: bool) -> Self {
43917         self.inner.robust_buffer_access2 = robust_buffer_access2.into();
43918         self
43919     }
robust_image_access2(mut self, robust_image_access2: bool) -> Self43920     pub fn robust_image_access2(mut self, robust_image_access2: bool) -> Self {
43921         self.inner.robust_image_access2 = robust_image_access2.into();
43922         self
43923     }
null_descriptor(mut self, null_descriptor: bool) -> Self43924     pub fn null_descriptor(mut self, null_descriptor: bool) -> Self {
43925         self.inner.null_descriptor = null_descriptor.into();
43926         self
43927     }
43928     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43929     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
43930     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRobustness2FeaturesEXT43931     pub fn build(self) -> PhysicalDeviceRobustness2FeaturesEXT {
43932         self.inner
43933     }
43934 }
43935 #[repr(C)]
43936 #[cfg_attr(feature = "debug", derive(Debug))]
43937 #[derive(Copy, Clone)]
43938 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>"]
43939 pub struct PhysicalDeviceRobustness2PropertiesEXT {
43940     pub s_type: StructureType,
43941     pub p_next: *mut c_void,
43942     pub robust_storage_buffer_access_size_alignment: DeviceSize,
43943     pub robust_uniform_buffer_access_size_alignment: DeviceSize,
43944 }
43945 impl ::std::default::Default for PhysicalDeviceRobustness2PropertiesEXT {
default() -> Self43946     fn default() -> Self {
43947         Self {
43948             s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT,
43949             p_next: ::std::ptr::null_mut(),
43950             robust_storage_buffer_access_size_alignment: DeviceSize::default(),
43951             robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
43952         }
43953     }
43954 }
43955 impl PhysicalDeviceRobustness2PropertiesEXT {
builder<'a>() -> PhysicalDeviceRobustness2PropertiesEXTBuilder<'a>43956     pub fn builder<'a>() -> PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
43957         PhysicalDeviceRobustness2PropertiesEXTBuilder {
43958             inner: Self::default(),
43959             marker: ::std::marker::PhantomData,
43960         }
43961     }
43962 }
43963 #[repr(transparent)]
43964 pub struct PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
43965     inner: PhysicalDeviceRobustness2PropertiesEXT,
43966     marker: ::std::marker::PhantomData<&'a ()>,
43967 }
43968 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRobustness2PropertiesEXTBuilder<'_> {}
43969 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceRobustness2PropertiesEXT {}
43970 impl<'a> ::std::ops::Deref for PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
43971     type Target = PhysicalDeviceRobustness2PropertiesEXT;
deref(&self) -> &Self::Target43972     fn deref(&self) -> &Self::Target {
43973         &self.inner
43974     }
43975 }
43976 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target43977     fn deref_mut(&mut self) -> &mut Self::Target {
43978         &mut self.inner
43979     }
43980 }
43981 impl<'a> PhysicalDeviceRobustness2PropertiesEXTBuilder<'a> {
robust_storage_buffer_access_size_alignment( mut self, robust_storage_buffer_access_size_alignment: DeviceSize, ) -> Self43982     pub fn robust_storage_buffer_access_size_alignment(
43983         mut self,
43984         robust_storage_buffer_access_size_alignment: DeviceSize,
43985     ) -> Self {
43986         self.inner.robust_storage_buffer_access_size_alignment =
43987             robust_storage_buffer_access_size_alignment;
43988         self
43989     }
robust_uniform_buffer_access_size_alignment( mut self, robust_uniform_buffer_access_size_alignment: DeviceSize, ) -> Self43990     pub fn robust_uniform_buffer_access_size_alignment(
43991         mut self,
43992         robust_uniform_buffer_access_size_alignment: DeviceSize,
43993     ) -> Self {
43994         self.inner.robust_uniform_buffer_access_size_alignment =
43995             robust_uniform_buffer_access_size_alignment;
43996         self
43997     }
43998     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
43999     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44000     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRobustness2PropertiesEXT44001     pub fn build(self) -> PhysicalDeviceRobustness2PropertiesEXT {
44002         self.inner
44003     }
44004 }
44005 #[repr(C)]
44006 #[cfg_attr(feature = "debug", derive(Debug))]
44007 #[derive(Copy, Clone)]
44008 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>"]
44009 pub struct PhysicalDeviceImageRobustnessFeaturesEXT {
44010     pub s_type: StructureType,
44011     pub p_next: *mut c_void,
44012     pub robust_image_access: Bool32,
44013 }
44014 impl ::std::default::Default for PhysicalDeviceImageRobustnessFeaturesEXT {
default() -> Self44015     fn default() -> Self {
44016         Self {
44017             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT,
44018             p_next: ::std::ptr::null_mut(),
44019             robust_image_access: Bool32::default(),
44020         }
44021     }
44022 }
44023 impl PhysicalDeviceImageRobustnessFeaturesEXT {
builder<'a>() -> PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a>44024     pub fn builder<'a>() -> PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
44025         PhysicalDeviceImageRobustnessFeaturesEXTBuilder {
44026             inner: Self::default(),
44027             marker: ::std::marker::PhantomData,
44028         }
44029     }
44030 }
44031 #[repr(transparent)]
44032 pub struct PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
44033     inner: PhysicalDeviceImageRobustnessFeaturesEXT,
44034     marker: ::std::marker::PhantomData<&'a ()>,
44035 }
44036 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'_> {}
44037 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageRobustnessFeaturesEXT {}
44038 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'_> {}
44039 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageRobustnessFeaturesEXT {}
44040 impl<'a> ::std::ops::Deref for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
44041     type Target = PhysicalDeviceImageRobustnessFeaturesEXT;
deref(&self) -> &Self::Target44042     fn deref(&self) -> &Self::Target {
44043         &self.inner
44044     }
44045 }
44046 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'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> PhysicalDeviceImageRobustnessFeaturesEXTBuilder<'a> {
robust_image_access(mut self, robust_image_access: bool) -> Self44052     pub fn robust_image_access(mut self, robust_image_access: bool) -> Self {
44053         self.inner.robust_image_access = robust_image_access.into();
44054         self
44055     }
44056     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44057     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44058     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageRobustnessFeaturesEXT44059     pub fn build(self) -> PhysicalDeviceImageRobustnessFeaturesEXT {
44060         self.inner
44061     }
44062 }
44063 #[repr(C)]
44064 #[cfg_attr(feature = "debug", derive(Debug))]
44065 #[derive(Copy, Clone)]
44066 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>"]
44067 pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
44068     pub s_type: StructureType,
44069     pub p_next: *mut c_void,
44070     pub workgroup_memory_explicit_layout: Bool32,
44071     pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
44072     pub workgroup_memory_explicit_layout8_bit_access: Bool32,
44073     pub workgroup_memory_explicit_layout16_bit_access: Bool32,
44074 }
44075 impl ::std::default::Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
default() -> Self44076     fn default() -> Self {
44077         Self {
44078             s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
44079             p_next: ::std::ptr::null_mut(),
44080             workgroup_memory_explicit_layout: Bool32::default(),
44081             workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
44082             workgroup_memory_explicit_layout8_bit_access: Bool32::default(),
44083             workgroup_memory_explicit_layout16_bit_access: Bool32::default(),
44084         }
44085     }
44086 }
44087 impl PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
builder<'a>() -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a>44088     pub fn builder<'a>() -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
44089         PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder {
44090             inner: Self::default(),
44091             marker: ::std::marker::PhantomData,
44092         }
44093     }
44094 }
44095 #[repr(transparent)]
44096 pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
44097     inner: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR,
44098     marker: ::std::marker::PhantomData<&'a ()>,
44099 }
44100 unsafe impl ExtendsPhysicalDeviceFeatures2
44101     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'_>
44102 {
44103 }
44104 unsafe impl ExtendsPhysicalDeviceFeatures2
44105     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
44106 {
44107 }
44108 unsafe impl ExtendsDeviceCreateInfo
44109     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'_>
44110 {
44111 }
44112 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
44113 impl<'a> ::std::ops::Deref for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
44114     type Target = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
deref(&self) -> &Self::Target44115     fn deref(&self) -> &Self::Target {
44116         &self.inner
44117     }
44118 }
44119 impl<'a> ::std::ops::DerefMut
44120     for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a>
44121 {
deref_mut(&mut self) -> &mut Self::Target44122     fn deref_mut(&mut self) -> &mut Self::Target {
44123         &mut self.inner
44124     }
44125 }
44126 impl<'a> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRBuilder<'a> {
workgroup_memory_explicit_layout( mut self, workgroup_memory_explicit_layout: bool, ) -> Self44127     pub fn workgroup_memory_explicit_layout(
44128         mut self,
44129         workgroup_memory_explicit_layout: bool,
44130     ) -> Self {
44131         self.inner.workgroup_memory_explicit_layout = workgroup_memory_explicit_layout.into();
44132         self
44133     }
workgroup_memory_explicit_layout_scalar_block_layout( mut self, workgroup_memory_explicit_layout_scalar_block_layout: bool, ) -> Self44134     pub fn workgroup_memory_explicit_layout_scalar_block_layout(
44135         mut self,
44136         workgroup_memory_explicit_layout_scalar_block_layout: bool,
44137     ) -> Self {
44138         self.inner
44139             .workgroup_memory_explicit_layout_scalar_block_layout =
44140             workgroup_memory_explicit_layout_scalar_block_layout.into();
44141         self
44142     }
workgroup_memory_explicit_layout8_bit_access( mut self, workgroup_memory_explicit_layout8_bit_access: bool, ) -> Self44143     pub fn workgroup_memory_explicit_layout8_bit_access(
44144         mut self,
44145         workgroup_memory_explicit_layout8_bit_access: bool,
44146     ) -> Self {
44147         self.inner.workgroup_memory_explicit_layout8_bit_access =
44148             workgroup_memory_explicit_layout8_bit_access.into();
44149         self
44150     }
workgroup_memory_explicit_layout16_bit_access( mut self, workgroup_memory_explicit_layout16_bit_access: bool, ) -> Self44151     pub fn workgroup_memory_explicit_layout16_bit_access(
44152         mut self,
44153         workgroup_memory_explicit_layout16_bit_access: bool,
44154     ) -> Self {
44155         self.inner.workgroup_memory_explicit_layout16_bit_access =
44156             workgroup_memory_explicit_layout16_bit_access.into();
44157         self
44158     }
44159     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44160     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44161     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR44162     pub fn build(self) -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
44163         self.inner
44164     }
44165 }
44166 #[repr(C)]
44167 #[cfg_attr(feature = "debug", derive(Debug))]
44168 #[derive(Copy, Clone)]
44169 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>"]
44170 pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
44171     pub s_type: StructureType,
44172     pub p_next: *mut c_void,
44173     pub constant_alpha_color_blend_factors: Bool32,
44174     pub events: Bool32,
44175     pub image_view_format_reinterpretation: Bool32,
44176     pub image_view_format_swizzle: Bool32,
44177     pub image_view2_d_on3_d_image: Bool32,
44178     pub multisample_array_image: Bool32,
44179     pub mutable_comparison_samplers: Bool32,
44180     pub point_polygons: Bool32,
44181     pub sampler_mip_lod_bias: Bool32,
44182     pub separate_stencil_mask_ref: Bool32,
44183     pub shader_sample_rate_interpolation_functions: Bool32,
44184     pub tessellation_isolines: Bool32,
44185     pub tessellation_point_mode: Bool32,
44186     pub triangle_fans: Bool32,
44187     pub vertex_attribute_access_beyond_stride: Bool32,
44188 }
44189 impl ::std::default::Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
default() -> Self44190     fn default() -> Self {
44191         Self {
44192             s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
44193             p_next: ::std::ptr::null_mut(),
44194             constant_alpha_color_blend_factors: Bool32::default(),
44195             events: Bool32::default(),
44196             image_view_format_reinterpretation: Bool32::default(),
44197             image_view_format_swizzle: Bool32::default(),
44198             image_view2_d_on3_d_image: Bool32::default(),
44199             multisample_array_image: Bool32::default(),
44200             mutable_comparison_samplers: Bool32::default(),
44201             point_polygons: Bool32::default(),
44202             sampler_mip_lod_bias: Bool32::default(),
44203             separate_stencil_mask_ref: Bool32::default(),
44204             shader_sample_rate_interpolation_functions: Bool32::default(),
44205             tessellation_isolines: Bool32::default(),
44206             tessellation_point_mode: Bool32::default(),
44207             triangle_fans: Bool32::default(),
44208             vertex_attribute_access_beyond_stride: Bool32::default(),
44209         }
44210     }
44211 }
44212 impl PhysicalDevicePortabilitySubsetFeaturesKHR {
builder<'a>() -> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a>44213     pub fn builder<'a>() -> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44214         PhysicalDevicePortabilitySubsetFeaturesKHRBuilder {
44215             inner: Self::default(),
44216             marker: ::std::marker::PhantomData,
44217         }
44218     }
44219 }
44220 #[repr(transparent)]
44221 pub struct PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44222     inner: PhysicalDevicePortabilitySubsetFeaturesKHR,
44223     marker: ::std::marker::PhantomData<&'a ()>,
44224 }
44225 unsafe impl ExtendsPhysicalDeviceFeatures2
44226     for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'_>
44227 {
44228 }
44229 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevicePortabilitySubsetFeaturesKHR {}
44230 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'_> {}
44231 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevicePortabilitySubsetFeaturesKHR {}
44232 impl<'a> ::std::ops::Deref for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
44233     type Target = PhysicalDevicePortabilitySubsetFeaturesKHR;
deref(&self) -> &Self::Target44234     fn deref(&self) -> &Self::Target {
44235         &self.inner
44236     }
44237 }
44238 impl<'a> ::std::ops::DerefMut for PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44239     fn deref_mut(&mut self) -> &mut Self::Target {
44240         &mut self.inner
44241     }
44242 }
44243 impl<'a> PhysicalDevicePortabilitySubsetFeaturesKHRBuilder<'a> {
constant_alpha_color_blend_factors( mut self, constant_alpha_color_blend_factors: bool, ) -> Self44244     pub fn constant_alpha_color_blend_factors(
44245         mut self,
44246         constant_alpha_color_blend_factors: bool,
44247     ) -> Self {
44248         self.inner.constant_alpha_color_blend_factors = constant_alpha_color_blend_factors.into();
44249         self
44250     }
events(mut self, events: bool) -> Self44251     pub fn events(mut self, events: bool) -> Self {
44252         self.inner.events = events.into();
44253         self
44254     }
image_view_format_reinterpretation( mut self, image_view_format_reinterpretation: bool, ) -> Self44255     pub fn image_view_format_reinterpretation(
44256         mut self,
44257         image_view_format_reinterpretation: bool,
44258     ) -> Self {
44259         self.inner.image_view_format_reinterpretation = image_view_format_reinterpretation.into();
44260         self
44261     }
image_view_format_swizzle(mut self, image_view_format_swizzle: bool) -> Self44262     pub fn image_view_format_swizzle(mut self, image_view_format_swizzle: bool) -> Self {
44263         self.inner.image_view_format_swizzle = image_view_format_swizzle.into();
44264         self
44265     }
image_view2_d_on3_d_image(mut self, image_view2_d_on3_d_image: bool) -> Self44266     pub fn image_view2_d_on3_d_image(mut self, image_view2_d_on3_d_image: bool) -> Self {
44267         self.inner.image_view2_d_on3_d_image = image_view2_d_on3_d_image.into();
44268         self
44269     }
multisample_array_image(mut self, multisample_array_image: bool) -> Self44270     pub fn multisample_array_image(mut self, multisample_array_image: bool) -> Self {
44271         self.inner.multisample_array_image = multisample_array_image.into();
44272         self
44273     }
mutable_comparison_samplers(mut self, mutable_comparison_samplers: bool) -> Self44274     pub fn mutable_comparison_samplers(mut self, mutable_comparison_samplers: bool) -> Self {
44275         self.inner.mutable_comparison_samplers = mutable_comparison_samplers.into();
44276         self
44277     }
point_polygons(mut self, point_polygons: bool) -> Self44278     pub fn point_polygons(mut self, point_polygons: bool) -> Self {
44279         self.inner.point_polygons = point_polygons.into();
44280         self
44281     }
sampler_mip_lod_bias(mut self, sampler_mip_lod_bias: bool) -> Self44282     pub fn sampler_mip_lod_bias(mut self, sampler_mip_lod_bias: bool) -> Self {
44283         self.inner.sampler_mip_lod_bias = sampler_mip_lod_bias.into();
44284         self
44285     }
separate_stencil_mask_ref(mut self, separate_stencil_mask_ref: bool) -> Self44286     pub fn separate_stencil_mask_ref(mut self, separate_stencil_mask_ref: bool) -> Self {
44287         self.inner.separate_stencil_mask_ref = separate_stencil_mask_ref.into();
44288         self
44289     }
shader_sample_rate_interpolation_functions( mut self, shader_sample_rate_interpolation_functions: bool, ) -> Self44290     pub fn shader_sample_rate_interpolation_functions(
44291         mut self,
44292         shader_sample_rate_interpolation_functions: bool,
44293     ) -> Self {
44294         self.inner.shader_sample_rate_interpolation_functions =
44295             shader_sample_rate_interpolation_functions.into();
44296         self
44297     }
tessellation_isolines(mut self, tessellation_isolines: bool) -> Self44298     pub fn tessellation_isolines(mut self, tessellation_isolines: bool) -> Self {
44299         self.inner.tessellation_isolines = tessellation_isolines.into();
44300         self
44301     }
tessellation_point_mode(mut self, tessellation_point_mode: bool) -> Self44302     pub fn tessellation_point_mode(mut self, tessellation_point_mode: bool) -> Self {
44303         self.inner.tessellation_point_mode = tessellation_point_mode.into();
44304         self
44305     }
triangle_fans(mut self, triangle_fans: bool) -> Self44306     pub fn triangle_fans(mut self, triangle_fans: bool) -> Self {
44307         self.inner.triangle_fans = triangle_fans.into();
44308         self
44309     }
vertex_attribute_access_beyond_stride( mut self, vertex_attribute_access_beyond_stride: bool, ) -> Self44310     pub fn vertex_attribute_access_beyond_stride(
44311         mut self,
44312         vertex_attribute_access_beyond_stride: bool,
44313     ) -> Self {
44314         self.inner.vertex_attribute_access_beyond_stride =
44315             vertex_attribute_access_beyond_stride.into();
44316         self
44317     }
44318     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44319     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44320     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePortabilitySubsetFeaturesKHR44321     pub fn build(self) -> PhysicalDevicePortabilitySubsetFeaturesKHR {
44322         self.inner
44323     }
44324 }
44325 #[repr(C)]
44326 #[cfg_attr(feature = "debug", derive(Debug))]
44327 #[derive(Copy, Clone)]
44328 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>"]
44329 pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
44330     pub s_type: StructureType,
44331     pub p_next: *mut c_void,
44332     pub min_vertex_input_binding_stride_alignment: u32,
44333 }
44334 impl ::std::default::Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
default() -> Self44335     fn default() -> Self {
44336         Self {
44337             s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
44338             p_next: ::std::ptr::null_mut(),
44339             min_vertex_input_binding_stride_alignment: u32::default(),
44340         }
44341     }
44342 }
44343 impl PhysicalDevicePortabilitySubsetPropertiesKHR {
builder<'a>() -> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a>44344     pub fn builder<'a>() -> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44345         PhysicalDevicePortabilitySubsetPropertiesKHRBuilder {
44346             inner: Self::default(),
44347             marker: ::std::marker::PhantomData,
44348         }
44349     }
44350 }
44351 #[repr(transparent)]
44352 pub struct PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44353     inner: PhysicalDevicePortabilitySubsetPropertiesKHR,
44354     marker: ::std::marker::PhantomData<&'a ()>,
44355 }
44356 unsafe impl ExtendsPhysicalDeviceProperties2
44357     for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'_>
44358 {
44359 }
44360 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDevicePortabilitySubsetPropertiesKHR {}
44361 impl<'a> ::std::ops::Deref for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
44362     type Target = PhysicalDevicePortabilitySubsetPropertiesKHR;
deref(&self) -> &Self::Target44363     fn deref(&self) -> &Self::Target {
44364         &self.inner
44365     }
44366 }
44367 impl<'a> ::std::ops::DerefMut for PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44368     fn deref_mut(&mut self) -> &mut Self::Target {
44369         &mut self.inner
44370     }
44371 }
44372 impl<'a> PhysicalDevicePortabilitySubsetPropertiesKHRBuilder<'a> {
min_vertex_input_binding_stride_alignment( mut self, min_vertex_input_binding_stride_alignment: u32, ) -> Self44373     pub fn min_vertex_input_binding_stride_alignment(
44374         mut self,
44375         min_vertex_input_binding_stride_alignment: u32,
44376     ) -> Self {
44377         self.inner.min_vertex_input_binding_stride_alignment =
44378             min_vertex_input_binding_stride_alignment;
44379         self
44380     }
44381     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44382     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44383     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevicePortabilitySubsetPropertiesKHR44384     pub fn build(self) -> PhysicalDevicePortabilitySubsetPropertiesKHR {
44385         self.inner
44386     }
44387 }
44388 #[repr(C)]
44389 #[cfg_attr(feature = "debug", derive(Debug))]
44390 #[derive(Copy, Clone)]
44391 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>"]
44392 pub struct PhysicalDevice4444FormatsFeaturesEXT {
44393     pub s_type: StructureType,
44394     pub p_next: *mut c_void,
44395     pub format_a4r4g4b4: Bool32,
44396     pub format_a4b4g4r4: Bool32,
44397 }
44398 impl ::std::default::Default for PhysicalDevice4444FormatsFeaturesEXT {
default() -> Self44399     fn default() -> Self {
44400         Self {
44401             s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
44402             p_next: ::std::ptr::null_mut(),
44403             format_a4r4g4b4: Bool32::default(),
44404             format_a4b4g4r4: Bool32::default(),
44405         }
44406     }
44407 }
44408 impl PhysicalDevice4444FormatsFeaturesEXT {
builder<'a>() -> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a>44409     pub fn builder<'a>() -> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44410         PhysicalDevice4444FormatsFeaturesEXTBuilder {
44411             inner: Self::default(),
44412             marker: ::std::marker::PhantomData,
44413         }
44414     }
44415 }
44416 #[repr(transparent)]
44417 pub struct PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44418     inner: PhysicalDevice4444FormatsFeaturesEXT,
44419     marker: ::std::marker::PhantomData<&'a ()>,
44420 }
44421 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice4444FormatsFeaturesEXTBuilder<'_> {}
44422 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDevice4444FormatsFeaturesEXT {}
44423 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice4444FormatsFeaturesEXTBuilder<'_> {}
44424 unsafe impl ExtendsDeviceCreateInfo for PhysicalDevice4444FormatsFeaturesEXT {}
44425 impl<'a> ::std::ops::Deref for PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
44426     type Target = PhysicalDevice4444FormatsFeaturesEXT;
deref(&self) -> &Self::Target44427     fn deref(&self) -> &Self::Target {
44428         &self.inner
44429     }
44430 }
44431 impl<'a> ::std::ops::DerefMut for PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44432     fn deref_mut(&mut self) -> &mut Self::Target {
44433         &mut self.inner
44434     }
44435 }
44436 impl<'a> PhysicalDevice4444FormatsFeaturesEXTBuilder<'a> {
format_a4r4g4b4(mut self, format_a4r4g4b4: bool) -> Self44437     pub fn format_a4r4g4b4(mut self, format_a4r4g4b4: bool) -> Self {
44438         self.inner.format_a4r4g4b4 = format_a4r4g4b4.into();
44439         self
44440     }
format_a4b4g4r4(mut self, format_a4b4g4r4: bool) -> Self44441     pub fn format_a4b4g4r4(mut self, format_a4b4g4r4: bool) -> Self {
44442         self.inner.format_a4b4g4r4 = format_a4b4g4r4.into();
44443         self
44444     }
44445     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44446     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44447     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDevice4444FormatsFeaturesEXT44448     pub fn build(self) -> PhysicalDevice4444FormatsFeaturesEXT {
44449         self.inner
44450     }
44451 }
44452 #[repr(C)]
44453 #[cfg_attr(feature = "debug", derive(Debug))]
44454 #[derive(Copy, Clone)]
44455 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>"]
44456 pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
44457     pub s_type: StructureType,
44458     pub p_next: *mut c_void,
44459     pub subpass_shading: Bool32,
44460 }
44461 impl ::std::default::Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
default() -> Self44462     fn default() -> Self {
44463         Self {
44464             s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
44465             p_next: ::std::ptr::null_mut(),
44466             subpass_shading: Bool32::default(),
44467         }
44468     }
44469 }
44470 impl PhysicalDeviceSubpassShadingFeaturesHUAWEI {
builder<'a>() -> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a>44471     pub fn builder<'a>() -> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44472         PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder {
44473             inner: Self::default(),
44474             marker: ::std::marker::PhantomData,
44475         }
44476     }
44477 }
44478 #[repr(transparent)]
44479 pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44480     inner: PhysicalDeviceSubpassShadingFeaturesHUAWEI,
44481     marker: ::std::marker::PhantomData<&'a ()>,
44482 }
44483 unsafe impl ExtendsPhysicalDeviceFeatures2
44484     for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'_>
44485 {
44486 }
44487 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
44488 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'_> {}
44489 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
44490 impl<'a> ::std::ops::Deref for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
44491     type Target = PhysicalDeviceSubpassShadingFeaturesHUAWEI;
deref(&self) -> &Self::Target44492     fn deref(&self) -> &Self::Target {
44493         &self.inner
44494     }
44495 }
44496 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44497     fn deref_mut(&mut self) -> &mut Self::Target {
44498         &mut self.inner
44499     }
44500 }
44501 impl<'a> PhysicalDeviceSubpassShadingFeaturesHUAWEIBuilder<'a> {
subpass_shading(mut self, subpass_shading: bool) -> Self44502     pub fn subpass_shading(mut self, subpass_shading: bool) -> Self {
44503         self.inner.subpass_shading = subpass_shading.into();
44504         self
44505     }
44506     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44507     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44508     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSubpassShadingFeaturesHUAWEI44509     pub fn build(self) -> PhysicalDeviceSubpassShadingFeaturesHUAWEI {
44510         self.inner
44511     }
44512 }
44513 #[repr(C)]
44514 #[cfg_attr(feature = "debug", derive(Debug))]
44515 #[derive(Copy, Clone)]
44516 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCopy2KHR.html>"]
44517 pub struct BufferCopy2KHR {
44518     pub s_type: StructureType,
44519     pub p_next: *const c_void,
44520     pub src_offset: DeviceSize,
44521     pub dst_offset: DeviceSize,
44522     pub size: DeviceSize,
44523 }
44524 impl ::std::default::Default for BufferCopy2KHR {
default() -> Self44525     fn default() -> Self {
44526         Self {
44527             s_type: StructureType::BUFFER_COPY_2_KHR,
44528             p_next: ::std::ptr::null(),
44529             src_offset: DeviceSize::default(),
44530             dst_offset: DeviceSize::default(),
44531             size: DeviceSize::default(),
44532         }
44533     }
44534 }
44535 impl BufferCopy2KHR {
builder<'a>() -> BufferCopy2KHRBuilder<'a>44536     pub fn builder<'a>() -> BufferCopy2KHRBuilder<'a> {
44537         BufferCopy2KHRBuilder {
44538             inner: Self::default(),
44539             marker: ::std::marker::PhantomData,
44540         }
44541     }
44542 }
44543 #[repr(transparent)]
44544 pub struct BufferCopy2KHRBuilder<'a> {
44545     inner: BufferCopy2KHR,
44546     marker: ::std::marker::PhantomData<&'a ()>,
44547 }
44548 impl<'a> ::std::ops::Deref for BufferCopy2KHRBuilder<'a> {
44549     type Target = BufferCopy2KHR;
deref(&self) -> &Self::Target44550     fn deref(&self) -> &Self::Target {
44551         &self.inner
44552     }
44553 }
44554 impl<'a> ::std::ops::DerefMut for BufferCopy2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44555     fn deref_mut(&mut self) -> &mut Self::Target {
44556         &mut self.inner
44557     }
44558 }
44559 impl<'a> BufferCopy2KHRBuilder<'a> {
src_offset(mut self, src_offset: DeviceSize) -> Self44560     pub fn src_offset(mut self, src_offset: DeviceSize) -> Self {
44561         self.inner.src_offset = src_offset;
44562         self
44563     }
dst_offset(mut self, dst_offset: DeviceSize) -> Self44564     pub fn dst_offset(mut self, dst_offset: DeviceSize) -> Self {
44565         self.inner.dst_offset = dst_offset;
44566         self
44567     }
size(mut self, size: DeviceSize) -> Self44568     pub fn size(mut self, size: DeviceSize) -> Self {
44569         self.inner.size = size;
44570         self
44571     }
44572     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44573     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44574     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCopy2KHR44575     pub fn build(self) -> BufferCopy2KHR {
44576         self.inner
44577     }
44578 }
44579 #[repr(C)]
44580 #[cfg_attr(feature = "debug", derive(Debug))]
44581 #[derive(Copy, Clone)]
44582 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCopy2KHR.html>"]
44583 pub struct ImageCopy2KHR {
44584     pub s_type: StructureType,
44585     pub p_next: *const c_void,
44586     pub src_subresource: ImageSubresourceLayers,
44587     pub src_offset: Offset3D,
44588     pub dst_subresource: ImageSubresourceLayers,
44589     pub dst_offset: Offset3D,
44590     pub extent: Extent3D,
44591 }
44592 impl ::std::default::Default for ImageCopy2KHR {
default() -> Self44593     fn default() -> Self {
44594         Self {
44595             s_type: StructureType::IMAGE_COPY_2_KHR,
44596             p_next: ::std::ptr::null(),
44597             src_subresource: ImageSubresourceLayers::default(),
44598             src_offset: Offset3D::default(),
44599             dst_subresource: ImageSubresourceLayers::default(),
44600             dst_offset: Offset3D::default(),
44601             extent: Extent3D::default(),
44602         }
44603     }
44604 }
44605 impl ImageCopy2KHR {
builder<'a>() -> ImageCopy2KHRBuilder<'a>44606     pub fn builder<'a>() -> ImageCopy2KHRBuilder<'a> {
44607         ImageCopy2KHRBuilder {
44608             inner: Self::default(),
44609             marker: ::std::marker::PhantomData,
44610         }
44611     }
44612 }
44613 #[repr(transparent)]
44614 pub struct ImageCopy2KHRBuilder<'a> {
44615     inner: ImageCopy2KHR,
44616     marker: ::std::marker::PhantomData<&'a ()>,
44617 }
44618 impl<'a> ::std::ops::Deref for ImageCopy2KHRBuilder<'a> {
44619     type Target = ImageCopy2KHR;
deref(&self) -> &Self::Target44620     fn deref(&self) -> &Self::Target {
44621         &self.inner
44622     }
44623 }
44624 impl<'a> ::std::ops::DerefMut for ImageCopy2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44625     fn deref_mut(&mut self) -> &mut Self::Target {
44626         &mut self.inner
44627     }
44628 }
44629 impl<'a> ImageCopy2KHRBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self44630     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
44631         self.inner.src_subresource = src_subresource;
44632         self
44633     }
src_offset(mut self, src_offset: Offset3D) -> Self44634     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
44635         self.inner.src_offset = src_offset;
44636         self
44637     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self44638     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
44639         self.inner.dst_subresource = dst_subresource;
44640         self
44641     }
dst_offset(mut self, dst_offset: Offset3D) -> Self44642     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
44643         self.inner.dst_offset = dst_offset;
44644         self
44645     }
extent(mut self, extent: Extent3D) -> Self44646     pub fn extent(mut self, extent: Extent3D) -> Self {
44647         self.inner.extent = extent;
44648         self
44649     }
44650     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44651     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44652     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageCopy2KHR44653     pub fn build(self) -> ImageCopy2KHR {
44654         self.inner
44655     }
44656 }
44657 #[repr(C)]
44658 #[cfg_attr(feature = "debug", derive(Debug))]
44659 #[derive(Copy, Clone)]
44660 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageBlit2KHR.html>"]
44661 pub struct ImageBlit2KHR {
44662     pub s_type: StructureType,
44663     pub p_next: *const c_void,
44664     pub src_subresource: ImageSubresourceLayers,
44665     pub src_offsets: [Offset3D; 2],
44666     pub dst_subresource: ImageSubresourceLayers,
44667     pub dst_offsets: [Offset3D; 2],
44668 }
44669 impl ::std::default::Default for ImageBlit2KHR {
default() -> Self44670     fn default() -> Self {
44671         Self {
44672             s_type: StructureType::IMAGE_BLIT_2_KHR,
44673             p_next: ::std::ptr::null(),
44674             src_subresource: ImageSubresourceLayers::default(),
44675             src_offsets: unsafe { ::std::mem::zeroed() },
44676             dst_subresource: ImageSubresourceLayers::default(),
44677             dst_offsets: unsafe { ::std::mem::zeroed() },
44678         }
44679     }
44680 }
44681 impl ImageBlit2KHR {
builder<'a>() -> ImageBlit2KHRBuilder<'a>44682     pub fn builder<'a>() -> ImageBlit2KHRBuilder<'a> {
44683         ImageBlit2KHRBuilder {
44684             inner: Self::default(),
44685             marker: ::std::marker::PhantomData,
44686         }
44687     }
44688 }
44689 #[repr(transparent)]
44690 pub struct ImageBlit2KHRBuilder<'a> {
44691     inner: ImageBlit2KHR,
44692     marker: ::std::marker::PhantomData<&'a ()>,
44693 }
44694 pub unsafe trait ExtendsImageBlit2KHR {}
44695 impl<'a> ::std::ops::Deref for ImageBlit2KHRBuilder<'a> {
44696     type Target = ImageBlit2KHR;
deref(&self) -> &Self::Target44697     fn deref(&self) -> &Self::Target {
44698         &self.inner
44699     }
44700 }
44701 impl<'a> ::std::ops::DerefMut for ImageBlit2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44702     fn deref_mut(&mut self) -> &mut Self::Target {
44703         &mut self.inner
44704     }
44705 }
44706 impl<'a> ImageBlit2KHRBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self44707     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
44708         self.inner.src_subresource = src_subresource;
44709         self
44710     }
src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self44711     pub fn src_offsets(mut self, src_offsets: [Offset3D; 2]) -> Self {
44712         self.inner.src_offsets = src_offsets;
44713         self
44714     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self44715     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
44716         self.inner.dst_subresource = dst_subresource;
44717         self
44718     }
dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self44719     pub fn dst_offsets(mut self, dst_offsets: [Offset3D; 2]) -> Self {
44720         self.inner.dst_offsets = dst_offsets;
44721         self
44722     }
44723     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
44724     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
44725     #[doc = r" valid extension structs can be pushed into the chain."]
44726     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
44727     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageBlit2KHR>(mut self, next: &'a mut T) -> Self44728     pub fn push_next<T: ExtendsImageBlit2KHR>(mut self, next: &'a mut T) -> Self {
44729         unsafe {
44730             let next_ptr = next as *mut T as *mut BaseOutStructure;
44731             let last_next = ptr_chain_iter(next).last().unwrap();
44732             (*last_next).p_next = self.inner.p_next as _;
44733             self.inner.p_next = next_ptr as _;
44734         }
44735         self
44736     }
44737     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44738     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44739     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageBlit2KHR44740     pub fn build(self) -> ImageBlit2KHR {
44741         self.inner
44742     }
44743 }
44744 #[repr(C)]
44745 #[cfg_attr(feature = "debug", derive(Debug))]
44746 #[derive(Copy, Clone)]
44747 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferImageCopy2KHR.html>"]
44748 pub struct BufferImageCopy2KHR {
44749     pub s_type: StructureType,
44750     pub p_next: *const c_void,
44751     pub buffer_offset: DeviceSize,
44752     pub buffer_row_length: u32,
44753     pub buffer_image_height: u32,
44754     pub image_subresource: ImageSubresourceLayers,
44755     pub image_offset: Offset3D,
44756     pub image_extent: Extent3D,
44757 }
44758 impl ::std::default::Default for BufferImageCopy2KHR {
default() -> Self44759     fn default() -> Self {
44760         Self {
44761             s_type: StructureType::BUFFER_IMAGE_COPY_2_KHR,
44762             p_next: ::std::ptr::null(),
44763             buffer_offset: DeviceSize::default(),
44764             buffer_row_length: u32::default(),
44765             buffer_image_height: u32::default(),
44766             image_subresource: ImageSubresourceLayers::default(),
44767             image_offset: Offset3D::default(),
44768             image_extent: Extent3D::default(),
44769         }
44770     }
44771 }
44772 impl BufferImageCopy2KHR {
builder<'a>() -> BufferImageCopy2KHRBuilder<'a>44773     pub fn builder<'a>() -> BufferImageCopy2KHRBuilder<'a> {
44774         BufferImageCopy2KHRBuilder {
44775             inner: Self::default(),
44776             marker: ::std::marker::PhantomData,
44777         }
44778     }
44779 }
44780 #[repr(transparent)]
44781 pub struct BufferImageCopy2KHRBuilder<'a> {
44782     inner: BufferImageCopy2KHR,
44783     marker: ::std::marker::PhantomData<&'a ()>,
44784 }
44785 pub unsafe trait ExtendsBufferImageCopy2KHR {}
44786 impl<'a> ::std::ops::Deref for BufferImageCopy2KHRBuilder<'a> {
44787     type Target = BufferImageCopy2KHR;
deref(&self) -> &Self::Target44788     fn deref(&self) -> &Self::Target {
44789         &self.inner
44790     }
44791 }
44792 impl<'a> ::std::ops::DerefMut for BufferImageCopy2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44793     fn deref_mut(&mut self) -> &mut Self::Target {
44794         &mut self.inner
44795     }
44796 }
44797 impl<'a> BufferImageCopy2KHRBuilder<'a> {
buffer_offset(mut self, buffer_offset: DeviceSize) -> Self44798     pub fn buffer_offset(mut self, buffer_offset: DeviceSize) -> Self {
44799         self.inner.buffer_offset = buffer_offset;
44800         self
44801     }
buffer_row_length(mut self, buffer_row_length: u32) -> Self44802     pub fn buffer_row_length(mut self, buffer_row_length: u32) -> Self {
44803         self.inner.buffer_row_length = buffer_row_length;
44804         self
44805     }
buffer_image_height(mut self, buffer_image_height: u32) -> Self44806     pub fn buffer_image_height(mut self, buffer_image_height: u32) -> Self {
44807         self.inner.buffer_image_height = buffer_image_height;
44808         self
44809     }
image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self44810     pub fn image_subresource(mut self, image_subresource: ImageSubresourceLayers) -> Self {
44811         self.inner.image_subresource = image_subresource;
44812         self
44813     }
image_offset(mut self, image_offset: Offset3D) -> Self44814     pub fn image_offset(mut self, image_offset: Offset3D) -> Self {
44815         self.inner.image_offset = image_offset;
44816         self
44817     }
image_extent(mut self, image_extent: Extent3D) -> Self44818     pub fn image_extent(mut self, image_extent: Extent3D) -> Self {
44819         self.inner.image_extent = image_extent;
44820         self
44821     }
44822     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
44823     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
44824     #[doc = r" valid extension structs can be pushed into the chain."]
44825     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
44826     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsBufferImageCopy2KHR>(mut self, next: &'a mut T) -> Self44827     pub fn push_next<T: ExtendsBufferImageCopy2KHR>(mut self, next: &'a mut T) -> Self {
44828         unsafe {
44829             let next_ptr = next as *mut T as *mut BaseOutStructure;
44830             let last_next = ptr_chain_iter(next).last().unwrap();
44831             (*last_next).p_next = self.inner.p_next as _;
44832             self.inner.p_next = next_ptr as _;
44833         }
44834         self
44835     }
44836     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44837     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44838     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferImageCopy2KHR44839     pub fn build(self) -> BufferImageCopy2KHR {
44840         self.inner
44841     }
44842 }
44843 #[repr(C)]
44844 #[cfg_attr(feature = "debug", derive(Debug))]
44845 #[derive(Copy, Clone)]
44846 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageResolve2KHR.html>"]
44847 pub struct ImageResolve2KHR {
44848     pub s_type: StructureType,
44849     pub p_next: *const c_void,
44850     pub src_subresource: ImageSubresourceLayers,
44851     pub src_offset: Offset3D,
44852     pub dst_subresource: ImageSubresourceLayers,
44853     pub dst_offset: Offset3D,
44854     pub extent: Extent3D,
44855 }
44856 impl ::std::default::Default for ImageResolve2KHR {
default() -> Self44857     fn default() -> Self {
44858         Self {
44859             s_type: StructureType::IMAGE_RESOLVE_2_KHR,
44860             p_next: ::std::ptr::null(),
44861             src_subresource: ImageSubresourceLayers::default(),
44862             src_offset: Offset3D::default(),
44863             dst_subresource: ImageSubresourceLayers::default(),
44864             dst_offset: Offset3D::default(),
44865             extent: Extent3D::default(),
44866         }
44867     }
44868 }
44869 impl ImageResolve2KHR {
builder<'a>() -> ImageResolve2KHRBuilder<'a>44870     pub fn builder<'a>() -> ImageResolve2KHRBuilder<'a> {
44871         ImageResolve2KHRBuilder {
44872             inner: Self::default(),
44873             marker: ::std::marker::PhantomData,
44874         }
44875     }
44876 }
44877 #[repr(transparent)]
44878 pub struct ImageResolve2KHRBuilder<'a> {
44879     inner: ImageResolve2KHR,
44880     marker: ::std::marker::PhantomData<&'a ()>,
44881 }
44882 impl<'a> ::std::ops::Deref for ImageResolve2KHRBuilder<'a> {
44883     type Target = ImageResolve2KHR;
deref(&self) -> &Self::Target44884     fn deref(&self) -> &Self::Target {
44885         &self.inner
44886     }
44887 }
44888 impl<'a> ::std::ops::DerefMut for ImageResolve2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44889     fn deref_mut(&mut self) -> &mut Self::Target {
44890         &mut self.inner
44891     }
44892 }
44893 impl<'a> ImageResolve2KHRBuilder<'a> {
src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self44894     pub fn src_subresource(mut self, src_subresource: ImageSubresourceLayers) -> Self {
44895         self.inner.src_subresource = src_subresource;
44896         self
44897     }
src_offset(mut self, src_offset: Offset3D) -> Self44898     pub fn src_offset(mut self, src_offset: Offset3D) -> Self {
44899         self.inner.src_offset = src_offset;
44900         self
44901     }
dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self44902     pub fn dst_subresource(mut self, dst_subresource: ImageSubresourceLayers) -> Self {
44903         self.inner.dst_subresource = dst_subresource;
44904         self
44905     }
dst_offset(mut self, dst_offset: Offset3D) -> Self44906     pub fn dst_offset(mut self, dst_offset: Offset3D) -> Self {
44907         self.inner.dst_offset = dst_offset;
44908         self
44909     }
extent(mut self, extent: Extent3D) -> Self44910     pub fn extent(mut self, extent: Extent3D) -> Self {
44911         self.inner.extent = extent;
44912         self
44913     }
44914     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44915     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44916     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageResolve2KHR44917     pub fn build(self) -> ImageResolve2KHR {
44918         self.inner
44919     }
44920 }
44921 #[repr(C)]
44922 #[cfg_attr(feature = "debug", derive(Debug))]
44923 #[derive(Copy, Clone)]
44924 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyBufferInfo2KHR.html>"]
44925 pub struct CopyBufferInfo2KHR {
44926     pub s_type: StructureType,
44927     pub p_next: *const c_void,
44928     pub src_buffer: Buffer,
44929     pub dst_buffer: Buffer,
44930     pub region_count: u32,
44931     pub p_regions: *const BufferCopy2KHR,
44932 }
44933 impl ::std::default::Default for CopyBufferInfo2KHR {
default() -> Self44934     fn default() -> Self {
44935         Self {
44936             s_type: StructureType::COPY_BUFFER_INFO_2_KHR,
44937             p_next: ::std::ptr::null(),
44938             src_buffer: Buffer::default(),
44939             dst_buffer: Buffer::default(),
44940             region_count: u32::default(),
44941             p_regions: ::std::ptr::null(),
44942         }
44943     }
44944 }
44945 impl CopyBufferInfo2KHR {
builder<'a>() -> CopyBufferInfo2KHRBuilder<'a>44946     pub fn builder<'a>() -> CopyBufferInfo2KHRBuilder<'a> {
44947         CopyBufferInfo2KHRBuilder {
44948             inner: Self::default(),
44949             marker: ::std::marker::PhantomData,
44950         }
44951     }
44952 }
44953 #[repr(transparent)]
44954 pub struct CopyBufferInfo2KHRBuilder<'a> {
44955     inner: CopyBufferInfo2KHR,
44956     marker: ::std::marker::PhantomData<&'a ()>,
44957 }
44958 impl<'a> ::std::ops::Deref for CopyBufferInfo2KHRBuilder<'a> {
44959     type Target = CopyBufferInfo2KHR;
deref(&self) -> &Self::Target44960     fn deref(&self) -> &Self::Target {
44961         &self.inner
44962     }
44963 }
44964 impl<'a> ::std::ops::DerefMut for CopyBufferInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target44965     fn deref_mut(&mut self) -> &mut Self::Target {
44966         &mut self.inner
44967     }
44968 }
44969 impl<'a> CopyBufferInfo2KHRBuilder<'a> {
src_buffer(mut self, src_buffer: Buffer) -> Self44970     pub fn src_buffer(mut self, src_buffer: Buffer) -> Self {
44971         self.inner.src_buffer = src_buffer;
44972         self
44973     }
dst_buffer(mut self, dst_buffer: Buffer) -> Self44974     pub fn dst_buffer(mut self, dst_buffer: Buffer) -> Self {
44975         self.inner.dst_buffer = dst_buffer;
44976         self
44977     }
regions(mut self, regions: &'a [BufferCopy2KHR]) -> Self44978     pub fn regions(mut self, regions: &'a [BufferCopy2KHR]) -> Self {
44979         self.inner.region_count = regions.len() as _;
44980         self.inner.p_regions = regions.as_ptr();
44981         self
44982     }
44983     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
44984     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
44985     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyBufferInfo2KHR44986     pub fn build(self) -> CopyBufferInfo2KHR {
44987         self.inner
44988     }
44989 }
44990 #[repr(C)]
44991 #[cfg_attr(feature = "debug", derive(Debug))]
44992 #[derive(Copy, Clone)]
44993 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyImageInfo2KHR.html>"]
44994 pub struct CopyImageInfo2KHR {
44995     pub s_type: StructureType,
44996     pub p_next: *const c_void,
44997     pub src_image: Image,
44998     pub src_image_layout: ImageLayout,
44999     pub dst_image: Image,
45000     pub dst_image_layout: ImageLayout,
45001     pub region_count: u32,
45002     pub p_regions: *const ImageCopy2KHR,
45003 }
45004 impl ::std::default::Default for CopyImageInfo2KHR {
default() -> Self45005     fn default() -> Self {
45006         Self {
45007             s_type: StructureType::COPY_IMAGE_INFO_2_KHR,
45008             p_next: ::std::ptr::null(),
45009             src_image: Image::default(),
45010             src_image_layout: ImageLayout::default(),
45011             dst_image: Image::default(),
45012             dst_image_layout: ImageLayout::default(),
45013             region_count: u32::default(),
45014             p_regions: ::std::ptr::null(),
45015         }
45016     }
45017 }
45018 impl CopyImageInfo2KHR {
builder<'a>() -> CopyImageInfo2KHRBuilder<'a>45019     pub fn builder<'a>() -> CopyImageInfo2KHRBuilder<'a> {
45020         CopyImageInfo2KHRBuilder {
45021             inner: Self::default(),
45022             marker: ::std::marker::PhantomData,
45023         }
45024     }
45025 }
45026 #[repr(transparent)]
45027 pub struct CopyImageInfo2KHRBuilder<'a> {
45028     inner: CopyImageInfo2KHR,
45029     marker: ::std::marker::PhantomData<&'a ()>,
45030 }
45031 impl<'a> ::std::ops::Deref for CopyImageInfo2KHRBuilder<'a> {
45032     type Target = CopyImageInfo2KHR;
deref(&self) -> &Self::Target45033     fn deref(&self) -> &Self::Target {
45034         &self.inner
45035     }
45036 }
45037 impl<'a> ::std::ops::DerefMut for CopyImageInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45038     fn deref_mut(&mut self) -> &mut Self::Target {
45039         &mut self.inner
45040     }
45041 }
45042 impl<'a> CopyImageInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self45043     pub fn src_image(mut self, src_image: Image) -> Self {
45044         self.inner.src_image = src_image;
45045         self
45046     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self45047     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
45048         self.inner.src_image_layout = src_image_layout;
45049         self
45050     }
dst_image(mut self, dst_image: Image) -> Self45051     pub fn dst_image(mut self, dst_image: Image) -> Self {
45052         self.inner.dst_image = dst_image;
45053         self
45054     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self45055     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
45056         self.inner.dst_image_layout = dst_image_layout;
45057         self
45058     }
regions(mut self, regions: &'a [ImageCopy2KHR]) -> Self45059     pub fn regions(mut self, regions: &'a [ImageCopy2KHR]) -> Self {
45060         self.inner.region_count = regions.len() as _;
45061         self.inner.p_regions = regions.as_ptr();
45062         self
45063     }
45064     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45065     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45066     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyImageInfo2KHR45067     pub fn build(self) -> CopyImageInfo2KHR {
45068         self.inner
45069     }
45070 }
45071 #[repr(C)]
45072 #[cfg_attr(feature = "debug", derive(Debug))]
45073 #[derive(Copy, Clone)]
45074 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlitImageInfo2KHR.html>"]
45075 pub struct BlitImageInfo2KHR {
45076     pub s_type: StructureType,
45077     pub p_next: *const c_void,
45078     pub src_image: Image,
45079     pub src_image_layout: ImageLayout,
45080     pub dst_image: Image,
45081     pub dst_image_layout: ImageLayout,
45082     pub region_count: u32,
45083     pub p_regions: *const ImageBlit2KHR,
45084     pub filter: Filter,
45085 }
45086 impl ::std::default::Default for BlitImageInfo2KHR {
default() -> Self45087     fn default() -> Self {
45088         Self {
45089             s_type: StructureType::BLIT_IMAGE_INFO_2_KHR,
45090             p_next: ::std::ptr::null(),
45091             src_image: Image::default(),
45092             src_image_layout: ImageLayout::default(),
45093             dst_image: Image::default(),
45094             dst_image_layout: ImageLayout::default(),
45095             region_count: u32::default(),
45096             p_regions: ::std::ptr::null(),
45097             filter: Filter::default(),
45098         }
45099     }
45100 }
45101 impl BlitImageInfo2KHR {
builder<'a>() -> BlitImageInfo2KHRBuilder<'a>45102     pub fn builder<'a>() -> BlitImageInfo2KHRBuilder<'a> {
45103         BlitImageInfo2KHRBuilder {
45104             inner: Self::default(),
45105             marker: ::std::marker::PhantomData,
45106         }
45107     }
45108 }
45109 #[repr(transparent)]
45110 pub struct BlitImageInfo2KHRBuilder<'a> {
45111     inner: BlitImageInfo2KHR,
45112     marker: ::std::marker::PhantomData<&'a ()>,
45113 }
45114 impl<'a> ::std::ops::Deref for BlitImageInfo2KHRBuilder<'a> {
45115     type Target = BlitImageInfo2KHR;
deref(&self) -> &Self::Target45116     fn deref(&self) -> &Self::Target {
45117         &self.inner
45118     }
45119 }
45120 impl<'a> ::std::ops::DerefMut for BlitImageInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45121     fn deref_mut(&mut self) -> &mut Self::Target {
45122         &mut self.inner
45123     }
45124 }
45125 impl<'a> BlitImageInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self45126     pub fn src_image(mut self, src_image: Image) -> Self {
45127         self.inner.src_image = src_image;
45128         self
45129     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self45130     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
45131         self.inner.src_image_layout = src_image_layout;
45132         self
45133     }
dst_image(mut self, dst_image: Image) -> Self45134     pub fn dst_image(mut self, dst_image: Image) -> Self {
45135         self.inner.dst_image = dst_image;
45136         self
45137     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self45138     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
45139         self.inner.dst_image_layout = dst_image_layout;
45140         self
45141     }
regions(mut self, regions: &'a [ImageBlit2KHR]) -> Self45142     pub fn regions(mut self, regions: &'a [ImageBlit2KHR]) -> Self {
45143         self.inner.region_count = regions.len() as _;
45144         self.inner.p_regions = regions.as_ptr();
45145         self
45146     }
filter(mut self, filter: Filter) -> Self45147     pub fn filter(mut self, filter: Filter) -> Self {
45148         self.inner.filter = filter;
45149         self
45150     }
45151     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45152     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45153     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BlitImageInfo2KHR45154     pub fn build(self) -> BlitImageInfo2KHR {
45155         self.inner
45156     }
45157 }
45158 #[repr(C)]
45159 #[cfg_attr(feature = "debug", derive(Debug))]
45160 #[derive(Copy, Clone)]
45161 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyBufferToImageInfo2KHR.html>"]
45162 pub struct CopyBufferToImageInfo2KHR {
45163     pub s_type: StructureType,
45164     pub p_next: *const c_void,
45165     pub src_buffer: Buffer,
45166     pub dst_image: Image,
45167     pub dst_image_layout: ImageLayout,
45168     pub region_count: u32,
45169     pub p_regions: *const BufferImageCopy2KHR,
45170 }
45171 impl ::std::default::Default for CopyBufferToImageInfo2KHR {
default() -> Self45172     fn default() -> Self {
45173         Self {
45174             s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2_KHR,
45175             p_next: ::std::ptr::null(),
45176             src_buffer: Buffer::default(),
45177             dst_image: Image::default(),
45178             dst_image_layout: ImageLayout::default(),
45179             region_count: u32::default(),
45180             p_regions: ::std::ptr::null(),
45181         }
45182     }
45183 }
45184 impl CopyBufferToImageInfo2KHR {
builder<'a>() -> CopyBufferToImageInfo2KHRBuilder<'a>45185     pub fn builder<'a>() -> CopyBufferToImageInfo2KHRBuilder<'a> {
45186         CopyBufferToImageInfo2KHRBuilder {
45187             inner: Self::default(),
45188             marker: ::std::marker::PhantomData,
45189         }
45190     }
45191 }
45192 #[repr(transparent)]
45193 pub struct CopyBufferToImageInfo2KHRBuilder<'a> {
45194     inner: CopyBufferToImageInfo2KHR,
45195     marker: ::std::marker::PhantomData<&'a ()>,
45196 }
45197 impl<'a> ::std::ops::Deref for CopyBufferToImageInfo2KHRBuilder<'a> {
45198     type Target = CopyBufferToImageInfo2KHR;
deref(&self) -> &Self::Target45199     fn deref(&self) -> &Self::Target {
45200         &self.inner
45201     }
45202 }
45203 impl<'a> ::std::ops::DerefMut for CopyBufferToImageInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45204     fn deref_mut(&mut self) -> &mut Self::Target {
45205         &mut self.inner
45206     }
45207 }
45208 impl<'a> CopyBufferToImageInfo2KHRBuilder<'a> {
src_buffer(mut self, src_buffer: Buffer) -> Self45209     pub fn src_buffer(mut self, src_buffer: Buffer) -> Self {
45210         self.inner.src_buffer = src_buffer;
45211         self
45212     }
dst_image(mut self, dst_image: Image) -> Self45213     pub fn dst_image(mut self, dst_image: Image) -> Self {
45214         self.inner.dst_image = dst_image;
45215         self
45216     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self45217     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
45218         self.inner.dst_image_layout = dst_image_layout;
45219         self
45220     }
regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self45221     pub fn regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self {
45222         self.inner.region_count = regions.len() as _;
45223         self.inner.p_regions = regions.as_ptr();
45224         self
45225     }
45226     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45227     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45228     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyBufferToImageInfo2KHR45229     pub fn build(self) -> CopyBufferToImageInfo2KHR {
45230         self.inner
45231     }
45232 }
45233 #[repr(C)]
45234 #[cfg_attr(feature = "debug", derive(Debug))]
45235 #[derive(Copy, Clone)]
45236 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyImageToBufferInfo2KHR.html>"]
45237 pub struct CopyImageToBufferInfo2KHR {
45238     pub s_type: StructureType,
45239     pub p_next: *const c_void,
45240     pub src_image: Image,
45241     pub src_image_layout: ImageLayout,
45242     pub dst_buffer: Buffer,
45243     pub region_count: u32,
45244     pub p_regions: *const BufferImageCopy2KHR,
45245 }
45246 impl ::std::default::Default for CopyImageToBufferInfo2KHR {
default() -> Self45247     fn default() -> Self {
45248         Self {
45249             s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2_KHR,
45250             p_next: ::std::ptr::null(),
45251             src_image: Image::default(),
45252             src_image_layout: ImageLayout::default(),
45253             dst_buffer: Buffer::default(),
45254             region_count: u32::default(),
45255             p_regions: ::std::ptr::null(),
45256         }
45257     }
45258 }
45259 impl CopyImageToBufferInfo2KHR {
builder<'a>() -> CopyImageToBufferInfo2KHRBuilder<'a>45260     pub fn builder<'a>() -> CopyImageToBufferInfo2KHRBuilder<'a> {
45261         CopyImageToBufferInfo2KHRBuilder {
45262             inner: Self::default(),
45263             marker: ::std::marker::PhantomData,
45264         }
45265     }
45266 }
45267 #[repr(transparent)]
45268 pub struct CopyImageToBufferInfo2KHRBuilder<'a> {
45269     inner: CopyImageToBufferInfo2KHR,
45270     marker: ::std::marker::PhantomData<&'a ()>,
45271 }
45272 impl<'a> ::std::ops::Deref for CopyImageToBufferInfo2KHRBuilder<'a> {
45273     type Target = CopyImageToBufferInfo2KHR;
deref(&self) -> &Self::Target45274     fn deref(&self) -> &Self::Target {
45275         &self.inner
45276     }
45277 }
45278 impl<'a> ::std::ops::DerefMut for CopyImageToBufferInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45279     fn deref_mut(&mut self) -> &mut Self::Target {
45280         &mut self.inner
45281     }
45282 }
45283 impl<'a> CopyImageToBufferInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self45284     pub fn src_image(mut self, src_image: Image) -> Self {
45285         self.inner.src_image = src_image;
45286         self
45287     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self45288     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
45289         self.inner.src_image_layout = src_image_layout;
45290         self
45291     }
dst_buffer(mut self, dst_buffer: Buffer) -> Self45292     pub fn dst_buffer(mut self, dst_buffer: Buffer) -> Self {
45293         self.inner.dst_buffer = dst_buffer;
45294         self
45295     }
regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self45296     pub fn regions(mut self, regions: &'a [BufferImageCopy2KHR]) -> Self {
45297         self.inner.region_count = regions.len() as _;
45298         self.inner.p_regions = regions.as_ptr();
45299         self
45300     }
45301     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45302     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45303     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CopyImageToBufferInfo2KHR45304     pub fn build(self) -> CopyImageToBufferInfo2KHR {
45305         self.inner
45306     }
45307 }
45308 #[repr(C)]
45309 #[cfg_attr(feature = "debug", derive(Debug))]
45310 #[derive(Copy, Clone)]
45311 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkResolveImageInfo2KHR.html>"]
45312 pub struct ResolveImageInfo2KHR {
45313     pub s_type: StructureType,
45314     pub p_next: *const c_void,
45315     pub src_image: Image,
45316     pub src_image_layout: ImageLayout,
45317     pub dst_image: Image,
45318     pub dst_image_layout: ImageLayout,
45319     pub region_count: u32,
45320     pub p_regions: *const ImageResolve2KHR,
45321 }
45322 impl ::std::default::Default for ResolveImageInfo2KHR {
default() -> Self45323     fn default() -> Self {
45324         Self {
45325             s_type: StructureType::RESOLVE_IMAGE_INFO_2_KHR,
45326             p_next: ::std::ptr::null(),
45327             src_image: Image::default(),
45328             src_image_layout: ImageLayout::default(),
45329             dst_image: Image::default(),
45330             dst_image_layout: ImageLayout::default(),
45331             region_count: u32::default(),
45332             p_regions: ::std::ptr::null(),
45333         }
45334     }
45335 }
45336 impl ResolveImageInfo2KHR {
builder<'a>() -> ResolveImageInfo2KHRBuilder<'a>45337     pub fn builder<'a>() -> ResolveImageInfo2KHRBuilder<'a> {
45338         ResolveImageInfo2KHRBuilder {
45339             inner: Self::default(),
45340             marker: ::std::marker::PhantomData,
45341         }
45342     }
45343 }
45344 #[repr(transparent)]
45345 pub struct ResolveImageInfo2KHRBuilder<'a> {
45346     inner: ResolveImageInfo2KHR,
45347     marker: ::std::marker::PhantomData<&'a ()>,
45348 }
45349 impl<'a> ::std::ops::Deref for ResolveImageInfo2KHRBuilder<'a> {
45350     type Target = ResolveImageInfo2KHR;
deref(&self) -> &Self::Target45351     fn deref(&self) -> &Self::Target {
45352         &self.inner
45353     }
45354 }
45355 impl<'a> ::std::ops::DerefMut for ResolveImageInfo2KHRBuilder<'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> ResolveImageInfo2KHRBuilder<'a> {
src_image(mut self, src_image: Image) -> Self45361     pub fn src_image(mut self, src_image: Image) -> Self {
45362         self.inner.src_image = src_image;
45363         self
45364     }
src_image_layout(mut self, src_image_layout: ImageLayout) -> Self45365     pub fn src_image_layout(mut self, src_image_layout: ImageLayout) -> Self {
45366         self.inner.src_image_layout = src_image_layout;
45367         self
45368     }
dst_image(mut self, dst_image: Image) -> Self45369     pub fn dst_image(mut self, dst_image: Image) -> Self {
45370         self.inner.dst_image = dst_image;
45371         self
45372     }
dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self45373     pub fn dst_image_layout(mut self, dst_image_layout: ImageLayout) -> Self {
45374         self.inner.dst_image_layout = dst_image_layout;
45375         self
45376     }
regions(mut self, regions: &'a [ImageResolve2KHR]) -> Self45377     pub fn regions(mut self, regions: &'a [ImageResolve2KHR]) -> Self {
45378         self.inner.region_count = regions.len() as _;
45379         self.inner.p_regions = regions.as_ptr();
45380         self
45381     }
45382     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45383     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45384     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ResolveImageInfo2KHR45385     pub fn build(self) -> ResolveImageInfo2KHR {
45386         self.inner
45387     }
45388 }
45389 #[repr(C)]
45390 #[cfg_attr(feature = "debug", derive(Debug))]
45391 #[derive(Copy, Clone)]
45392 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>"]
45393 pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
45394     pub s_type: StructureType,
45395     pub p_next: *mut c_void,
45396     pub shader_image_int64_atomics: Bool32,
45397     pub sparse_image_int64_atomics: Bool32,
45398 }
45399 impl ::std::default::Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
default() -> Self45400     fn default() -> Self {
45401         Self {
45402             s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
45403             p_next: ::std::ptr::null_mut(),
45404             shader_image_int64_atomics: Bool32::default(),
45405             sparse_image_int64_atomics: Bool32::default(),
45406         }
45407     }
45408 }
45409 impl PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
builder<'a>() -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a>45410     pub fn builder<'a>() -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45411         PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder {
45412             inner: Self::default(),
45413             marker: ::std::marker::PhantomData,
45414         }
45415     }
45416 }
45417 #[repr(transparent)]
45418 pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45419     inner: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT,
45420     marker: ::std::marker::PhantomData<&'a ()>,
45421 }
45422 unsafe impl ExtendsPhysicalDeviceFeatures2
45423     for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'_>
45424 {
45425 }
45426 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
45427 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'_> {}
45428 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
45429 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
45430     type Target = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
deref(&self) -> &Self::Target45431     fn deref(&self) -> &Self::Target {
45432         &self.inner
45433     }
45434 }
45435 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45436     fn deref_mut(&mut self) -> &mut Self::Target {
45437         &mut self.inner
45438     }
45439 }
45440 impl<'a> PhysicalDeviceShaderImageAtomicInt64FeaturesEXTBuilder<'a> {
shader_image_int64_atomics(mut self, shader_image_int64_atomics: bool) -> Self45441     pub fn shader_image_int64_atomics(mut self, shader_image_int64_atomics: bool) -> Self {
45442         self.inner.shader_image_int64_atomics = shader_image_int64_atomics.into();
45443         self
45444     }
sparse_image_int64_atomics(mut self, sparse_image_int64_atomics: bool) -> Self45445     pub fn sparse_image_int64_atomics(mut self, sparse_image_int64_atomics: bool) -> Self {
45446         self.inner.sparse_image_int64_atomics = sparse_image_int64_atomics.into();
45447         self
45448     }
45449     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45450     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45451     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT45452     pub fn build(self) -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
45453         self.inner
45454     }
45455 }
45456 #[repr(C)]
45457 #[cfg_attr(feature = "debug", derive(Debug))]
45458 #[derive(Copy, Clone)]
45459 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>"]
45460 pub struct FragmentShadingRateAttachmentInfoKHR {
45461     pub s_type: StructureType,
45462     pub p_next: *const c_void,
45463     pub p_fragment_shading_rate_attachment: *const AttachmentReference2,
45464     pub shading_rate_attachment_texel_size: Extent2D,
45465 }
45466 impl ::std::default::Default for FragmentShadingRateAttachmentInfoKHR {
default() -> Self45467     fn default() -> Self {
45468         Self {
45469             s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
45470             p_next: ::std::ptr::null(),
45471             p_fragment_shading_rate_attachment: ::std::ptr::null(),
45472             shading_rate_attachment_texel_size: Extent2D::default(),
45473         }
45474     }
45475 }
45476 impl FragmentShadingRateAttachmentInfoKHR {
builder<'a>() -> FragmentShadingRateAttachmentInfoKHRBuilder<'a>45477     pub fn builder<'a>() -> FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45478         FragmentShadingRateAttachmentInfoKHRBuilder {
45479             inner: Self::default(),
45480             marker: ::std::marker::PhantomData,
45481         }
45482     }
45483 }
45484 #[repr(transparent)]
45485 pub struct FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45486     inner: FragmentShadingRateAttachmentInfoKHR,
45487     marker: ::std::marker::PhantomData<&'a ()>,
45488 }
45489 unsafe impl ExtendsSubpassDescription2 for FragmentShadingRateAttachmentInfoKHRBuilder<'_> {}
45490 unsafe impl ExtendsSubpassDescription2 for FragmentShadingRateAttachmentInfoKHR {}
45491 impl<'a> ::std::ops::Deref for FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
45492     type Target = FragmentShadingRateAttachmentInfoKHR;
deref(&self) -> &Self::Target45493     fn deref(&self) -> &Self::Target {
45494         &self.inner
45495     }
45496 }
45497 impl<'a> ::std::ops::DerefMut for FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45498     fn deref_mut(&mut self) -> &mut Self::Target {
45499         &mut self.inner
45500     }
45501 }
45502 impl<'a> FragmentShadingRateAttachmentInfoKHRBuilder<'a> {
fragment_shading_rate_attachment( mut self, fragment_shading_rate_attachment: &'a AttachmentReference2, ) -> Self45503     pub fn fragment_shading_rate_attachment(
45504         mut self,
45505         fragment_shading_rate_attachment: &'a AttachmentReference2,
45506     ) -> Self {
45507         self.inner.p_fragment_shading_rate_attachment = fragment_shading_rate_attachment;
45508         self
45509     }
shading_rate_attachment_texel_size( mut self, shading_rate_attachment_texel_size: Extent2D, ) -> Self45510     pub fn shading_rate_attachment_texel_size(
45511         mut self,
45512         shading_rate_attachment_texel_size: Extent2D,
45513     ) -> Self {
45514         self.inner.shading_rate_attachment_texel_size = shading_rate_attachment_texel_size;
45515         self
45516     }
45517     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45518     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45519     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FragmentShadingRateAttachmentInfoKHR45520     pub fn build(self) -> FragmentShadingRateAttachmentInfoKHR {
45521         self.inner
45522     }
45523 }
45524 #[repr(C)]
45525 #[cfg_attr(feature = "debug", derive(Debug))]
45526 #[derive(Copy, Clone)]
45527 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>"]
45528 pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
45529     pub s_type: StructureType,
45530     pub p_next: *const c_void,
45531     pub fragment_size: Extent2D,
45532     pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
45533 }
45534 impl ::std::default::Default for PipelineFragmentShadingRateStateCreateInfoKHR {
default() -> Self45535     fn default() -> Self {
45536         Self {
45537             s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
45538             p_next: ::std::ptr::null(),
45539             fragment_size: Extent2D::default(),
45540             combiner_ops: unsafe { ::std::mem::zeroed() },
45541         }
45542     }
45543 }
45544 impl PipelineFragmentShadingRateStateCreateInfoKHR {
builder<'a>() -> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a>45545     pub fn builder<'a>() -> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45546         PipelineFragmentShadingRateStateCreateInfoKHRBuilder {
45547             inner: Self::default(),
45548             marker: ::std::marker::PhantomData,
45549         }
45550     }
45551 }
45552 #[repr(transparent)]
45553 pub struct PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45554     inner: PipelineFragmentShadingRateStateCreateInfoKHR,
45555     marker: ::std::marker::PhantomData<&'a ()>,
45556 }
45557 unsafe impl ExtendsGraphicsPipelineCreateInfo
45558     for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'_>
45559 {
45560 }
45561 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineFragmentShadingRateStateCreateInfoKHR {}
45562 impl<'a> ::std::ops::Deref for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
45563     type Target = PipelineFragmentShadingRateStateCreateInfoKHR;
deref(&self) -> &Self::Target45564     fn deref(&self) -> &Self::Target {
45565         &self.inner
45566     }
45567 }
45568 impl<'a> ::std::ops::DerefMut for PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45569     fn deref_mut(&mut self) -> &mut Self::Target {
45570         &mut self.inner
45571     }
45572 }
45573 impl<'a> PipelineFragmentShadingRateStateCreateInfoKHRBuilder<'a> {
fragment_size(mut self, fragment_size: Extent2D) -> Self45574     pub fn fragment_size(mut self, fragment_size: Extent2D) -> Self {
45575         self.inner.fragment_size = fragment_size;
45576         self
45577     }
combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self45578     pub fn combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self {
45579         self.inner.combiner_ops = combiner_ops;
45580         self
45581     }
45582     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45583     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45584     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineFragmentShadingRateStateCreateInfoKHR45585     pub fn build(self) -> PipelineFragmentShadingRateStateCreateInfoKHR {
45586         self.inner
45587     }
45588 }
45589 #[repr(C)]
45590 #[cfg_attr(feature = "debug", derive(Debug))]
45591 #[derive(Copy, Clone)]
45592 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>"]
45593 pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
45594     pub s_type: StructureType,
45595     pub p_next: *mut c_void,
45596     pub pipeline_fragment_shading_rate: Bool32,
45597     pub primitive_fragment_shading_rate: Bool32,
45598     pub attachment_fragment_shading_rate: Bool32,
45599 }
45600 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
default() -> Self45601     fn default() -> Self {
45602         Self {
45603             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
45604             p_next: ::std::ptr::null_mut(),
45605             pipeline_fragment_shading_rate: Bool32::default(),
45606             primitive_fragment_shading_rate: Bool32::default(),
45607             attachment_fragment_shading_rate: Bool32::default(),
45608         }
45609     }
45610 }
45611 impl PhysicalDeviceFragmentShadingRateFeaturesKHR {
builder<'a>() -> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a>45612     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45613         PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder {
45614             inner: Self::default(),
45615             marker: ::std::marker::PhantomData,
45616         }
45617     }
45618 }
45619 #[repr(transparent)]
45620 pub struct PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45621     inner: PhysicalDeviceFragmentShadingRateFeaturesKHR,
45622     marker: ::std::marker::PhantomData<&'a ()>,
45623 }
45624 unsafe impl ExtendsPhysicalDeviceFeatures2
45625     for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'_>
45626 {
45627 }
45628 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
45629 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'_> {}
45630 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
45631 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
45632     type Target = PhysicalDeviceFragmentShadingRateFeaturesKHR;
deref(&self) -> &Self::Target45633     fn deref(&self) -> &Self::Target {
45634         &self.inner
45635     }
45636 }
45637 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45638     fn deref_mut(&mut self) -> &mut Self::Target {
45639         &mut self.inner
45640     }
45641 }
45642 impl<'a> PhysicalDeviceFragmentShadingRateFeaturesKHRBuilder<'a> {
pipeline_fragment_shading_rate(mut self, pipeline_fragment_shading_rate: bool) -> Self45643     pub fn pipeline_fragment_shading_rate(mut self, pipeline_fragment_shading_rate: bool) -> Self {
45644         self.inner.pipeline_fragment_shading_rate = pipeline_fragment_shading_rate.into();
45645         self
45646     }
primitive_fragment_shading_rate( mut self, primitive_fragment_shading_rate: bool, ) -> Self45647     pub fn primitive_fragment_shading_rate(
45648         mut self,
45649         primitive_fragment_shading_rate: bool,
45650     ) -> Self {
45651         self.inner.primitive_fragment_shading_rate = primitive_fragment_shading_rate.into();
45652         self
45653     }
attachment_fragment_shading_rate( mut self, attachment_fragment_shading_rate: bool, ) -> Self45654     pub fn attachment_fragment_shading_rate(
45655         mut self,
45656         attachment_fragment_shading_rate: bool,
45657     ) -> Self {
45658         self.inner.attachment_fragment_shading_rate = attachment_fragment_shading_rate.into();
45659         self
45660     }
45661     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45662     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45663     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateFeaturesKHR45664     pub fn build(self) -> PhysicalDeviceFragmentShadingRateFeaturesKHR {
45665         self.inner
45666     }
45667 }
45668 #[repr(C)]
45669 #[cfg_attr(feature = "debug", derive(Debug))]
45670 #[derive(Copy, Clone)]
45671 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>"]
45672 pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
45673     pub s_type: StructureType,
45674     pub p_next: *mut c_void,
45675     pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
45676     pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
45677     pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
45678     pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
45679     pub layered_shading_rate_attachments: Bool32,
45680     pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
45681     pub max_fragment_size: Extent2D,
45682     pub max_fragment_size_aspect_ratio: u32,
45683     pub max_fragment_shading_rate_coverage_samples: u32,
45684     pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
45685     pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
45686     pub fragment_shading_rate_with_sample_mask: Bool32,
45687     pub fragment_shading_rate_with_shader_sample_mask: Bool32,
45688     pub fragment_shading_rate_with_conservative_rasterization: Bool32,
45689     pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
45690     pub fragment_shading_rate_with_custom_sample_locations: Bool32,
45691     pub fragment_shading_rate_strict_multiply_combiner: Bool32,
45692 }
45693 impl ::std::default::Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
default() -> Self45694     fn default() -> Self {
45695         Self {
45696             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
45697             p_next: ::std::ptr::null_mut(),
45698             min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
45699             max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
45700             max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
45701             primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
45702             layered_shading_rate_attachments: Bool32::default(),
45703             fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
45704             max_fragment_size: Extent2D::default(),
45705             max_fragment_size_aspect_ratio: u32::default(),
45706             max_fragment_shading_rate_coverage_samples: u32::default(),
45707             max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
45708             fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
45709             fragment_shading_rate_with_sample_mask: Bool32::default(),
45710             fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
45711             fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
45712             fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
45713             fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
45714             fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
45715         }
45716     }
45717 }
45718 impl PhysicalDeviceFragmentShadingRatePropertiesKHR {
builder<'a>() -> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a>45719     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45720         PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder {
45721             inner: Self::default(),
45722             marker: ::std::marker::PhantomData,
45723         }
45724     }
45725 }
45726 #[repr(transparent)]
45727 pub struct PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45728     inner: PhysicalDeviceFragmentShadingRatePropertiesKHR,
45729     marker: ::std::marker::PhantomData<&'a ()>,
45730 }
45731 unsafe impl ExtendsPhysicalDeviceProperties2
45732     for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'_>
45733 {
45734 }
45735 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
45736 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
45737     type Target = PhysicalDeviceFragmentShadingRatePropertiesKHR;
deref(&self) -> &Self::Target45738     fn deref(&self) -> &Self::Target {
45739         &self.inner
45740     }
45741 }
45742 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45743     fn deref_mut(&mut self) -> &mut Self::Target {
45744         &mut self.inner
45745     }
45746 }
45747 impl<'a> PhysicalDeviceFragmentShadingRatePropertiesKHRBuilder<'a> {
min_fragment_shading_rate_attachment_texel_size( mut self, min_fragment_shading_rate_attachment_texel_size: Extent2D, ) -> Self45748     pub fn min_fragment_shading_rate_attachment_texel_size(
45749         mut self,
45750         min_fragment_shading_rate_attachment_texel_size: Extent2D,
45751     ) -> Self {
45752         self.inner.min_fragment_shading_rate_attachment_texel_size =
45753             min_fragment_shading_rate_attachment_texel_size;
45754         self
45755     }
max_fragment_shading_rate_attachment_texel_size( mut self, max_fragment_shading_rate_attachment_texel_size: Extent2D, ) -> Self45756     pub fn max_fragment_shading_rate_attachment_texel_size(
45757         mut self,
45758         max_fragment_shading_rate_attachment_texel_size: Extent2D,
45759     ) -> Self {
45760         self.inner.max_fragment_shading_rate_attachment_texel_size =
45761             max_fragment_shading_rate_attachment_texel_size;
45762         self
45763     }
max_fragment_shading_rate_attachment_texel_size_aspect_ratio( mut self, max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32, ) -> Self45764     pub fn max_fragment_shading_rate_attachment_texel_size_aspect_ratio(
45765         mut self,
45766         max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
45767     ) -> Self {
45768         self.inner
45769             .max_fragment_shading_rate_attachment_texel_size_aspect_ratio =
45770             max_fragment_shading_rate_attachment_texel_size_aspect_ratio;
45771         self
45772     }
primitive_fragment_shading_rate_with_multiple_viewports( mut self, primitive_fragment_shading_rate_with_multiple_viewports: bool, ) -> Self45773     pub fn primitive_fragment_shading_rate_with_multiple_viewports(
45774         mut self,
45775         primitive_fragment_shading_rate_with_multiple_viewports: bool,
45776     ) -> Self {
45777         self.inner
45778             .primitive_fragment_shading_rate_with_multiple_viewports =
45779             primitive_fragment_shading_rate_with_multiple_viewports.into();
45780         self
45781     }
layered_shading_rate_attachments( mut self, layered_shading_rate_attachments: bool, ) -> Self45782     pub fn layered_shading_rate_attachments(
45783         mut self,
45784         layered_shading_rate_attachments: bool,
45785     ) -> Self {
45786         self.inner.layered_shading_rate_attachments = layered_shading_rate_attachments.into();
45787         self
45788     }
fragment_shading_rate_non_trivial_combiner_ops( mut self, fragment_shading_rate_non_trivial_combiner_ops: bool, ) -> Self45789     pub fn fragment_shading_rate_non_trivial_combiner_ops(
45790         mut self,
45791         fragment_shading_rate_non_trivial_combiner_ops: bool,
45792     ) -> Self {
45793         self.inner.fragment_shading_rate_non_trivial_combiner_ops =
45794             fragment_shading_rate_non_trivial_combiner_ops.into();
45795         self
45796     }
max_fragment_size(mut self, max_fragment_size: Extent2D) -> Self45797     pub fn max_fragment_size(mut self, max_fragment_size: Extent2D) -> Self {
45798         self.inner.max_fragment_size = max_fragment_size;
45799         self
45800     }
max_fragment_size_aspect_ratio(mut self, max_fragment_size_aspect_ratio: u32) -> Self45801     pub fn max_fragment_size_aspect_ratio(mut self, max_fragment_size_aspect_ratio: u32) -> Self {
45802         self.inner.max_fragment_size_aspect_ratio = max_fragment_size_aspect_ratio;
45803         self
45804     }
max_fragment_shading_rate_coverage_samples( mut self, max_fragment_shading_rate_coverage_samples: u32, ) -> Self45805     pub fn max_fragment_shading_rate_coverage_samples(
45806         mut self,
45807         max_fragment_shading_rate_coverage_samples: u32,
45808     ) -> Self {
45809         self.inner.max_fragment_shading_rate_coverage_samples =
45810             max_fragment_shading_rate_coverage_samples;
45811         self
45812     }
max_fragment_shading_rate_rasterization_samples( mut self, max_fragment_shading_rate_rasterization_samples: SampleCountFlags, ) -> Self45813     pub fn max_fragment_shading_rate_rasterization_samples(
45814         mut self,
45815         max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
45816     ) -> Self {
45817         self.inner.max_fragment_shading_rate_rasterization_samples =
45818             max_fragment_shading_rate_rasterization_samples;
45819         self
45820     }
fragment_shading_rate_with_shader_depth_stencil_writes( mut self, fragment_shading_rate_with_shader_depth_stencil_writes: bool, ) -> Self45821     pub fn fragment_shading_rate_with_shader_depth_stencil_writes(
45822         mut self,
45823         fragment_shading_rate_with_shader_depth_stencil_writes: bool,
45824     ) -> Self {
45825         self.inner
45826             .fragment_shading_rate_with_shader_depth_stencil_writes =
45827             fragment_shading_rate_with_shader_depth_stencil_writes.into();
45828         self
45829     }
fragment_shading_rate_with_sample_mask( mut self, fragment_shading_rate_with_sample_mask: bool, ) -> Self45830     pub fn fragment_shading_rate_with_sample_mask(
45831         mut self,
45832         fragment_shading_rate_with_sample_mask: bool,
45833     ) -> Self {
45834         self.inner.fragment_shading_rate_with_sample_mask =
45835             fragment_shading_rate_with_sample_mask.into();
45836         self
45837     }
fragment_shading_rate_with_shader_sample_mask( mut self, fragment_shading_rate_with_shader_sample_mask: bool, ) -> Self45838     pub fn fragment_shading_rate_with_shader_sample_mask(
45839         mut self,
45840         fragment_shading_rate_with_shader_sample_mask: bool,
45841     ) -> Self {
45842         self.inner.fragment_shading_rate_with_shader_sample_mask =
45843             fragment_shading_rate_with_shader_sample_mask.into();
45844         self
45845     }
fragment_shading_rate_with_conservative_rasterization( mut self, fragment_shading_rate_with_conservative_rasterization: bool, ) -> Self45846     pub fn fragment_shading_rate_with_conservative_rasterization(
45847         mut self,
45848         fragment_shading_rate_with_conservative_rasterization: bool,
45849     ) -> Self {
45850         self.inner
45851             .fragment_shading_rate_with_conservative_rasterization =
45852             fragment_shading_rate_with_conservative_rasterization.into();
45853         self
45854     }
fragment_shading_rate_with_fragment_shader_interlock( mut self, fragment_shading_rate_with_fragment_shader_interlock: bool, ) -> Self45855     pub fn fragment_shading_rate_with_fragment_shader_interlock(
45856         mut self,
45857         fragment_shading_rate_with_fragment_shader_interlock: bool,
45858     ) -> Self {
45859         self.inner
45860             .fragment_shading_rate_with_fragment_shader_interlock =
45861             fragment_shading_rate_with_fragment_shader_interlock.into();
45862         self
45863     }
fragment_shading_rate_with_custom_sample_locations( mut self, fragment_shading_rate_with_custom_sample_locations: bool, ) -> Self45864     pub fn fragment_shading_rate_with_custom_sample_locations(
45865         mut self,
45866         fragment_shading_rate_with_custom_sample_locations: bool,
45867     ) -> Self {
45868         self.inner
45869             .fragment_shading_rate_with_custom_sample_locations =
45870             fragment_shading_rate_with_custom_sample_locations.into();
45871         self
45872     }
fragment_shading_rate_strict_multiply_combiner( mut self, fragment_shading_rate_strict_multiply_combiner: bool, ) -> Self45873     pub fn fragment_shading_rate_strict_multiply_combiner(
45874         mut self,
45875         fragment_shading_rate_strict_multiply_combiner: bool,
45876     ) -> Self {
45877         self.inner.fragment_shading_rate_strict_multiply_combiner =
45878             fragment_shading_rate_strict_multiply_combiner.into();
45879         self
45880     }
45881     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45882     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45883     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRatePropertiesKHR45884     pub fn build(self) -> PhysicalDeviceFragmentShadingRatePropertiesKHR {
45885         self.inner
45886     }
45887 }
45888 #[repr(C)]
45889 #[cfg_attr(feature = "debug", derive(Debug))]
45890 #[derive(Copy, Clone)]
45891 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>"]
45892 pub struct PhysicalDeviceFragmentShadingRateKHR {
45893     pub s_type: StructureType,
45894     pub p_next: *mut c_void,
45895     pub sample_counts: SampleCountFlags,
45896     pub fragment_size: Extent2D,
45897 }
45898 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateKHR {
default() -> Self45899     fn default() -> Self {
45900         Self {
45901             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
45902             p_next: ::std::ptr::null_mut(),
45903             sample_counts: SampleCountFlags::default(),
45904             fragment_size: Extent2D::default(),
45905         }
45906     }
45907 }
45908 impl PhysicalDeviceFragmentShadingRateKHR {
builder<'a>() -> PhysicalDeviceFragmentShadingRateKHRBuilder<'a>45909     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45910         PhysicalDeviceFragmentShadingRateKHRBuilder {
45911             inner: Self::default(),
45912             marker: ::std::marker::PhantomData,
45913         }
45914     }
45915 }
45916 #[repr(transparent)]
45917 pub struct PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45918     inner: PhysicalDeviceFragmentShadingRateKHR,
45919     marker: ::std::marker::PhantomData<&'a ()>,
45920 }
45921 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
45922     type Target = PhysicalDeviceFragmentShadingRateKHR;
deref(&self) -> &Self::Target45923     fn deref(&self) -> &Self::Target {
45924         &self.inner
45925     }
45926 }
45927 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45928     fn deref_mut(&mut self) -> &mut Self::Target {
45929         &mut self.inner
45930     }
45931 }
45932 impl<'a> PhysicalDeviceFragmentShadingRateKHRBuilder<'a> {
sample_counts(mut self, sample_counts: SampleCountFlags) -> Self45933     pub fn sample_counts(mut self, sample_counts: SampleCountFlags) -> Self {
45934         self.inner.sample_counts = sample_counts;
45935         self
45936     }
fragment_size(mut self, fragment_size: Extent2D) -> Self45937     pub fn fragment_size(mut self, fragment_size: Extent2D) -> Self {
45938         self.inner.fragment_size = fragment_size;
45939         self
45940     }
45941     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
45942     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
45943     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateKHR45944     pub fn build(self) -> PhysicalDeviceFragmentShadingRateKHR {
45945         self.inner
45946     }
45947 }
45948 #[repr(C)]
45949 #[cfg_attr(feature = "debug", derive(Debug))]
45950 #[derive(Copy, Clone)]
45951 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>"]
45952 pub struct PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
45953     pub s_type: StructureType,
45954     pub p_next: *mut c_void,
45955     pub shader_terminate_invocation: Bool32,
45956 }
45957 impl ::std::default::Default for PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
default() -> Self45958     fn default() -> Self {
45959         Self {
45960             s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR,
45961             p_next: ::std::ptr::null_mut(),
45962             shader_terminate_invocation: Bool32::default(),
45963         }
45964     }
45965 }
45966 impl PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a>45967     pub fn builder<'a>() -> PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
45968         PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder {
45969             inner: Self::default(),
45970             marker: ::std::marker::PhantomData,
45971         }
45972     }
45973 }
45974 #[repr(transparent)]
45975 pub struct PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
45976     inner: PhysicalDeviceShaderTerminateInvocationFeaturesKHR,
45977     marker: ::std::marker::PhantomData<&'a ()>,
45978 }
45979 unsafe impl ExtendsPhysicalDeviceFeatures2
45980     for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'_>
45981 {
45982 }
45983 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderTerminateInvocationFeaturesKHR {}
45984 unsafe impl ExtendsDeviceCreateInfo
45985     for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'_>
45986 {
45987 }
45988 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderTerminateInvocationFeaturesKHR {}
45989 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
45990     type Target = PhysicalDeviceShaderTerminateInvocationFeaturesKHR;
deref(&self) -> &Self::Target45991     fn deref(&self) -> &Self::Target {
45992         &self.inner
45993     }
45994 }
45995 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target45996     fn deref_mut(&mut self) -> &mut Self::Target {
45997         &mut self.inner
45998     }
45999 }
46000 impl<'a> PhysicalDeviceShaderTerminateInvocationFeaturesKHRBuilder<'a> {
shader_terminate_invocation(mut self, shader_terminate_invocation: bool) -> Self46001     pub fn shader_terminate_invocation(mut self, shader_terminate_invocation: bool) -> Self {
46002         self.inner.shader_terminate_invocation = shader_terminate_invocation.into();
46003         self
46004     }
46005     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46006     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46007     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderTerminateInvocationFeaturesKHR46008     pub fn build(self) -> PhysicalDeviceShaderTerminateInvocationFeaturesKHR {
46009         self.inner
46010     }
46011 }
46012 #[repr(C)]
46013 #[cfg_attr(feature = "debug", derive(Debug))]
46014 #[derive(Copy, Clone)]
46015 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>"]
46016 pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
46017     pub s_type: StructureType,
46018     pub p_next: *mut c_void,
46019     pub fragment_shading_rate_enums: Bool32,
46020     pub supersample_fragment_shading_rates: Bool32,
46021     pub no_invocation_fragment_shading_rates: Bool32,
46022 }
46023 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
default() -> Self46024     fn default() -> Self {
46025         Self {
46026             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
46027             p_next: ::std::ptr::null_mut(),
46028             fragment_shading_rate_enums: Bool32::default(),
46029             supersample_fragment_shading_rates: Bool32::default(),
46030             no_invocation_fragment_shading_rates: Bool32::default(),
46031         }
46032     }
46033 }
46034 impl PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a>46035     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
46036         PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder {
46037             inner: Self::default(),
46038             marker: ::std::marker::PhantomData,
46039         }
46040     }
46041 }
46042 #[repr(transparent)]
46043 pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
46044     inner: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV,
46045     marker: ::std::marker::PhantomData<&'a ()>,
46046 }
46047 unsafe impl ExtendsPhysicalDeviceFeatures2
46048     for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'_>
46049 {
46050 }
46051 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
46052 unsafe impl ExtendsDeviceCreateInfo
46053     for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'_>
46054 {
46055 }
46056 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
46057 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
46058     type Target = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
deref(&self) -> &Self::Target46059     fn deref(&self) -> &Self::Target {
46060         &self.inner
46061     }
46062 }
46063 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46064     fn deref_mut(&mut self) -> &mut Self::Target {
46065         &mut self.inner
46066     }
46067 }
46068 impl<'a> PhysicalDeviceFragmentShadingRateEnumsFeaturesNVBuilder<'a> {
fragment_shading_rate_enums(mut self, fragment_shading_rate_enums: bool) -> Self46069     pub fn fragment_shading_rate_enums(mut self, fragment_shading_rate_enums: bool) -> Self {
46070         self.inner.fragment_shading_rate_enums = fragment_shading_rate_enums.into();
46071         self
46072     }
supersample_fragment_shading_rates( mut self, supersample_fragment_shading_rates: bool, ) -> Self46073     pub fn supersample_fragment_shading_rates(
46074         mut self,
46075         supersample_fragment_shading_rates: bool,
46076     ) -> Self {
46077         self.inner.supersample_fragment_shading_rates = supersample_fragment_shading_rates.into();
46078         self
46079     }
no_invocation_fragment_shading_rates( mut self, no_invocation_fragment_shading_rates: bool, ) -> Self46080     pub fn no_invocation_fragment_shading_rates(
46081         mut self,
46082         no_invocation_fragment_shading_rates: bool,
46083     ) -> Self {
46084         self.inner.no_invocation_fragment_shading_rates =
46085             no_invocation_fragment_shading_rates.into();
46086         self
46087     }
46088     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46089     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46090     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNV46091     pub fn build(self) -> PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
46092         self.inner
46093     }
46094 }
46095 #[repr(C)]
46096 #[cfg_attr(feature = "debug", derive(Debug))]
46097 #[derive(Copy, Clone)]
46098 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>"]
46099 pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
46100     pub s_type: StructureType,
46101     pub p_next: *mut c_void,
46102     pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
46103 }
46104 impl ::std::default::Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
default() -> Self46105     fn default() -> Self {
46106         Self {
46107             s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
46108             p_next: ::std::ptr::null_mut(),
46109             max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
46110         }
46111     }
46112 }
46113 impl PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a>46114     pub fn builder<'a>() -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
46115         PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder {
46116             inner: Self::default(),
46117             marker: ::std::marker::PhantomData,
46118         }
46119     }
46120 }
46121 #[repr(transparent)]
46122 pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
46123     inner: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV,
46124     marker: ::std::marker::PhantomData<&'a ()>,
46125 }
46126 unsafe impl ExtendsPhysicalDeviceProperties2
46127     for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'_>
46128 {
46129 }
46130 unsafe impl ExtendsPhysicalDeviceProperties2
46131     for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV
46132 {
46133 }
46134 impl<'a> ::std::ops::Deref for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
46135     type Target = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
deref(&self) -> &Self::Target46136     fn deref(&self) -> &Self::Target {
46137         &self.inner
46138     }
46139 }
46140 impl<'a> ::std::ops::DerefMut for PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46141     fn deref_mut(&mut self) -> &mut Self::Target {
46142         &mut self.inner
46143     }
46144 }
46145 impl<'a> PhysicalDeviceFragmentShadingRateEnumsPropertiesNVBuilder<'a> {
max_fragment_shading_rate_invocation_count( mut self, max_fragment_shading_rate_invocation_count: SampleCountFlags, ) -> Self46146     pub fn max_fragment_shading_rate_invocation_count(
46147         mut self,
46148         max_fragment_shading_rate_invocation_count: SampleCountFlags,
46149     ) -> Self {
46150         self.inner.max_fragment_shading_rate_invocation_count =
46151             max_fragment_shading_rate_invocation_count;
46152         self
46153     }
46154     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46155     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46156     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNV46157     pub fn build(self) -> PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
46158         self.inner
46159     }
46160 }
46161 #[repr(C)]
46162 #[cfg_attr(feature = "debug", derive(Debug))]
46163 #[derive(Copy, Clone)]
46164 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>"]
46165 pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
46166     pub s_type: StructureType,
46167     pub p_next: *const c_void,
46168     pub shading_rate_type: FragmentShadingRateTypeNV,
46169     pub shading_rate: FragmentShadingRateNV,
46170     pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
46171 }
46172 impl ::std::default::Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
default() -> Self46173     fn default() -> Self {
46174         Self {
46175             s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
46176             p_next: ::std::ptr::null(),
46177             shading_rate_type: FragmentShadingRateTypeNV::default(),
46178             shading_rate: FragmentShadingRateNV::default(),
46179             combiner_ops: unsafe { ::std::mem::zeroed() },
46180         }
46181     }
46182 }
46183 impl PipelineFragmentShadingRateEnumStateCreateInfoNV {
builder<'a>() -> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a>46184     pub fn builder<'a>() -> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46185         PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder {
46186             inner: Self::default(),
46187             marker: ::std::marker::PhantomData,
46188         }
46189     }
46190 }
46191 #[repr(transparent)]
46192 pub struct PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46193     inner: PipelineFragmentShadingRateEnumStateCreateInfoNV,
46194     marker: ::std::marker::PhantomData<&'a ()>,
46195 }
46196 unsafe impl ExtendsGraphicsPipelineCreateInfo
46197     for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'_>
46198 {
46199 }
46200 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
46201 impl<'a> ::std::ops::Deref for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
46202     type Target = PipelineFragmentShadingRateEnumStateCreateInfoNV;
deref(&self) -> &Self::Target46203     fn deref(&self) -> &Self::Target {
46204         &self.inner
46205     }
46206 }
46207 impl<'a> ::std::ops::DerefMut for PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46208     fn deref_mut(&mut self) -> &mut Self::Target {
46209         &mut self.inner
46210     }
46211 }
46212 impl<'a> PipelineFragmentShadingRateEnumStateCreateInfoNVBuilder<'a> {
shading_rate_type(mut self, shading_rate_type: FragmentShadingRateTypeNV) -> Self46213     pub fn shading_rate_type(mut self, shading_rate_type: FragmentShadingRateTypeNV) -> Self {
46214         self.inner.shading_rate_type = shading_rate_type;
46215         self
46216     }
shading_rate(mut self, shading_rate: FragmentShadingRateNV) -> Self46217     pub fn shading_rate(mut self, shading_rate: FragmentShadingRateNV) -> Self {
46218         self.inner.shading_rate = shading_rate;
46219         self
46220     }
combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self46221     pub fn combiner_ops(mut self, combiner_ops: [FragmentShadingRateCombinerOpKHR; 2]) -> Self {
46222         self.inner.combiner_ops = combiner_ops;
46223         self
46224     }
46225     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46226     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46227     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineFragmentShadingRateEnumStateCreateInfoNV46228     pub fn build(self) -> PipelineFragmentShadingRateEnumStateCreateInfoNV {
46229         self.inner
46230     }
46231 }
46232 #[repr(C)]
46233 #[cfg_attr(feature = "debug", derive(Debug))]
46234 #[derive(Copy, Clone)]
46235 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildSizesInfoKHR.html>"]
46236 pub struct AccelerationStructureBuildSizesInfoKHR {
46237     pub s_type: StructureType,
46238     pub p_next: *const c_void,
46239     pub acceleration_structure_size: DeviceSize,
46240     pub update_scratch_size: DeviceSize,
46241     pub build_scratch_size: DeviceSize,
46242 }
46243 impl ::std::default::Default for AccelerationStructureBuildSizesInfoKHR {
default() -> Self46244     fn default() -> Self {
46245         Self {
46246             s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR,
46247             p_next: ::std::ptr::null(),
46248             acceleration_structure_size: DeviceSize::default(),
46249             update_scratch_size: DeviceSize::default(),
46250             build_scratch_size: DeviceSize::default(),
46251         }
46252     }
46253 }
46254 impl AccelerationStructureBuildSizesInfoKHR {
builder<'a>() -> AccelerationStructureBuildSizesInfoKHRBuilder<'a>46255     pub fn builder<'a>() -> AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46256         AccelerationStructureBuildSizesInfoKHRBuilder {
46257             inner: Self::default(),
46258             marker: ::std::marker::PhantomData,
46259         }
46260     }
46261 }
46262 #[repr(transparent)]
46263 pub struct AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46264     inner: AccelerationStructureBuildSizesInfoKHR,
46265     marker: ::std::marker::PhantomData<&'a ()>,
46266 }
46267 impl<'a> ::std::ops::Deref for AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
46268     type Target = AccelerationStructureBuildSizesInfoKHR;
deref(&self) -> &Self::Target46269     fn deref(&self) -> &Self::Target {
46270         &self.inner
46271     }
46272 }
46273 impl<'a> ::std::ops::DerefMut for AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46274     fn deref_mut(&mut self) -> &mut Self::Target {
46275         &mut self.inner
46276     }
46277 }
46278 impl<'a> AccelerationStructureBuildSizesInfoKHRBuilder<'a> {
acceleration_structure_size(mut self, acceleration_structure_size: DeviceSize) -> Self46279     pub fn acceleration_structure_size(mut self, acceleration_structure_size: DeviceSize) -> Self {
46280         self.inner.acceleration_structure_size = acceleration_structure_size;
46281         self
46282     }
update_scratch_size(mut self, update_scratch_size: DeviceSize) -> Self46283     pub fn update_scratch_size(mut self, update_scratch_size: DeviceSize) -> Self {
46284         self.inner.update_scratch_size = update_scratch_size;
46285         self
46286     }
build_scratch_size(mut self, build_scratch_size: DeviceSize) -> Self46287     pub fn build_scratch_size(mut self, build_scratch_size: DeviceSize) -> Self {
46288         self.inner.build_scratch_size = build_scratch_size;
46289         self
46290     }
46291     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46292     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46293     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureBuildSizesInfoKHR46294     pub fn build(self) -> AccelerationStructureBuildSizesInfoKHR {
46295         self.inner
46296     }
46297 }
46298 #[repr(C)]
46299 #[cfg_attr(feature = "debug", derive(Debug))]
46300 #[derive(Copy, Clone)]
46301 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>"]
46302 pub struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
46303     pub s_type: StructureType,
46304     pub p_next: *mut c_void,
46305     pub mutable_descriptor_type: Bool32,
46306 }
46307 impl ::std::default::Default for PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
default() -> Self46308     fn default() -> Self {
46309         Self {
46310             s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE,
46311             p_next: ::std::ptr::null_mut(),
46312             mutable_descriptor_type: Bool32::default(),
46313         }
46314     }
46315 }
46316 impl PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
builder<'a>() -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a>46317     pub fn builder<'a>() -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
46318         PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder {
46319             inner: Self::default(),
46320             marker: ::std::marker::PhantomData,
46321         }
46322     }
46323 }
46324 #[repr(transparent)]
46325 pub struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
46326     inner: PhysicalDeviceMutableDescriptorTypeFeaturesVALVE,
46327     marker: ::std::marker::PhantomData<&'a ()>,
46328 }
46329 unsafe impl ExtendsPhysicalDeviceFeatures2
46330     for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'_>
46331 {
46332 }
46333 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {}
46334 unsafe impl ExtendsDeviceCreateInfo
46335     for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'_>
46336 {
46337 }
46338 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {}
46339 impl<'a> ::std::ops::Deref for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
46340     type Target = PhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
deref(&self) -> &Self::Target46341     fn deref(&self) -> &Self::Target {
46342         &self.inner
46343     }
46344 }
46345 impl<'a> ::std::ops::DerefMut for PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46346     fn deref_mut(&mut self) -> &mut Self::Target {
46347         &mut self.inner
46348     }
46349 }
46350 impl<'a> PhysicalDeviceMutableDescriptorTypeFeaturesVALVEBuilder<'a> {
mutable_descriptor_type(mut self, mutable_descriptor_type: bool) -> Self46351     pub fn mutable_descriptor_type(mut self, mutable_descriptor_type: bool) -> Self {
46352         self.inner.mutable_descriptor_type = mutable_descriptor_type.into();
46353         self
46354     }
46355     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46356     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46357     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVE46358     pub fn build(self) -> PhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
46359         self.inner
46360     }
46361 }
46362 #[repr(C)]
46363 #[cfg_attr(feature = "debug", derive(Debug))]
46364 #[derive(Copy, Clone)]
46365 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMutableDescriptorTypeListVALVE.html>"]
46366 pub struct MutableDescriptorTypeListVALVE {
46367     pub descriptor_type_count: u32,
46368     pub p_descriptor_types: *const DescriptorType,
46369 }
46370 impl ::std::default::Default for MutableDescriptorTypeListVALVE {
default() -> Self46371     fn default() -> Self {
46372         Self {
46373             descriptor_type_count: u32::default(),
46374             p_descriptor_types: ::std::ptr::null(),
46375         }
46376     }
46377 }
46378 impl MutableDescriptorTypeListVALVE {
builder<'a>() -> MutableDescriptorTypeListVALVEBuilder<'a>46379     pub fn builder<'a>() -> MutableDescriptorTypeListVALVEBuilder<'a> {
46380         MutableDescriptorTypeListVALVEBuilder {
46381             inner: Self::default(),
46382             marker: ::std::marker::PhantomData,
46383         }
46384     }
46385 }
46386 #[repr(transparent)]
46387 pub struct MutableDescriptorTypeListVALVEBuilder<'a> {
46388     inner: MutableDescriptorTypeListVALVE,
46389     marker: ::std::marker::PhantomData<&'a ()>,
46390 }
46391 impl<'a> ::std::ops::Deref for MutableDescriptorTypeListVALVEBuilder<'a> {
46392     type Target = MutableDescriptorTypeListVALVE;
deref(&self) -> &Self::Target46393     fn deref(&self) -> &Self::Target {
46394         &self.inner
46395     }
46396 }
46397 impl<'a> ::std::ops::DerefMut for MutableDescriptorTypeListVALVEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46398     fn deref_mut(&mut self) -> &mut Self::Target {
46399         &mut self.inner
46400     }
46401 }
46402 impl<'a> MutableDescriptorTypeListVALVEBuilder<'a> {
descriptor_types(mut self, descriptor_types: &'a [DescriptorType]) -> Self46403     pub fn descriptor_types(mut self, descriptor_types: &'a [DescriptorType]) -> Self {
46404         self.inner.descriptor_type_count = descriptor_types.len() as _;
46405         self.inner.p_descriptor_types = descriptor_types.as_ptr();
46406         self
46407     }
46408     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46409     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46410     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MutableDescriptorTypeListVALVE46411     pub fn build(self) -> MutableDescriptorTypeListVALVE {
46412         self.inner
46413     }
46414 }
46415 #[repr(C)]
46416 #[cfg_attr(feature = "debug", derive(Debug))]
46417 #[derive(Copy, Clone)]
46418 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>"]
46419 pub struct MutableDescriptorTypeCreateInfoVALVE {
46420     pub s_type: StructureType,
46421     pub p_next: *const c_void,
46422     pub mutable_descriptor_type_list_count: u32,
46423     pub p_mutable_descriptor_type_lists: *const MutableDescriptorTypeListVALVE,
46424 }
46425 impl ::std::default::Default for MutableDescriptorTypeCreateInfoVALVE {
default() -> Self46426     fn default() -> Self {
46427         Self {
46428             s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE,
46429             p_next: ::std::ptr::null(),
46430             mutable_descriptor_type_list_count: u32::default(),
46431             p_mutable_descriptor_type_lists: ::std::ptr::null(),
46432         }
46433     }
46434 }
46435 impl MutableDescriptorTypeCreateInfoVALVE {
builder<'a>() -> MutableDescriptorTypeCreateInfoVALVEBuilder<'a>46436     pub fn builder<'a>() -> MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
46437         MutableDescriptorTypeCreateInfoVALVEBuilder {
46438             inner: Self::default(),
46439             marker: ::std::marker::PhantomData,
46440         }
46441     }
46442 }
46443 #[repr(transparent)]
46444 pub struct MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
46445     inner: MutableDescriptorTypeCreateInfoVALVE,
46446     marker: ::std::marker::PhantomData<&'a ()>,
46447 }
46448 unsafe impl ExtendsDescriptorSetLayoutCreateInfo
46449     for MutableDescriptorTypeCreateInfoVALVEBuilder<'_>
46450 {
46451 }
46452 unsafe impl ExtendsDescriptorSetLayoutCreateInfo for MutableDescriptorTypeCreateInfoVALVE {}
46453 unsafe impl ExtendsDescriptorPoolCreateInfo for MutableDescriptorTypeCreateInfoVALVEBuilder<'_> {}
46454 unsafe impl ExtendsDescriptorPoolCreateInfo for MutableDescriptorTypeCreateInfoVALVE {}
46455 impl<'a> ::std::ops::Deref for MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
46456     type Target = MutableDescriptorTypeCreateInfoVALVE;
deref(&self) -> &Self::Target46457     fn deref(&self) -> &Self::Target {
46458         &self.inner
46459     }
46460 }
46461 impl<'a> ::std::ops::DerefMut for MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46462     fn deref_mut(&mut self) -> &mut Self::Target {
46463         &mut self.inner
46464     }
46465 }
46466 impl<'a> MutableDescriptorTypeCreateInfoVALVEBuilder<'a> {
mutable_descriptor_type_lists( mut self, mutable_descriptor_type_lists: &'a [MutableDescriptorTypeListVALVE], ) -> Self46467     pub fn mutable_descriptor_type_lists(
46468         mut self,
46469         mutable_descriptor_type_lists: &'a [MutableDescriptorTypeListVALVE],
46470     ) -> Self {
46471         self.inner.mutable_descriptor_type_list_count = mutable_descriptor_type_lists.len() as _;
46472         self.inner.p_mutable_descriptor_type_lists = mutable_descriptor_type_lists.as_ptr();
46473         self
46474     }
46475     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46476     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46477     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MutableDescriptorTypeCreateInfoVALVE46478     pub fn build(self) -> MutableDescriptorTypeCreateInfoVALVE {
46479         self.inner
46480     }
46481 }
46482 #[repr(C)]
46483 #[cfg_attr(feature = "debug", derive(Debug))]
46484 #[derive(Copy, Clone)]
46485 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>"]
46486 pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
46487     pub s_type: StructureType,
46488     pub p_next: *mut c_void,
46489     pub depth_clip_control: Bool32,
46490 }
46491 impl ::std::default::Default for PhysicalDeviceDepthClipControlFeaturesEXT {
default() -> Self46492     fn default() -> Self {
46493         Self {
46494             s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
46495             p_next: ::std::ptr::null_mut(),
46496             depth_clip_control: Bool32::default(),
46497         }
46498     }
46499 }
46500 impl PhysicalDeviceDepthClipControlFeaturesEXT {
builder<'a>() -> PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a>46501     pub fn builder<'a>() -> PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46502         PhysicalDeviceDepthClipControlFeaturesEXTBuilder {
46503             inner: Self::default(),
46504             marker: ::std::marker::PhantomData,
46505         }
46506     }
46507 }
46508 #[repr(transparent)]
46509 pub struct PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46510     inner: PhysicalDeviceDepthClipControlFeaturesEXT,
46511     marker: ::std::marker::PhantomData<&'a ()>,
46512 }
46513 unsafe impl ExtendsPhysicalDeviceFeatures2
46514     for PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'_>
46515 {
46516 }
46517 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDepthClipControlFeaturesEXT {}
46518 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'_> {}
46519 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDepthClipControlFeaturesEXT {}
46520 impl<'a> ::std::ops::Deref for PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
46521     type Target = PhysicalDeviceDepthClipControlFeaturesEXT;
deref(&self) -> &Self::Target46522     fn deref(&self) -> &Self::Target {
46523         &self.inner
46524     }
46525 }
46526 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'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> PhysicalDeviceDepthClipControlFeaturesEXTBuilder<'a> {
depth_clip_control(mut self, depth_clip_control: bool) -> Self46532     pub fn depth_clip_control(mut self, depth_clip_control: bool) -> Self {
46533         self.inner.depth_clip_control = depth_clip_control.into();
46534         self
46535     }
46536     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46537     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46538     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDepthClipControlFeaturesEXT46539     pub fn build(self) -> PhysicalDeviceDepthClipControlFeaturesEXT {
46540         self.inner
46541     }
46542 }
46543 #[repr(C)]
46544 #[cfg_attr(feature = "debug", derive(Debug))]
46545 #[derive(Copy, Clone)]
46546 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>"]
46547 pub struct PipelineViewportDepthClipControlCreateInfoEXT {
46548     pub s_type: StructureType,
46549     pub p_next: *const c_void,
46550     pub negative_one_to_one: Bool32,
46551 }
46552 impl ::std::default::Default for PipelineViewportDepthClipControlCreateInfoEXT {
default() -> Self46553     fn default() -> Self {
46554         Self {
46555             s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
46556             p_next: ::std::ptr::null(),
46557             negative_one_to_one: Bool32::default(),
46558         }
46559     }
46560 }
46561 impl PipelineViewportDepthClipControlCreateInfoEXT {
builder<'a>() -> PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a>46562     pub fn builder<'a>() -> PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
46563         PipelineViewportDepthClipControlCreateInfoEXTBuilder {
46564             inner: Self::default(),
46565             marker: ::std::marker::PhantomData,
46566         }
46567     }
46568 }
46569 #[repr(transparent)]
46570 pub struct PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
46571     inner: PipelineViewportDepthClipControlCreateInfoEXT,
46572     marker: ::std::marker::PhantomData<&'a ()>,
46573 }
46574 unsafe impl ExtendsPipelineViewportStateCreateInfo
46575     for PipelineViewportDepthClipControlCreateInfoEXTBuilder<'_>
46576 {
46577 }
46578 unsafe impl ExtendsPipelineViewportStateCreateInfo
46579     for PipelineViewportDepthClipControlCreateInfoEXT
46580 {
46581 }
46582 impl<'a> ::std::ops::Deref for PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
46583     type Target = PipelineViewportDepthClipControlCreateInfoEXT;
deref(&self) -> &Self::Target46584     fn deref(&self) -> &Self::Target {
46585         &self.inner
46586     }
46587 }
46588 impl<'a> ::std::ops::DerefMut for PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46589     fn deref_mut(&mut self) -> &mut Self::Target {
46590         &mut self.inner
46591     }
46592 }
46593 impl<'a> PipelineViewportDepthClipControlCreateInfoEXTBuilder<'a> {
negative_one_to_one(mut self, negative_one_to_one: bool) -> Self46594     pub fn negative_one_to_one(mut self, negative_one_to_one: bool) -> Self {
46595         self.inner.negative_one_to_one = negative_one_to_one.into();
46596         self
46597     }
46598     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46599     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46600     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineViewportDepthClipControlCreateInfoEXT46601     pub fn build(self) -> PipelineViewportDepthClipControlCreateInfoEXT {
46602         self.inner
46603     }
46604 }
46605 #[repr(C)]
46606 #[cfg_attr(feature = "debug", derive(Debug))]
46607 #[derive(Copy, Clone)]
46608 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>"]
46609 pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
46610     pub s_type: StructureType,
46611     pub p_next: *mut c_void,
46612     pub vertex_input_dynamic_state: Bool32,
46613 }
46614 impl ::std::default::Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
default() -> Self46615     fn default() -> Self {
46616         Self {
46617             s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
46618             p_next: ::std::ptr::null_mut(),
46619             vertex_input_dynamic_state: Bool32::default(),
46620         }
46621     }
46622 }
46623 impl PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
builder<'a>() -> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a>46624     pub fn builder<'a>() -> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
46625         PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder {
46626             inner: Self::default(),
46627             marker: ::std::marker::PhantomData,
46628         }
46629     }
46630 }
46631 #[repr(transparent)]
46632 pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
46633     inner: PhysicalDeviceVertexInputDynamicStateFeaturesEXT,
46634     marker: ::std::marker::PhantomData<&'a ()>,
46635 }
46636 unsafe impl ExtendsPhysicalDeviceFeatures2
46637     for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'_>
46638 {
46639 }
46640 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
46641 unsafe impl ExtendsDeviceCreateInfo
46642     for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'_>
46643 {
46644 }
46645 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
46646 impl<'a> ::std::ops::Deref for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
46647     type Target = PhysicalDeviceVertexInputDynamicStateFeaturesEXT;
deref(&self) -> &Self::Target46648     fn deref(&self) -> &Self::Target {
46649         &self.inner
46650     }
46651 }
46652 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46653     fn deref_mut(&mut self) -> &mut Self::Target {
46654         &mut self.inner
46655     }
46656 }
46657 impl<'a> PhysicalDeviceVertexInputDynamicStateFeaturesEXTBuilder<'a> {
vertex_input_dynamic_state(mut self, vertex_input_dynamic_state: bool) -> Self46658     pub fn vertex_input_dynamic_state(mut self, vertex_input_dynamic_state: bool) -> Self {
46659         self.inner.vertex_input_dynamic_state = vertex_input_dynamic_state.into();
46660         self
46661     }
46662     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46663     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46664     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVertexInputDynamicStateFeaturesEXT46665     pub fn build(self) -> PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
46666         self.inner
46667     }
46668 }
46669 #[repr(C)]
46670 #[cfg_attr(feature = "debug", derive(Debug))]
46671 #[derive(Copy, Clone)]
46672 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>"]
46673 pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
46674     pub s_type: StructureType,
46675     pub p_next: *mut c_void,
46676     pub external_memory_rdma: Bool32,
46677 }
46678 impl ::std::default::Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
default() -> Self46679     fn default() -> Self {
46680         Self {
46681             s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
46682             p_next: ::std::ptr::null_mut(),
46683             external_memory_rdma: Bool32::default(),
46684         }
46685     }
46686 }
46687 impl PhysicalDeviceExternalMemoryRDMAFeaturesNV {
builder<'a>() -> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a>46688     pub fn builder<'a>() -> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
46689         PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder {
46690             inner: Self::default(),
46691             marker: ::std::marker::PhantomData,
46692         }
46693     }
46694 }
46695 #[repr(transparent)]
46696 pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
46697     inner: PhysicalDeviceExternalMemoryRDMAFeaturesNV,
46698     marker: ::std::marker::PhantomData<&'a ()>,
46699 }
46700 unsafe impl ExtendsPhysicalDeviceFeatures2
46701     for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'_>
46702 {
46703 }
46704 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
46705 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'_> {}
46706 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
46707 impl<'a> ::std::ops::Deref for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
46708     type Target = PhysicalDeviceExternalMemoryRDMAFeaturesNV;
deref(&self) -> &Self::Target46709     fn deref(&self) -> &Self::Target {
46710         &self.inner
46711     }
46712 }
46713 impl<'a> ::std::ops::DerefMut for PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46714     fn deref_mut(&mut self) -> &mut Self::Target {
46715         &mut self.inner
46716     }
46717 }
46718 impl<'a> PhysicalDeviceExternalMemoryRDMAFeaturesNVBuilder<'a> {
external_memory_rdma(mut self, external_memory_rdma: bool) -> Self46719     pub fn external_memory_rdma(mut self, external_memory_rdma: bool) -> Self {
46720         self.inner.external_memory_rdma = external_memory_rdma.into();
46721         self
46722     }
46723     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46724     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46725     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceExternalMemoryRDMAFeaturesNV46726     pub fn build(self) -> PhysicalDeviceExternalMemoryRDMAFeaturesNV {
46727         self.inner
46728     }
46729 }
46730 #[repr(C)]
46731 #[cfg_attr(feature = "debug", derive(Debug))]
46732 #[derive(Copy, Clone)]
46733 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDescription2EXT.html>"]
46734 pub struct VertexInputBindingDescription2EXT {
46735     pub s_type: StructureType,
46736     pub p_next: *mut c_void,
46737     pub binding: u32,
46738     pub stride: u32,
46739     pub input_rate: VertexInputRate,
46740     pub divisor: u32,
46741 }
46742 impl ::std::default::Default for VertexInputBindingDescription2EXT {
default() -> Self46743     fn default() -> Self {
46744         Self {
46745             s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
46746             p_next: ::std::ptr::null_mut(),
46747             binding: u32::default(),
46748             stride: u32::default(),
46749             input_rate: VertexInputRate::default(),
46750             divisor: u32::default(),
46751         }
46752     }
46753 }
46754 impl VertexInputBindingDescription2EXT {
builder<'a>() -> VertexInputBindingDescription2EXTBuilder<'a>46755     pub fn builder<'a>() -> VertexInputBindingDescription2EXTBuilder<'a> {
46756         VertexInputBindingDescription2EXTBuilder {
46757             inner: Self::default(),
46758             marker: ::std::marker::PhantomData,
46759         }
46760     }
46761 }
46762 #[repr(transparent)]
46763 pub struct VertexInputBindingDescription2EXTBuilder<'a> {
46764     inner: VertexInputBindingDescription2EXT,
46765     marker: ::std::marker::PhantomData<&'a ()>,
46766 }
46767 impl<'a> ::std::ops::Deref for VertexInputBindingDescription2EXTBuilder<'a> {
46768     type Target = VertexInputBindingDescription2EXT;
deref(&self) -> &Self::Target46769     fn deref(&self) -> &Self::Target {
46770         &self.inner
46771     }
46772 }
46773 impl<'a> ::std::ops::DerefMut for VertexInputBindingDescription2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46774     fn deref_mut(&mut self) -> &mut Self::Target {
46775         &mut self.inner
46776     }
46777 }
46778 impl<'a> VertexInputBindingDescription2EXTBuilder<'a> {
binding(mut self, binding: u32) -> Self46779     pub fn binding(mut self, binding: u32) -> Self {
46780         self.inner.binding = binding;
46781         self
46782     }
stride(mut self, stride: u32) -> Self46783     pub fn stride(mut self, stride: u32) -> Self {
46784         self.inner.stride = stride;
46785         self
46786     }
input_rate(mut self, input_rate: VertexInputRate) -> Self46787     pub fn input_rate(mut self, input_rate: VertexInputRate) -> Self {
46788         self.inner.input_rate = input_rate;
46789         self
46790     }
divisor(mut self, divisor: u32) -> Self46791     pub fn divisor(mut self, divisor: u32) -> Self {
46792         self.inner.divisor = divisor;
46793         self
46794     }
46795     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46796     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46797     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputBindingDescription2EXT46798     pub fn build(self) -> VertexInputBindingDescription2EXT {
46799         self.inner
46800     }
46801 }
46802 #[repr(C)]
46803 #[cfg_attr(feature = "debug", derive(Debug))]
46804 #[derive(Copy, Clone)]
46805 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputAttributeDescription2EXT.html>"]
46806 pub struct VertexInputAttributeDescription2EXT {
46807     pub s_type: StructureType,
46808     pub p_next: *mut c_void,
46809     pub location: u32,
46810     pub binding: u32,
46811     pub format: Format,
46812     pub offset: u32,
46813 }
46814 impl ::std::default::Default for VertexInputAttributeDescription2EXT {
default() -> Self46815     fn default() -> Self {
46816         Self {
46817             s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
46818             p_next: ::std::ptr::null_mut(),
46819             location: u32::default(),
46820             binding: u32::default(),
46821             format: Format::default(),
46822             offset: u32::default(),
46823         }
46824     }
46825 }
46826 impl VertexInputAttributeDescription2EXT {
builder<'a>() -> VertexInputAttributeDescription2EXTBuilder<'a>46827     pub fn builder<'a>() -> VertexInputAttributeDescription2EXTBuilder<'a> {
46828         VertexInputAttributeDescription2EXTBuilder {
46829             inner: Self::default(),
46830             marker: ::std::marker::PhantomData,
46831         }
46832     }
46833 }
46834 #[repr(transparent)]
46835 pub struct VertexInputAttributeDescription2EXTBuilder<'a> {
46836     inner: VertexInputAttributeDescription2EXT,
46837     marker: ::std::marker::PhantomData<&'a ()>,
46838 }
46839 impl<'a> ::std::ops::Deref for VertexInputAttributeDescription2EXTBuilder<'a> {
46840     type Target = VertexInputAttributeDescription2EXT;
deref(&self) -> &Self::Target46841     fn deref(&self) -> &Self::Target {
46842         &self.inner
46843     }
46844 }
46845 impl<'a> ::std::ops::DerefMut for VertexInputAttributeDescription2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46846     fn deref_mut(&mut self) -> &mut Self::Target {
46847         &mut self.inner
46848     }
46849 }
46850 impl<'a> VertexInputAttributeDescription2EXTBuilder<'a> {
location(mut self, location: u32) -> Self46851     pub fn location(mut self, location: u32) -> Self {
46852         self.inner.location = location;
46853         self
46854     }
binding(mut self, binding: u32) -> Self46855     pub fn binding(mut self, binding: u32) -> Self {
46856         self.inner.binding = binding;
46857         self
46858     }
format(mut self, format: Format) -> Self46859     pub fn format(mut self, format: Format) -> Self {
46860         self.inner.format = format;
46861         self
46862     }
offset(mut self, offset: u32) -> Self46863     pub fn offset(mut self, offset: u32) -> Self {
46864         self.inner.offset = offset;
46865         self
46866     }
46867     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46868     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46869     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VertexInputAttributeDescription2EXT46870     pub fn build(self) -> VertexInputAttributeDescription2EXT {
46871         self.inner
46872     }
46873 }
46874 #[repr(C)]
46875 #[cfg_attr(feature = "debug", derive(Debug))]
46876 #[derive(Copy, Clone)]
46877 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>"]
46878 pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
46879     pub s_type: StructureType,
46880     pub p_next: *mut c_void,
46881     pub color_write_enable: Bool32,
46882 }
46883 impl ::std::default::Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
default() -> Self46884     fn default() -> Self {
46885         Self {
46886             s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
46887             p_next: ::std::ptr::null_mut(),
46888             color_write_enable: Bool32::default(),
46889         }
46890     }
46891 }
46892 impl PhysicalDeviceColorWriteEnableFeaturesEXT {
builder<'a>() -> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a>46893     pub fn builder<'a>() -> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
46894         PhysicalDeviceColorWriteEnableFeaturesEXTBuilder {
46895             inner: Self::default(),
46896             marker: ::std::marker::PhantomData,
46897         }
46898     }
46899 }
46900 #[repr(transparent)]
46901 pub struct PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
46902     inner: PhysicalDeviceColorWriteEnableFeaturesEXT,
46903     marker: ::std::marker::PhantomData<&'a ()>,
46904 }
46905 unsafe impl ExtendsPhysicalDeviceFeatures2
46906     for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'_>
46907 {
46908 }
46909 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceColorWriteEnableFeaturesEXT {}
46910 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'_> {}
46911 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceColorWriteEnableFeaturesEXT {}
46912 impl<'a> ::std::ops::Deref for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
46913     type Target = PhysicalDeviceColorWriteEnableFeaturesEXT;
deref(&self) -> &Self::Target46914     fn deref(&self) -> &Self::Target {
46915         &self.inner
46916     }
46917 }
46918 impl<'a> ::std::ops::DerefMut for PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46919     fn deref_mut(&mut self) -> &mut Self::Target {
46920         &mut self.inner
46921     }
46922 }
46923 impl<'a> PhysicalDeviceColorWriteEnableFeaturesEXTBuilder<'a> {
color_write_enable(mut self, color_write_enable: bool) -> Self46924     pub fn color_write_enable(mut self, color_write_enable: bool) -> Self {
46925         self.inner.color_write_enable = color_write_enable.into();
46926         self
46927     }
46928     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46929     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46930     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceColorWriteEnableFeaturesEXT46931     pub fn build(self) -> PhysicalDeviceColorWriteEnableFeaturesEXT {
46932         self.inner
46933     }
46934 }
46935 #[repr(C)]
46936 #[cfg_attr(feature = "debug", derive(Debug))]
46937 #[derive(Copy, Clone)]
46938 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorWriteCreateInfoEXT.html>"]
46939 pub struct PipelineColorWriteCreateInfoEXT {
46940     pub s_type: StructureType,
46941     pub p_next: *const c_void,
46942     pub attachment_count: u32,
46943     pub p_color_write_enables: *const Bool32,
46944 }
46945 impl ::std::default::Default for PipelineColorWriteCreateInfoEXT {
default() -> Self46946     fn default() -> Self {
46947         Self {
46948             s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
46949             p_next: ::std::ptr::null(),
46950             attachment_count: u32::default(),
46951             p_color_write_enables: ::std::ptr::null(),
46952         }
46953     }
46954 }
46955 impl PipelineColorWriteCreateInfoEXT {
builder<'a>() -> PipelineColorWriteCreateInfoEXTBuilder<'a>46956     pub fn builder<'a>() -> PipelineColorWriteCreateInfoEXTBuilder<'a> {
46957         PipelineColorWriteCreateInfoEXTBuilder {
46958             inner: Self::default(),
46959             marker: ::std::marker::PhantomData,
46960         }
46961     }
46962 }
46963 #[repr(transparent)]
46964 pub struct PipelineColorWriteCreateInfoEXTBuilder<'a> {
46965     inner: PipelineColorWriteCreateInfoEXT,
46966     marker: ::std::marker::PhantomData<&'a ()>,
46967 }
46968 unsafe impl ExtendsPipelineColorBlendStateCreateInfo
46969     for PipelineColorWriteCreateInfoEXTBuilder<'_>
46970 {
46971 }
46972 unsafe impl ExtendsPipelineColorBlendStateCreateInfo for PipelineColorWriteCreateInfoEXT {}
46973 impl<'a> ::std::ops::Deref for PipelineColorWriteCreateInfoEXTBuilder<'a> {
46974     type Target = PipelineColorWriteCreateInfoEXT;
deref(&self) -> &Self::Target46975     fn deref(&self) -> &Self::Target {
46976         &self.inner
46977     }
46978 }
46979 impl<'a> ::std::ops::DerefMut for PipelineColorWriteCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target46980     fn deref_mut(&mut self) -> &mut Self::Target {
46981         &mut self.inner
46982     }
46983 }
46984 impl<'a> PipelineColorWriteCreateInfoEXTBuilder<'a> {
color_write_enables(mut self, color_write_enables: &'a [Bool32]) -> Self46985     pub fn color_write_enables(mut self, color_write_enables: &'a [Bool32]) -> Self {
46986         self.inner.attachment_count = color_write_enables.len() as _;
46987         self.inner.p_color_write_enables = color_write_enables.as_ptr();
46988         self
46989     }
46990     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
46991     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
46992     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineColorWriteCreateInfoEXT46993     pub fn build(self) -> PipelineColorWriteCreateInfoEXT {
46994         self.inner
46995     }
46996 }
46997 #[repr(C)]
46998 #[cfg_attr(feature = "debug", derive(Debug))]
46999 #[derive(Copy, Clone)]
47000 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryBarrier2KHR.html>"]
47001 pub struct MemoryBarrier2KHR {
47002     pub s_type: StructureType,
47003     pub p_next: *const c_void,
47004     pub src_stage_mask: PipelineStageFlags2KHR,
47005     pub src_access_mask: AccessFlags2KHR,
47006     pub dst_stage_mask: PipelineStageFlags2KHR,
47007     pub dst_access_mask: AccessFlags2KHR,
47008 }
47009 impl ::std::default::Default for MemoryBarrier2KHR {
default() -> Self47010     fn default() -> Self {
47011         Self {
47012             s_type: StructureType::MEMORY_BARRIER_2_KHR,
47013             p_next: ::std::ptr::null(),
47014             src_stage_mask: PipelineStageFlags2KHR::default(),
47015             src_access_mask: AccessFlags2KHR::default(),
47016             dst_stage_mask: PipelineStageFlags2KHR::default(),
47017             dst_access_mask: AccessFlags2KHR::default(),
47018         }
47019     }
47020 }
47021 impl MemoryBarrier2KHR {
builder<'a>() -> MemoryBarrier2KHRBuilder<'a>47022     pub fn builder<'a>() -> MemoryBarrier2KHRBuilder<'a> {
47023         MemoryBarrier2KHRBuilder {
47024             inner: Self::default(),
47025             marker: ::std::marker::PhantomData,
47026         }
47027     }
47028 }
47029 #[repr(transparent)]
47030 pub struct MemoryBarrier2KHRBuilder<'a> {
47031     inner: MemoryBarrier2KHR,
47032     marker: ::std::marker::PhantomData<&'a ()>,
47033 }
47034 unsafe impl ExtendsSubpassDependency2 for MemoryBarrier2KHRBuilder<'_> {}
47035 unsafe impl ExtendsSubpassDependency2 for MemoryBarrier2KHR {}
47036 impl<'a> ::std::ops::Deref for MemoryBarrier2KHRBuilder<'a> {
47037     type Target = MemoryBarrier2KHR;
deref(&self) -> &Self::Target47038     fn deref(&self) -> &Self::Target {
47039         &self.inner
47040     }
47041 }
47042 impl<'a> ::std::ops::DerefMut for MemoryBarrier2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47043     fn deref_mut(&mut self) -> &mut Self::Target {
47044         &mut self.inner
47045     }
47046 }
47047 impl<'a> MemoryBarrier2KHRBuilder<'a> {
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self47048     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self {
47049         self.inner.src_stage_mask = src_stage_mask;
47050         self
47051     }
src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self47052     pub fn src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self {
47053         self.inner.src_access_mask = src_access_mask;
47054         self
47055     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self47056     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self {
47057         self.inner.dst_stage_mask = dst_stage_mask;
47058         self
47059     }
dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self47060     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self {
47061         self.inner.dst_access_mask = dst_access_mask;
47062         self
47063     }
47064     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47065     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47066     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryBarrier2KHR47067     pub fn build(self) -> MemoryBarrier2KHR {
47068         self.inner
47069     }
47070 }
47071 #[repr(C)]
47072 #[cfg_attr(feature = "debug", derive(Debug))]
47073 #[derive(Copy, Clone)]
47074 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryBarrier2KHR.html>"]
47075 pub struct ImageMemoryBarrier2KHR {
47076     pub s_type: StructureType,
47077     pub p_next: *const c_void,
47078     pub src_stage_mask: PipelineStageFlags2KHR,
47079     pub src_access_mask: AccessFlags2KHR,
47080     pub dst_stage_mask: PipelineStageFlags2KHR,
47081     pub dst_access_mask: AccessFlags2KHR,
47082     pub old_layout: ImageLayout,
47083     pub new_layout: ImageLayout,
47084     pub src_queue_family_index: u32,
47085     pub dst_queue_family_index: u32,
47086     pub image: Image,
47087     pub subresource_range: ImageSubresourceRange,
47088 }
47089 impl ::std::default::Default for ImageMemoryBarrier2KHR {
default() -> Self47090     fn default() -> Self {
47091         Self {
47092             s_type: StructureType::IMAGE_MEMORY_BARRIER_2_KHR,
47093             p_next: ::std::ptr::null(),
47094             src_stage_mask: PipelineStageFlags2KHR::default(),
47095             src_access_mask: AccessFlags2KHR::default(),
47096             dst_stage_mask: PipelineStageFlags2KHR::default(),
47097             dst_access_mask: AccessFlags2KHR::default(),
47098             old_layout: ImageLayout::default(),
47099             new_layout: ImageLayout::default(),
47100             src_queue_family_index: u32::default(),
47101             dst_queue_family_index: u32::default(),
47102             image: Image::default(),
47103             subresource_range: ImageSubresourceRange::default(),
47104         }
47105     }
47106 }
47107 impl ImageMemoryBarrier2KHR {
builder<'a>() -> ImageMemoryBarrier2KHRBuilder<'a>47108     pub fn builder<'a>() -> ImageMemoryBarrier2KHRBuilder<'a> {
47109         ImageMemoryBarrier2KHRBuilder {
47110             inner: Self::default(),
47111             marker: ::std::marker::PhantomData,
47112         }
47113     }
47114 }
47115 #[repr(transparent)]
47116 pub struct ImageMemoryBarrier2KHRBuilder<'a> {
47117     inner: ImageMemoryBarrier2KHR,
47118     marker: ::std::marker::PhantomData<&'a ()>,
47119 }
47120 pub unsafe trait ExtendsImageMemoryBarrier2KHR {}
47121 impl<'a> ::std::ops::Deref for ImageMemoryBarrier2KHRBuilder<'a> {
47122     type Target = ImageMemoryBarrier2KHR;
deref(&self) -> &Self::Target47123     fn deref(&self) -> &Self::Target {
47124         &self.inner
47125     }
47126 }
47127 impl<'a> ::std::ops::DerefMut for ImageMemoryBarrier2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47128     fn deref_mut(&mut self) -> &mut Self::Target {
47129         &mut self.inner
47130     }
47131 }
47132 impl<'a> ImageMemoryBarrier2KHRBuilder<'a> {
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self47133     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self {
47134         self.inner.src_stage_mask = src_stage_mask;
47135         self
47136     }
src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self47137     pub fn src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self {
47138         self.inner.src_access_mask = src_access_mask;
47139         self
47140     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self47141     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self {
47142         self.inner.dst_stage_mask = dst_stage_mask;
47143         self
47144     }
dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self47145     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self {
47146         self.inner.dst_access_mask = dst_access_mask;
47147         self
47148     }
old_layout(mut self, old_layout: ImageLayout) -> Self47149     pub fn old_layout(mut self, old_layout: ImageLayout) -> Self {
47150         self.inner.old_layout = old_layout;
47151         self
47152     }
new_layout(mut self, new_layout: ImageLayout) -> Self47153     pub fn new_layout(mut self, new_layout: ImageLayout) -> Self {
47154         self.inner.new_layout = new_layout;
47155         self
47156     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self47157     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
47158         self.inner.src_queue_family_index = src_queue_family_index;
47159         self
47160     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self47161     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
47162         self.inner.dst_queue_family_index = dst_queue_family_index;
47163         self
47164     }
image(mut self, image: Image) -> Self47165     pub fn image(mut self, image: Image) -> Self {
47166         self.inner.image = image;
47167         self
47168     }
subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self47169     pub fn subresource_range(mut self, subresource_range: ImageSubresourceRange) -> Self {
47170         self.inner.subresource_range = subresource_range;
47171         self
47172     }
47173     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
47174     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
47175     #[doc = r" valid extension structs can be pushed into the chain."]
47176     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
47177     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsImageMemoryBarrier2KHR>(mut self, next: &'a mut T) -> Self47178     pub fn push_next<T: ExtendsImageMemoryBarrier2KHR>(mut self, next: &'a mut T) -> Self {
47179         unsafe {
47180             let next_ptr = next as *mut T as *mut BaseOutStructure;
47181             let last_next = ptr_chain_iter(next).last().unwrap();
47182             (*last_next).p_next = self.inner.p_next as _;
47183             self.inner.p_next = next_ptr as _;
47184         }
47185         self
47186     }
47187     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47188     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47189     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageMemoryBarrier2KHR47190     pub fn build(self) -> ImageMemoryBarrier2KHR {
47191         self.inner
47192     }
47193 }
47194 #[repr(C)]
47195 #[cfg_attr(feature = "debug", derive(Debug))]
47196 #[derive(Copy, Clone)]
47197 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryBarrier2KHR.html>"]
47198 pub struct BufferMemoryBarrier2KHR {
47199     pub s_type: StructureType,
47200     pub p_next: *const c_void,
47201     pub src_stage_mask: PipelineStageFlags2KHR,
47202     pub src_access_mask: AccessFlags2KHR,
47203     pub dst_stage_mask: PipelineStageFlags2KHR,
47204     pub dst_access_mask: AccessFlags2KHR,
47205     pub src_queue_family_index: u32,
47206     pub dst_queue_family_index: u32,
47207     pub buffer: Buffer,
47208     pub offset: DeviceSize,
47209     pub size: DeviceSize,
47210 }
47211 impl ::std::default::Default for BufferMemoryBarrier2KHR {
default() -> Self47212     fn default() -> Self {
47213         Self {
47214             s_type: StructureType::BUFFER_MEMORY_BARRIER_2_KHR,
47215             p_next: ::std::ptr::null(),
47216             src_stage_mask: PipelineStageFlags2KHR::default(),
47217             src_access_mask: AccessFlags2KHR::default(),
47218             dst_stage_mask: PipelineStageFlags2KHR::default(),
47219             dst_access_mask: AccessFlags2KHR::default(),
47220             src_queue_family_index: u32::default(),
47221             dst_queue_family_index: u32::default(),
47222             buffer: Buffer::default(),
47223             offset: DeviceSize::default(),
47224             size: DeviceSize::default(),
47225         }
47226     }
47227 }
47228 impl BufferMemoryBarrier2KHR {
builder<'a>() -> BufferMemoryBarrier2KHRBuilder<'a>47229     pub fn builder<'a>() -> BufferMemoryBarrier2KHRBuilder<'a> {
47230         BufferMemoryBarrier2KHRBuilder {
47231             inner: Self::default(),
47232             marker: ::std::marker::PhantomData,
47233         }
47234     }
47235 }
47236 #[repr(transparent)]
47237 pub struct BufferMemoryBarrier2KHRBuilder<'a> {
47238     inner: BufferMemoryBarrier2KHR,
47239     marker: ::std::marker::PhantomData<&'a ()>,
47240 }
47241 impl<'a> ::std::ops::Deref for BufferMemoryBarrier2KHRBuilder<'a> {
47242     type Target = BufferMemoryBarrier2KHR;
deref(&self) -> &Self::Target47243     fn deref(&self) -> &Self::Target {
47244         &self.inner
47245     }
47246 }
47247 impl<'a> ::std::ops::DerefMut for BufferMemoryBarrier2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47248     fn deref_mut(&mut self) -> &mut Self::Target {
47249         &mut self.inner
47250     }
47251 }
47252 impl<'a> BufferMemoryBarrier2KHRBuilder<'a> {
src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self47253     pub fn src_stage_mask(mut self, src_stage_mask: PipelineStageFlags2KHR) -> Self {
47254         self.inner.src_stage_mask = src_stage_mask;
47255         self
47256     }
src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self47257     pub fn src_access_mask(mut self, src_access_mask: AccessFlags2KHR) -> Self {
47258         self.inner.src_access_mask = src_access_mask;
47259         self
47260     }
dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self47261     pub fn dst_stage_mask(mut self, dst_stage_mask: PipelineStageFlags2KHR) -> Self {
47262         self.inner.dst_stage_mask = dst_stage_mask;
47263         self
47264     }
dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self47265     pub fn dst_access_mask(mut self, dst_access_mask: AccessFlags2KHR) -> Self {
47266         self.inner.dst_access_mask = dst_access_mask;
47267         self
47268     }
src_queue_family_index(mut self, src_queue_family_index: u32) -> Self47269     pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
47270         self.inner.src_queue_family_index = src_queue_family_index;
47271         self
47272     }
dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self47273     pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
47274         self.inner.dst_queue_family_index = dst_queue_family_index;
47275         self
47276     }
buffer(mut self, buffer: Buffer) -> Self47277     pub fn buffer(mut self, buffer: Buffer) -> Self {
47278         self.inner.buffer = buffer;
47279         self
47280     }
offset(mut self, offset: DeviceSize) -> Self47281     pub fn offset(mut self, offset: DeviceSize) -> Self {
47282         self.inner.offset = offset;
47283         self
47284     }
size(mut self, size: DeviceSize) -> Self47285     pub fn size(mut self, size: DeviceSize) -> Self {
47286         self.inner.size = size;
47287         self
47288     }
47289     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47290     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47291     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferMemoryBarrier2KHR47292     pub fn build(self) -> BufferMemoryBarrier2KHR {
47293         self.inner
47294     }
47295 }
47296 #[repr(C)]
47297 #[cfg_attr(feature = "debug", derive(Debug))]
47298 #[derive(Copy, Clone)]
47299 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDependencyInfoKHR.html>"]
47300 pub struct DependencyInfoKHR {
47301     pub s_type: StructureType,
47302     pub p_next: *const c_void,
47303     pub dependency_flags: DependencyFlags,
47304     pub memory_barrier_count: u32,
47305     pub p_memory_barriers: *const MemoryBarrier2KHR,
47306     pub buffer_memory_barrier_count: u32,
47307     pub p_buffer_memory_barriers: *const BufferMemoryBarrier2KHR,
47308     pub image_memory_barrier_count: u32,
47309     pub p_image_memory_barriers: *const ImageMemoryBarrier2KHR,
47310 }
47311 impl ::std::default::Default for DependencyInfoKHR {
default() -> Self47312     fn default() -> Self {
47313         Self {
47314             s_type: StructureType::DEPENDENCY_INFO_KHR,
47315             p_next: ::std::ptr::null(),
47316             dependency_flags: DependencyFlags::default(),
47317             memory_barrier_count: u32::default(),
47318             p_memory_barriers: ::std::ptr::null(),
47319             buffer_memory_barrier_count: u32::default(),
47320             p_buffer_memory_barriers: ::std::ptr::null(),
47321             image_memory_barrier_count: u32::default(),
47322             p_image_memory_barriers: ::std::ptr::null(),
47323         }
47324     }
47325 }
47326 impl DependencyInfoKHR {
builder<'a>() -> DependencyInfoKHRBuilder<'a>47327     pub fn builder<'a>() -> DependencyInfoKHRBuilder<'a> {
47328         DependencyInfoKHRBuilder {
47329             inner: Self::default(),
47330             marker: ::std::marker::PhantomData,
47331         }
47332     }
47333 }
47334 #[repr(transparent)]
47335 pub struct DependencyInfoKHRBuilder<'a> {
47336     inner: DependencyInfoKHR,
47337     marker: ::std::marker::PhantomData<&'a ()>,
47338 }
47339 impl<'a> ::std::ops::Deref for DependencyInfoKHRBuilder<'a> {
47340     type Target = DependencyInfoKHR;
deref(&self) -> &Self::Target47341     fn deref(&self) -> &Self::Target {
47342         &self.inner
47343     }
47344 }
47345 impl<'a> ::std::ops::DerefMut for DependencyInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47346     fn deref_mut(&mut self) -> &mut Self::Target {
47347         &mut self.inner
47348     }
47349 }
47350 impl<'a> DependencyInfoKHRBuilder<'a> {
dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self47351     pub fn dependency_flags(mut self, dependency_flags: DependencyFlags) -> Self {
47352         self.inner.dependency_flags = dependency_flags;
47353         self
47354     }
memory_barriers(mut self, memory_barriers: &'a [MemoryBarrier2KHR]) -> Self47355     pub fn memory_barriers(mut self, memory_barriers: &'a [MemoryBarrier2KHR]) -> Self {
47356         self.inner.memory_barrier_count = memory_barriers.len() as _;
47357         self.inner.p_memory_barriers = memory_barriers.as_ptr();
47358         self
47359     }
buffer_memory_barriers( mut self, buffer_memory_barriers: &'a [BufferMemoryBarrier2KHR], ) -> Self47360     pub fn buffer_memory_barriers(
47361         mut self,
47362         buffer_memory_barriers: &'a [BufferMemoryBarrier2KHR],
47363     ) -> Self {
47364         self.inner.buffer_memory_barrier_count = buffer_memory_barriers.len() as _;
47365         self.inner.p_buffer_memory_barriers = buffer_memory_barriers.as_ptr();
47366         self
47367     }
image_memory_barriers( mut self, image_memory_barriers: &'a [ImageMemoryBarrier2KHR], ) -> Self47368     pub fn image_memory_barriers(
47369         mut self,
47370         image_memory_barriers: &'a [ImageMemoryBarrier2KHR],
47371     ) -> Self {
47372         self.inner.image_memory_barrier_count = image_memory_barriers.len() as _;
47373         self.inner.p_image_memory_barriers = image_memory_barriers.as_ptr();
47374         self
47375     }
47376     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47377     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47378     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DependencyInfoKHR47379     pub fn build(self) -> DependencyInfoKHR {
47380         self.inner
47381     }
47382 }
47383 #[repr(C)]
47384 #[cfg_attr(feature = "debug", derive(Debug))]
47385 #[derive(Copy, Clone)]
47386 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreSubmitInfoKHR.html>"]
47387 pub struct SemaphoreSubmitInfoKHR {
47388     pub s_type: StructureType,
47389     pub p_next: *const c_void,
47390     pub semaphore: Semaphore,
47391     pub value: u64,
47392     pub stage_mask: PipelineStageFlags2KHR,
47393     pub device_index: u32,
47394 }
47395 impl ::std::default::Default for SemaphoreSubmitInfoKHR {
default() -> Self47396     fn default() -> Self {
47397         Self {
47398             s_type: StructureType::SEMAPHORE_SUBMIT_INFO_KHR,
47399             p_next: ::std::ptr::null(),
47400             semaphore: Semaphore::default(),
47401             value: u64::default(),
47402             stage_mask: PipelineStageFlags2KHR::default(),
47403             device_index: u32::default(),
47404         }
47405     }
47406 }
47407 impl SemaphoreSubmitInfoKHR {
builder<'a>() -> SemaphoreSubmitInfoKHRBuilder<'a>47408     pub fn builder<'a>() -> SemaphoreSubmitInfoKHRBuilder<'a> {
47409         SemaphoreSubmitInfoKHRBuilder {
47410             inner: Self::default(),
47411             marker: ::std::marker::PhantomData,
47412         }
47413     }
47414 }
47415 #[repr(transparent)]
47416 pub struct SemaphoreSubmitInfoKHRBuilder<'a> {
47417     inner: SemaphoreSubmitInfoKHR,
47418     marker: ::std::marker::PhantomData<&'a ()>,
47419 }
47420 impl<'a> ::std::ops::Deref for SemaphoreSubmitInfoKHRBuilder<'a> {
47421     type Target = SemaphoreSubmitInfoKHR;
deref(&self) -> &Self::Target47422     fn deref(&self) -> &Self::Target {
47423         &self.inner
47424     }
47425 }
47426 impl<'a> ::std::ops::DerefMut for SemaphoreSubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47427     fn deref_mut(&mut self) -> &mut Self::Target {
47428         &mut self.inner
47429     }
47430 }
47431 impl<'a> SemaphoreSubmitInfoKHRBuilder<'a> {
semaphore(mut self, semaphore: Semaphore) -> Self47432     pub fn semaphore(mut self, semaphore: Semaphore) -> Self {
47433         self.inner.semaphore = semaphore;
47434         self
47435     }
value(mut self, value: u64) -> Self47436     pub fn value(mut self, value: u64) -> Self {
47437         self.inner.value = value;
47438         self
47439     }
stage_mask(mut self, stage_mask: PipelineStageFlags2KHR) -> Self47440     pub fn stage_mask(mut self, stage_mask: PipelineStageFlags2KHR) -> Self {
47441         self.inner.stage_mask = stage_mask;
47442         self
47443     }
device_index(mut self, device_index: u32) -> Self47444     pub fn device_index(mut self, device_index: u32) -> Self {
47445         self.inner.device_index = device_index;
47446         self
47447     }
47448     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47449     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47450     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SemaphoreSubmitInfoKHR47451     pub fn build(self) -> SemaphoreSubmitInfoKHR {
47452         self.inner
47453     }
47454 }
47455 #[repr(C)]
47456 #[cfg_attr(feature = "debug", derive(Debug))]
47457 #[derive(Copy, Clone)]
47458 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferSubmitInfoKHR.html>"]
47459 pub struct CommandBufferSubmitInfoKHR {
47460     pub s_type: StructureType,
47461     pub p_next: *const c_void,
47462     pub command_buffer: CommandBuffer,
47463     pub device_mask: u32,
47464 }
47465 impl ::std::default::Default for CommandBufferSubmitInfoKHR {
default() -> Self47466     fn default() -> Self {
47467         Self {
47468             s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO_KHR,
47469             p_next: ::std::ptr::null(),
47470             command_buffer: CommandBuffer::default(),
47471             device_mask: u32::default(),
47472         }
47473     }
47474 }
47475 impl CommandBufferSubmitInfoKHR {
builder<'a>() -> CommandBufferSubmitInfoKHRBuilder<'a>47476     pub fn builder<'a>() -> CommandBufferSubmitInfoKHRBuilder<'a> {
47477         CommandBufferSubmitInfoKHRBuilder {
47478             inner: Self::default(),
47479             marker: ::std::marker::PhantomData,
47480         }
47481     }
47482 }
47483 #[repr(transparent)]
47484 pub struct CommandBufferSubmitInfoKHRBuilder<'a> {
47485     inner: CommandBufferSubmitInfoKHR,
47486     marker: ::std::marker::PhantomData<&'a ()>,
47487 }
47488 impl<'a> ::std::ops::Deref for CommandBufferSubmitInfoKHRBuilder<'a> {
47489     type Target = CommandBufferSubmitInfoKHR;
deref(&self) -> &Self::Target47490     fn deref(&self) -> &Self::Target {
47491         &self.inner
47492     }
47493 }
47494 impl<'a> ::std::ops::DerefMut for CommandBufferSubmitInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47495     fn deref_mut(&mut self) -> &mut Self::Target {
47496         &mut self.inner
47497     }
47498 }
47499 impl<'a> CommandBufferSubmitInfoKHRBuilder<'a> {
command_buffer(mut self, command_buffer: CommandBuffer) -> Self47500     pub fn command_buffer(mut self, command_buffer: CommandBuffer) -> Self {
47501         self.inner.command_buffer = command_buffer;
47502         self
47503     }
device_mask(mut self, device_mask: u32) -> Self47504     pub fn device_mask(mut self, device_mask: u32) -> Self {
47505         self.inner.device_mask = device_mask;
47506         self
47507     }
47508     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47509     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47510     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferSubmitInfoKHR47511     pub fn build(self) -> CommandBufferSubmitInfoKHR {
47512         self.inner
47513     }
47514 }
47515 #[repr(C)]
47516 #[cfg_attr(feature = "debug", derive(Debug))]
47517 #[derive(Copy, Clone)]
47518 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubmitInfo2KHR.html>"]
47519 pub struct SubmitInfo2KHR {
47520     pub s_type: StructureType,
47521     pub p_next: *const c_void,
47522     pub flags: SubmitFlagsKHR,
47523     pub wait_semaphore_info_count: u32,
47524     pub p_wait_semaphore_infos: *const SemaphoreSubmitInfoKHR,
47525     pub command_buffer_info_count: u32,
47526     pub p_command_buffer_infos: *const CommandBufferSubmitInfoKHR,
47527     pub signal_semaphore_info_count: u32,
47528     pub p_signal_semaphore_infos: *const SemaphoreSubmitInfoKHR,
47529 }
47530 impl ::std::default::Default for SubmitInfo2KHR {
default() -> Self47531     fn default() -> Self {
47532         Self {
47533             s_type: StructureType::SUBMIT_INFO_2_KHR,
47534             p_next: ::std::ptr::null(),
47535             flags: SubmitFlagsKHR::default(),
47536             wait_semaphore_info_count: u32::default(),
47537             p_wait_semaphore_infos: ::std::ptr::null(),
47538             command_buffer_info_count: u32::default(),
47539             p_command_buffer_infos: ::std::ptr::null(),
47540             signal_semaphore_info_count: u32::default(),
47541             p_signal_semaphore_infos: ::std::ptr::null(),
47542         }
47543     }
47544 }
47545 impl SubmitInfo2KHR {
builder<'a>() -> SubmitInfo2KHRBuilder<'a>47546     pub fn builder<'a>() -> SubmitInfo2KHRBuilder<'a> {
47547         SubmitInfo2KHRBuilder {
47548             inner: Self::default(),
47549             marker: ::std::marker::PhantomData,
47550         }
47551     }
47552 }
47553 #[repr(transparent)]
47554 pub struct SubmitInfo2KHRBuilder<'a> {
47555     inner: SubmitInfo2KHR,
47556     marker: ::std::marker::PhantomData<&'a ()>,
47557 }
47558 pub unsafe trait ExtendsSubmitInfo2KHR {}
47559 impl<'a> ::std::ops::Deref for SubmitInfo2KHRBuilder<'a> {
47560     type Target = SubmitInfo2KHR;
deref(&self) -> &Self::Target47561     fn deref(&self) -> &Self::Target {
47562         &self.inner
47563     }
47564 }
47565 impl<'a> ::std::ops::DerefMut for SubmitInfo2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47566     fn deref_mut(&mut self) -> &mut Self::Target {
47567         &mut self.inner
47568     }
47569 }
47570 impl<'a> SubmitInfo2KHRBuilder<'a> {
flags(mut self, flags: SubmitFlagsKHR) -> Self47571     pub fn flags(mut self, flags: SubmitFlagsKHR) -> Self {
47572         self.inner.flags = flags;
47573         self
47574     }
wait_semaphore_infos( mut self, wait_semaphore_infos: &'a [SemaphoreSubmitInfoKHR], ) -> Self47575     pub fn wait_semaphore_infos(
47576         mut self,
47577         wait_semaphore_infos: &'a [SemaphoreSubmitInfoKHR],
47578     ) -> Self {
47579         self.inner.wait_semaphore_info_count = wait_semaphore_infos.len() as _;
47580         self.inner.p_wait_semaphore_infos = wait_semaphore_infos.as_ptr();
47581         self
47582     }
command_buffer_infos( mut self, command_buffer_infos: &'a [CommandBufferSubmitInfoKHR], ) -> Self47583     pub fn command_buffer_infos(
47584         mut self,
47585         command_buffer_infos: &'a [CommandBufferSubmitInfoKHR],
47586     ) -> Self {
47587         self.inner.command_buffer_info_count = command_buffer_infos.len() as _;
47588         self.inner.p_command_buffer_infos = command_buffer_infos.as_ptr();
47589         self
47590     }
signal_semaphore_infos( mut self, signal_semaphore_infos: &'a [SemaphoreSubmitInfoKHR], ) -> Self47591     pub fn signal_semaphore_infos(
47592         mut self,
47593         signal_semaphore_infos: &'a [SemaphoreSubmitInfoKHR],
47594     ) -> Self {
47595         self.inner.signal_semaphore_info_count = signal_semaphore_infos.len() as _;
47596         self.inner.p_signal_semaphore_infos = signal_semaphore_infos.as_ptr();
47597         self
47598     }
47599     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
47600     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
47601     #[doc = r" valid extension structs can be pushed into the chain."]
47602     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
47603     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsSubmitInfo2KHR>(mut self, next: &'a mut T) -> Self47604     pub fn push_next<T: ExtendsSubmitInfo2KHR>(mut self, next: &'a mut T) -> Self {
47605         unsafe {
47606             let next_ptr = next as *mut T as *mut BaseOutStructure;
47607             let last_next = ptr_chain_iter(next).last().unwrap();
47608             (*last_next).p_next = self.inner.p_next as _;
47609             self.inner.p_next = next_ptr as _;
47610         }
47611         self
47612     }
47613     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47614     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47615     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SubmitInfo2KHR47616     pub fn build(self) -> SubmitInfo2KHR {
47617         self.inner
47618     }
47619 }
47620 #[repr(C)]
47621 #[cfg_attr(feature = "debug", derive(Debug))]
47622 #[derive(Copy, Clone)]
47623 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyCheckpointProperties2NV.html>"]
47624 pub struct QueueFamilyCheckpointProperties2NV {
47625     pub s_type: StructureType,
47626     pub p_next: *mut c_void,
47627     pub checkpoint_execution_stage_mask: PipelineStageFlags2KHR,
47628 }
47629 impl ::std::default::Default for QueueFamilyCheckpointProperties2NV {
default() -> Self47630     fn default() -> Self {
47631         Self {
47632             s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
47633             p_next: ::std::ptr::null_mut(),
47634             checkpoint_execution_stage_mask: PipelineStageFlags2KHR::default(),
47635         }
47636     }
47637 }
47638 impl QueueFamilyCheckpointProperties2NV {
builder<'a>() -> QueueFamilyCheckpointProperties2NVBuilder<'a>47639     pub fn builder<'a>() -> QueueFamilyCheckpointProperties2NVBuilder<'a> {
47640         QueueFamilyCheckpointProperties2NVBuilder {
47641             inner: Self::default(),
47642             marker: ::std::marker::PhantomData,
47643         }
47644     }
47645 }
47646 #[repr(transparent)]
47647 pub struct QueueFamilyCheckpointProperties2NVBuilder<'a> {
47648     inner: QueueFamilyCheckpointProperties2NV,
47649     marker: ::std::marker::PhantomData<&'a ()>,
47650 }
47651 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointProperties2NVBuilder<'_> {}
47652 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyCheckpointProperties2NV {}
47653 impl<'a> ::std::ops::Deref for QueueFamilyCheckpointProperties2NVBuilder<'a> {
47654     type Target = QueueFamilyCheckpointProperties2NV;
deref(&self) -> &Self::Target47655     fn deref(&self) -> &Self::Target {
47656         &self.inner
47657     }
47658 }
47659 impl<'a> ::std::ops::DerefMut for QueueFamilyCheckpointProperties2NVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47660     fn deref_mut(&mut self) -> &mut Self::Target {
47661         &mut self.inner
47662     }
47663 }
47664 impl<'a> QueueFamilyCheckpointProperties2NVBuilder<'a> {
checkpoint_execution_stage_mask( mut self, checkpoint_execution_stage_mask: PipelineStageFlags2KHR, ) -> Self47665     pub fn checkpoint_execution_stage_mask(
47666         mut self,
47667         checkpoint_execution_stage_mask: PipelineStageFlags2KHR,
47668     ) -> Self {
47669         self.inner.checkpoint_execution_stage_mask = checkpoint_execution_stage_mask;
47670         self
47671     }
47672     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47673     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47674     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyCheckpointProperties2NV47675     pub fn build(self) -> QueueFamilyCheckpointProperties2NV {
47676         self.inner
47677     }
47678 }
47679 #[repr(C)]
47680 #[cfg_attr(feature = "debug", derive(Debug))]
47681 #[derive(Copy, Clone)]
47682 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCheckpointData2NV.html>"]
47683 pub struct CheckpointData2NV {
47684     pub s_type: StructureType,
47685     pub p_next: *mut c_void,
47686     pub stage: PipelineStageFlags2KHR,
47687     pub p_checkpoint_marker: *mut c_void,
47688 }
47689 impl ::std::default::Default for CheckpointData2NV {
default() -> Self47690     fn default() -> Self {
47691         Self {
47692             s_type: StructureType::CHECKPOINT_DATA_2_NV,
47693             p_next: ::std::ptr::null_mut(),
47694             stage: PipelineStageFlags2KHR::default(),
47695             p_checkpoint_marker: ::std::ptr::null_mut(),
47696         }
47697     }
47698 }
47699 impl CheckpointData2NV {
builder<'a>() -> CheckpointData2NVBuilder<'a>47700     pub fn builder<'a>() -> CheckpointData2NVBuilder<'a> {
47701         CheckpointData2NVBuilder {
47702             inner: Self::default(),
47703             marker: ::std::marker::PhantomData,
47704         }
47705     }
47706 }
47707 #[repr(transparent)]
47708 pub struct CheckpointData2NVBuilder<'a> {
47709     inner: CheckpointData2NV,
47710     marker: ::std::marker::PhantomData<&'a ()>,
47711 }
47712 impl<'a> ::std::ops::Deref for CheckpointData2NVBuilder<'a> {
47713     type Target = CheckpointData2NV;
deref(&self) -> &Self::Target47714     fn deref(&self) -> &Self::Target {
47715         &self.inner
47716     }
47717 }
47718 impl<'a> ::std::ops::DerefMut for CheckpointData2NVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47719     fn deref_mut(&mut self) -> &mut Self::Target {
47720         &mut self.inner
47721     }
47722 }
47723 impl<'a> CheckpointData2NVBuilder<'a> {
stage(mut self, stage: PipelineStageFlags2KHR) -> Self47724     pub fn stage(mut self, stage: PipelineStageFlags2KHR) -> Self {
47725         self.inner.stage = stage;
47726         self
47727     }
checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self47728     pub fn checkpoint_marker(mut self, checkpoint_marker: *mut c_void) -> Self {
47729         self.inner.p_checkpoint_marker = checkpoint_marker;
47730         self
47731     }
47732     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47733     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47734     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CheckpointData2NV47735     pub fn build(self) -> CheckpointData2NV {
47736         self.inner
47737     }
47738 }
47739 #[repr(C)]
47740 #[cfg_attr(feature = "debug", derive(Debug))]
47741 #[derive(Copy, Clone)]
47742 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>"]
47743 pub struct PhysicalDeviceSynchronization2FeaturesKHR {
47744     pub s_type: StructureType,
47745     pub p_next: *mut c_void,
47746     pub synchronization2: Bool32,
47747 }
47748 impl ::std::default::Default for PhysicalDeviceSynchronization2FeaturesKHR {
default() -> Self47749     fn default() -> Self {
47750         Self {
47751             s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR,
47752             p_next: ::std::ptr::null_mut(),
47753             synchronization2: Bool32::default(),
47754         }
47755     }
47756 }
47757 impl PhysicalDeviceSynchronization2FeaturesKHR {
builder<'a>() -> PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a>47758     pub fn builder<'a>() -> PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
47759         PhysicalDeviceSynchronization2FeaturesKHRBuilder {
47760             inner: Self::default(),
47761             marker: ::std::marker::PhantomData,
47762         }
47763     }
47764 }
47765 #[repr(transparent)]
47766 pub struct PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
47767     inner: PhysicalDeviceSynchronization2FeaturesKHR,
47768     marker: ::std::marker::PhantomData<&'a ()>,
47769 }
47770 unsafe impl ExtendsPhysicalDeviceFeatures2
47771     for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'_>
47772 {
47773 }
47774 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceSynchronization2FeaturesKHR {}
47775 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'_> {}
47776 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceSynchronization2FeaturesKHR {}
47777 impl<'a> ::std::ops::Deref for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
47778     type Target = PhysicalDeviceSynchronization2FeaturesKHR;
deref(&self) -> &Self::Target47779     fn deref(&self) -> &Self::Target {
47780         &self.inner
47781     }
47782 }
47783 impl<'a> ::std::ops::DerefMut for PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47784     fn deref_mut(&mut self) -> &mut Self::Target {
47785         &mut self.inner
47786     }
47787 }
47788 impl<'a> PhysicalDeviceSynchronization2FeaturesKHRBuilder<'a> {
synchronization2(mut self, synchronization2: bool) -> Self47789     pub fn synchronization2(mut self, synchronization2: bool) -> Self {
47790         self.inner.synchronization2 = synchronization2.into();
47791         self
47792     }
47793     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47794     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47795     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceSynchronization2FeaturesKHR47796     pub fn build(self) -> PhysicalDeviceSynchronization2FeaturesKHR {
47797         self.inner
47798     }
47799 }
47800 #[repr(C)]
47801 #[cfg_attr(feature = "debug", derive(Debug))]
47802 #[derive(Copy, Clone)]
47803 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoQueueFamilyProperties2KHR.html>"]
47804 pub struct VideoQueueFamilyProperties2KHR {
47805     pub s_type: StructureType,
47806     pub p_next: *mut c_void,
47807     pub video_codec_operations: VideoCodecOperationFlagsKHR,
47808 }
47809 impl ::std::default::Default for VideoQueueFamilyProperties2KHR {
default() -> Self47810     fn default() -> Self {
47811         Self {
47812             s_type: StructureType::VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR,
47813             p_next: ::std::ptr::null_mut(),
47814             video_codec_operations: VideoCodecOperationFlagsKHR::default(),
47815         }
47816     }
47817 }
47818 impl VideoQueueFamilyProperties2KHR {
builder<'a>() -> VideoQueueFamilyProperties2KHRBuilder<'a>47819     pub fn builder<'a>() -> VideoQueueFamilyProperties2KHRBuilder<'a> {
47820         VideoQueueFamilyProperties2KHRBuilder {
47821             inner: Self::default(),
47822             marker: ::std::marker::PhantomData,
47823         }
47824     }
47825 }
47826 #[repr(transparent)]
47827 pub struct VideoQueueFamilyProperties2KHRBuilder<'a> {
47828     inner: VideoQueueFamilyProperties2KHR,
47829     marker: ::std::marker::PhantomData<&'a ()>,
47830 }
47831 unsafe impl ExtendsQueueFamilyProperties2 for VideoQueueFamilyProperties2KHRBuilder<'_> {}
47832 unsafe impl ExtendsQueueFamilyProperties2 for VideoQueueFamilyProperties2KHR {}
47833 impl<'a> ::std::ops::Deref for VideoQueueFamilyProperties2KHRBuilder<'a> {
47834     type Target = VideoQueueFamilyProperties2KHR;
deref(&self) -> &Self::Target47835     fn deref(&self) -> &Self::Target {
47836         &self.inner
47837     }
47838 }
47839 impl<'a> ::std::ops::DerefMut for VideoQueueFamilyProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47840     fn deref_mut(&mut self) -> &mut Self::Target {
47841         &mut self.inner
47842     }
47843 }
47844 impl<'a> VideoQueueFamilyProperties2KHRBuilder<'a> {
video_codec_operations( mut self, video_codec_operations: VideoCodecOperationFlagsKHR, ) -> Self47845     pub fn video_codec_operations(
47846         mut self,
47847         video_codec_operations: VideoCodecOperationFlagsKHR,
47848     ) -> Self {
47849         self.inner.video_codec_operations = video_codec_operations;
47850         self
47851     }
47852     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47853     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47854     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoQueueFamilyProperties2KHR47855     pub fn build(self) -> VideoQueueFamilyProperties2KHR {
47856         self.inner
47857     }
47858 }
47859 #[repr(C)]
47860 #[cfg_attr(feature = "debug", derive(Debug))]
47861 #[derive(Copy, Clone)]
47862 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyQueryResultStatusProperties2KHR.html>"]
47863 pub struct QueueFamilyQueryResultStatusProperties2KHR {
47864     pub s_type: StructureType,
47865     pub p_next: *mut c_void,
47866     pub supported: Bool32,
47867 }
47868 impl ::std::default::Default for QueueFamilyQueryResultStatusProperties2KHR {
default() -> Self47869     fn default() -> Self {
47870         Self {
47871             s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR,
47872             p_next: ::std::ptr::null_mut(),
47873             supported: Bool32::default(),
47874         }
47875     }
47876 }
47877 impl QueueFamilyQueryResultStatusProperties2KHR {
builder<'a>() -> QueueFamilyQueryResultStatusProperties2KHRBuilder<'a>47878     pub fn builder<'a>() -> QueueFamilyQueryResultStatusProperties2KHRBuilder<'a> {
47879         QueueFamilyQueryResultStatusProperties2KHRBuilder {
47880             inner: Self::default(),
47881             marker: ::std::marker::PhantomData,
47882         }
47883     }
47884 }
47885 #[repr(transparent)]
47886 pub struct QueueFamilyQueryResultStatusProperties2KHRBuilder<'a> {
47887     inner: QueueFamilyQueryResultStatusProperties2KHR,
47888     marker: ::std::marker::PhantomData<&'a ()>,
47889 }
47890 unsafe impl ExtendsQueueFamilyProperties2
47891     for QueueFamilyQueryResultStatusProperties2KHRBuilder<'_>
47892 {
47893 }
47894 unsafe impl ExtendsQueueFamilyProperties2 for QueueFamilyQueryResultStatusProperties2KHR {}
47895 impl<'a> ::std::ops::Deref for QueueFamilyQueryResultStatusProperties2KHRBuilder<'a> {
47896     type Target = QueueFamilyQueryResultStatusProperties2KHR;
deref(&self) -> &Self::Target47897     fn deref(&self) -> &Self::Target {
47898         &self.inner
47899     }
47900 }
47901 impl<'a> ::std::ops::DerefMut for QueueFamilyQueryResultStatusProperties2KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47902     fn deref_mut(&mut self) -> &mut Self::Target {
47903         &mut self.inner
47904     }
47905 }
47906 impl<'a> QueueFamilyQueryResultStatusProperties2KHRBuilder<'a> {
supported(mut self, supported: bool) -> Self47907     pub fn supported(mut self, supported: bool) -> Self {
47908         self.inner.supported = supported.into();
47909         self
47910     }
47911     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47912     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47913     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> QueueFamilyQueryResultStatusProperties2KHR47914     pub fn build(self) -> QueueFamilyQueryResultStatusProperties2KHR {
47915         self.inner
47916     }
47917 }
47918 #[repr(C)]
47919 #[cfg_attr(feature = "debug", derive(Debug))]
47920 #[derive(Copy, Clone)]
47921 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoProfilesKHR.html>"]
47922 pub struct VideoProfilesKHR {
47923     pub s_type: StructureType,
47924     pub p_next: *mut c_void,
47925     pub profile_count: u32,
47926     pub p_profiles: *const VideoProfileKHR,
47927 }
47928 impl ::std::default::Default for VideoProfilesKHR {
default() -> Self47929     fn default() -> Self {
47930         Self {
47931             s_type: StructureType::VIDEO_PROFILES_KHR,
47932             p_next: ::std::ptr::null_mut(),
47933             profile_count: u32::default(),
47934             p_profiles: ::std::ptr::null(),
47935         }
47936     }
47937 }
47938 impl VideoProfilesKHR {
builder<'a>() -> VideoProfilesKHRBuilder<'a>47939     pub fn builder<'a>() -> VideoProfilesKHRBuilder<'a> {
47940         VideoProfilesKHRBuilder {
47941             inner: Self::default(),
47942             marker: ::std::marker::PhantomData,
47943         }
47944     }
47945 }
47946 #[repr(transparent)]
47947 pub struct VideoProfilesKHRBuilder<'a> {
47948     inner: VideoProfilesKHR,
47949     marker: ::std::marker::PhantomData<&'a ()>,
47950 }
47951 unsafe impl ExtendsFormatProperties2 for VideoProfilesKHRBuilder<'_> {}
47952 unsafe impl ExtendsFormatProperties2 for VideoProfilesKHR {}
47953 unsafe impl ExtendsImageCreateInfo for VideoProfilesKHRBuilder<'_> {}
47954 unsafe impl ExtendsImageCreateInfo for VideoProfilesKHR {}
47955 unsafe impl ExtendsImageViewCreateInfo for VideoProfilesKHRBuilder<'_> {}
47956 unsafe impl ExtendsImageViewCreateInfo for VideoProfilesKHR {}
47957 unsafe impl ExtendsBufferCreateInfo for VideoProfilesKHRBuilder<'_> {}
47958 unsafe impl ExtendsBufferCreateInfo for VideoProfilesKHR {}
47959 impl<'a> ::std::ops::Deref for VideoProfilesKHRBuilder<'a> {
47960     type Target = VideoProfilesKHR;
deref(&self) -> &Self::Target47961     fn deref(&self) -> &Self::Target {
47962         &self.inner
47963     }
47964 }
47965 impl<'a> ::std::ops::DerefMut for VideoProfilesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target47966     fn deref_mut(&mut self) -> &mut Self::Target {
47967         &mut self.inner
47968     }
47969 }
47970 impl<'a> VideoProfilesKHRBuilder<'a> {
profile_count(mut self, profile_count: u32) -> Self47971     pub fn profile_count(mut self, profile_count: u32) -> Self {
47972         self.inner.profile_count = profile_count;
47973         self
47974     }
profiles(mut self, profiles: &'a VideoProfileKHR) -> Self47975     pub fn profiles(mut self, profiles: &'a VideoProfileKHR) -> Self {
47976         self.inner.p_profiles = profiles;
47977         self
47978     }
47979     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
47980     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
47981     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoProfilesKHR47982     pub fn build(self) -> VideoProfilesKHR {
47983         self.inner
47984     }
47985 }
47986 #[repr(C)]
47987 #[cfg_attr(feature = "debug", derive(Debug))]
47988 #[derive(Copy, Clone)]
47989 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>"]
47990 pub struct PhysicalDeviceVideoFormatInfoKHR {
47991     pub s_type: StructureType,
47992     pub p_next: *mut c_void,
47993     pub image_usage: ImageUsageFlags,
47994     pub p_video_profiles: *const VideoProfilesKHR,
47995 }
47996 impl ::std::default::Default for PhysicalDeviceVideoFormatInfoKHR {
default() -> Self47997     fn default() -> Self {
47998         Self {
47999             s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
48000             p_next: ::std::ptr::null_mut(),
48001             image_usage: ImageUsageFlags::default(),
48002             p_video_profiles: ::std::ptr::null(),
48003         }
48004     }
48005 }
48006 impl PhysicalDeviceVideoFormatInfoKHR {
builder<'a>() -> PhysicalDeviceVideoFormatInfoKHRBuilder<'a>48007     pub fn builder<'a>() -> PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
48008         PhysicalDeviceVideoFormatInfoKHRBuilder {
48009             inner: Self::default(),
48010             marker: ::std::marker::PhantomData,
48011         }
48012     }
48013 }
48014 #[repr(transparent)]
48015 pub struct PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
48016     inner: PhysicalDeviceVideoFormatInfoKHR,
48017     marker: ::std::marker::PhantomData<&'a ()>,
48018 }
48019 impl<'a> ::std::ops::Deref for PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
48020     type Target = PhysicalDeviceVideoFormatInfoKHR;
deref(&self) -> &Self::Target48021     fn deref(&self) -> &Self::Target {
48022         &self.inner
48023     }
48024 }
48025 impl<'a> ::std::ops::DerefMut for PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48026     fn deref_mut(&mut self) -> &mut Self::Target {
48027         &mut self.inner
48028     }
48029 }
48030 impl<'a> PhysicalDeviceVideoFormatInfoKHRBuilder<'a> {
image_usage(mut self, image_usage: ImageUsageFlags) -> Self48031     pub fn image_usage(mut self, image_usage: ImageUsageFlags) -> Self {
48032         self.inner.image_usage = image_usage;
48033         self
48034     }
video_profiles(mut self, video_profiles: &'a VideoProfilesKHR) -> Self48035     pub fn video_profiles(mut self, video_profiles: &'a VideoProfilesKHR) -> Self {
48036         self.inner.p_video_profiles = video_profiles;
48037         self
48038     }
48039     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48040     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48041     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceVideoFormatInfoKHR48042     pub fn build(self) -> PhysicalDeviceVideoFormatInfoKHR {
48043         self.inner
48044     }
48045 }
48046 #[repr(C)]
48047 #[cfg_attr(feature = "debug", derive(Debug))]
48048 #[derive(Copy, Clone)]
48049 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoFormatPropertiesKHR.html>"]
48050 pub struct VideoFormatPropertiesKHR {
48051     pub s_type: StructureType,
48052     pub p_next: *mut c_void,
48053     pub format: Format,
48054 }
48055 impl ::std::default::Default for VideoFormatPropertiesKHR {
default() -> Self48056     fn default() -> Self {
48057         Self {
48058             s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
48059             p_next: ::std::ptr::null_mut(),
48060             format: Format::default(),
48061         }
48062     }
48063 }
48064 impl VideoFormatPropertiesKHR {
builder<'a>() -> VideoFormatPropertiesKHRBuilder<'a>48065     pub fn builder<'a>() -> VideoFormatPropertiesKHRBuilder<'a> {
48066         VideoFormatPropertiesKHRBuilder {
48067             inner: Self::default(),
48068             marker: ::std::marker::PhantomData,
48069         }
48070     }
48071 }
48072 #[repr(transparent)]
48073 pub struct VideoFormatPropertiesKHRBuilder<'a> {
48074     inner: VideoFormatPropertiesKHR,
48075     marker: ::std::marker::PhantomData<&'a ()>,
48076 }
48077 impl<'a> ::std::ops::Deref for VideoFormatPropertiesKHRBuilder<'a> {
48078     type Target = VideoFormatPropertiesKHR;
deref(&self) -> &Self::Target48079     fn deref(&self) -> &Self::Target {
48080         &self.inner
48081     }
48082 }
48083 impl<'a> ::std::ops::DerefMut for VideoFormatPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48084     fn deref_mut(&mut self) -> &mut Self::Target {
48085         &mut self.inner
48086     }
48087 }
48088 impl<'a> VideoFormatPropertiesKHRBuilder<'a> {
format(mut self, format: Format) -> Self48089     pub fn format(mut self, format: Format) -> Self {
48090         self.inner.format = format;
48091         self
48092     }
48093     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48094     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48095     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoFormatPropertiesKHR48096     pub fn build(self) -> VideoFormatPropertiesKHR {
48097         self.inner
48098     }
48099 }
48100 #[repr(C)]
48101 #[cfg_attr(feature = "debug", derive(Debug))]
48102 #[derive(Copy, Clone)]
48103 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoProfileKHR.html>"]
48104 pub struct VideoProfileKHR {
48105     pub s_type: StructureType,
48106     pub p_next: *mut c_void,
48107     pub video_codec_operation: VideoCodecOperationFlagsKHR,
48108     pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
48109     pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
48110     pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
48111 }
48112 impl ::std::default::Default for VideoProfileKHR {
default() -> Self48113     fn default() -> Self {
48114         Self {
48115             s_type: StructureType::VIDEO_PROFILE_KHR,
48116             p_next: ::std::ptr::null_mut(),
48117             video_codec_operation: VideoCodecOperationFlagsKHR::default(),
48118             chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
48119             luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
48120             chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
48121         }
48122     }
48123 }
48124 impl VideoProfileKHR {
builder<'a>() -> VideoProfileKHRBuilder<'a>48125     pub fn builder<'a>() -> VideoProfileKHRBuilder<'a> {
48126         VideoProfileKHRBuilder {
48127             inner: Self::default(),
48128             marker: ::std::marker::PhantomData,
48129         }
48130     }
48131 }
48132 #[repr(transparent)]
48133 pub struct VideoProfileKHRBuilder<'a> {
48134     inner: VideoProfileKHR,
48135     marker: ::std::marker::PhantomData<&'a ()>,
48136 }
48137 unsafe impl ExtendsQueryPoolCreateInfo for VideoProfileKHRBuilder<'_> {}
48138 unsafe impl ExtendsQueryPoolCreateInfo for VideoProfileKHR {}
48139 unsafe impl ExtendsFormatProperties2 for VideoProfileKHRBuilder<'_> {}
48140 unsafe impl ExtendsFormatProperties2 for VideoProfileKHR {}
48141 unsafe impl ExtendsImageCreateInfo for VideoProfileKHRBuilder<'_> {}
48142 unsafe impl ExtendsImageCreateInfo for VideoProfileKHR {}
48143 unsafe impl ExtendsImageViewCreateInfo for VideoProfileKHRBuilder<'_> {}
48144 unsafe impl ExtendsImageViewCreateInfo for VideoProfileKHR {}
48145 unsafe impl ExtendsBufferCreateInfo for VideoProfileKHRBuilder<'_> {}
48146 unsafe impl ExtendsBufferCreateInfo for VideoProfileKHR {}
48147 pub unsafe trait ExtendsVideoProfileKHR {}
48148 impl<'a> ::std::ops::Deref for VideoProfileKHRBuilder<'a> {
48149     type Target = VideoProfileKHR;
deref(&self) -> &Self::Target48150     fn deref(&self) -> &Self::Target {
48151         &self.inner
48152     }
48153 }
48154 impl<'a> ::std::ops::DerefMut for VideoProfileKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48155     fn deref_mut(&mut self) -> &mut Self::Target {
48156         &mut self.inner
48157     }
48158 }
48159 impl<'a> VideoProfileKHRBuilder<'a> {
video_codec_operation( mut self, video_codec_operation: VideoCodecOperationFlagsKHR, ) -> Self48160     pub fn video_codec_operation(
48161         mut self,
48162         video_codec_operation: VideoCodecOperationFlagsKHR,
48163     ) -> Self {
48164         self.inner.video_codec_operation = video_codec_operation;
48165         self
48166     }
chroma_subsampling( mut self, chroma_subsampling: VideoChromaSubsamplingFlagsKHR, ) -> Self48167     pub fn chroma_subsampling(
48168         mut self,
48169         chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
48170     ) -> Self {
48171         self.inner.chroma_subsampling = chroma_subsampling;
48172         self
48173     }
luma_bit_depth(mut self, luma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self48174     pub fn luma_bit_depth(mut self, luma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self {
48175         self.inner.luma_bit_depth = luma_bit_depth;
48176         self
48177     }
chroma_bit_depth(mut self, chroma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self48178     pub fn chroma_bit_depth(mut self, chroma_bit_depth: VideoComponentBitDepthFlagsKHR) -> Self {
48179         self.inner.chroma_bit_depth = chroma_bit_depth;
48180         self
48181     }
48182     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48183     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48184     #[doc = r" valid extension structs can be pushed into the chain."]
48185     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48186     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoProfileKHR>(mut self, next: &'a mut T) -> Self48187     pub fn push_next<T: ExtendsVideoProfileKHR>(mut self, next: &'a mut T) -> Self {
48188         unsafe {
48189             let next_ptr = next as *mut T as *mut BaseOutStructure;
48190             let last_next = ptr_chain_iter(next).last().unwrap();
48191             (*last_next).p_next = self.inner.p_next as _;
48192             self.inner.p_next = next_ptr as _;
48193         }
48194         self
48195     }
48196     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48197     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48198     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoProfileKHR48199     pub fn build(self) -> VideoProfileKHR {
48200         self.inner
48201     }
48202 }
48203 #[repr(C)]
48204 #[cfg_attr(feature = "debug", derive(Debug))]
48205 #[derive(Copy, Clone)]
48206 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoCapabilitiesKHR.html>"]
48207 pub struct VideoCapabilitiesKHR {
48208     pub s_type: StructureType,
48209     pub p_next: *mut c_void,
48210     pub capability_flags: VideoCapabilityFlagsKHR,
48211     pub min_bitstream_buffer_offset_alignment: DeviceSize,
48212     pub min_bitstream_buffer_size_alignment: DeviceSize,
48213     pub video_picture_extent_granularity: Extent2D,
48214     pub min_extent: Extent2D,
48215     pub max_extent: Extent2D,
48216     pub max_reference_pictures_slots_count: u32,
48217     pub max_reference_pictures_active_count: u32,
48218 }
48219 impl ::std::default::Default for VideoCapabilitiesKHR {
default() -> Self48220     fn default() -> Self {
48221         Self {
48222             s_type: StructureType::VIDEO_CAPABILITIES_KHR,
48223             p_next: ::std::ptr::null_mut(),
48224             capability_flags: VideoCapabilityFlagsKHR::default(),
48225             min_bitstream_buffer_offset_alignment: DeviceSize::default(),
48226             min_bitstream_buffer_size_alignment: DeviceSize::default(),
48227             video_picture_extent_granularity: Extent2D::default(),
48228             min_extent: Extent2D::default(),
48229             max_extent: Extent2D::default(),
48230             max_reference_pictures_slots_count: u32::default(),
48231             max_reference_pictures_active_count: u32::default(),
48232         }
48233     }
48234 }
48235 impl VideoCapabilitiesKHR {
builder<'a>() -> VideoCapabilitiesKHRBuilder<'a>48236     pub fn builder<'a>() -> VideoCapabilitiesKHRBuilder<'a> {
48237         VideoCapabilitiesKHRBuilder {
48238             inner: Self::default(),
48239             marker: ::std::marker::PhantomData,
48240         }
48241     }
48242 }
48243 #[repr(transparent)]
48244 pub struct VideoCapabilitiesKHRBuilder<'a> {
48245     inner: VideoCapabilitiesKHR,
48246     marker: ::std::marker::PhantomData<&'a ()>,
48247 }
48248 pub unsafe trait ExtendsVideoCapabilitiesKHR {}
48249 impl<'a> ::std::ops::Deref for VideoCapabilitiesKHRBuilder<'a> {
48250     type Target = VideoCapabilitiesKHR;
deref(&self) -> &Self::Target48251     fn deref(&self) -> &Self::Target {
48252         &self.inner
48253     }
48254 }
48255 impl<'a> ::std::ops::DerefMut for VideoCapabilitiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48256     fn deref_mut(&mut self) -> &mut Self::Target {
48257         &mut self.inner
48258     }
48259 }
48260 impl<'a> VideoCapabilitiesKHRBuilder<'a> {
capability_flags(mut self, capability_flags: VideoCapabilityFlagsKHR) -> Self48261     pub fn capability_flags(mut self, capability_flags: VideoCapabilityFlagsKHR) -> Self {
48262         self.inner.capability_flags = capability_flags;
48263         self
48264     }
min_bitstream_buffer_offset_alignment( mut self, min_bitstream_buffer_offset_alignment: DeviceSize, ) -> Self48265     pub fn min_bitstream_buffer_offset_alignment(
48266         mut self,
48267         min_bitstream_buffer_offset_alignment: DeviceSize,
48268     ) -> Self {
48269         self.inner.min_bitstream_buffer_offset_alignment = min_bitstream_buffer_offset_alignment;
48270         self
48271     }
min_bitstream_buffer_size_alignment( mut self, min_bitstream_buffer_size_alignment: DeviceSize, ) -> Self48272     pub fn min_bitstream_buffer_size_alignment(
48273         mut self,
48274         min_bitstream_buffer_size_alignment: DeviceSize,
48275     ) -> Self {
48276         self.inner.min_bitstream_buffer_size_alignment = min_bitstream_buffer_size_alignment;
48277         self
48278     }
video_picture_extent_granularity( mut self, video_picture_extent_granularity: Extent2D, ) -> Self48279     pub fn video_picture_extent_granularity(
48280         mut self,
48281         video_picture_extent_granularity: Extent2D,
48282     ) -> Self {
48283         self.inner.video_picture_extent_granularity = video_picture_extent_granularity;
48284         self
48285     }
min_extent(mut self, min_extent: Extent2D) -> Self48286     pub fn min_extent(mut self, min_extent: Extent2D) -> Self {
48287         self.inner.min_extent = min_extent;
48288         self
48289     }
max_extent(mut self, max_extent: Extent2D) -> Self48290     pub fn max_extent(mut self, max_extent: Extent2D) -> Self {
48291         self.inner.max_extent = max_extent;
48292         self
48293     }
max_reference_pictures_slots_count( mut self, max_reference_pictures_slots_count: u32, ) -> Self48294     pub fn max_reference_pictures_slots_count(
48295         mut self,
48296         max_reference_pictures_slots_count: u32,
48297     ) -> Self {
48298         self.inner.max_reference_pictures_slots_count = max_reference_pictures_slots_count;
48299         self
48300     }
max_reference_pictures_active_count( mut self, max_reference_pictures_active_count: u32, ) -> Self48301     pub fn max_reference_pictures_active_count(
48302         mut self,
48303         max_reference_pictures_active_count: u32,
48304     ) -> Self {
48305         self.inner.max_reference_pictures_active_count = max_reference_pictures_active_count;
48306         self
48307     }
48308     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48309     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48310     #[doc = r" valid extension structs can be pushed into the chain."]
48311     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48312     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoCapabilitiesKHR>(mut self, next: &'a mut T) -> Self48313     pub fn push_next<T: ExtendsVideoCapabilitiesKHR>(mut self, next: &'a mut T) -> Self {
48314         unsafe {
48315             let next_ptr = next as *mut T as *mut BaseOutStructure;
48316             let last_next = ptr_chain_iter(next).last().unwrap();
48317             (*last_next).p_next = self.inner.p_next as _;
48318             self.inner.p_next = next_ptr as _;
48319         }
48320         self
48321     }
48322     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48323     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48324     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoCapabilitiesKHR48325     pub fn build(self) -> VideoCapabilitiesKHR {
48326         self.inner
48327     }
48328 }
48329 #[repr(C)]
48330 #[cfg_attr(feature = "debug", derive(Debug))]
48331 #[derive(Copy, Clone)]
48332 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoGetMemoryPropertiesKHR.html>"]
48333 pub struct VideoGetMemoryPropertiesKHR {
48334     pub s_type: StructureType,
48335     pub p_next: *const c_void,
48336     pub memory_bind_index: u32,
48337     pub p_memory_requirements: *mut MemoryRequirements2,
48338 }
48339 impl ::std::default::Default for VideoGetMemoryPropertiesKHR {
default() -> Self48340     fn default() -> Self {
48341         Self {
48342             s_type: StructureType::VIDEO_GET_MEMORY_PROPERTIES_KHR,
48343             p_next: ::std::ptr::null(),
48344             memory_bind_index: u32::default(),
48345             p_memory_requirements: ::std::ptr::null_mut(),
48346         }
48347     }
48348 }
48349 impl VideoGetMemoryPropertiesKHR {
builder<'a>() -> VideoGetMemoryPropertiesKHRBuilder<'a>48350     pub fn builder<'a>() -> VideoGetMemoryPropertiesKHRBuilder<'a> {
48351         VideoGetMemoryPropertiesKHRBuilder {
48352             inner: Self::default(),
48353             marker: ::std::marker::PhantomData,
48354         }
48355     }
48356 }
48357 #[repr(transparent)]
48358 pub struct VideoGetMemoryPropertiesKHRBuilder<'a> {
48359     inner: VideoGetMemoryPropertiesKHR,
48360     marker: ::std::marker::PhantomData<&'a ()>,
48361 }
48362 impl<'a> ::std::ops::Deref for VideoGetMemoryPropertiesKHRBuilder<'a> {
48363     type Target = VideoGetMemoryPropertiesKHR;
deref(&self) -> &Self::Target48364     fn deref(&self) -> &Self::Target {
48365         &self.inner
48366     }
48367 }
48368 impl<'a> ::std::ops::DerefMut for VideoGetMemoryPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48369     fn deref_mut(&mut self) -> &mut Self::Target {
48370         &mut self.inner
48371     }
48372 }
48373 impl<'a> VideoGetMemoryPropertiesKHRBuilder<'a> {
memory_bind_index(mut self, memory_bind_index: u32) -> Self48374     pub fn memory_bind_index(mut self, memory_bind_index: u32) -> Self {
48375         self.inner.memory_bind_index = memory_bind_index;
48376         self
48377     }
memory_requirements(mut self, memory_requirements: &'a mut MemoryRequirements2) -> Self48378     pub fn memory_requirements(mut self, memory_requirements: &'a mut MemoryRequirements2) -> Self {
48379         self.inner.p_memory_requirements = memory_requirements;
48380         self
48381     }
48382     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48383     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48384     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoGetMemoryPropertiesKHR48385     pub fn build(self) -> VideoGetMemoryPropertiesKHR {
48386         self.inner
48387     }
48388 }
48389 #[repr(C)]
48390 #[cfg_attr(feature = "debug", derive(Debug))]
48391 #[derive(Copy, Clone)]
48392 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoBindMemoryKHR.html>"]
48393 pub struct VideoBindMemoryKHR {
48394     pub s_type: StructureType,
48395     pub p_next: *const c_void,
48396     pub memory_bind_index: u32,
48397     pub memory: DeviceMemory,
48398     pub memory_offset: DeviceSize,
48399     pub memory_size: DeviceSize,
48400 }
48401 impl ::std::default::Default for VideoBindMemoryKHR {
default() -> Self48402     fn default() -> Self {
48403         Self {
48404             s_type: StructureType::VIDEO_BIND_MEMORY_KHR,
48405             p_next: ::std::ptr::null(),
48406             memory_bind_index: u32::default(),
48407             memory: DeviceMemory::default(),
48408             memory_offset: DeviceSize::default(),
48409             memory_size: DeviceSize::default(),
48410         }
48411     }
48412 }
48413 impl VideoBindMemoryKHR {
builder<'a>() -> VideoBindMemoryKHRBuilder<'a>48414     pub fn builder<'a>() -> VideoBindMemoryKHRBuilder<'a> {
48415         VideoBindMemoryKHRBuilder {
48416             inner: Self::default(),
48417             marker: ::std::marker::PhantomData,
48418         }
48419     }
48420 }
48421 #[repr(transparent)]
48422 pub struct VideoBindMemoryKHRBuilder<'a> {
48423     inner: VideoBindMemoryKHR,
48424     marker: ::std::marker::PhantomData<&'a ()>,
48425 }
48426 impl<'a> ::std::ops::Deref for VideoBindMemoryKHRBuilder<'a> {
48427     type Target = VideoBindMemoryKHR;
deref(&self) -> &Self::Target48428     fn deref(&self) -> &Self::Target {
48429         &self.inner
48430     }
48431 }
48432 impl<'a> ::std::ops::DerefMut for VideoBindMemoryKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48433     fn deref_mut(&mut self) -> &mut Self::Target {
48434         &mut self.inner
48435     }
48436 }
48437 impl<'a> VideoBindMemoryKHRBuilder<'a> {
memory_bind_index(mut self, memory_bind_index: u32) -> Self48438     pub fn memory_bind_index(mut self, memory_bind_index: u32) -> Self {
48439         self.inner.memory_bind_index = memory_bind_index;
48440         self
48441     }
memory(mut self, memory: DeviceMemory) -> Self48442     pub fn memory(mut self, memory: DeviceMemory) -> Self {
48443         self.inner.memory = memory;
48444         self
48445     }
memory_offset(mut self, memory_offset: DeviceSize) -> Self48446     pub fn memory_offset(mut self, memory_offset: DeviceSize) -> Self {
48447         self.inner.memory_offset = memory_offset;
48448         self
48449     }
memory_size(mut self, memory_size: DeviceSize) -> Self48450     pub fn memory_size(mut self, memory_size: DeviceSize) -> Self {
48451         self.inner.memory_size = memory_size;
48452         self
48453     }
48454     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48455     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48456     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoBindMemoryKHR48457     pub fn build(self) -> VideoBindMemoryKHR {
48458         self.inner
48459     }
48460 }
48461 #[repr(C)]
48462 #[cfg_attr(feature = "debug", derive(Debug))]
48463 #[derive(Copy, Clone)]
48464 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoPictureResourceKHR.html>"]
48465 pub struct VideoPictureResourceKHR {
48466     pub s_type: StructureType,
48467     pub p_next: *const c_void,
48468     pub coded_offset: Offset2D,
48469     pub coded_extent: Extent2D,
48470     pub base_array_layer: u32,
48471     pub image_view_binding: ImageView,
48472 }
48473 impl ::std::default::Default for VideoPictureResourceKHR {
default() -> Self48474     fn default() -> Self {
48475         Self {
48476             s_type: StructureType::VIDEO_PICTURE_RESOURCE_KHR,
48477             p_next: ::std::ptr::null(),
48478             coded_offset: Offset2D::default(),
48479             coded_extent: Extent2D::default(),
48480             base_array_layer: u32::default(),
48481             image_view_binding: ImageView::default(),
48482         }
48483     }
48484 }
48485 impl VideoPictureResourceKHR {
builder<'a>() -> VideoPictureResourceKHRBuilder<'a>48486     pub fn builder<'a>() -> VideoPictureResourceKHRBuilder<'a> {
48487         VideoPictureResourceKHRBuilder {
48488             inner: Self::default(),
48489             marker: ::std::marker::PhantomData,
48490         }
48491     }
48492 }
48493 #[repr(transparent)]
48494 pub struct VideoPictureResourceKHRBuilder<'a> {
48495     inner: VideoPictureResourceKHR,
48496     marker: ::std::marker::PhantomData<&'a ()>,
48497 }
48498 impl<'a> ::std::ops::Deref for VideoPictureResourceKHRBuilder<'a> {
48499     type Target = VideoPictureResourceKHR;
deref(&self) -> &Self::Target48500     fn deref(&self) -> &Self::Target {
48501         &self.inner
48502     }
48503 }
48504 impl<'a> ::std::ops::DerefMut for VideoPictureResourceKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48505     fn deref_mut(&mut self) -> &mut Self::Target {
48506         &mut self.inner
48507     }
48508 }
48509 impl<'a> VideoPictureResourceKHRBuilder<'a> {
coded_offset(mut self, coded_offset: Offset2D) -> Self48510     pub fn coded_offset(mut self, coded_offset: Offset2D) -> Self {
48511         self.inner.coded_offset = coded_offset;
48512         self
48513     }
coded_extent(mut self, coded_extent: Extent2D) -> Self48514     pub fn coded_extent(mut self, coded_extent: Extent2D) -> Self {
48515         self.inner.coded_extent = coded_extent;
48516         self
48517     }
base_array_layer(mut self, base_array_layer: u32) -> Self48518     pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
48519         self.inner.base_array_layer = base_array_layer;
48520         self
48521     }
image_view_binding(mut self, image_view_binding: ImageView) -> Self48522     pub fn image_view_binding(mut self, image_view_binding: ImageView) -> Self {
48523         self.inner.image_view_binding = image_view_binding;
48524         self
48525     }
48526     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48527     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48528     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoPictureResourceKHR48529     pub fn build(self) -> VideoPictureResourceKHR {
48530         self.inner
48531     }
48532 }
48533 #[repr(C)]
48534 #[cfg_attr(feature = "debug", derive(Debug))]
48535 #[derive(Copy, Clone)]
48536 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoReferenceSlotKHR.html>"]
48537 pub struct VideoReferenceSlotKHR {
48538     pub s_type: StructureType,
48539     pub p_next: *const c_void,
48540     pub slot_index: i8,
48541     pub p_picture_resource: *const VideoPictureResourceKHR,
48542 }
48543 impl ::std::default::Default for VideoReferenceSlotKHR {
default() -> Self48544     fn default() -> Self {
48545         Self {
48546             s_type: StructureType::VIDEO_REFERENCE_SLOT_KHR,
48547             p_next: ::std::ptr::null(),
48548             slot_index: i8::default(),
48549             p_picture_resource: ::std::ptr::null(),
48550         }
48551     }
48552 }
48553 impl VideoReferenceSlotKHR {
builder<'a>() -> VideoReferenceSlotKHRBuilder<'a>48554     pub fn builder<'a>() -> VideoReferenceSlotKHRBuilder<'a> {
48555         VideoReferenceSlotKHRBuilder {
48556             inner: Self::default(),
48557             marker: ::std::marker::PhantomData,
48558         }
48559     }
48560 }
48561 #[repr(transparent)]
48562 pub struct VideoReferenceSlotKHRBuilder<'a> {
48563     inner: VideoReferenceSlotKHR,
48564     marker: ::std::marker::PhantomData<&'a ()>,
48565 }
48566 pub unsafe trait ExtendsVideoReferenceSlotKHR {}
48567 impl<'a> ::std::ops::Deref for VideoReferenceSlotKHRBuilder<'a> {
48568     type Target = VideoReferenceSlotKHR;
deref(&self) -> &Self::Target48569     fn deref(&self) -> &Self::Target {
48570         &self.inner
48571     }
48572 }
48573 impl<'a> ::std::ops::DerefMut for VideoReferenceSlotKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48574     fn deref_mut(&mut self) -> &mut Self::Target {
48575         &mut self.inner
48576     }
48577 }
48578 impl<'a> VideoReferenceSlotKHRBuilder<'a> {
slot_index(mut self, slot_index: i8) -> Self48579     pub fn slot_index(mut self, slot_index: i8) -> Self {
48580         self.inner.slot_index = slot_index;
48581         self
48582     }
picture_resource(mut self, picture_resource: &'a VideoPictureResourceKHR) -> Self48583     pub fn picture_resource(mut self, picture_resource: &'a VideoPictureResourceKHR) -> Self {
48584         self.inner.p_picture_resource = picture_resource;
48585         self
48586     }
48587     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48588     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48589     #[doc = r" valid extension structs can be pushed into the chain."]
48590     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48591     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoReferenceSlotKHR>(mut self, next: &'a mut T) -> Self48592     pub fn push_next<T: ExtendsVideoReferenceSlotKHR>(mut self, next: &'a mut T) -> Self {
48593         unsafe {
48594             let next_ptr = next as *mut T as *mut BaseOutStructure;
48595             let last_next = ptr_chain_iter(next).last().unwrap();
48596             (*last_next).p_next = self.inner.p_next as _;
48597             self.inner.p_next = next_ptr as _;
48598         }
48599         self
48600     }
48601     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48602     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48603     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoReferenceSlotKHR48604     pub fn build(self) -> VideoReferenceSlotKHR {
48605         self.inner
48606     }
48607 }
48608 #[repr(C)]
48609 #[cfg_attr(feature = "debug", derive(Debug))]
48610 #[derive(Copy, Clone)]
48611 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeInfoKHR.html>"]
48612 pub struct VideoDecodeInfoKHR {
48613     pub s_type: StructureType,
48614     pub p_next: *const c_void,
48615     pub flags: VideoDecodeFlagsKHR,
48616     pub coded_offset: Offset2D,
48617     pub coded_extent: Extent2D,
48618     pub src_buffer: Buffer,
48619     pub src_buffer_offset: DeviceSize,
48620     pub src_buffer_range: DeviceSize,
48621     pub dst_picture_resource: VideoPictureResourceKHR,
48622     pub p_setup_reference_slot: *const VideoReferenceSlotKHR,
48623     pub reference_slot_count: u32,
48624     pub p_reference_slots: *const VideoReferenceSlotKHR,
48625 }
48626 impl ::std::default::Default for VideoDecodeInfoKHR {
default() -> Self48627     fn default() -> Self {
48628         Self {
48629             s_type: StructureType::VIDEO_DECODE_INFO_KHR,
48630             p_next: ::std::ptr::null(),
48631             flags: VideoDecodeFlagsKHR::default(),
48632             coded_offset: Offset2D::default(),
48633             coded_extent: Extent2D::default(),
48634             src_buffer: Buffer::default(),
48635             src_buffer_offset: DeviceSize::default(),
48636             src_buffer_range: DeviceSize::default(),
48637             dst_picture_resource: VideoPictureResourceKHR::default(),
48638             p_setup_reference_slot: ::std::ptr::null(),
48639             reference_slot_count: u32::default(),
48640             p_reference_slots: ::std::ptr::null(),
48641         }
48642     }
48643 }
48644 impl VideoDecodeInfoKHR {
builder<'a>() -> VideoDecodeInfoKHRBuilder<'a>48645     pub fn builder<'a>() -> VideoDecodeInfoKHRBuilder<'a> {
48646         VideoDecodeInfoKHRBuilder {
48647             inner: Self::default(),
48648             marker: ::std::marker::PhantomData,
48649         }
48650     }
48651 }
48652 #[repr(transparent)]
48653 pub struct VideoDecodeInfoKHRBuilder<'a> {
48654     inner: VideoDecodeInfoKHR,
48655     marker: ::std::marker::PhantomData<&'a ()>,
48656 }
48657 pub unsafe trait ExtendsVideoDecodeInfoKHR {}
48658 impl<'a> ::std::ops::Deref for VideoDecodeInfoKHRBuilder<'a> {
48659     type Target = VideoDecodeInfoKHR;
deref(&self) -> &Self::Target48660     fn deref(&self) -> &Self::Target {
48661         &self.inner
48662     }
48663 }
48664 impl<'a> ::std::ops::DerefMut for VideoDecodeInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48665     fn deref_mut(&mut self) -> &mut Self::Target {
48666         &mut self.inner
48667     }
48668 }
48669 impl<'a> VideoDecodeInfoKHRBuilder<'a> {
flags(mut self, flags: VideoDecodeFlagsKHR) -> Self48670     pub fn flags(mut self, flags: VideoDecodeFlagsKHR) -> Self {
48671         self.inner.flags = flags;
48672         self
48673     }
coded_offset(mut self, coded_offset: Offset2D) -> Self48674     pub fn coded_offset(mut self, coded_offset: Offset2D) -> Self {
48675         self.inner.coded_offset = coded_offset;
48676         self
48677     }
coded_extent(mut self, coded_extent: Extent2D) -> Self48678     pub fn coded_extent(mut self, coded_extent: Extent2D) -> Self {
48679         self.inner.coded_extent = coded_extent;
48680         self
48681     }
src_buffer(mut self, src_buffer: Buffer) -> Self48682     pub fn src_buffer(mut self, src_buffer: Buffer) -> Self {
48683         self.inner.src_buffer = src_buffer;
48684         self
48685     }
src_buffer_offset(mut self, src_buffer_offset: DeviceSize) -> Self48686     pub fn src_buffer_offset(mut self, src_buffer_offset: DeviceSize) -> Self {
48687         self.inner.src_buffer_offset = src_buffer_offset;
48688         self
48689     }
src_buffer_range(mut self, src_buffer_range: DeviceSize) -> Self48690     pub fn src_buffer_range(mut self, src_buffer_range: DeviceSize) -> Self {
48691         self.inner.src_buffer_range = src_buffer_range;
48692         self
48693     }
dst_picture_resource(mut self, dst_picture_resource: VideoPictureResourceKHR) -> Self48694     pub fn dst_picture_resource(mut self, dst_picture_resource: VideoPictureResourceKHR) -> Self {
48695         self.inner.dst_picture_resource = dst_picture_resource;
48696         self
48697     }
setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self48698     pub fn setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self {
48699         self.inner.p_setup_reference_slot = setup_reference_slot;
48700         self
48701     }
reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self48702     pub fn reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self {
48703         self.inner.reference_slot_count = reference_slots.len() as _;
48704         self.inner.p_reference_slots = reference_slots.as_ptr();
48705         self
48706     }
48707     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
48708     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
48709     #[doc = r" valid extension structs can be pushed into the chain."]
48710     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
48711     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoDecodeInfoKHR>(mut self, next: &'a mut T) -> Self48712     pub fn push_next<T: ExtendsVideoDecodeInfoKHR>(mut self, next: &'a mut T) -> Self {
48713         unsafe {
48714             let next_ptr = next as *mut T as *mut BaseOutStructure;
48715             let last_next = ptr_chain_iter(next).last().unwrap();
48716             (*last_next).p_next = self.inner.p_next as _;
48717             self.inner.p_next = next_ptr as _;
48718         }
48719         self
48720     }
48721     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48722     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48723     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeInfoKHR48724     pub fn build(self) -> VideoDecodeInfoKHR {
48725         self.inner
48726     }
48727 }
48728 #[repr(C)]
48729 #[cfg_attr(feature = "debug", derive(Debug))]
48730 #[derive(Copy, Clone)]
48731 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264ProfileEXT.html>"]
48732 pub struct VideoDecodeH264ProfileEXT {
48733     pub s_type: StructureType,
48734     pub p_next: *const c_void,
48735     pub std_profile_idc: StdVideoH264ProfileIdc,
48736     pub picture_layout: VideoDecodeH264PictureLayoutFlagsEXT,
48737 }
48738 impl ::std::default::Default for VideoDecodeH264ProfileEXT {
default() -> Self48739     fn default() -> Self {
48740         Self {
48741             s_type: StructureType::VIDEO_DECODE_H264_PROFILE_EXT,
48742             p_next: ::std::ptr::null(),
48743             std_profile_idc: StdVideoH264ProfileIdc::default(),
48744             picture_layout: VideoDecodeH264PictureLayoutFlagsEXT::default(),
48745         }
48746     }
48747 }
48748 impl VideoDecodeH264ProfileEXT {
builder<'a>() -> VideoDecodeH264ProfileEXTBuilder<'a>48749     pub fn builder<'a>() -> VideoDecodeH264ProfileEXTBuilder<'a> {
48750         VideoDecodeH264ProfileEXTBuilder {
48751             inner: Self::default(),
48752             marker: ::std::marker::PhantomData,
48753         }
48754     }
48755 }
48756 #[repr(transparent)]
48757 pub struct VideoDecodeH264ProfileEXTBuilder<'a> {
48758     inner: VideoDecodeH264ProfileEXT,
48759     marker: ::std::marker::PhantomData<&'a ()>,
48760 }
48761 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH264ProfileEXTBuilder<'_> {}
48762 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH264ProfileEXT {}
48763 unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeH264ProfileEXTBuilder<'_> {}
48764 unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeH264ProfileEXT {}
48765 unsafe impl ExtendsFormatProperties2 for VideoDecodeH264ProfileEXTBuilder<'_> {}
48766 unsafe impl ExtendsFormatProperties2 for VideoDecodeH264ProfileEXT {}
48767 unsafe impl ExtendsImageCreateInfo for VideoDecodeH264ProfileEXTBuilder<'_> {}
48768 unsafe impl ExtendsImageCreateInfo for VideoDecodeH264ProfileEXT {}
48769 unsafe impl ExtendsImageViewCreateInfo for VideoDecodeH264ProfileEXTBuilder<'_> {}
48770 unsafe impl ExtendsImageViewCreateInfo for VideoDecodeH264ProfileEXT {}
48771 unsafe impl ExtendsBufferCreateInfo for VideoDecodeH264ProfileEXTBuilder<'_> {}
48772 unsafe impl ExtendsBufferCreateInfo for VideoDecodeH264ProfileEXT {}
48773 impl<'a> ::std::ops::Deref for VideoDecodeH264ProfileEXTBuilder<'a> {
48774     type Target = VideoDecodeH264ProfileEXT;
deref(&self) -> &Self::Target48775     fn deref(&self) -> &Self::Target {
48776         &self.inner
48777     }
48778 }
48779 impl<'a> ::std::ops::DerefMut for VideoDecodeH264ProfileEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48780     fn deref_mut(&mut self) -> &mut Self::Target {
48781         &mut self.inner
48782     }
48783 }
48784 impl<'a> VideoDecodeH264ProfileEXTBuilder<'a> {
std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self48785     pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self {
48786         self.inner.std_profile_idc = std_profile_idc;
48787         self
48788     }
picture_layout(mut self, picture_layout: VideoDecodeH264PictureLayoutFlagsEXT) -> Self48789     pub fn picture_layout(mut self, picture_layout: VideoDecodeH264PictureLayoutFlagsEXT) -> Self {
48790         self.inner.picture_layout = picture_layout;
48791         self
48792     }
48793     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48794     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48795     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264ProfileEXT48796     pub fn build(self) -> VideoDecodeH264ProfileEXT {
48797         self.inner
48798     }
48799 }
48800 #[repr(C)]
48801 #[cfg_attr(feature = "debug", derive(Debug))]
48802 #[derive(Copy, Clone)]
48803 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264CapabilitiesEXT.html>"]
48804 pub struct VideoDecodeH264CapabilitiesEXT {
48805     pub s_type: StructureType,
48806     pub p_next: *mut c_void,
48807     pub max_level: u32,
48808     pub field_offset_granularity: Offset2D,
48809     pub std_extension_version: ExtensionProperties,
48810 }
48811 impl ::std::default::Default for VideoDecodeH264CapabilitiesEXT {
default() -> Self48812     fn default() -> Self {
48813         Self {
48814             s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_EXT,
48815             p_next: ::std::ptr::null_mut(),
48816             max_level: u32::default(),
48817             field_offset_granularity: Offset2D::default(),
48818             std_extension_version: ExtensionProperties::default(),
48819         }
48820     }
48821 }
48822 impl VideoDecodeH264CapabilitiesEXT {
builder<'a>() -> VideoDecodeH264CapabilitiesEXTBuilder<'a>48823     pub fn builder<'a>() -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
48824         VideoDecodeH264CapabilitiesEXTBuilder {
48825             inner: Self::default(),
48826             marker: ::std::marker::PhantomData,
48827         }
48828     }
48829 }
48830 #[repr(transparent)]
48831 pub struct VideoDecodeH264CapabilitiesEXTBuilder<'a> {
48832     inner: VideoDecodeH264CapabilitiesEXT,
48833     marker: ::std::marker::PhantomData<&'a ()>,
48834 }
48835 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH264CapabilitiesEXTBuilder<'_> {}
48836 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH264CapabilitiesEXT {}
48837 impl<'a> ::std::ops::Deref for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
48838     type Target = VideoDecodeH264CapabilitiesEXT;
deref(&self) -> &Self::Target48839     fn deref(&self) -> &Self::Target {
48840         &self.inner
48841     }
48842 }
48843 impl<'a> ::std::ops::DerefMut for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48844     fn deref_mut(&mut self) -> &mut Self::Target {
48845         &mut self.inner
48846     }
48847 }
48848 impl<'a> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
max_level(mut self, max_level: u32) -> Self48849     pub fn max_level(mut self, max_level: u32) -> Self {
48850         self.inner.max_level = max_level;
48851         self
48852     }
field_offset_granularity(mut self, field_offset_granularity: Offset2D) -> Self48853     pub fn field_offset_granularity(mut self, field_offset_granularity: Offset2D) -> Self {
48854         self.inner.field_offset_granularity = field_offset_granularity;
48855         self
48856     }
std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self48857     pub fn std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self {
48858         self.inner.std_extension_version = std_extension_version;
48859         self
48860     }
48861     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48862     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48863     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264CapabilitiesEXT48864     pub fn build(self) -> VideoDecodeH264CapabilitiesEXT {
48865         self.inner
48866     }
48867 }
48868 #[repr(C)]
48869 #[cfg_attr(feature = "debug", derive(Debug))]
48870 #[derive(Copy, Clone)]
48871 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264SessionCreateInfoEXT.html>"]
48872 pub struct VideoDecodeH264SessionCreateInfoEXT {
48873     pub s_type: StructureType,
48874     pub p_next: *const c_void,
48875     pub flags: VideoDecodeH264CreateFlagsEXT,
48876     pub p_std_extension_version: *const ExtensionProperties,
48877 }
48878 impl ::std::default::Default for VideoDecodeH264SessionCreateInfoEXT {
default() -> Self48879     fn default() -> Self {
48880         Self {
48881             s_type: StructureType::VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT,
48882             p_next: ::std::ptr::null(),
48883             flags: VideoDecodeH264CreateFlagsEXT::default(),
48884             p_std_extension_version: ::std::ptr::null(),
48885         }
48886     }
48887 }
48888 impl VideoDecodeH264SessionCreateInfoEXT {
builder<'a>() -> VideoDecodeH264SessionCreateInfoEXTBuilder<'a>48889     pub fn builder<'a>() -> VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
48890         VideoDecodeH264SessionCreateInfoEXTBuilder {
48891             inner: Self::default(),
48892             marker: ::std::marker::PhantomData,
48893         }
48894     }
48895 }
48896 #[repr(transparent)]
48897 pub struct VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
48898     inner: VideoDecodeH264SessionCreateInfoEXT,
48899     marker: ::std::marker::PhantomData<&'a ()>,
48900 }
48901 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH264SessionCreateInfoEXTBuilder<'_> {}
48902 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH264SessionCreateInfoEXT {}
48903 impl<'a> ::std::ops::Deref for VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
48904     type Target = VideoDecodeH264SessionCreateInfoEXT;
deref(&self) -> &Self::Target48905     fn deref(&self) -> &Self::Target {
48906         &self.inner
48907     }
48908 }
48909 impl<'a> ::std::ops::DerefMut for VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48910     fn deref_mut(&mut self) -> &mut Self::Target {
48911         &mut self.inner
48912     }
48913 }
48914 impl<'a> VideoDecodeH264SessionCreateInfoEXTBuilder<'a> {
flags(mut self, flags: VideoDecodeH264CreateFlagsEXT) -> Self48915     pub fn flags(mut self, flags: VideoDecodeH264CreateFlagsEXT) -> Self {
48916         self.inner.flags = flags;
48917         self
48918     }
std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self48919     pub fn std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self {
48920         self.inner.p_std_extension_version = std_extension_version;
48921         self
48922     }
48923     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48924     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48925     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264SessionCreateInfoEXT48926     pub fn build(self) -> VideoDecodeH264SessionCreateInfoEXT {
48927         self.inner
48928     }
48929 }
48930 #[repr(C)]
48931 #[cfg_attr(feature = "debug", derive(Debug))]
48932 #[derive(Copy, Clone)]
48933 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264SessionParametersAddInfoEXT.html>"]
48934 pub struct VideoDecodeH264SessionParametersAddInfoEXT {
48935     pub s_type: StructureType,
48936     pub p_next: *const c_void,
48937     pub sps_std_count: u32,
48938     pub p_sps_std: *const StdVideoH264SequenceParameterSet,
48939     pub pps_std_count: u32,
48940     pub p_pps_std: *const StdVideoH264PictureParameterSet,
48941 }
48942 impl ::std::default::Default for VideoDecodeH264SessionParametersAddInfoEXT {
default() -> Self48943     fn default() -> Self {
48944         Self {
48945             s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT,
48946             p_next: ::std::ptr::null(),
48947             sps_std_count: u32::default(),
48948             p_sps_std: ::std::ptr::null(),
48949             pps_std_count: u32::default(),
48950             p_pps_std: ::std::ptr::null(),
48951         }
48952     }
48953 }
48954 impl VideoDecodeH264SessionParametersAddInfoEXT {
builder<'a>() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a>48955     pub fn builder<'a>() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
48956         VideoDecodeH264SessionParametersAddInfoEXTBuilder {
48957             inner: Self::default(),
48958             marker: ::std::marker::PhantomData,
48959         }
48960     }
48961 }
48962 #[repr(transparent)]
48963 pub struct VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
48964     inner: VideoDecodeH264SessionParametersAddInfoEXT,
48965     marker: ::std::marker::PhantomData<&'a ()>,
48966 }
48967 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
48968     for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'_>
48969 {
48970 }
48971 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
48972     for VideoDecodeH264SessionParametersAddInfoEXT
48973 {
48974 }
48975 impl<'a> ::std::ops::Deref for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
48976     type Target = VideoDecodeH264SessionParametersAddInfoEXT;
deref(&self) -> &Self::Target48977     fn deref(&self) -> &Self::Target {
48978         &self.inner
48979     }
48980 }
48981 impl<'a> ::std::ops::DerefMut for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target48982     fn deref_mut(&mut self) -> &mut Self::Target {
48983         &mut self.inner
48984     }
48985 }
48986 impl<'a> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self48987     pub fn sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self {
48988         self.inner.sps_std_count = sps_std.len() as _;
48989         self.inner.p_sps_std = sps_std.as_ptr();
48990         self
48991     }
pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self48992     pub fn pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self {
48993         self.inner.pps_std_count = pps_std.len() as _;
48994         self.inner.p_pps_std = pps_std.as_ptr();
48995         self
48996     }
48997     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
48998     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
48999     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264SessionParametersAddInfoEXT49000     pub fn build(self) -> VideoDecodeH264SessionParametersAddInfoEXT {
49001         self.inner
49002     }
49003 }
49004 #[repr(C)]
49005 #[cfg_attr(feature = "debug", derive(Debug))]
49006 #[derive(Copy, Clone)]
49007 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264SessionParametersCreateInfoEXT.html>"]
49008 pub struct VideoDecodeH264SessionParametersCreateInfoEXT {
49009     pub s_type: StructureType,
49010     pub p_next: *const c_void,
49011     pub max_sps_std_count: u32,
49012     pub max_pps_std_count: u32,
49013     pub p_parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoEXT,
49014 }
49015 impl ::std::default::Default for VideoDecodeH264SessionParametersCreateInfoEXT {
default() -> Self49016     fn default() -> Self {
49017         Self {
49018             s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT,
49019             p_next: ::std::ptr::null(),
49020             max_sps_std_count: u32::default(),
49021             max_pps_std_count: u32::default(),
49022             p_parameters_add_info: ::std::ptr::null(),
49023         }
49024     }
49025 }
49026 impl VideoDecodeH264SessionParametersCreateInfoEXT {
builder<'a>() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a>49027     pub fn builder<'a>() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
49028         VideoDecodeH264SessionParametersCreateInfoEXTBuilder {
49029             inner: Self::default(),
49030             marker: ::std::marker::PhantomData,
49031         }
49032     }
49033 }
49034 #[repr(transparent)]
49035 pub struct VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
49036     inner: VideoDecodeH264SessionParametersCreateInfoEXT,
49037     marker: ::std::marker::PhantomData<&'a ()>,
49038 }
49039 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
49040     for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'_>
49041 {
49042 }
49043 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
49044     for VideoDecodeH264SessionParametersCreateInfoEXT
49045 {
49046 }
49047 impl<'a> ::std::ops::Deref for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
49048     type Target = VideoDecodeH264SessionParametersCreateInfoEXT;
deref(&self) -> &Self::Target49049     fn deref(&self) -> &Self::Target {
49050         &self.inner
49051     }
49052 }
49053 impl<'a> ::std::ops::DerefMut for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49054     fn deref_mut(&mut self) -> &mut Self::Target {
49055         &mut self.inner
49056     }
49057 }
49058 impl<'a> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
max_sps_std_count(mut self, max_sps_std_count: u32) -> Self49059     pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
49060         self.inner.max_sps_std_count = max_sps_std_count;
49061         self
49062     }
max_pps_std_count(mut self, max_pps_std_count: u32) -> Self49063     pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
49064         self.inner.max_pps_std_count = max_pps_std_count;
49065         self
49066     }
parameters_add_info( mut self, parameters_add_info: &'a VideoDecodeH264SessionParametersAddInfoEXT, ) -> Self49067     pub fn parameters_add_info(
49068         mut self,
49069         parameters_add_info: &'a VideoDecodeH264SessionParametersAddInfoEXT,
49070     ) -> Self {
49071         self.inner.p_parameters_add_info = parameters_add_info;
49072         self
49073     }
49074     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49075     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49076     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264SessionParametersCreateInfoEXT49077     pub fn build(self) -> VideoDecodeH264SessionParametersCreateInfoEXT {
49078         self.inner
49079     }
49080 }
49081 #[repr(C)]
49082 #[cfg_attr(feature = "debug", derive(Debug))]
49083 #[derive(Copy, Clone)]
49084 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264PictureInfoEXT.html>"]
49085 pub struct VideoDecodeH264PictureInfoEXT {
49086     pub s_type: StructureType,
49087     pub p_next: *const c_void,
49088     pub p_std_picture_info: *const StdVideoDecodeH264PictureInfo,
49089     pub slices_count: u32,
49090     pub p_slices_data_offsets: *const u32,
49091 }
49092 impl ::std::default::Default for VideoDecodeH264PictureInfoEXT {
default() -> Self49093     fn default() -> Self {
49094         Self {
49095             s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_EXT,
49096             p_next: ::std::ptr::null(),
49097             p_std_picture_info: ::std::ptr::null(),
49098             slices_count: u32::default(),
49099             p_slices_data_offsets: ::std::ptr::null(),
49100         }
49101     }
49102 }
49103 impl VideoDecodeH264PictureInfoEXT {
builder<'a>() -> VideoDecodeH264PictureInfoEXTBuilder<'a>49104     pub fn builder<'a>() -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
49105         VideoDecodeH264PictureInfoEXTBuilder {
49106             inner: Self::default(),
49107             marker: ::std::marker::PhantomData,
49108         }
49109     }
49110 }
49111 #[repr(transparent)]
49112 pub struct VideoDecodeH264PictureInfoEXTBuilder<'a> {
49113     inner: VideoDecodeH264PictureInfoEXT,
49114     marker: ::std::marker::PhantomData<&'a ()>,
49115 }
49116 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH264PictureInfoEXTBuilder<'_> {}
49117 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH264PictureInfoEXT {}
49118 pub unsafe trait ExtendsVideoDecodeH264PictureInfoEXT {}
49119 impl<'a> ::std::ops::Deref for VideoDecodeH264PictureInfoEXTBuilder<'a> {
49120     type Target = VideoDecodeH264PictureInfoEXT;
deref(&self) -> &Self::Target49121     fn deref(&self) -> &Self::Target {
49122         &self.inner
49123     }
49124 }
49125 impl<'a> ::std::ops::DerefMut for VideoDecodeH264PictureInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49126     fn deref_mut(&mut self) -> &mut Self::Target {
49127         &mut self.inner
49128     }
49129 }
49130 impl<'a> VideoDecodeH264PictureInfoEXTBuilder<'a> {
std_picture_info(mut self, std_picture_info: &'a StdVideoDecodeH264PictureInfo) -> Self49131     pub fn std_picture_info(mut self, std_picture_info: &'a StdVideoDecodeH264PictureInfo) -> Self {
49132         self.inner.p_std_picture_info = std_picture_info;
49133         self
49134     }
slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self49135     pub fn slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self {
49136         self.inner.slices_count = slices_data_offsets.len() as _;
49137         self.inner.p_slices_data_offsets = slices_data_offsets.as_ptr();
49138         self
49139     }
49140     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
49141     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
49142     #[doc = r" valid extension structs can be pushed into the chain."]
49143     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
49144     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoDecodeH264PictureInfoEXT>(mut self, next: &'a mut T) -> Self49145     pub fn push_next<T: ExtendsVideoDecodeH264PictureInfoEXT>(mut self, next: &'a mut T) -> Self {
49146         unsafe {
49147             let next_ptr = next as *mut T as *mut BaseOutStructure;
49148             let last_next = ptr_chain_iter(next).last().unwrap();
49149             (*last_next).p_next = self.inner.p_next as _;
49150             self.inner.p_next = next_ptr as _;
49151         }
49152         self
49153     }
49154     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49155     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49156     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264PictureInfoEXT49157     pub fn build(self) -> VideoDecodeH264PictureInfoEXT {
49158         self.inner
49159     }
49160 }
49161 #[repr(C)]
49162 #[cfg_attr(feature = "debug", derive(Debug))]
49163 #[derive(Copy, Clone)]
49164 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264DpbSlotInfoEXT.html>"]
49165 pub struct VideoDecodeH264DpbSlotInfoEXT {
49166     pub s_type: StructureType,
49167     pub p_next: *const c_void,
49168     pub p_std_reference_info: *const StdVideoDecodeH264ReferenceInfo,
49169 }
49170 impl ::std::default::Default for VideoDecodeH264DpbSlotInfoEXT {
default() -> Self49171     fn default() -> Self {
49172         Self {
49173             s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT,
49174             p_next: ::std::ptr::null(),
49175             p_std_reference_info: ::std::ptr::null(),
49176         }
49177     }
49178 }
49179 impl VideoDecodeH264DpbSlotInfoEXT {
builder<'a>() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a>49180     pub fn builder<'a>() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
49181         VideoDecodeH264DpbSlotInfoEXTBuilder {
49182             inner: Self::default(),
49183             marker: ::std::marker::PhantomData,
49184         }
49185     }
49186 }
49187 #[repr(transparent)]
49188 pub struct VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
49189     inner: VideoDecodeH264DpbSlotInfoEXT,
49190     marker: ::std::marker::PhantomData<&'a ()>,
49191 }
49192 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH264DpbSlotInfoEXTBuilder<'_> {}
49193 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH264DpbSlotInfoEXT {}
49194 impl<'a> ::std::ops::Deref for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
49195     type Target = VideoDecodeH264DpbSlotInfoEXT;
deref(&self) -> &Self::Target49196     fn deref(&self) -> &Self::Target {
49197         &self.inner
49198     }
49199 }
49200 impl<'a> ::std::ops::DerefMut for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49201     fn deref_mut(&mut self) -> &mut Self::Target {
49202         &mut self.inner
49203     }
49204 }
49205 impl<'a> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
std_reference_info( mut self, std_reference_info: &'a StdVideoDecodeH264ReferenceInfo, ) -> Self49206     pub fn std_reference_info(
49207         mut self,
49208         std_reference_info: &'a StdVideoDecodeH264ReferenceInfo,
49209     ) -> Self {
49210         self.inner.p_std_reference_info = std_reference_info;
49211         self
49212     }
49213     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49214     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49215     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264DpbSlotInfoEXT49216     pub fn build(self) -> VideoDecodeH264DpbSlotInfoEXT {
49217         self.inner
49218     }
49219 }
49220 #[repr(C)]
49221 #[cfg_attr(feature = "debug", derive(Debug))]
49222 #[derive(Copy, Clone)]
49223 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH264MvcEXT.html>"]
49224 pub struct VideoDecodeH264MvcEXT {
49225     pub s_type: StructureType,
49226     pub p_next: *const c_void,
49227     pub p_std_mvc: *const StdVideoDecodeH264Mvc,
49228 }
49229 impl ::std::default::Default for VideoDecodeH264MvcEXT {
default() -> Self49230     fn default() -> Self {
49231         Self {
49232             s_type: StructureType::VIDEO_DECODE_H264_MVC_EXT,
49233             p_next: ::std::ptr::null(),
49234             p_std_mvc: ::std::ptr::null(),
49235         }
49236     }
49237 }
49238 impl VideoDecodeH264MvcEXT {
builder<'a>() -> VideoDecodeH264MvcEXTBuilder<'a>49239     pub fn builder<'a>() -> VideoDecodeH264MvcEXTBuilder<'a> {
49240         VideoDecodeH264MvcEXTBuilder {
49241             inner: Self::default(),
49242             marker: ::std::marker::PhantomData,
49243         }
49244     }
49245 }
49246 #[repr(transparent)]
49247 pub struct VideoDecodeH264MvcEXTBuilder<'a> {
49248     inner: VideoDecodeH264MvcEXT,
49249     marker: ::std::marker::PhantomData<&'a ()>,
49250 }
49251 unsafe impl ExtendsVideoDecodeH264PictureInfoEXT for VideoDecodeH264MvcEXTBuilder<'_> {}
49252 unsafe impl ExtendsVideoDecodeH264PictureInfoEXT for VideoDecodeH264MvcEXT {}
49253 impl<'a> ::std::ops::Deref for VideoDecodeH264MvcEXTBuilder<'a> {
49254     type Target = VideoDecodeH264MvcEXT;
deref(&self) -> &Self::Target49255     fn deref(&self) -> &Self::Target {
49256         &self.inner
49257     }
49258 }
49259 impl<'a> ::std::ops::DerefMut for VideoDecodeH264MvcEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49260     fn deref_mut(&mut self) -> &mut Self::Target {
49261         &mut self.inner
49262     }
49263 }
49264 impl<'a> VideoDecodeH264MvcEXTBuilder<'a> {
std_mvc(mut self, std_mvc: &'a StdVideoDecodeH264Mvc) -> Self49265     pub fn std_mvc(mut self, std_mvc: &'a StdVideoDecodeH264Mvc) -> Self {
49266         self.inner.p_std_mvc = std_mvc;
49267         self
49268     }
49269     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49270     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49271     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH264MvcEXT49272     pub fn build(self) -> VideoDecodeH264MvcEXT {
49273         self.inner
49274     }
49275 }
49276 #[repr(C)]
49277 #[cfg_attr(feature = "debug", derive(Debug))]
49278 #[derive(Copy, Clone)]
49279 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265ProfileEXT.html>"]
49280 pub struct VideoDecodeH265ProfileEXT {
49281     pub s_type: StructureType,
49282     pub p_next: *const c_void,
49283     pub std_profile_idc: StdVideoH265ProfileIdc,
49284 }
49285 impl ::std::default::Default for VideoDecodeH265ProfileEXT {
default() -> Self49286     fn default() -> Self {
49287         Self {
49288             s_type: StructureType::VIDEO_DECODE_H265_PROFILE_EXT,
49289             p_next: ::std::ptr::null(),
49290             std_profile_idc: StdVideoH265ProfileIdc::default(),
49291         }
49292     }
49293 }
49294 impl VideoDecodeH265ProfileEXT {
builder<'a>() -> VideoDecodeH265ProfileEXTBuilder<'a>49295     pub fn builder<'a>() -> VideoDecodeH265ProfileEXTBuilder<'a> {
49296         VideoDecodeH265ProfileEXTBuilder {
49297             inner: Self::default(),
49298             marker: ::std::marker::PhantomData,
49299         }
49300     }
49301 }
49302 #[repr(transparent)]
49303 pub struct VideoDecodeH265ProfileEXTBuilder<'a> {
49304     inner: VideoDecodeH265ProfileEXT,
49305     marker: ::std::marker::PhantomData<&'a ()>,
49306 }
49307 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH265ProfileEXTBuilder<'_> {}
49308 unsafe impl ExtendsVideoProfileKHR for VideoDecodeH265ProfileEXT {}
49309 unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeH265ProfileEXTBuilder<'_> {}
49310 unsafe impl ExtendsQueryPoolCreateInfo for VideoDecodeH265ProfileEXT {}
49311 unsafe impl ExtendsFormatProperties2 for VideoDecodeH265ProfileEXTBuilder<'_> {}
49312 unsafe impl ExtendsFormatProperties2 for VideoDecodeH265ProfileEXT {}
49313 unsafe impl ExtendsImageCreateInfo for VideoDecodeH265ProfileEXTBuilder<'_> {}
49314 unsafe impl ExtendsImageCreateInfo for VideoDecodeH265ProfileEXT {}
49315 unsafe impl ExtendsImageViewCreateInfo for VideoDecodeH265ProfileEXTBuilder<'_> {}
49316 unsafe impl ExtendsImageViewCreateInfo for VideoDecodeH265ProfileEXT {}
49317 unsafe impl ExtendsBufferCreateInfo for VideoDecodeH265ProfileEXTBuilder<'_> {}
49318 unsafe impl ExtendsBufferCreateInfo for VideoDecodeH265ProfileEXT {}
49319 impl<'a> ::std::ops::Deref for VideoDecodeH265ProfileEXTBuilder<'a> {
49320     type Target = VideoDecodeH265ProfileEXT;
deref(&self) -> &Self::Target49321     fn deref(&self) -> &Self::Target {
49322         &self.inner
49323     }
49324 }
49325 impl<'a> ::std::ops::DerefMut for VideoDecodeH265ProfileEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49326     fn deref_mut(&mut self) -> &mut Self::Target {
49327         &mut self.inner
49328     }
49329 }
49330 impl<'a> VideoDecodeH265ProfileEXTBuilder<'a> {
std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self49331     pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self {
49332         self.inner.std_profile_idc = std_profile_idc;
49333         self
49334     }
49335     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49336     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49337     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265ProfileEXT49338     pub fn build(self) -> VideoDecodeH265ProfileEXT {
49339         self.inner
49340     }
49341 }
49342 #[repr(C)]
49343 #[cfg_attr(feature = "debug", derive(Debug))]
49344 #[derive(Copy, Clone)]
49345 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265CapabilitiesEXT.html>"]
49346 pub struct VideoDecodeH265CapabilitiesEXT {
49347     pub s_type: StructureType,
49348     pub p_next: *mut c_void,
49349     pub max_level: u32,
49350     pub std_extension_version: ExtensionProperties,
49351 }
49352 impl ::std::default::Default for VideoDecodeH265CapabilitiesEXT {
default() -> Self49353     fn default() -> Self {
49354         Self {
49355             s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_EXT,
49356             p_next: ::std::ptr::null_mut(),
49357             max_level: u32::default(),
49358             std_extension_version: ExtensionProperties::default(),
49359         }
49360     }
49361 }
49362 impl VideoDecodeH265CapabilitiesEXT {
builder<'a>() -> VideoDecodeH265CapabilitiesEXTBuilder<'a>49363     pub fn builder<'a>() -> VideoDecodeH265CapabilitiesEXTBuilder<'a> {
49364         VideoDecodeH265CapabilitiesEXTBuilder {
49365             inner: Self::default(),
49366             marker: ::std::marker::PhantomData,
49367         }
49368     }
49369 }
49370 #[repr(transparent)]
49371 pub struct VideoDecodeH265CapabilitiesEXTBuilder<'a> {
49372     inner: VideoDecodeH265CapabilitiesEXT,
49373     marker: ::std::marker::PhantomData<&'a ()>,
49374 }
49375 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH265CapabilitiesEXTBuilder<'_> {}
49376 unsafe impl ExtendsVideoCapabilitiesKHR for VideoDecodeH265CapabilitiesEXT {}
49377 impl<'a> ::std::ops::Deref for VideoDecodeH265CapabilitiesEXTBuilder<'a> {
49378     type Target = VideoDecodeH265CapabilitiesEXT;
deref(&self) -> &Self::Target49379     fn deref(&self) -> &Self::Target {
49380         &self.inner
49381     }
49382 }
49383 impl<'a> ::std::ops::DerefMut for VideoDecodeH265CapabilitiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49384     fn deref_mut(&mut self) -> &mut Self::Target {
49385         &mut self.inner
49386     }
49387 }
49388 impl<'a> VideoDecodeH265CapabilitiesEXTBuilder<'a> {
max_level(mut self, max_level: u32) -> Self49389     pub fn max_level(mut self, max_level: u32) -> Self {
49390         self.inner.max_level = max_level;
49391         self
49392     }
std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self49393     pub fn std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self {
49394         self.inner.std_extension_version = std_extension_version;
49395         self
49396     }
49397     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49398     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49399     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265CapabilitiesEXT49400     pub fn build(self) -> VideoDecodeH265CapabilitiesEXT {
49401         self.inner
49402     }
49403 }
49404 #[repr(C)]
49405 #[cfg_attr(feature = "debug", derive(Debug))]
49406 #[derive(Copy, Clone)]
49407 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265SessionCreateInfoEXT.html>"]
49408 pub struct VideoDecodeH265SessionCreateInfoEXT {
49409     pub s_type: StructureType,
49410     pub p_next: *const c_void,
49411     pub flags: VideoDecodeH265CreateFlagsEXT,
49412     pub p_std_extension_version: *const ExtensionProperties,
49413 }
49414 impl ::std::default::Default for VideoDecodeH265SessionCreateInfoEXT {
default() -> Self49415     fn default() -> Self {
49416         Self {
49417             s_type: StructureType::VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT,
49418             p_next: ::std::ptr::null(),
49419             flags: VideoDecodeH265CreateFlagsEXT::default(),
49420             p_std_extension_version: ::std::ptr::null(),
49421         }
49422     }
49423 }
49424 impl VideoDecodeH265SessionCreateInfoEXT {
builder<'a>() -> VideoDecodeH265SessionCreateInfoEXTBuilder<'a>49425     pub fn builder<'a>() -> VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
49426         VideoDecodeH265SessionCreateInfoEXTBuilder {
49427             inner: Self::default(),
49428             marker: ::std::marker::PhantomData,
49429         }
49430     }
49431 }
49432 #[repr(transparent)]
49433 pub struct VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
49434     inner: VideoDecodeH265SessionCreateInfoEXT,
49435     marker: ::std::marker::PhantomData<&'a ()>,
49436 }
49437 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH265SessionCreateInfoEXTBuilder<'_> {}
49438 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoDecodeH265SessionCreateInfoEXT {}
49439 impl<'a> ::std::ops::Deref for VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
49440     type Target = VideoDecodeH265SessionCreateInfoEXT;
deref(&self) -> &Self::Target49441     fn deref(&self) -> &Self::Target {
49442         &self.inner
49443     }
49444 }
49445 impl<'a> ::std::ops::DerefMut for VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49446     fn deref_mut(&mut self) -> &mut Self::Target {
49447         &mut self.inner
49448     }
49449 }
49450 impl<'a> VideoDecodeH265SessionCreateInfoEXTBuilder<'a> {
flags(mut self, flags: VideoDecodeH265CreateFlagsEXT) -> Self49451     pub fn flags(mut self, flags: VideoDecodeH265CreateFlagsEXT) -> Self {
49452         self.inner.flags = flags;
49453         self
49454     }
std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self49455     pub fn std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self {
49456         self.inner.p_std_extension_version = std_extension_version;
49457         self
49458     }
49459     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49460     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49461     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265SessionCreateInfoEXT49462     pub fn build(self) -> VideoDecodeH265SessionCreateInfoEXT {
49463         self.inner
49464     }
49465 }
49466 #[repr(C)]
49467 #[cfg_attr(feature = "debug", derive(Debug))]
49468 #[derive(Copy, Clone)]
49469 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265SessionParametersAddInfoEXT.html>"]
49470 pub struct VideoDecodeH265SessionParametersAddInfoEXT {
49471     pub s_type: StructureType,
49472     pub p_next: *const c_void,
49473     pub sps_std_count: u32,
49474     pub p_sps_std: *const StdVideoH265SequenceParameterSet,
49475     pub pps_std_count: u32,
49476     pub p_pps_std: *const StdVideoH265PictureParameterSet,
49477 }
49478 impl ::std::default::Default for VideoDecodeH265SessionParametersAddInfoEXT {
default() -> Self49479     fn default() -> Self {
49480         Self {
49481             s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT,
49482             p_next: ::std::ptr::null(),
49483             sps_std_count: u32::default(),
49484             p_sps_std: ::std::ptr::null(),
49485             pps_std_count: u32::default(),
49486             p_pps_std: ::std::ptr::null(),
49487         }
49488     }
49489 }
49490 impl VideoDecodeH265SessionParametersAddInfoEXT {
builder<'a>() -> VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a>49491     pub fn builder<'a>() -> VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
49492         VideoDecodeH265SessionParametersAddInfoEXTBuilder {
49493             inner: Self::default(),
49494             marker: ::std::marker::PhantomData,
49495         }
49496     }
49497 }
49498 #[repr(transparent)]
49499 pub struct VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
49500     inner: VideoDecodeH265SessionParametersAddInfoEXT,
49501     marker: ::std::marker::PhantomData<&'a ()>,
49502 }
49503 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
49504     for VideoDecodeH265SessionParametersAddInfoEXTBuilder<'_>
49505 {
49506 }
49507 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
49508     for VideoDecodeH265SessionParametersAddInfoEXT
49509 {
49510 }
49511 impl<'a> ::std::ops::Deref for VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
49512     type Target = VideoDecodeH265SessionParametersAddInfoEXT;
deref(&self) -> &Self::Target49513     fn deref(&self) -> &Self::Target {
49514         &self.inner
49515     }
49516 }
49517 impl<'a> ::std::ops::DerefMut for VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49518     fn deref_mut(&mut self) -> &mut Self::Target {
49519         &mut self.inner
49520     }
49521 }
49522 impl<'a> VideoDecodeH265SessionParametersAddInfoEXTBuilder<'a> {
sps_std(mut self, sps_std: &'a [StdVideoH265SequenceParameterSet]) -> Self49523     pub fn sps_std(mut self, sps_std: &'a [StdVideoH265SequenceParameterSet]) -> Self {
49524         self.inner.sps_std_count = sps_std.len() as _;
49525         self.inner.p_sps_std = sps_std.as_ptr();
49526         self
49527     }
pps_std(mut self, pps_std: &'a [StdVideoH265PictureParameterSet]) -> Self49528     pub fn pps_std(mut self, pps_std: &'a [StdVideoH265PictureParameterSet]) -> Self {
49529         self.inner.pps_std_count = pps_std.len() as _;
49530         self.inner.p_pps_std = pps_std.as_ptr();
49531         self
49532     }
49533     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49534     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49535     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265SessionParametersAddInfoEXT49536     pub fn build(self) -> VideoDecodeH265SessionParametersAddInfoEXT {
49537         self.inner
49538     }
49539 }
49540 #[repr(C)]
49541 #[cfg_attr(feature = "debug", derive(Debug))]
49542 #[derive(Copy, Clone)]
49543 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265SessionParametersCreateInfoEXT.html>"]
49544 pub struct VideoDecodeH265SessionParametersCreateInfoEXT {
49545     pub s_type: StructureType,
49546     pub p_next: *const c_void,
49547     pub max_sps_std_count: u32,
49548     pub max_pps_std_count: u32,
49549     pub p_parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoEXT,
49550 }
49551 impl ::std::default::Default for VideoDecodeH265SessionParametersCreateInfoEXT {
default() -> Self49552     fn default() -> Self {
49553         Self {
49554             s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT,
49555             p_next: ::std::ptr::null(),
49556             max_sps_std_count: u32::default(),
49557             max_pps_std_count: u32::default(),
49558             p_parameters_add_info: ::std::ptr::null(),
49559         }
49560     }
49561 }
49562 impl VideoDecodeH265SessionParametersCreateInfoEXT {
builder<'a>() -> VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a>49563     pub fn builder<'a>() -> VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
49564         VideoDecodeH265SessionParametersCreateInfoEXTBuilder {
49565             inner: Self::default(),
49566             marker: ::std::marker::PhantomData,
49567         }
49568     }
49569 }
49570 #[repr(transparent)]
49571 pub struct VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
49572     inner: VideoDecodeH265SessionParametersCreateInfoEXT,
49573     marker: ::std::marker::PhantomData<&'a ()>,
49574 }
49575 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
49576     for VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'_>
49577 {
49578 }
49579 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
49580     for VideoDecodeH265SessionParametersCreateInfoEXT
49581 {
49582 }
49583 impl<'a> ::std::ops::Deref for VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
49584     type Target = VideoDecodeH265SessionParametersCreateInfoEXT;
deref(&self) -> &Self::Target49585     fn deref(&self) -> &Self::Target {
49586         &self.inner
49587     }
49588 }
49589 impl<'a> ::std::ops::DerefMut for VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49590     fn deref_mut(&mut self) -> &mut Self::Target {
49591         &mut self.inner
49592     }
49593 }
49594 impl<'a> VideoDecodeH265SessionParametersCreateInfoEXTBuilder<'a> {
max_sps_std_count(mut self, max_sps_std_count: u32) -> Self49595     pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
49596         self.inner.max_sps_std_count = max_sps_std_count;
49597         self
49598     }
max_pps_std_count(mut self, max_pps_std_count: u32) -> Self49599     pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
49600         self.inner.max_pps_std_count = max_pps_std_count;
49601         self
49602     }
parameters_add_info( mut self, parameters_add_info: &'a VideoDecodeH265SessionParametersAddInfoEXT, ) -> Self49603     pub fn parameters_add_info(
49604         mut self,
49605         parameters_add_info: &'a VideoDecodeH265SessionParametersAddInfoEXT,
49606     ) -> Self {
49607         self.inner.p_parameters_add_info = parameters_add_info;
49608         self
49609     }
49610     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49611     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49612     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265SessionParametersCreateInfoEXT49613     pub fn build(self) -> VideoDecodeH265SessionParametersCreateInfoEXT {
49614         self.inner
49615     }
49616 }
49617 #[repr(C)]
49618 #[cfg_attr(feature = "debug", derive(Debug))]
49619 #[derive(Copy, Clone)]
49620 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265PictureInfoEXT.html>"]
49621 pub struct VideoDecodeH265PictureInfoEXT {
49622     pub s_type: StructureType,
49623     pub p_next: *const c_void,
49624     pub p_std_picture_info: *mut StdVideoDecodeH265PictureInfo,
49625     pub slices_count: u32,
49626     pub p_slices_data_offsets: *const u32,
49627 }
49628 impl ::std::default::Default for VideoDecodeH265PictureInfoEXT {
default() -> Self49629     fn default() -> Self {
49630         Self {
49631             s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_EXT,
49632             p_next: ::std::ptr::null(),
49633             p_std_picture_info: ::std::ptr::null_mut(),
49634             slices_count: u32::default(),
49635             p_slices_data_offsets: ::std::ptr::null(),
49636         }
49637     }
49638 }
49639 impl VideoDecodeH265PictureInfoEXT {
builder<'a>() -> VideoDecodeH265PictureInfoEXTBuilder<'a>49640     pub fn builder<'a>() -> VideoDecodeH265PictureInfoEXTBuilder<'a> {
49641         VideoDecodeH265PictureInfoEXTBuilder {
49642             inner: Self::default(),
49643             marker: ::std::marker::PhantomData,
49644         }
49645     }
49646 }
49647 #[repr(transparent)]
49648 pub struct VideoDecodeH265PictureInfoEXTBuilder<'a> {
49649     inner: VideoDecodeH265PictureInfoEXT,
49650     marker: ::std::marker::PhantomData<&'a ()>,
49651 }
49652 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH265PictureInfoEXTBuilder<'_> {}
49653 unsafe impl ExtendsVideoDecodeInfoKHR for VideoDecodeH265PictureInfoEXT {}
49654 impl<'a> ::std::ops::Deref for VideoDecodeH265PictureInfoEXTBuilder<'a> {
49655     type Target = VideoDecodeH265PictureInfoEXT;
deref(&self) -> &Self::Target49656     fn deref(&self) -> &Self::Target {
49657         &self.inner
49658     }
49659 }
49660 impl<'a> ::std::ops::DerefMut for VideoDecodeH265PictureInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49661     fn deref_mut(&mut self) -> &mut Self::Target {
49662         &mut self.inner
49663     }
49664 }
49665 impl<'a> VideoDecodeH265PictureInfoEXTBuilder<'a> {
std_picture_info( mut self, std_picture_info: &'a mut StdVideoDecodeH265PictureInfo, ) -> Self49666     pub fn std_picture_info(
49667         mut self,
49668         std_picture_info: &'a mut StdVideoDecodeH265PictureInfo,
49669     ) -> Self {
49670         self.inner.p_std_picture_info = std_picture_info;
49671         self
49672     }
slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self49673     pub fn slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self {
49674         self.inner.slices_count = slices_data_offsets.len() as _;
49675         self.inner.p_slices_data_offsets = slices_data_offsets.as_ptr();
49676         self
49677     }
49678     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49679     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49680     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265PictureInfoEXT49681     pub fn build(self) -> VideoDecodeH265PictureInfoEXT {
49682         self.inner
49683     }
49684 }
49685 #[repr(C)]
49686 #[cfg_attr(feature = "debug", derive(Debug))]
49687 #[derive(Copy, Clone)]
49688 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoDecodeH265DpbSlotInfoEXT.html>"]
49689 pub struct VideoDecodeH265DpbSlotInfoEXT {
49690     pub s_type: StructureType,
49691     pub p_next: *const c_void,
49692     pub p_std_reference_info: *const StdVideoDecodeH265ReferenceInfo,
49693 }
49694 impl ::std::default::Default for VideoDecodeH265DpbSlotInfoEXT {
default() -> Self49695     fn default() -> Self {
49696         Self {
49697             s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT,
49698             p_next: ::std::ptr::null(),
49699             p_std_reference_info: ::std::ptr::null(),
49700         }
49701     }
49702 }
49703 impl VideoDecodeH265DpbSlotInfoEXT {
builder<'a>() -> VideoDecodeH265DpbSlotInfoEXTBuilder<'a>49704     pub fn builder<'a>() -> VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
49705         VideoDecodeH265DpbSlotInfoEXTBuilder {
49706             inner: Self::default(),
49707             marker: ::std::marker::PhantomData,
49708         }
49709     }
49710 }
49711 #[repr(transparent)]
49712 pub struct VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
49713     inner: VideoDecodeH265DpbSlotInfoEXT,
49714     marker: ::std::marker::PhantomData<&'a ()>,
49715 }
49716 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH265DpbSlotInfoEXTBuilder<'_> {}
49717 unsafe impl ExtendsVideoReferenceSlotKHR for VideoDecodeH265DpbSlotInfoEXT {}
49718 impl<'a> ::std::ops::Deref for VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
49719     type Target = VideoDecodeH265DpbSlotInfoEXT;
deref(&self) -> &Self::Target49720     fn deref(&self) -> &Self::Target {
49721         &self.inner
49722     }
49723 }
49724 impl<'a> ::std::ops::DerefMut for VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49725     fn deref_mut(&mut self) -> &mut Self::Target {
49726         &mut self.inner
49727     }
49728 }
49729 impl<'a> VideoDecodeH265DpbSlotInfoEXTBuilder<'a> {
std_reference_info( mut self, std_reference_info: &'a StdVideoDecodeH265ReferenceInfo, ) -> Self49730     pub fn std_reference_info(
49731         mut self,
49732         std_reference_info: &'a StdVideoDecodeH265ReferenceInfo,
49733     ) -> Self {
49734         self.inner.p_std_reference_info = std_reference_info;
49735         self
49736     }
49737     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49738     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49739     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoDecodeH265DpbSlotInfoEXT49740     pub fn build(self) -> VideoDecodeH265DpbSlotInfoEXT {
49741         self.inner
49742     }
49743 }
49744 #[repr(C)]
49745 #[cfg_attr(feature = "debug", derive(Debug))]
49746 #[derive(Copy, Clone)]
49747 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionCreateInfoKHR.html>"]
49748 pub struct VideoSessionCreateInfoKHR {
49749     pub s_type: StructureType,
49750     pub p_next: *const c_void,
49751     pub queue_family_index: u32,
49752     pub flags: VideoSessionCreateFlagsKHR,
49753     pub p_video_profile: *const VideoProfileKHR,
49754     pub picture_format: Format,
49755     pub max_coded_extent: Extent2D,
49756     pub reference_pictures_format: Format,
49757     pub max_reference_pictures_slots_count: u32,
49758     pub max_reference_pictures_active_count: u32,
49759 }
49760 impl ::std::default::Default for VideoSessionCreateInfoKHR {
default() -> Self49761     fn default() -> Self {
49762         Self {
49763             s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
49764             p_next: ::std::ptr::null(),
49765             queue_family_index: u32::default(),
49766             flags: VideoSessionCreateFlagsKHR::default(),
49767             p_video_profile: ::std::ptr::null(),
49768             picture_format: Format::default(),
49769             max_coded_extent: Extent2D::default(),
49770             reference_pictures_format: Format::default(),
49771             max_reference_pictures_slots_count: u32::default(),
49772             max_reference_pictures_active_count: u32::default(),
49773         }
49774     }
49775 }
49776 impl VideoSessionCreateInfoKHR {
builder<'a>() -> VideoSessionCreateInfoKHRBuilder<'a>49777     pub fn builder<'a>() -> VideoSessionCreateInfoKHRBuilder<'a> {
49778         VideoSessionCreateInfoKHRBuilder {
49779             inner: Self::default(),
49780             marker: ::std::marker::PhantomData,
49781         }
49782     }
49783 }
49784 #[repr(transparent)]
49785 pub struct VideoSessionCreateInfoKHRBuilder<'a> {
49786     inner: VideoSessionCreateInfoKHR,
49787     marker: ::std::marker::PhantomData<&'a ()>,
49788 }
49789 pub unsafe trait ExtendsVideoSessionCreateInfoKHR {}
49790 impl<'a> ::std::ops::Deref for VideoSessionCreateInfoKHRBuilder<'a> {
49791     type Target = VideoSessionCreateInfoKHR;
deref(&self) -> &Self::Target49792     fn deref(&self) -> &Self::Target {
49793         &self.inner
49794     }
49795 }
49796 impl<'a> ::std::ops::DerefMut for VideoSessionCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49797     fn deref_mut(&mut self) -> &mut Self::Target {
49798         &mut self.inner
49799     }
49800 }
49801 impl<'a> VideoSessionCreateInfoKHRBuilder<'a> {
queue_family_index(mut self, queue_family_index: u32) -> Self49802     pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
49803         self.inner.queue_family_index = queue_family_index;
49804         self
49805     }
flags(mut self, flags: VideoSessionCreateFlagsKHR) -> Self49806     pub fn flags(mut self, flags: VideoSessionCreateFlagsKHR) -> Self {
49807         self.inner.flags = flags;
49808         self
49809     }
video_profile(mut self, video_profile: &'a VideoProfileKHR) -> Self49810     pub fn video_profile(mut self, video_profile: &'a VideoProfileKHR) -> Self {
49811         self.inner.p_video_profile = video_profile;
49812         self
49813     }
picture_format(mut self, picture_format: Format) -> Self49814     pub fn picture_format(mut self, picture_format: Format) -> Self {
49815         self.inner.picture_format = picture_format;
49816         self
49817     }
max_coded_extent(mut self, max_coded_extent: Extent2D) -> Self49818     pub fn max_coded_extent(mut self, max_coded_extent: Extent2D) -> Self {
49819         self.inner.max_coded_extent = max_coded_extent;
49820         self
49821     }
reference_pictures_format(mut self, reference_pictures_format: Format) -> Self49822     pub fn reference_pictures_format(mut self, reference_pictures_format: Format) -> Self {
49823         self.inner.reference_pictures_format = reference_pictures_format;
49824         self
49825     }
max_reference_pictures_slots_count( mut self, max_reference_pictures_slots_count: u32, ) -> Self49826     pub fn max_reference_pictures_slots_count(
49827         mut self,
49828         max_reference_pictures_slots_count: u32,
49829     ) -> Self {
49830         self.inner.max_reference_pictures_slots_count = max_reference_pictures_slots_count;
49831         self
49832     }
max_reference_pictures_active_count( mut self, max_reference_pictures_active_count: u32, ) -> Self49833     pub fn max_reference_pictures_active_count(
49834         mut self,
49835         max_reference_pictures_active_count: u32,
49836     ) -> Self {
49837         self.inner.max_reference_pictures_active_count = max_reference_pictures_active_count;
49838         self
49839     }
49840     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
49841     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
49842     #[doc = r" valid extension structs can be pushed into the chain."]
49843     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
49844     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoSessionCreateInfoKHR>(mut self, next: &'a mut T) -> Self49845     pub fn push_next<T: ExtendsVideoSessionCreateInfoKHR>(mut self, next: &'a mut T) -> Self {
49846         unsafe {
49847             let next_ptr = next as *mut T as *mut BaseOutStructure;
49848             let last_next = ptr_chain_iter(next).last().unwrap();
49849             (*last_next).p_next = self.inner.p_next as _;
49850             self.inner.p_next = next_ptr as _;
49851         }
49852         self
49853     }
49854     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49855     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49856     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoSessionCreateInfoKHR49857     pub fn build(self) -> VideoSessionCreateInfoKHR {
49858         self.inner
49859     }
49860 }
49861 #[repr(C)]
49862 #[cfg_attr(feature = "debug", derive(Debug))]
49863 #[derive(Copy, Clone)]
49864 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionParametersCreateInfoKHR.html>"]
49865 pub struct VideoSessionParametersCreateInfoKHR {
49866     pub s_type: StructureType,
49867     pub p_next: *const c_void,
49868     pub video_session_parameters_template: VideoSessionParametersKHR,
49869     pub video_session: VideoSessionKHR,
49870 }
49871 impl ::std::default::Default for VideoSessionParametersCreateInfoKHR {
default() -> Self49872     fn default() -> Self {
49873         Self {
49874             s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
49875             p_next: ::std::ptr::null(),
49876             video_session_parameters_template: VideoSessionParametersKHR::default(),
49877             video_session: VideoSessionKHR::default(),
49878         }
49879     }
49880 }
49881 impl VideoSessionParametersCreateInfoKHR {
builder<'a>() -> VideoSessionParametersCreateInfoKHRBuilder<'a>49882     pub fn builder<'a>() -> VideoSessionParametersCreateInfoKHRBuilder<'a> {
49883         VideoSessionParametersCreateInfoKHRBuilder {
49884             inner: Self::default(),
49885             marker: ::std::marker::PhantomData,
49886         }
49887     }
49888 }
49889 #[repr(transparent)]
49890 pub struct VideoSessionParametersCreateInfoKHRBuilder<'a> {
49891     inner: VideoSessionParametersCreateInfoKHR,
49892     marker: ::std::marker::PhantomData<&'a ()>,
49893 }
49894 pub unsafe trait ExtendsVideoSessionParametersCreateInfoKHR {}
49895 impl<'a> ::std::ops::Deref for VideoSessionParametersCreateInfoKHRBuilder<'a> {
49896     type Target = VideoSessionParametersCreateInfoKHR;
deref(&self) -> &Self::Target49897     fn deref(&self) -> &Self::Target {
49898         &self.inner
49899     }
49900 }
49901 impl<'a> ::std::ops::DerefMut for VideoSessionParametersCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49902     fn deref_mut(&mut self) -> &mut Self::Target {
49903         &mut self.inner
49904     }
49905 }
49906 impl<'a> VideoSessionParametersCreateInfoKHRBuilder<'a> {
video_session_parameters_template( mut self, video_session_parameters_template: VideoSessionParametersKHR, ) -> Self49907     pub fn video_session_parameters_template(
49908         mut self,
49909         video_session_parameters_template: VideoSessionParametersKHR,
49910     ) -> Self {
49911         self.inner.video_session_parameters_template = video_session_parameters_template;
49912         self
49913     }
video_session(mut self, video_session: VideoSessionKHR) -> Self49914     pub fn video_session(mut self, video_session: VideoSessionKHR) -> Self {
49915         self.inner.video_session = video_session;
49916         self
49917     }
49918     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
49919     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
49920     #[doc = r" valid extension structs can be pushed into the chain."]
49921     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
49922     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoSessionParametersCreateInfoKHR>( mut self, next: &'a mut T, ) -> Self49923     pub fn push_next<T: ExtendsVideoSessionParametersCreateInfoKHR>(
49924         mut self,
49925         next: &'a mut T,
49926     ) -> Self {
49927         unsafe {
49928             let next_ptr = next as *mut T as *mut BaseOutStructure;
49929             let last_next = ptr_chain_iter(next).last().unwrap();
49930             (*last_next).p_next = self.inner.p_next as _;
49931             self.inner.p_next = next_ptr as _;
49932         }
49933         self
49934     }
49935     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
49936     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
49937     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoSessionParametersCreateInfoKHR49938     pub fn build(self) -> VideoSessionParametersCreateInfoKHR {
49939         self.inner
49940     }
49941 }
49942 #[repr(C)]
49943 #[cfg_attr(feature = "debug", derive(Debug))]
49944 #[derive(Copy, Clone)]
49945 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoSessionParametersUpdateInfoKHR.html>"]
49946 pub struct VideoSessionParametersUpdateInfoKHR {
49947     pub s_type: StructureType,
49948     pub p_next: *const c_void,
49949     pub update_sequence_count: u32,
49950 }
49951 impl ::std::default::Default for VideoSessionParametersUpdateInfoKHR {
default() -> Self49952     fn default() -> Self {
49953         Self {
49954             s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
49955             p_next: ::std::ptr::null(),
49956             update_sequence_count: u32::default(),
49957         }
49958     }
49959 }
49960 impl VideoSessionParametersUpdateInfoKHR {
builder<'a>() -> VideoSessionParametersUpdateInfoKHRBuilder<'a>49961     pub fn builder<'a>() -> VideoSessionParametersUpdateInfoKHRBuilder<'a> {
49962         VideoSessionParametersUpdateInfoKHRBuilder {
49963             inner: Self::default(),
49964             marker: ::std::marker::PhantomData,
49965         }
49966     }
49967 }
49968 #[repr(transparent)]
49969 pub struct VideoSessionParametersUpdateInfoKHRBuilder<'a> {
49970     inner: VideoSessionParametersUpdateInfoKHR,
49971     marker: ::std::marker::PhantomData<&'a ()>,
49972 }
49973 pub unsafe trait ExtendsVideoSessionParametersUpdateInfoKHR {}
49974 impl<'a> ::std::ops::Deref for VideoSessionParametersUpdateInfoKHRBuilder<'a> {
49975     type Target = VideoSessionParametersUpdateInfoKHR;
deref(&self) -> &Self::Target49976     fn deref(&self) -> &Self::Target {
49977         &self.inner
49978     }
49979 }
49980 impl<'a> ::std::ops::DerefMut for VideoSessionParametersUpdateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target49981     fn deref_mut(&mut self) -> &mut Self::Target {
49982         &mut self.inner
49983     }
49984 }
49985 impl<'a> VideoSessionParametersUpdateInfoKHRBuilder<'a> {
update_sequence_count(mut self, update_sequence_count: u32) -> Self49986     pub fn update_sequence_count(mut self, update_sequence_count: u32) -> Self {
49987         self.inner.update_sequence_count = update_sequence_count;
49988         self
49989     }
49990     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
49991     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
49992     #[doc = r" valid extension structs can be pushed into the chain."]
49993     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
49994     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoSessionParametersUpdateInfoKHR>( mut self, next: &'a mut T, ) -> Self49995     pub fn push_next<T: ExtendsVideoSessionParametersUpdateInfoKHR>(
49996         mut self,
49997         next: &'a mut T,
49998     ) -> Self {
49999         unsafe {
50000             let next_ptr = next as *mut T as *mut BaseOutStructure;
50001             let last_next = ptr_chain_iter(next).last().unwrap();
50002             (*last_next).p_next = self.inner.p_next as _;
50003             self.inner.p_next = next_ptr as _;
50004         }
50005         self
50006     }
50007     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50008     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50009     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoSessionParametersUpdateInfoKHR50010     pub fn build(self) -> VideoSessionParametersUpdateInfoKHR {
50011         self.inner
50012     }
50013 }
50014 #[repr(C)]
50015 #[cfg_attr(feature = "debug", derive(Debug))]
50016 #[derive(Copy, Clone)]
50017 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoBeginCodingInfoKHR.html>"]
50018 pub struct VideoBeginCodingInfoKHR {
50019     pub s_type: StructureType,
50020     pub p_next: *const c_void,
50021     pub flags: VideoBeginCodingFlagsKHR,
50022     pub codec_quality_preset: VideoCodingQualityPresetFlagsKHR,
50023     pub video_session: VideoSessionKHR,
50024     pub video_session_parameters: VideoSessionParametersKHR,
50025     pub reference_slot_count: u32,
50026     pub p_reference_slots: *const VideoReferenceSlotKHR,
50027 }
50028 impl ::std::default::Default for VideoBeginCodingInfoKHR {
default() -> Self50029     fn default() -> Self {
50030         Self {
50031             s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
50032             p_next: ::std::ptr::null(),
50033             flags: VideoBeginCodingFlagsKHR::default(),
50034             codec_quality_preset: VideoCodingQualityPresetFlagsKHR::default(),
50035             video_session: VideoSessionKHR::default(),
50036             video_session_parameters: VideoSessionParametersKHR::default(),
50037             reference_slot_count: u32::default(),
50038             p_reference_slots: ::std::ptr::null(),
50039         }
50040     }
50041 }
50042 impl VideoBeginCodingInfoKHR {
builder<'a>() -> VideoBeginCodingInfoKHRBuilder<'a>50043     pub fn builder<'a>() -> VideoBeginCodingInfoKHRBuilder<'a> {
50044         VideoBeginCodingInfoKHRBuilder {
50045             inner: Self::default(),
50046             marker: ::std::marker::PhantomData,
50047         }
50048     }
50049 }
50050 #[repr(transparent)]
50051 pub struct VideoBeginCodingInfoKHRBuilder<'a> {
50052     inner: VideoBeginCodingInfoKHR,
50053     marker: ::std::marker::PhantomData<&'a ()>,
50054 }
50055 impl<'a> ::std::ops::Deref for VideoBeginCodingInfoKHRBuilder<'a> {
50056     type Target = VideoBeginCodingInfoKHR;
deref(&self) -> &Self::Target50057     fn deref(&self) -> &Self::Target {
50058         &self.inner
50059     }
50060 }
50061 impl<'a> ::std::ops::DerefMut for VideoBeginCodingInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50062     fn deref_mut(&mut self) -> &mut Self::Target {
50063         &mut self.inner
50064     }
50065 }
50066 impl<'a> VideoBeginCodingInfoKHRBuilder<'a> {
flags(mut self, flags: VideoBeginCodingFlagsKHR) -> Self50067     pub fn flags(mut self, flags: VideoBeginCodingFlagsKHR) -> Self {
50068         self.inner.flags = flags;
50069         self
50070     }
codec_quality_preset( mut self, codec_quality_preset: VideoCodingQualityPresetFlagsKHR, ) -> Self50071     pub fn codec_quality_preset(
50072         mut self,
50073         codec_quality_preset: VideoCodingQualityPresetFlagsKHR,
50074     ) -> Self {
50075         self.inner.codec_quality_preset = codec_quality_preset;
50076         self
50077     }
video_session(mut self, video_session: VideoSessionKHR) -> Self50078     pub fn video_session(mut self, video_session: VideoSessionKHR) -> Self {
50079         self.inner.video_session = video_session;
50080         self
50081     }
video_session_parameters( mut self, video_session_parameters: VideoSessionParametersKHR, ) -> Self50082     pub fn video_session_parameters(
50083         mut self,
50084         video_session_parameters: VideoSessionParametersKHR,
50085     ) -> Self {
50086         self.inner.video_session_parameters = video_session_parameters;
50087         self
50088     }
reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self50089     pub fn reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self {
50090         self.inner.reference_slot_count = reference_slots.len() as _;
50091         self.inner.p_reference_slots = reference_slots.as_ptr();
50092         self
50093     }
50094     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50095     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50096     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoBeginCodingInfoKHR50097     pub fn build(self) -> VideoBeginCodingInfoKHR {
50098         self.inner
50099     }
50100 }
50101 #[repr(C)]
50102 #[cfg_attr(feature = "debug", derive(Debug))]
50103 #[derive(Copy, Clone)]
50104 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEndCodingInfoKHR.html>"]
50105 pub struct VideoEndCodingInfoKHR {
50106     pub s_type: StructureType,
50107     pub p_next: *const c_void,
50108     pub flags: VideoEndCodingFlagsKHR,
50109 }
50110 impl ::std::default::Default for VideoEndCodingInfoKHR {
default() -> Self50111     fn default() -> Self {
50112         Self {
50113             s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
50114             p_next: ::std::ptr::null(),
50115             flags: VideoEndCodingFlagsKHR::default(),
50116         }
50117     }
50118 }
50119 impl VideoEndCodingInfoKHR {
builder<'a>() -> VideoEndCodingInfoKHRBuilder<'a>50120     pub fn builder<'a>() -> VideoEndCodingInfoKHRBuilder<'a> {
50121         VideoEndCodingInfoKHRBuilder {
50122             inner: Self::default(),
50123             marker: ::std::marker::PhantomData,
50124         }
50125     }
50126 }
50127 #[repr(transparent)]
50128 pub struct VideoEndCodingInfoKHRBuilder<'a> {
50129     inner: VideoEndCodingInfoKHR,
50130     marker: ::std::marker::PhantomData<&'a ()>,
50131 }
50132 impl<'a> ::std::ops::Deref for VideoEndCodingInfoKHRBuilder<'a> {
50133     type Target = VideoEndCodingInfoKHR;
deref(&self) -> &Self::Target50134     fn deref(&self) -> &Self::Target {
50135         &self.inner
50136     }
50137 }
50138 impl<'a> ::std::ops::DerefMut for VideoEndCodingInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50139     fn deref_mut(&mut self) -> &mut Self::Target {
50140         &mut self.inner
50141     }
50142 }
50143 impl<'a> VideoEndCodingInfoKHRBuilder<'a> {
flags(mut self, flags: VideoEndCodingFlagsKHR) -> Self50144     pub fn flags(mut self, flags: VideoEndCodingFlagsKHR) -> Self {
50145         self.inner.flags = flags;
50146         self
50147     }
50148     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50149     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50150     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEndCodingInfoKHR50151     pub fn build(self) -> VideoEndCodingInfoKHR {
50152         self.inner
50153     }
50154 }
50155 #[repr(C)]
50156 #[cfg_attr(feature = "debug", derive(Debug))]
50157 #[derive(Copy, Clone)]
50158 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoCodingControlInfoKHR.html>"]
50159 pub struct VideoCodingControlInfoKHR {
50160     pub s_type: StructureType,
50161     pub p_next: *const c_void,
50162     pub flags: VideoCodingControlFlagsKHR,
50163 }
50164 impl ::std::default::Default for VideoCodingControlInfoKHR {
default() -> Self50165     fn default() -> Self {
50166         Self {
50167             s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
50168             p_next: ::std::ptr::null(),
50169             flags: VideoCodingControlFlagsKHR::default(),
50170         }
50171     }
50172 }
50173 impl VideoCodingControlInfoKHR {
builder<'a>() -> VideoCodingControlInfoKHRBuilder<'a>50174     pub fn builder<'a>() -> VideoCodingControlInfoKHRBuilder<'a> {
50175         VideoCodingControlInfoKHRBuilder {
50176             inner: Self::default(),
50177             marker: ::std::marker::PhantomData,
50178         }
50179     }
50180 }
50181 #[repr(transparent)]
50182 pub struct VideoCodingControlInfoKHRBuilder<'a> {
50183     inner: VideoCodingControlInfoKHR,
50184     marker: ::std::marker::PhantomData<&'a ()>,
50185 }
50186 pub unsafe trait ExtendsVideoCodingControlInfoKHR {}
50187 impl<'a> ::std::ops::Deref for VideoCodingControlInfoKHRBuilder<'a> {
50188     type Target = VideoCodingControlInfoKHR;
deref(&self) -> &Self::Target50189     fn deref(&self) -> &Self::Target {
50190         &self.inner
50191     }
50192 }
50193 impl<'a> ::std::ops::DerefMut for VideoCodingControlInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50194     fn deref_mut(&mut self) -> &mut Self::Target {
50195         &mut self.inner
50196     }
50197 }
50198 impl<'a> VideoCodingControlInfoKHRBuilder<'a> {
flags(mut self, flags: VideoCodingControlFlagsKHR) -> Self50199     pub fn flags(mut self, flags: VideoCodingControlFlagsKHR) -> Self {
50200         self.inner.flags = flags;
50201         self
50202     }
50203     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
50204     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
50205     #[doc = r" valid extension structs can be pushed into the chain."]
50206     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
50207     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoCodingControlInfoKHR>(mut self, next: &'a mut T) -> Self50208     pub fn push_next<T: ExtendsVideoCodingControlInfoKHR>(mut self, next: &'a mut T) -> Self {
50209         unsafe {
50210             let next_ptr = next as *mut T as *mut BaseOutStructure;
50211             let last_next = ptr_chain_iter(next).last().unwrap();
50212             (*last_next).p_next = self.inner.p_next as _;
50213             self.inner.p_next = next_ptr as _;
50214         }
50215         self
50216     }
50217     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50218     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50219     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoCodingControlInfoKHR50220     pub fn build(self) -> VideoCodingControlInfoKHR {
50221         self.inner
50222     }
50223 }
50224 #[repr(C)]
50225 #[cfg_attr(feature = "debug", derive(Debug))]
50226 #[derive(Copy, Clone)]
50227 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeInfoKHR.html>"]
50228 pub struct VideoEncodeInfoKHR {
50229     pub s_type: StructureType,
50230     pub p_next: *const c_void,
50231     pub flags: VideoEncodeFlagsKHR,
50232     pub quality_level: u32,
50233     pub coded_extent: Extent2D,
50234     pub dst_bitstream_buffer: Buffer,
50235     pub dst_bitstream_buffer_offset: DeviceSize,
50236     pub dst_bitstream_buffer_max_range: DeviceSize,
50237     pub src_picture_resource: VideoPictureResourceKHR,
50238     pub p_setup_reference_slot: *const VideoReferenceSlotKHR,
50239     pub reference_slot_count: u32,
50240     pub p_reference_slots: *const VideoReferenceSlotKHR,
50241     pub preceding_externally_encoded_bytes: u32,
50242 }
50243 impl ::std::default::Default for VideoEncodeInfoKHR {
default() -> Self50244     fn default() -> Self {
50245         Self {
50246             s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
50247             p_next: ::std::ptr::null(),
50248             flags: VideoEncodeFlagsKHR::default(),
50249             quality_level: u32::default(),
50250             coded_extent: Extent2D::default(),
50251             dst_bitstream_buffer: Buffer::default(),
50252             dst_bitstream_buffer_offset: DeviceSize::default(),
50253             dst_bitstream_buffer_max_range: DeviceSize::default(),
50254             src_picture_resource: VideoPictureResourceKHR::default(),
50255             p_setup_reference_slot: ::std::ptr::null(),
50256             reference_slot_count: u32::default(),
50257             p_reference_slots: ::std::ptr::null(),
50258             preceding_externally_encoded_bytes: u32::default(),
50259         }
50260     }
50261 }
50262 impl VideoEncodeInfoKHR {
builder<'a>() -> VideoEncodeInfoKHRBuilder<'a>50263     pub fn builder<'a>() -> VideoEncodeInfoKHRBuilder<'a> {
50264         VideoEncodeInfoKHRBuilder {
50265             inner: Self::default(),
50266             marker: ::std::marker::PhantomData,
50267         }
50268     }
50269 }
50270 #[repr(transparent)]
50271 pub struct VideoEncodeInfoKHRBuilder<'a> {
50272     inner: VideoEncodeInfoKHR,
50273     marker: ::std::marker::PhantomData<&'a ()>,
50274 }
50275 pub unsafe trait ExtendsVideoEncodeInfoKHR {}
50276 impl<'a> ::std::ops::Deref for VideoEncodeInfoKHRBuilder<'a> {
50277     type Target = VideoEncodeInfoKHR;
deref(&self) -> &Self::Target50278     fn deref(&self) -> &Self::Target {
50279         &self.inner
50280     }
50281 }
50282 impl<'a> ::std::ops::DerefMut for VideoEncodeInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50283     fn deref_mut(&mut self) -> &mut Self::Target {
50284         &mut self.inner
50285     }
50286 }
50287 impl<'a> VideoEncodeInfoKHRBuilder<'a> {
flags(mut self, flags: VideoEncodeFlagsKHR) -> Self50288     pub fn flags(mut self, flags: VideoEncodeFlagsKHR) -> Self {
50289         self.inner.flags = flags;
50290         self
50291     }
quality_level(mut self, quality_level: u32) -> Self50292     pub fn quality_level(mut self, quality_level: u32) -> Self {
50293         self.inner.quality_level = quality_level;
50294         self
50295     }
coded_extent(mut self, coded_extent: Extent2D) -> Self50296     pub fn coded_extent(mut self, coded_extent: Extent2D) -> Self {
50297         self.inner.coded_extent = coded_extent;
50298         self
50299     }
dst_bitstream_buffer(mut self, dst_bitstream_buffer: Buffer) -> Self50300     pub fn dst_bitstream_buffer(mut self, dst_bitstream_buffer: Buffer) -> Self {
50301         self.inner.dst_bitstream_buffer = dst_bitstream_buffer;
50302         self
50303     }
dst_bitstream_buffer_offset(mut self, dst_bitstream_buffer_offset: DeviceSize) -> Self50304     pub fn dst_bitstream_buffer_offset(mut self, dst_bitstream_buffer_offset: DeviceSize) -> Self {
50305         self.inner.dst_bitstream_buffer_offset = dst_bitstream_buffer_offset;
50306         self
50307     }
dst_bitstream_buffer_max_range( mut self, dst_bitstream_buffer_max_range: DeviceSize, ) -> Self50308     pub fn dst_bitstream_buffer_max_range(
50309         mut self,
50310         dst_bitstream_buffer_max_range: DeviceSize,
50311     ) -> Self {
50312         self.inner.dst_bitstream_buffer_max_range = dst_bitstream_buffer_max_range;
50313         self
50314     }
src_picture_resource(mut self, src_picture_resource: VideoPictureResourceKHR) -> Self50315     pub fn src_picture_resource(mut self, src_picture_resource: VideoPictureResourceKHR) -> Self {
50316         self.inner.src_picture_resource = src_picture_resource;
50317         self
50318     }
setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self50319     pub fn setup_reference_slot(mut self, setup_reference_slot: &'a VideoReferenceSlotKHR) -> Self {
50320         self.inner.p_setup_reference_slot = setup_reference_slot;
50321         self
50322     }
reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self50323     pub fn reference_slots(mut self, reference_slots: &'a [VideoReferenceSlotKHR]) -> Self {
50324         self.inner.reference_slot_count = reference_slots.len() as _;
50325         self.inner.p_reference_slots = reference_slots.as_ptr();
50326         self
50327     }
preceding_externally_encoded_bytes( mut self, preceding_externally_encoded_bytes: u32, ) -> Self50328     pub fn preceding_externally_encoded_bytes(
50329         mut self,
50330         preceding_externally_encoded_bytes: u32,
50331     ) -> Self {
50332         self.inner.preceding_externally_encoded_bytes = preceding_externally_encoded_bytes;
50333         self
50334     }
50335     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
50336     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
50337     #[doc = r" valid extension structs can be pushed into the chain."]
50338     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
50339     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoEncodeInfoKHR>(mut self, next: &'a mut T) -> Self50340     pub fn push_next<T: ExtendsVideoEncodeInfoKHR>(mut self, next: &'a mut T) -> Self {
50341         unsafe {
50342             let next_ptr = next as *mut T as *mut BaseOutStructure;
50343             let last_next = ptr_chain_iter(next).last().unwrap();
50344             (*last_next).p_next = self.inner.p_next as _;
50345             self.inner.p_next = next_ptr as _;
50346         }
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) -> VideoEncodeInfoKHR50352     pub fn build(self) -> VideoEncodeInfoKHR {
50353         self.inner
50354     }
50355 }
50356 #[repr(C)]
50357 #[cfg_attr(feature = "debug", derive(Debug))]
50358 #[derive(Copy, Clone)]
50359 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeRateControlInfoKHR.html>"]
50360 pub struct VideoEncodeRateControlInfoKHR {
50361     pub s_type: StructureType,
50362     pub p_next: *const c_void,
50363     pub flags: VideoEncodeRateControlFlagsKHR,
50364     pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
50365     pub layer_count: u8,
50366     pub p_layer_configs: *const VideoEncodeRateControlLayerInfoKHR,
50367 }
50368 impl ::std::default::Default for VideoEncodeRateControlInfoKHR {
default() -> Self50369     fn default() -> Self {
50370         Self {
50371             s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
50372             p_next: ::std::ptr::null(),
50373             flags: VideoEncodeRateControlFlagsKHR::default(),
50374             rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
50375             layer_count: u8::default(),
50376             p_layer_configs: ::std::ptr::null(),
50377         }
50378     }
50379 }
50380 impl VideoEncodeRateControlInfoKHR {
builder<'a>() -> VideoEncodeRateControlInfoKHRBuilder<'a>50381     pub fn builder<'a>() -> VideoEncodeRateControlInfoKHRBuilder<'a> {
50382         VideoEncodeRateControlInfoKHRBuilder {
50383             inner: Self::default(),
50384             marker: ::std::marker::PhantomData,
50385         }
50386     }
50387 }
50388 #[repr(transparent)]
50389 pub struct VideoEncodeRateControlInfoKHRBuilder<'a> {
50390     inner: VideoEncodeRateControlInfoKHR,
50391     marker: ::std::marker::PhantomData<&'a ()>,
50392 }
50393 unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeRateControlInfoKHRBuilder<'_> {}
50394 unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeRateControlInfoKHR {}
50395 pub unsafe trait ExtendsVideoEncodeRateControlInfoKHR {}
50396 impl<'a> ::std::ops::Deref for VideoEncodeRateControlInfoKHRBuilder<'a> {
50397     type Target = VideoEncodeRateControlInfoKHR;
deref(&self) -> &Self::Target50398     fn deref(&self) -> &Self::Target {
50399         &self.inner
50400     }
50401 }
50402 impl<'a> ::std::ops::DerefMut for VideoEncodeRateControlInfoKHRBuilder<'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> VideoEncodeRateControlInfoKHRBuilder<'a> {
flags(mut self, flags: VideoEncodeRateControlFlagsKHR) -> Self50408     pub fn flags(mut self, flags: VideoEncodeRateControlFlagsKHR) -> Self {
50409         self.inner.flags = flags;
50410         self
50411     }
rate_control_mode( mut self, rate_control_mode: VideoEncodeRateControlModeFlagsKHR, ) -> Self50412     pub fn rate_control_mode(
50413         mut self,
50414         rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
50415     ) -> Self {
50416         self.inner.rate_control_mode = rate_control_mode;
50417         self
50418     }
layer_configs( mut self, layer_configs: &'a [VideoEncodeRateControlLayerInfoKHR], ) -> Self50419     pub fn layer_configs(
50420         mut self,
50421         layer_configs: &'a [VideoEncodeRateControlLayerInfoKHR],
50422     ) -> Self {
50423         self.inner.layer_count = layer_configs.len() as _;
50424         self.inner.p_layer_configs = layer_configs.as_ptr();
50425         self
50426     }
50427     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
50428     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
50429     #[doc = r" valid extension structs can be pushed into the chain."]
50430     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
50431     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoEncodeRateControlInfoKHR>(mut self, next: &'a mut T) -> Self50432     pub fn push_next<T: ExtendsVideoEncodeRateControlInfoKHR>(mut self, next: &'a mut T) -> Self {
50433         unsafe {
50434             let next_ptr = next as *mut T as *mut BaseOutStructure;
50435             let last_next = ptr_chain_iter(next).last().unwrap();
50436             (*last_next).p_next = self.inner.p_next as _;
50437             self.inner.p_next = next_ptr as _;
50438         }
50439         self
50440     }
50441     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50442     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50443     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeRateControlInfoKHR50444     pub fn build(self) -> VideoEncodeRateControlInfoKHR {
50445         self.inner
50446     }
50447 }
50448 #[repr(C)]
50449 #[cfg_attr(feature = "debug", derive(Debug))]
50450 #[derive(Copy, Clone)]
50451 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>"]
50452 pub struct VideoEncodeRateControlLayerInfoKHR {
50453     pub s_type: StructureType,
50454     pub p_next: *const c_void,
50455     pub average_bitrate: u32,
50456     pub max_bitrate: u32,
50457     pub frame_rate_numerator: u32,
50458     pub frame_rate_denominator: u32,
50459     pub virtual_buffer_size_in_ms: u32,
50460     pub initial_virtual_buffer_size_in_ms: u32,
50461 }
50462 impl ::std::default::Default for VideoEncodeRateControlLayerInfoKHR {
default() -> Self50463     fn default() -> Self {
50464         Self {
50465             s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
50466             p_next: ::std::ptr::null(),
50467             average_bitrate: u32::default(),
50468             max_bitrate: u32::default(),
50469             frame_rate_numerator: u32::default(),
50470             frame_rate_denominator: u32::default(),
50471             virtual_buffer_size_in_ms: u32::default(),
50472             initial_virtual_buffer_size_in_ms: u32::default(),
50473         }
50474     }
50475 }
50476 impl VideoEncodeRateControlLayerInfoKHR {
builder<'a>() -> VideoEncodeRateControlLayerInfoKHRBuilder<'a>50477     pub fn builder<'a>() -> VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
50478         VideoEncodeRateControlLayerInfoKHRBuilder {
50479             inner: Self::default(),
50480             marker: ::std::marker::PhantomData,
50481         }
50482     }
50483 }
50484 #[repr(transparent)]
50485 pub struct VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
50486     inner: VideoEncodeRateControlLayerInfoKHR,
50487     marker: ::std::marker::PhantomData<&'a ()>,
50488 }
50489 unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeRateControlLayerInfoKHRBuilder<'_> {}
50490 unsafe impl ExtendsVideoCodingControlInfoKHR for VideoEncodeRateControlLayerInfoKHR {}
50491 pub unsafe trait ExtendsVideoEncodeRateControlLayerInfoKHR {}
50492 impl<'a> ::std::ops::Deref for VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
50493     type Target = VideoEncodeRateControlLayerInfoKHR;
deref(&self) -> &Self::Target50494     fn deref(&self) -> &Self::Target {
50495         &self.inner
50496     }
50497 }
50498 impl<'a> ::std::ops::DerefMut for VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50499     fn deref_mut(&mut self) -> &mut Self::Target {
50500         &mut self.inner
50501     }
50502 }
50503 impl<'a> VideoEncodeRateControlLayerInfoKHRBuilder<'a> {
average_bitrate(mut self, average_bitrate: u32) -> Self50504     pub fn average_bitrate(mut self, average_bitrate: u32) -> Self {
50505         self.inner.average_bitrate = average_bitrate;
50506         self
50507     }
max_bitrate(mut self, max_bitrate: u32) -> Self50508     pub fn max_bitrate(mut self, max_bitrate: u32) -> Self {
50509         self.inner.max_bitrate = max_bitrate;
50510         self
50511     }
frame_rate_numerator(mut self, frame_rate_numerator: u32) -> Self50512     pub fn frame_rate_numerator(mut self, frame_rate_numerator: u32) -> Self {
50513         self.inner.frame_rate_numerator = frame_rate_numerator;
50514         self
50515     }
frame_rate_denominator(mut self, frame_rate_denominator: u32) -> Self50516     pub fn frame_rate_denominator(mut self, frame_rate_denominator: u32) -> Self {
50517         self.inner.frame_rate_denominator = frame_rate_denominator;
50518         self
50519     }
virtual_buffer_size_in_ms(mut self, virtual_buffer_size_in_ms: u32) -> Self50520     pub fn virtual_buffer_size_in_ms(mut self, virtual_buffer_size_in_ms: u32) -> Self {
50521         self.inner.virtual_buffer_size_in_ms = virtual_buffer_size_in_ms;
50522         self
50523     }
initial_virtual_buffer_size_in_ms( mut self, initial_virtual_buffer_size_in_ms: u32, ) -> Self50524     pub fn initial_virtual_buffer_size_in_ms(
50525         mut self,
50526         initial_virtual_buffer_size_in_ms: u32,
50527     ) -> Self {
50528         self.inner.initial_virtual_buffer_size_in_ms = initial_virtual_buffer_size_in_ms;
50529         self
50530     }
50531     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
50532     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
50533     #[doc = r" valid extension structs can be pushed into the chain."]
50534     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
50535     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsVideoEncodeRateControlLayerInfoKHR>( mut self, next: &'a mut T, ) -> Self50536     pub fn push_next<T: ExtendsVideoEncodeRateControlLayerInfoKHR>(
50537         mut self,
50538         next: &'a mut T,
50539     ) -> Self {
50540         unsafe {
50541             let next_ptr = next as *mut T as *mut BaseOutStructure;
50542             let last_next = ptr_chain_iter(next).last().unwrap();
50543             (*last_next).p_next = self.inner.p_next as _;
50544             self.inner.p_next = next_ptr as _;
50545         }
50546         self
50547     }
50548     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50549     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50550     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeRateControlLayerInfoKHR50551     pub fn build(self) -> VideoEncodeRateControlLayerInfoKHR {
50552         self.inner
50553     }
50554 }
50555 #[repr(C)]
50556 #[cfg_attr(feature = "debug", derive(Debug))]
50557 #[derive(Copy, Clone)]
50558 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264CapabilitiesEXT.html>"]
50559 pub struct VideoEncodeH264CapabilitiesEXT {
50560     pub s_type: StructureType,
50561     pub p_next: *const c_void,
50562     pub flags: VideoEncodeH264CapabilityFlagsEXT,
50563     pub input_mode_flags: VideoEncodeH264InputModeFlagsEXT,
50564     pub output_mode_flags: VideoEncodeH264OutputModeFlagsEXT,
50565     pub min_picture_size_in_mbs: Extent2D,
50566     pub max_picture_size_in_mbs: Extent2D,
50567     pub input_image_data_alignment: Extent2D,
50568     pub max_num_l0_reference_for_p: u8,
50569     pub max_num_l0_reference_for_b: u8,
50570     pub max_num_l1_reference: u8,
50571     pub quality_level_count: u8,
50572     pub std_extension_version: ExtensionProperties,
50573 }
50574 impl ::std::default::Default for VideoEncodeH264CapabilitiesEXT {
default() -> Self50575     fn default() -> Self {
50576         Self {
50577             s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_EXT,
50578             p_next: ::std::ptr::null(),
50579             flags: VideoEncodeH264CapabilityFlagsEXT::default(),
50580             input_mode_flags: VideoEncodeH264InputModeFlagsEXT::default(),
50581             output_mode_flags: VideoEncodeH264OutputModeFlagsEXT::default(),
50582             min_picture_size_in_mbs: Extent2D::default(),
50583             max_picture_size_in_mbs: Extent2D::default(),
50584             input_image_data_alignment: Extent2D::default(),
50585             max_num_l0_reference_for_p: u8::default(),
50586             max_num_l0_reference_for_b: u8::default(),
50587             max_num_l1_reference: u8::default(),
50588             quality_level_count: u8::default(),
50589             std_extension_version: ExtensionProperties::default(),
50590         }
50591     }
50592 }
50593 impl VideoEncodeH264CapabilitiesEXT {
builder<'a>() -> VideoEncodeH264CapabilitiesEXTBuilder<'a>50594     pub fn builder<'a>() -> VideoEncodeH264CapabilitiesEXTBuilder<'a> {
50595         VideoEncodeH264CapabilitiesEXTBuilder {
50596             inner: Self::default(),
50597             marker: ::std::marker::PhantomData,
50598         }
50599     }
50600 }
50601 #[repr(transparent)]
50602 pub struct VideoEncodeH264CapabilitiesEXTBuilder<'a> {
50603     inner: VideoEncodeH264CapabilitiesEXT,
50604     marker: ::std::marker::PhantomData<&'a ()>,
50605 }
50606 unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH264CapabilitiesEXTBuilder<'_> {}
50607 unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH264CapabilitiesEXT {}
50608 impl<'a> ::std::ops::Deref for VideoEncodeH264CapabilitiesEXTBuilder<'a> {
50609     type Target = VideoEncodeH264CapabilitiesEXT;
deref(&self) -> &Self::Target50610     fn deref(&self) -> &Self::Target {
50611         &self.inner
50612     }
50613 }
50614 impl<'a> ::std::ops::DerefMut for VideoEncodeH264CapabilitiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50615     fn deref_mut(&mut self) -> &mut Self::Target {
50616         &mut self.inner
50617     }
50618 }
50619 impl<'a> VideoEncodeH264CapabilitiesEXTBuilder<'a> {
flags(mut self, flags: VideoEncodeH264CapabilityFlagsEXT) -> Self50620     pub fn flags(mut self, flags: VideoEncodeH264CapabilityFlagsEXT) -> Self {
50621         self.inner.flags = flags;
50622         self
50623     }
input_mode_flags(mut self, input_mode_flags: VideoEncodeH264InputModeFlagsEXT) -> Self50624     pub fn input_mode_flags(mut self, input_mode_flags: VideoEncodeH264InputModeFlagsEXT) -> Self {
50625         self.inner.input_mode_flags = input_mode_flags;
50626         self
50627     }
output_mode_flags( mut self, output_mode_flags: VideoEncodeH264OutputModeFlagsEXT, ) -> Self50628     pub fn output_mode_flags(
50629         mut self,
50630         output_mode_flags: VideoEncodeH264OutputModeFlagsEXT,
50631     ) -> Self {
50632         self.inner.output_mode_flags = output_mode_flags;
50633         self
50634     }
min_picture_size_in_mbs(mut self, min_picture_size_in_mbs: Extent2D) -> Self50635     pub fn min_picture_size_in_mbs(mut self, min_picture_size_in_mbs: Extent2D) -> Self {
50636         self.inner.min_picture_size_in_mbs = min_picture_size_in_mbs;
50637         self
50638     }
max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self50639     pub fn max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self {
50640         self.inner.max_picture_size_in_mbs = max_picture_size_in_mbs;
50641         self
50642     }
input_image_data_alignment(mut self, input_image_data_alignment: Extent2D) -> Self50643     pub fn input_image_data_alignment(mut self, input_image_data_alignment: Extent2D) -> Self {
50644         self.inner.input_image_data_alignment = input_image_data_alignment;
50645         self
50646     }
max_num_l0_reference_for_p(mut self, max_num_l0_reference_for_p: u8) -> Self50647     pub fn max_num_l0_reference_for_p(mut self, max_num_l0_reference_for_p: u8) -> Self {
50648         self.inner.max_num_l0_reference_for_p = max_num_l0_reference_for_p;
50649         self
50650     }
max_num_l0_reference_for_b(mut self, max_num_l0_reference_for_b: u8) -> Self50651     pub fn max_num_l0_reference_for_b(mut self, max_num_l0_reference_for_b: u8) -> Self {
50652         self.inner.max_num_l0_reference_for_b = max_num_l0_reference_for_b;
50653         self
50654     }
max_num_l1_reference(mut self, max_num_l1_reference: u8) -> Self50655     pub fn max_num_l1_reference(mut self, max_num_l1_reference: u8) -> Self {
50656         self.inner.max_num_l1_reference = max_num_l1_reference;
50657         self
50658     }
quality_level_count(mut self, quality_level_count: u8) -> Self50659     pub fn quality_level_count(mut self, quality_level_count: u8) -> Self {
50660         self.inner.quality_level_count = quality_level_count;
50661         self
50662     }
std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self50663     pub fn std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self {
50664         self.inner.std_extension_version = std_extension_version;
50665         self
50666     }
50667     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50668     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50669     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264CapabilitiesEXT50670     pub fn build(self) -> VideoEncodeH264CapabilitiesEXT {
50671         self.inner
50672     }
50673 }
50674 #[repr(C)]
50675 #[cfg_attr(feature = "debug", derive(Debug))]
50676 #[derive(Copy, Clone)]
50677 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264SessionCreateInfoEXT.html>"]
50678 pub struct VideoEncodeH264SessionCreateInfoEXT {
50679     pub s_type: StructureType,
50680     pub p_next: *const c_void,
50681     pub flags: VideoEncodeH264CreateFlagsEXT,
50682     pub max_picture_size_in_mbs: Extent2D,
50683     pub p_std_extension_version: *const ExtensionProperties,
50684 }
50685 impl ::std::default::Default for VideoEncodeH264SessionCreateInfoEXT {
default() -> Self50686     fn default() -> Self {
50687         Self {
50688             s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT,
50689             p_next: ::std::ptr::null(),
50690             flags: VideoEncodeH264CreateFlagsEXT::default(),
50691             max_picture_size_in_mbs: Extent2D::default(),
50692             p_std_extension_version: ::std::ptr::null(),
50693         }
50694     }
50695 }
50696 impl VideoEncodeH264SessionCreateInfoEXT {
builder<'a>() -> VideoEncodeH264SessionCreateInfoEXTBuilder<'a>50697     pub fn builder<'a>() -> VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
50698         VideoEncodeH264SessionCreateInfoEXTBuilder {
50699             inner: Self::default(),
50700             marker: ::std::marker::PhantomData,
50701         }
50702     }
50703 }
50704 #[repr(transparent)]
50705 pub struct VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
50706     inner: VideoEncodeH264SessionCreateInfoEXT,
50707     marker: ::std::marker::PhantomData<&'a ()>,
50708 }
50709 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH264SessionCreateInfoEXTBuilder<'_> {}
50710 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH264SessionCreateInfoEXT {}
50711 impl<'a> ::std::ops::Deref for VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
50712     type Target = VideoEncodeH264SessionCreateInfoEXT;
deref(&self) -> &Self::Target50713     fn deref(&self) -> &Self::Target {
50714         &self.inner
50715     }
50716 }
50717 impl<'a> ::std::ops::DerefMut for VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50718     fn deref_mut(&mut self) -> &mut Self::Target {
50719         &mut self.inner
50720     }
50721 }
50722 impl<'a> VideoEncodeH264SessionCreateInfoEXTBuilder<'a> {
flags(mut self, flags: VideoEncodeH264CreateFlagsEXT) -> Self50723     pub fn flags(mut self, flags: VideoEncodeH264CreateFlagsEXT) -> Self {
50724         self.inner.flags = flags;
50725         self
50726     }
max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self50727     pub fn max_picture_size_in_mbs(mut self, max_picture_size_in_mbs: Extent2D) -> Self {
50728         self.inner.max_picture_size_in_mbs = max_picture_size_in_mbs;
50729         self
50730     }
std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self50731     pub fn std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self {
50732         self.inner.p_std_extension_version = std_extension_version;
50733         self
50734     }
50735     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50736     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50737     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264SessionCreateInfoEXT50738     pub fn build(self) -> VideoEncodeH264SessionCreateInfoEXT {
50739         self.inner
50740     }
50741 }
50742 #[repr(C)]
50743 #[cfg_attr(feature = "debug", derive(Debug))]
50744 #[derive(Copy, Clone)]
50745 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264SessionParametersAddInfoEXT.html>"]
50746 pub struct VideoEncodeH264SessionParametersAddInfoEXT {
50747     pub s_type: StructureType,
50748     pub p_next: *const c_void,
50749     pub sps_std_count: u32,
50750     pub p_sps_std: *const StdVideoH264SequenceParameterSet,
50751     pub pps_std_count: u32,
50752     pub p_pps_std: *const StdVideoH264PictureParameterSet,
50753 }
50754 impl ::std::default::Default for VideoEncodeH264SessionParametersAddInfoEXT {
default() -> Self50755     fn default() -> Self {
50756         Self {
50757             s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT,
50758             p_next: ::std::ptr::null(),
50759             sps_std_count: u32::default(),
50760             p_sps_std: ::std::ptr::null(),
50761             pps_std_count: u32::default(),
50762             p_pps_std: ::std::ptr::null(),
50763         }
50764     }
50765 }
50766 impl VideoEncodeH264SessionParametersAddInfoEXT {
builder<'a>() -> VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a>50767     pub fn builder<'a>() -> VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
50768         VideoEncodeH264SessionParametersAddInfoEXTBuilder {
50769             inner: Self::default(),
50770             marker: ::std::marker::PhantomData,
50771         }
50772     }
50773 }
50774 #[repr(transparent)]
50775 pub struct VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
50776     inner: VideoEncodeH264SessionParametersAddInfoEXT,
50777     marker: ::std::marker::PhantomData<&'a ()>,
50778 }
50779 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
50780     for VideoEncodeH264SessionParametersAddInfoEXTBuilder<'_>
50781 {
50782 }
50783 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
50784     for VideoEncodeH264SessionParametersAddInfoEXT
50785 {
50786 }
50787 impl<'a> ::std::ops::Deref for VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
50788     type Target = VideoEncodeH264SessionParametersAddInfoEXT;
deref(&self) -> &Self::Target50789     fn deref(&self) -> &Self::Target {
50790         &self.inner
50791     }
50792 }
50793 impl<'a> ::std::ops::DerefMut for VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50794     fn deref_mut(&mut self) -> &mut Self::Target {
50795         &mut self.inner
50796     }
50797 }
50798 impl<'a> VideoEncodeH264SessionParametersAddInfoEXTBuilder<'a> {
sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self50799     pub fn sps_std(mut self, sps_std: &'a [StdVideoH264SequenceParameterSet]) -> Self {
50800         self.inner.sps_std_count = sps_std.len() as _;
50801         self.inner.p_sps_std = sps_std.as_ptr();
50802         self
50803     }
pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self50804     pub fn pps_std(mut self, pps_std: &'a [StdVideoH264PictureParameterSet]) -> Self {
50805         self.inner.pps_std_count = pps_std.len() as _;
50806         self.inner.p_pps_std = pps_std.as_ptr();
50807         self
50808     }
50809     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50810     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50811     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264SessionParametersAddInfoEXT50812     pub fn build(self) -> VideoEncodeH264SessionParametersAddInfoEXT {
50813         self.inner
50814     }
50815 }
50816 #[repr(C)]
50817 #[cfg_attr(feature = "debug", derive(Debug))]
50818 #[derive(Copy, Clone)]
50819 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264SessionParametersCreateInfoEXT.html>"]
50820 pub struct VideoEncodeH264SessionParametersCreateInfoEXT {
50821     pub s_type: StructureType,
50822     pub p_next: *const c_void,
50823     pub max_sps_std_count: u32,
50824     pub max_pps_std_count: u32,
50825     pub p_parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoEXT,
50826 }
50827 impl ::std::default::Default for VideoEncodeH264SessionParametersCreateInfoEXT {
default() -> Self50828     fn default() -> Self {
50829         Self {
50830             s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT,
50831             p_next: ::std::ptr::null(),
50832             max_sps_std_count: u32::default(),
50833             max_pps_std_count: u32::default(),
50834             p_parameters_add_info: ::std::ptr::null(),
50835         }
50836     }
50837 }
50838 impl VideoEncodeH264SessionParametersCreateInfoEXT {
builder<'a>() -> VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a>50839     pub fn builder<'a>() -> VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
50840         VideoEncodeH264SessionParametersCreateInfoEXTBuilder {
50841             inner: Self::default(),
50842             marker: ::std::marker::PhantomData,
50843         }
50844     }
50845 }
50846 #[repr(transparent)]
50847 pub struct VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
50848     inner: VideoEncodeH264SessionParametersCreateInfoEXT,
50849     marker: ::std::marker::PhantomData<&'a ()>,
50850 }
50851 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
50852     for VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'_>
50853 {
50854 }
50855 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
50856     for VideoEncodeH264SessionParametersCreateInfoEXT
50857 {
50858 }
50859 impl<'a> ::std::ops::Deref for VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
50860     type Target = VideoEncodeH264SessionParametersCreateInfoEXT;
deref(&self) -> &Self::Target50861     fn deref(&self) -> &Self::Target {
50862         &self.inner
50863     }
50864 }
50865 impl<'a> ::std::ops::DerefMut for VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50866     fn deref_mut(&mut self) -> &mut Self::Target {
50867         &mut self.inner
50868     }
50869 }
50870 impl<'a> VideoEncodeH264SessionParametersCreateInfoEXTBuilder<'a> {
max_sps_std_count(mut self, max_sps_std_count: u32) -> Self50871     pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
50872         self.inner.max_sps_std_count = max_sps_std_count;
50873         self
50874     }
max_pps_std_count(mut self, max_pps_std_count: u32) -> Self50875     pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
50876         self.inner.max_pps_std_count = max_pps_std_count;
50877         self
50878     }
parameters_add_info( mut self, parameters_add_info: &'a VideoEncodeH264SessionParametersAddInfoEXT, ) -> Self50879     pub fn parameters_add_info(
50880         mut self,
50881         parameters_add_info: &'a VideoEncodeH264SessionParametersAddInfoEXT,
50882     ) -> Self {
50883         self.inner.p_parameters_add_info = parameters_add_info;
50884         self
50885     }
50886     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50887     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50888     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264SessionParametersCreateInfoEXT50889     pub fn build(self) -> VideoEncodeH264SessionParametersCreateInfoEXT {
50890         self.inner
50891     }
50892 }
50893 #[repr(C)]
50894 #[cfg_attr(feature = "debug", derive(Debug))]
50895 #[derive(Copy, Clone)]
50896 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264DpbSlotInfoEXT.html>"]
50897 pub struct VideoEncodeH264DpbSlotInfoEXT {
50898     pub s_type: StructureType,
50899     pub p_next: *const c_void,
50900     pub slot_index: i8,
50901     pub p_std_picture_info: *const StdVideoEncodeH264PictureInfo,
50902 }
50903 impl ::std::default::Default for VideoEncodeH264DpbSlotInfoEXT {
default() -> Self50904     fn default() -> Self {
50905         Self {
50906             s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT,
50907             p_next: ::std::ptr::null(),
50908             slot_index: i8::default(),
50909             p_std_picture_info: ::std::ptr::null(),
50910         }
50911     }
50912 }
50913 impl VideoEncodeH264DpbSlotInfoEXT {
builder<'a>() -> VideoEncodeH264DpbSlotInfoEXTBuilder<'a>50914     pub fn builder<'a>() -> VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
50915         VideoEncodeH264DpbSlotInfoEXTBuilder {
50916             inner: Self::default(),
50917             marker: ::std::marker::PhantomData,
50918         }
50919     }
50920 }
50921 #[repr(transparent)]
50922 pub struct VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
50923     inner: VideoEncodeH264DpbSlotInfoEXT,
50924     marker: ::std::marker::PhantomData<&'a ()>,
50925 }
50926 impl<'a> ::std::ops::Deref for VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
50927     type Target = VideoEncodeH264DpbSlotInfoEXT;
deref(&self) -> &Self::Target50928     fn deref(&self) -> &Self::Target {
50929         &self.inner
50930     }
50931 }
50932 impl<'a> ::std::ops::DerefMut for VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target50933     fn deref_mut(&mut self) -> &mut Self::Target {
50934         &mut self.inner
50935     }
50936 }
50937 impl<'a> VideoEncodeH264DpbSlotInfoEXTBuilder<'a> {
slot_index(mut self, slot_index: i8) -> Self50938     pub fn slot_index(mut self, slot_index: i8) -> Self {
50939         self.inner.slot_index = slot_index;
50940         self
50941     }
std_picture_info(mut self, std_picture_info: &'a StdVideoEncodeH264PictureInfo) -> Self50942     pub fn std_picture_info(mut self, std_picture_info: &'a StdVideoEncodeH264PictureInfo) -> Self {
50943         self.inner.p_std_picture_info = std_picture_info;
50944         self
50945     }
50946     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
50947     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
50948     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264DpbSlotInfoEXT50949     pub fn build(self) -> VideoEncodeH264DpbSlotInfoEXT {
50950         self.inner
50951     }
50952 }
50953 #[repr(C)]
50954 #[cfg_attr(feature = "debug", derive(Debug))]
50955 #[derive(Copy, Clone)]
50956 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264VclFrameInfoEXT.html>"]
50957 pub struct VideoEncodeH264VclFrameInfoEXT {
50958     pub s_type: StructureType,
50959     pub p_next: *const c_void,
50960     pub ref_default_final_list0_entry_count: u8,
50961     pub p_ref_default_final_list0_entries: *const VideoEncodeH264DpbSlotInfoEXT,
50962     pub ref_default_final_list1_entry_count: u8,
50963     pub p_ref_default_final_list1_entries: *const VideoEncodeH264DpbSlotInfoEXT,
50964     pub nalu_slice_entry_count: u32,
50965     pub p_nalu_slice_entries: *const VideoEncodeH264NaluSliceEXT,
50966     pub p_current_picture_info: *const VideoEncodeH264DpbSlotInfoEXT,
50967 }
50968 impl ::std::default::Default for VideoEncodeH264VclFrameInfoEXT {
default() -> Self50969     fn default() -> Self {
50970         Self {
50971             s_type: StructureType::VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT,
50972             p_next: ::std::ptr::null(),
50973             ref_default_final_list0_entry_count: u8::default(),
50974             p_ref_default_final_list0_entries: ::std::ptr::null(),
50975             ref_default_final_list1_entry_count: u8::default(),
50976             p_ref_default_final_list1_entries: ::std::ptr::null(),
50977             nalu_slice_entry_count: u32::default(),
50978             p_nalu_slice_entries: ::std::ptr::null(),
50979             p_current_picture_info: ::std::ptr::null(),
50980         }
50981     }
50982 }
50983 impl VideoEncodeH264VclFrameInfoEXT {
builder<'a>() -> VideoEncodeH264VclFrameInfoEXTBuilder<'a>50984     pub fn builder<'a>() -> VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
50985         VideoEncodeH264VclFrameInfoEXTBuilder {
50986             inner: Self::default(),
50987             marker: ::std::marker::PhantomData,
50988         }
50989     }
50990 }
50991 #[repr(transparent)]
50992 pub struct VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
50993     inner: VideoEncodeH264VclFrameInfoEXT,
50994     marker: ::std::marker::PhantomData<&'a ()>,
50995 }
50996 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264VclFrameInfoEXTBuilder<'_> {}
50997 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264VclFrameInfoEXT {}
50998 impl<'a> ::std::ops::Deref for VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
50999     type Target = VideoEncodeH264VclFrameInfoEXT;
deref(&self) -> &Self::Target51000     fn deref(&self) -> &Self::Target {
51001         &self.inner
51002     }
51003 }
51004 impl<'a> ::std::ops::DerefMut for VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51005     fn deref_mut(&mut self) -> &mut Self::Target {
51006         &mut self.inner
51007     }
51008 }
51009 impl<'a> VideoEncodeH264VclFrameInfoEXTBuilder<'a> {
ref_default_final_list0_entries( mut self, ref_default_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self51010     pub fn ref_default_final_list0_entries(
51011         mut self,
51012         ref_default_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
51013     ) -> Self {
51014         self.inner.ref_default_final_list0_entry_count = ref_default_final_list0_entries.len() as _;
51015         self.inner.p_ref_default_final_list0_entries = ref_default_final_list0_entries.as_ptr();
51016         self
51017     }
ref_default_final_list1_entries( mut self, ref_default_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self51018     pub fn ref_default_final_list1_entries(
51019         mut self,
51020         ref_default_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
51021     ) -> Self {
51022         self.inner.ref_default_final_list1_entry_count = ref_default_final_list1_entries.len() as _;
51023         self.inner.p_ref_default_final_list1_entries = ref_default_final_list1_entries.as_ptr();
51024         self
51025     }
nalu_slice_entries( mut self, nalu_slice_entries: &'a [VideoEncodeH264NaluSliceEXT], ) -> Self51026     pub fn nalu_slice_entries(
51027         mut self,
51028         nalu_slice_entries: &'a [VideoEncodeH264NaluSliceEXT],
51029     ) -> Self {
51030         self.inner.nalu_slice_entry_count = nalu_slice_entries.len() as _;
51031         self.inner.p_nalu_slice_entries = nalu_slice_entries.as_ptr();
51032         self
51033     }
current_picture_info( mut self, current_picture_info: &'a VideoEncodeH264DpbSlotInfoEXT, ) -> Self51034     pub fn current_picture_info(
51035         mut self,
51036         current_picture_info: &'a VideoEncodeH264DpbSlotInfoEXT,
51037     ) -> Self {
51038         self.inner.p_current_picture_info = current_picture_info;
51039         self
51040     }
51041     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51042     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51043     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264VclFrameInfoEXT51044     pub fn build(self) -> VideoEncodeH264VclFrameInfoEXT {
51045         self.inner
51046     }
51047 }
51048 #[repr(C)]
51049 #[cfg_attr(feature = "debug", derive(Debug))]
51050 #[derive(Copy, Clone)]
51051 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264EmitPictureParametersEXT.html>"]
51052 pub struct VideoEncodeH264EmitPictureParametersEXT {
51053     pub s_type: StructureType,
51054     pub p_next: *const c_void,
51055     pub sps_id: u8,
51056     pub emit_sps_enable: Bool32,
51057     pub pps_id_entry_count: u32,
51058     pub pps_id_entries: *const u8,
51059 }
51060 impl ::std::default::Default for VideoEncodeH264EmitPictureParametersEXT {
default() -> Self51061     fn default() -> Self {
51062         Self {
51063             s_type: StructureType::VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT,
51064             p_next: ::std::ptr::null(),
51065             sps_id: u8::default(),
51066             emit_sps_enable: Bool32::default(),
51067             pps_id_entry_count: u32::default(),
51068             pps_id_entries: ::std::ptr::null(),
51069         }
51070     }
51071 }
51072 impl VideoEncodeH264EmitPictureParametersEXT {
builder<'a>() -> VideoEncodeH264EmitPictureParametersEXTBuilder<'a>51073     pub fn builder<'a>() -> VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
51074         VideoEncodeH264EmitPictureParametersEXTBuilder {
51075             inner: Self::default(),
51076             marker: ::std::marker::PhantomData,
51077         }
51078     }
51079 }
51080 #[repr(transparent)]
51081 pub struct VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
51082     inner: VideoEncodeH264EmitPictureParametersEXT,
51083     marker: ::std::marker::PhantomData<&'a ()>,
51084 }
51085 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264EmitPictureParametersEXTBuilder<'_> {}
51086 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH264EmitPictureParametersEXT {}
51087 impl<'a> ::std::ops::Deref for VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
51088     type Target = VideoEncodeH264EmitPictureParametersEXT;
deref(&self) -> &Self::Target51089     fn deref(&self) -> &Self::Target {
51090         &self.inner
51091     }
51092 }
51093 impl<'a> ::std::ops::DerefMut for VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51094     fn deref_mut(&mut self) -> &mut Self::Target {
51095         &mut self.inner
51096     }
51097 }
51098 impl<'a> VideoEncodeH264EmitPictureParametersEXTBuilder<'a> {
sps_id(mut self, sps_id: u8) -> Self51099     pub fn sps_id(mut self, sps_id: u8) -> Self {
51100         self.inner.sps_id = sps_id;
51101         self
51102     }
emit_sps_enable(mut self, emit_sps_enable: bool) -> Self51103     pub fn emit_sps_enable(mut self, emit_sps_enable: bool) -> Self {
51104         self.inner.emit_sps_enable = emit_sps_enable.into();
51105         self
51106     }
pps_id_entries(mut self, pps_id_entries: &'a [u8]) -> Self51107     pub fn pps_id_entries(mut self, pps_id_entries: &'a [u8]) -> Self {
51108         self.inner.pps_id_entry_count = pps_id_entries.len() as _;
51109         self.inner.pps_id_entries = pps_id_entries.as_ptr();
51110         self
51111     }
51112     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51113     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51114     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264EmitPictureParametersEXT51115     pub fn build(self) -> VideoEncodeH264EmitPictureParametersEXT {
51116         self.inner
51117     }
51118 }
51119 #[repr(C)]
51120 #[cfg_attr(feature = "debug", derive(Debug))]
51121 #[derive(Copy, Clone)]
51122 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264ProfileEXT.html>"]
51123 pub struct VideoEncodeH264ProfileEXT {
51124     pub s_type: StructureType,
51125     pub p_next: *const c_void,
51126     pub std_profile_idc: StdVideoH264ProfileIdc,
51127 }
51128 impl ::std::default::Default for VideoEncodeH264ProfileEXT {
default() -> Self51129     fn default() -> Self {
51130         Self {
51131             s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_EXT,
51132             p_next: ::std::ptr::null(),
51133             std_profile_idc: StdVideoH264ProfileIdc::default(),
51134         }
51135     }
51136 }
51137 impl VideoEncodeH264ProfileEXT {
builder<'a>() -> VideoEncodeH264ProfileEXTBuilder<'a>51138     pub fn builder<'a>() -> VideoEncodeH264ProfileEXTBuilder<'a> {
51139         VideoEncodeH264ProfileEXTBuilder {
51140             inner: Self::default(),
51141             marker: ::std::marker::PhantomData,
51142         }
51143     }
51144 }
51145 #[repr(transparent)]
51146 pub struct VideoEncodeH264ProfileEXTBuilder<'a> {
51147     inner: VideoEncodeH264ProfileEXT,
51148     marker: ::std::marker::PhantomData<&'a ()>,
51149 }
51150 unsafe impl ExtendsVideoProfileKHR for VideoEncodeH264ProfileEXTBuilder<'_> {}
51151 unsafe impl ExtendsVideoProfileKHR for VideoEncodeH264ProfileEXT {}
51152 unsafe impl ExtendsQueryPoolCreateInfo for VideoEncodeH264ProfileEXTBuilder<'_> {}
51153 unsafe impl ExtendsQueryPoolCreateInfo for VideoEncodeH264ProfileEXT {}
51154 unsafe impl ExtendsFormatProperties2 for VideoEncodeH264ProfileEXTBuilder<'_> {}
51155 unsafe impl ExtendsFormatProperties2 for VideoEncodeH264ProfileEXT {}
51156 unsafe impl ExtendsImageCreateInfo for VideoEncodeH264ProfileEXTBuilder<'_> {}
51157 unsafe impl ExtendsImageCreateInfo for VideoEncodeH264ProfileEXT {}
51158 unsafe impl ExtendsImageViewCreateInfo for VideoEncodeH264ProfileEXTBuilder<'_> {}
51159 unsafe impl ExtendsImageViewCreateInfo for VideoEncodeH264ProfileEXT {}
51160 unsafe impl ExtendsBufferCreateInfo for VideoEncodeH264ProfileEXTBuilder<'_> {}
51161 unsafe impl ExtendsBufferCreateInfo for VideoEncodeH264ProfileEXT {}
51162 impl<'a> ::std::ops::Deref for VideoEncodeH264ProfileEXTBuilder<'a> {
51163     type Target = VideoEncodeH264ProfileEXT;
deref(&self) -> &Self::Target51164     fn deref(&self) -> &Self::Target {
51165         &self.inner
51166     }
51167 }
51168 impl<'a> ::std::ops::DerefMut for VideoEncodeH264ProfileEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51169     fn deref_mut(&mut self) -> &mut Self::Target {
51170         &mut self.inner
51171     }
51172 }
51173 impl<'a> VideoEncodeH264ProfileEXTBuilder<'a> {
std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self51174     pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH264ProfileIdc) -> Self {
51175         self.inner.std_profile_idc = std_profile_idc;
51176         self
51177     }
51178     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51179     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51180     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264ProfileEXT51181     pub fn build(self) -> VideoEncodeH264ProfileEXT {
51182         self.inner
51183     }
51184 }
51185 #[repr(C)]
51186 #[cfg_attr(feature = "debug", derive(Debug))]
51187 #[derive(Copy, Clone)]
51188 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264NaluSliceEXT.html>"]
51189 pub struct VideoEncodeH264NaluSliceEXT {
51190     pub s_type: StructureType,
51191     pub p_next: *const c_void,
51192     pub p_slice_header_std: *const StdVideoEncodeH264SliceHeader,
51193     pub mb_count: u32,
51194     pub ref_final_list0_entry_count: u8,
51195     pub p_ref_final_list0_entries: *const VideoEncodeH264DpbSlotInfoEXT,
51196     pub ref_final_list1_entry_count: u8,
51197     pub p_ref_final_list1_entries: *const VideoEncodeH264DpbSlotInfoEXT,
51198 }
51199 impl ::std::default::Default for VideoEncodeH264NaluSliceEXT {
default() -> Self51200     fn default() -> Self {
51201         Self {
51202             s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_EXT,
51203             p_next: ::std::ptr::null(),
51204             p_slice_header_std: ::std::ptr::null(),
51205             mb_count: u32::default(),
51206             ref_final_list0_entry_count: u8::default(),
51207             p_ref_final_list0_entries: ::std::ptr::null(),
51208             ref_final_list1_entry_count: u8::default(),
51209             p_ref_final_list1_entries: ::std::ptr::null(),
51210         }
51211     }
51212 }
51213 impl VideoEncodeH264NaluSliceEXT {
builder<'a>() -> VideoEncodeH264NaluSliceEXTBuilder<'a>51214     pub fn builder<'a>() -> VideoEncodeH264NaluSliceEXTBuilder<'a> {
51215         VideoEncodeH264NaluSliceEXTBuilder {
51216             inner: Self::default(),
51217             marker: ::std::marker::PhantomData,
51218         }
51219     }
51220 }
51221 #[repr(transparent)]
51222 pub struct VideoEncodeH264NaluSliceEXTBuilder<'a> {
51223     inner: VideoEncodeH264NaluSliceEXT,
51224     marker: ::std::marker::PhantomData<&'a ()>,
51225 }
51226 impl<'a> ::std::ops::Deref for VideoEncodeH264NaluSliceEXTBuilder<'a> {
51227     type Target = VideoEncodeH264NaluSliceEXT;
deref(&self) -> &Self::Target51228     fn deref(&self) -> &Self::Target {
51229         &self.inner
51230     }
51231 }
51232 impl<'a> ::std::ops::DerefMut for VideoEncodeH264NaluSliceEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51233     fn deref_mut(&mut self) -> &mut Self::Target {
51234         &mut self.inner
51235     }
51236 }
51237 impl<'a> VideoEncodeH264NaluSliceEXTBuilder<'a> {
slice_header_std(mut self, slice_header_std: &'a StdVideoEncodeH264SliceHeader) -> Self51238     pub fn slice_header_std(mut self, slice_header_std: &'a StdVideoEncodeH264SliceHeader) -> Self {
51239         self.inner.p_slice_header_std = slice_header_std;
51240         self
51241     }
mb_count(mut self, mb_count: u32) -> Self51242     pub fn mb_count(mut self, mb_count: u32) -> Self {
51243         self.inner.mb_count = mb_count;
51244         self
51245     }
ref_final_list0_entries( mut self, ref_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self51246     pub fn ref_final_list0_entries(
51247         mut self,
51248         ref_final_list0_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
51249     ) -> Self {
51250         self.inner.ref_final_list0_entry_count = ref_final_list0_entries.len() as _;
51251         self.inner.p_ref_final_list0_entries = ref_final_list0_entries.as_ptr();
51252         self
51253     }
ref_final_list1_entries( mut self, ref_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT], ) -> Self51254     pub fn ref_final_list1_entries(
51255         mut self,
51256         ref_final_list1_entries: &'a [VideoEncodeH264DpbSlotInfoEXT],
51257     ) -> Self {
51258         self.inner.ref_final_list1_entry_count = ref_final_list1_entries.len() as _;
51259         self.inner.p_ref_final_list1_entries = ref_final_list1_entries.as_ptr();
51260         self
51261     }
51262     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51263     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51264     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264NaluSliceEXT51265     pub fn build(self) -> VideoEncodeH264NaluSliceEXT {
51266         self.inner
51267     }
51268 }
51269 #[repr(C)]
51270 #[cfg_attr(feature = "debug", derive(Debug))]
51271 #[derive(Copy, Clone)]
51272 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264RateControlInfoEXT.html>"]
51273 pub struct VideoEncodeH264RateControlInfoEXT {
51274     pub s_type: StructureType,
51275     pub p_next: *const c_void,
51276     pub gop_frame_count: u32,
51277     pub idr_period: u32,
51278     pub consecutive_b_frame_count: u32,
51279     pub rate_control_structure: VideoEncodeH264RateControlStructureFlagsEXT,
51280     pub temporal_layer_count: u8,
51281 }
51282 impl ::std::default::Default for VideoEncodeH264RateControlInfoEXT {
default() -> Self51283     fn default() -> Self {
51284         Self {
51285             s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT,
51286             p_next: ::std::ptr::null(),
51287             gop_frame_count: u32::default(),
51288             idr_period: u32::default(),
51289             consecutive_b_frame_count: u32::default(),
51290             rate_control_structure: VideoEncodeH264RateControlStructureFlagsEXT::default(),
51291             temporal_layer_count: u8::default(),
51292         }
51293     }
51294 }
51295 impl VideoEncodeH264RateControlInfoEXT {
builder<'a>() -> VideoEncodeH264RateControlInfoEXTBuilder<'a>51296     pub fn builder<'a>() -> VideoEncodeH264RateControlInfoEXTBuilder<'a> {
51297         VideoEncodeH264RateControlInfoEXTBuilder {
51298             inner: Self::default(),
51299             marker: ::std::marker::PhantomData,
51300         }
51301     }
51302 }
51303 #[repr(transparent)]
51304 pub struct VideoEncodeH264RateControlInfoEXTBuilder<'a> {
51305     inner: VideoEncodeH264RateControlInfoEXT,
51306     marker: ::std::marker::PhantomData<&'a ()>,
51307 }
51308 unsafe impl ExtendsVideoEncodeRateControlInfoKHR for VideoEncodeH264RateControlInfoEXTBuilder<'_> {}
51309 unsafe impl ExtendsVideoEncodeRateControlInfoKHR for VideoEncodeH264RateControlInfoEXT {}
51310 impl<'a> ::std::ops::Deref for VideoEncodeH264RateControlInfoEXTBuilder<'a> {
51311     type Target = VideoEncodeH264RateControlInfoEXT;
deref(&self) -> &Self::Target51312     fn deref(&self) -> &Self::Target {
51313         &self.inner
51314     }
51315 }
51316 impl<'a> ::std::ops::DerefMut for VideoEncodeH264RateControlInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51317     fn deref_mut(&mut self) -> &mut Self::Target {
51318         &mut self.inner
51319     }
51320 }
51321 impl<'a> VideoEncodeH264RateControlInfoEXTBuilder<'a> {
gop_frame_count(mut self, gop_frame_count: u32) -> Self51322     pub fn gop_frame_count(mut self, gop_frame_count: u32) -> Self {
51323         self.inner.gop_frame_count = gop_frame_count;
51324         self
51325     }
idr_period(mut self, idr_period: u32) -> Self51326     pub fn idr_period(mut self, idr_period: u32) -> Self {
51327         self.inner.idr_period = idr_period;
51328         self
51329     }
consecutive_b_frame_count(mut self, consecutive_b_frame_count: u32) -> Self51330     pub fn consecutive_b_frame_count(mut self, consecutive_b_frame_count: u32) -> Self {
51331         self.inner.consecutive_b_frame_count = consecutive_b_frame_count;
51332         self
51333     }
rate_control_structure( mut self, rate_control_structure: VideoEncodeH264RateControlStructureFlagsEXT, ) -> Self51334     pub fn rate_control_structure(
51335         mut self,
51336         rate_control_structure: VideoEncodeH264RateControlStructureFlagsEXT,
51337     ) -> Self {
51338         self.inner.rate_control_structure = rate_control_structure;
51339         self
51340     }
temporal_layer_count(mut self, temporal_layer_count: u8) -> Self51341     pub fn temporal_layer_count(mut self, temporal_layer_count: u8) -> Self {
51342         self.inner.temporal_layer_count = temporal_layer_count;
51343         self
51344     }
51345     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51346     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51347     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264RateControlInfoEXT51348     pub fn build(self) -> VideoEncodeH264RateControlInfoEXT {
51349         self.inner
51350     }
51351 }
51352 #[repr(C)]
51353 #[cfg_attr(feature = "debug", derive(Debug))]
51354 #[derive(Copy, Clone, Default)]
51355 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264QpEXT.html>"]
51356 pub struct VideoEncodeH264QpEXT {
51357     pub qp_i: i32,
51358     pub qp_p: i32,
51359     pub qp_b: i32,
51360 }
51361 impl VideoEncodeH264QpEXT {
builder<'a>() -> VideoEncodeH264QpEXTBuilder<'a>51362     pub fn builder<'a>() -> VideoEncodeH264QpEXTBuilder<'a> {
51363         VideoEncodeH264QpEXTBuilder {
51364             inner: Self::default(),
51365             marker: ::std::marker::PhantomData,
51366         }
51367     }
51368 }
51369 #[repr(transparent)]
51370 pub struct VideoEncodeH264QpEXTBuilder<'a> {
51371     inner: VideoEncodeH264QpEXT,
51372     marker: ::std::marker::PhantomData<&'a ()>,
51373 }
51374 impl<'a> ::std::ops::Deref for VideoEncodeH264QpEXTBuilder<'a> {
51375     type Target = VideoEncodeH264QpEXT;
deref(&self) -> &Self::Target51376     fn deref(&self) -> &Self::Target {
51377         &self.inner
51378     }
51379 }
51380 impl<'a> ::std::ops::DerefMut for VideoEncodeH264QpEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51381     fn deref_mut(&mut self) -> &mut Self::Target {
51382         &mut self.inner
51383     }
51384 }
51385 impl<'a> VideoEncodeH264QpEXTBuilder<'a> {
qp_i(mut self, qp_i: i32) -> Self51386     pub fn qp_i(mut self, qp_i: i32) -> Self {
51387         self.inner.qp_i = qp_i;
51388         self
51389     }
qp_p(mut self, qp_p: i32) -> Self51390     pub fn qp_p(mut self, qp_p: i32) -> Self {
51391         self.inner.qp_p = qp_p;
51392         self
51393     }
qp_b(mut self, qp_b: i32) -> Self51394     pub fn qp_b(mut self, qp_b: i32) -> Self {
51395         self.inner.qp_b = qp_b;
51396         self
51397     }
51398     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51399     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51400     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264QpEXT51401     pub fn build(self) -> VideoEncodeH264QpEXT {
51402         self.inner
51403     }
51404 }
51405 #[repr(C)]
51406 #[cfg_attr(feature = "debug", derive(Debug))]
51407 #[derive(Copy, Clone, Default)]
51408 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264FrameSizeEXT.html>"]
51409 pub struct VideoEncodeH264FrameSizeEXT {
51410     pub frame_i_size: u32,
51411     pub frame_p_size: u32,
51412     pub frame_b_size: u32,
51413 }
51414 impl VideoEncodeH264FrameSizeEXT {
builder<'a>() -> VideoEncodeH264FrameSizeEXTBuilder<'a>51415     pub fn builder<'a>() -> VideoEncodeH264FrameSizeEXTBuilder<'a> {
51416         VideoEncodeH264FrameSizeEXTBuilder {
51417             inner: Self::default(),
51418             marker: ::std::marker::PhantomData,
51419         }
51420     }
51421 }
51422 #[repr(transparent)]
51423 pub struct VideoEncodeH264FrameSizeEXTBuilder<'a> {
51424     inner: VideoEncodeH264FrameSizeEXT,
51425     marker: ::std::marker::PhantomData<&'a ()>,
51426 }
51427 impl<'a> ::std::ops::Deref for VideoEncodeH264FrameSizeEXTBuilder<'a> {
51428     type Target = VideoEncodeH264FrameSizeEXT;
deref(&self) -> &Self::Target51429     fn deref(&self) -> &Self::Target {
51430         &self.inner
51431     }
51432 }
51433 impl<'a> ::std::ops::DerefMut for VideoEncodeH264FrameSizeEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51434     fn deref_mut(&mut self) -> &mut Self::Target {
51435         &mut self.inner
51436     }
51437 }
51438 impl<'a> VideoEncodeH264FrameSizeEXTBuilder<'a> {
frame_i_size(mut self, frame_i_size: u32) -> Self51439     pub fn frame_i_size(mut self, frame_i_size: u32) -> Self {
51440         self.inner.frame_i_size = frame_i_size;
51441         self
51442     }
frame_p_size(mut self, frame_p_size: u32) -> Self51443     pub fn frame_p_size(mut self, frame_p_size: u32) -> Self {
51444         self.inner.frame_p_size = frame_p_size;
51445         self
51446     }
frame_b_size(mut self, frame_b_size: u32) -> Self51447     pub fn frame_b_size(mut self, frame_b_size: u32) -> Self {
51448         self.inner.frame_b_size = frame_b_size;
51449         self
51450     }
51451     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51452     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51453     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264FrameSizeEXT51454     pub fn build(self) -> VideoEncodeH264FrameSizeEXT {
51455         self.inner
51456     }
51457 }
51458 #[repr(C)]
51459 #[cfg_attr(feature = "debug", derive(Debug))]
51460 #[derive(Copy, Clone)]
51461 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH264RateControlLayerInfoEXT.html>"]
51462 pub struct VideoEncodeH264RateControlLayerInfoEXT {
51463     pub s_type: StructureType,
51464     pub p_next: *const c_void,
51465     pub temporal_layer_id: u8,
51466     pub use_initial_rc_qp: Bool32,
51467     pub initial_rc_qp: VideoEncodeH264QpEXT,
51468     pub use_min_qp: Bool32,
51469     pub min_qp: VideoEncodeH264QpEXT,
51470     pub use_max_qp: Bool32,
51471     pub max_qp: VideoEncodeH264QpEXT,
51472     pub use_max_frame_size: Bool32,
51473     pub max_frame_size: VideoEncodeH264FrameSizeEXT,
51474 }
51475 impl ::std::default::Default for VideoEncodeH264RateControlLayerInfoEXT {
default() -> Self51476     fn default() -> Self {
51477         Self {
51478             s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT,
51479             p_next: ::std::ptr::null(),
51480             temporal_layer_id: u8::default(),
51481             use_initial_rc_qp: Bool32::default(),
51482             initial_rc_qp: VideoEncodeH264QpEXT::default(),
51483             use_min_qp: Bool32::default(),
51484             min_qp: VideoEncodeH264QpEXT::default(),
51485             use_max_qp: Bool32::default(),
51486             max_qp: VideoEncodeH264QpEXT::default(),
51487             use_max_frame_size: Bool32::default(),
51488             max_frame_size: VideoEncodeH264FrameSizeEXT::default(),
51489         }
51490     }
51491 }
51492 impl VideoEncodeH264RateControlLayerInfoEXT {
builder<'a>() -> VideoEncodeH264RateControlLayerInfoEXTBuilder<'a>51493     pub fn builder<'a>() -> VideoEncodeH264RateControlLayerInfoEXTBuilder<'a> {
51494         VideoEncodeH264RateControlLayerInfoEXTBuilder {
51495             inner: Self::default(),
51496             marker: ::std::marker::PhantomData,
51497         }
51498     }
51499 }
51500 #[repr(transparent)]
51501 pub struct VideoEncodeH264RateControlLayerInfoEXTBuilder<'a> {
51502     inner: VideoEncodeH264RateControlLayerInfoEXT,
51503     marker: ::std::marker::PhantomData<&'a ()>,
51504 }
51505 unsafe impl ExtendsVideoEncodeRateControlLayerInfoKHR
51506     for VideoEncodeH264RateControlLayerInfoEXTBuilder<'_>
51507 {
51508 }
51509 unsafe impl ExtendsVideoEncodeRateControlLayerInfoKHR for VideoEncodeH264RateControlLayerInfoEXT {}
51510 impl<'a> ::std::ops::Deref for VideoEncodeH264RateControlLayerInfoEXTBuilder<'a> {
51511     type Target = VideoEncodeH264RateControlLayerInfoEXT;
deref(&self) -> &Self::Target51512     fn deref(&self) -> &Self::Target {
51513         &self.inner
51514     }
51515 }
51516 impl<'a> ::std::ops::DerefMut for VideoEncodeH264RateControlLayerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51517     fn deref_mut(&mut self) -> &mut Self::Target {
51518         &mut self.inner
51519     }
51520 }
51521 impl<'a> VideoEncodeH264RateControlLayerInfoEXTBuilder<'a> {
temporal_layer_id(mut self, temporal_layer_id: u8) -> Self51522     pub fn temporal_layer_id(mut self, temporal_layer_id: u8) -> Self {
51523         self.inner.temporal_layer_id = temporal_layer_id;
51524         self
51525     }
use_initial_rc_qp(mut self, use_initial_rc_qp: bool) -> Self51526     pub fn use_initial_rc_qp(mut self, use_initial_rc_qp: bool) -> Self {
51527         self.inner.use_initial_rc_qp = use_initial_rc_qp.into();
51528         self
51529     }
initial_rc_qp(mut self, initial_rc_qp: VideoEncodeH264QpEXT) -> Self51530     pub fn initial_rc_qp(mut self, initial_rc_qp: VideoEncodeH264QpEXT) -> Self {
51531         self.inner.initial_rc_qp = initial_rc_qp;
51532         self
51533     }
use_min_qp(mut self, use_min_qp: bool) -> Self51534     pub fn use_min_qp(mut self, use_min_qp: bool) -> Self {
51535         self.inner.use_min_qp = use_min_qp.into();
51536         self
51537     }
min_qp(mut self, min_qp: VideoEncodeH264QpEXT) -> Self51538     pub fn min_qp(mut self, min_qp: VideoEncodeH264QpEXT) -> Self {
51539         self.inner.min_qp = min_qp;
51540         self
51541     }
use_max_qp(mut self, use_max_qp: bool) -> Self51542     pub fn use_max_qp(mut self, use_max_qp: bool) -> Self {
51543         self.inner.use_max_qp = use_max_qp.into();
51544         self
51545     }
max_qp(mut self, max_qp: VideoEncodeH264QpEXT) -> Self51546     pub fn max_qp(mut self, max_qp: VideoEncodeH264QpEXT) -> Self {
51547         self.inner.max_qp = max_qp;
51548         self
51549     }
use_max_frame_size(mut self, use_max_frame_size: bool) -> Self51550     pub fn use_max_frame_size(mut self, use_max_frame_size: bool) -> Self {
51551         self.inner.use_max_frame_size = use_max_frame_size.into();
51552         self
51553     }
max_frame_size(mut self, max_frame_size: VideoEncodeH264FrameSizeEXT) -> Self51554     pub fn max_frame_size(mut self, max_frame_size: VideoEncodeH264FrameSizeEXT) -> Self {
51555         self.inner.max_frame_size = max_frame_size;
51556         self
51557     }
51558     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51559     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51560     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH264RateControlLayerInfoEXT51561     pub fn build(self) -> VideoEncodeH264RateControlLayerInfoEXT {
51562         self.inner
51563     }
51564 }
51565 #[repr(C)]
51566 #[cfg_attr(feature = "debug", derive(Debug))]
51567 #[derive(Copy, Clone)]
51568 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265CapabilitiesEXT.html>"]
51569 pub struct VideoEncodeH265CapabilitiesEXT {
51570     pub s_type: StructureType,
51571     pub p_next: *const c_void,
51572     pub flags: VideoEncodeH265CapabilityFlagsEXT,
51573     pub input_mode_flags: VideoEncodeH265InputModeFlagsEXT,
51574     pub output_mode_flags: VideoEncodeH265OutputModeFlagsEXT,
51575     pub ctb_sizes: VideoEncodeH265CtbSizeFlagsEXT,
51576     pub input_image_data_alignment: Extent2D,
51577     pub max_num_l0_reference_for_p: u8,
51578     pub max_num_l0_reference_for_b: u8,
51579     pub max_num_l1_reference: u8,
51580     pub max_num_sub_layers: u8,
51581     pub quality_level_count: u8,
51582     pub std_extension_version: ExtensionProperties,
51583 }
51584 impl ::std::default::Default for VideoEncodeH265CapabilitiesEXT {
default() -> Self51585     fn default() -> Self {
51586         Self {
51587             s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_EXT,
51588             p_next: ::std::ptr::null(),
51589             flags: VideoEncodeH265CapabilityFlagsEXT::default(),
51590             input_mode_flags: VideoEncodeH265InputModeFlagsEXT::default(),
51591             output_mode_flags: VideoEncodeH265OutputModeFlagsEXT::default(),
51592             ctb_sizes: VideoEncodeH265CtbSizeFlagsEXT::default(),
51593             input_image_data_alignment: Extent2D::default(),
51594             max_num_l0_reference_for_p: u8::default(),
51595             max_num_l0_reference_for_b: u8::default(),
51596             max_num_l1_reference: u8::default(),
51597             max_num_sub_layers: u8::default(),
51598             quality_level_count: u8::default(),
51599             std_extension_version: ExtensionProperties::default(),
51600         }
51601     }
51602 }
51603 impl VideoEncodeH265CapabilitiesEXT {
builder<'a>() -> VideoEncodeH265CapabilitiesEXTBuilder<'a>51604     pub fn builder<'a>() -> VideoEncodeH265CapabilitiesEXTBuilder<'a> {
51605         VideoEncodeH265CapabilitiesEXTBuilder {
51606             inner: Self::default(),
51607             marker: ::std::marker::PhantomData,
51608         }
51609     }
51610 }
51611 #[repr(transparent)]
51612 pub struct VideoEncodeH265CapabilitiesEXTBuilder<'a> {
51613     inner: VideoEncodeH265CapabilitiesEXT,
51614     marker: ::std::marker::PhantomData<&'a ()>,
51615 }
51616 unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH265CapabilitiesEXTBuilder<'_> {}
51617 unsafe impl ExtendsVideoCapabilitiesKHR for VideoEncodeH265CapabilitiesEXT {}
51618 impl<'a> ::std::ops::Deref for VideoEncodeH265CapabilitiesEXTBuilder<'a> {
51619     type Target = VideoEncodeH265CapabilitiesEXT;
deref(&self) -> &Self::Target51620     fn deref(&self) -> &Self::Target {
51621         &self.inner
51622     }
51623 }
51624 impl<'a> ::std::ops::DerefMut for VideoEncodeH265CapabilitiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51625     fn deref_mut(&mut self) -> &mut Self::Target {
51626         &mut self.inner
51627     }
51628 }
51629 impl<'a> VideoEncodeH265CapabilitiesEXTBuilder<'a> {
flags(mut self, flags: VideoEncodeH265CapabilityFlagsEXT) -> Self51630     pub fn flags(mut self, flags: VideoEncodeH265CapabilityFlagsEXT) -> Self {
51631         self.inner.flags = flags;
51632         self
51633     }
input_mode_flags(mut self, input_mode_flags: VideoEncodeH265InputModeFlagsEXT) -> Self51634     pub fn input_mode_flags(mut self, input_mode_flags: VideoEncodeH265InputModeFlagsEXT) -> Self {
51635         self.inner.input_mode_flags = input_mode_flags;
51636         self
51637     }
output_mode_flags( mut self, output_mode_flags: VideoEncodeH265OutputModeFlagsEXT, ) -> Self51638     pub fn output_mode_flags(
51639         mut self,
51640         output_mode_flags: VideoEncodeH265OutputModeFlagsEXT,
51641     ) -> Self {
51642         self.inner.output_mode_flags = output_mode_flags;
51643         self
51644     }
ctb_sizes(mut self, ctb_sizes: VideoEncodeH265CtbSizeFlagsEXT) -> Self51645     pub fn ctb_sizes(mut self, ctb_sizes: VideoEncodeH265CtbSizeFlagsEXT) -> Self {
51646         self.inner.ctb_sizes = ctb_sizes;
51647         self
51648     }
input_image_data_alignment(mut self, input_image_data_alignment: Extent2D) -> Self51649     pub fn input_image_data_alignment(mut self, input_image_data_alignment: Extent2D) -> Self {
51650         self.inner.input_image_data_alignment = input_image_data_alignment;
51651         self
51652     }
max_num_l0_reference_for_p(mut self, max_num_l0_reference_for_p: u8) -> Self51653     pub fn max_num_l0_reference_for_p(mut self, max_num_l0_reference_for_p: u8) -> Self {
51654         self.inner.max_num_l0_reference_for_p = max_num_l0_reference_for_p;
51655         self
51656     }
max_num_l0_reference_for_b(mut self, max_num_l0_reference_for_b: u8) -> Self51657     pub fn max_num_l0_reference_for_b(mut self, max_num_l0_reference_for_b: u8) -> Self {
51658         self.inner.max_num_l0_reference_for_b = max_num_l0_reference_for_b;
51659         self
51660     }
max_num_l1_reference(mut self, max_num_l1_reference: u8) -> Self51661     pub fn max_num_l1_reference(mut self, max_num_l1_reference: u8) -> Self {
51662         self.inner.max_num_l1_reference = max_num_l1_reference;
51663         self
51664     }
max_num_sub_layers(mut self, max_num_sub_layers: u8) -> Self51665     pub fn max_num_sub_layers(mut self, max_num_sub_layers: u8) -> Self {
51666         self.inner.max_num_sub_layers = max_num_sub_layers;
51667         self
51668     }
quality_level_count(mut self, quality_level_count: u8) -> Self51669     pub fn quality_level_count(mut self, quality_level_count: u8) -> Self {
51670         self.inner.quality_level_count = quality_level_count;
51671         self
51672     }
std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self51673     pub fn std_extension_version(mut self, std_extension_version: ExtensionProperties) -> Self {
51674         self.inner.std_extension_version = std_extension_version;
51675         self
51676     }
51677     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51678     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51679     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265CapabilitiesEXT51680     pub fn build(self) -> VideoEncodeH265CapabilitiesEXT {
51681         self.inner
51682     }
51683 }
51684 #[repr(C)]
51685 #[cfg_attr(feature = "debug", derive(Debug))]
51686 #[derive(Copy, Clone)]
51687 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265SessionCreateInfoEXT.html>"]
51688 pub struct VideoEncodeH265SessionCreateInfoEXT {
51689     pub s_type: StructureType,
51690     pub p_next: *const c_void,
51691     pub flags: VideoEncodeH265CreateFlagsEXT,
51692     pub p_std_extension_version: *const ExtensionProperties,
51693 }
51694 impl ::std::default::Default for VideoEncodeH265SessionCreateInfoEXT {
default() -> Self51695     fn default() -> Self {
51696         Self {
51697             s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT,
51698             p_next: ::std::ptr::null(),
51699             flags: VideoEncodeH265CreateFlagsEXT::default(),
51700             p_std_extension_version: ::std::ptr::null(),
51701         }
51702     }
51703 }
51704 impl VideoEncodeH265SessionCreateInfoEXT {
builder<'a>() -> VideoEncodeH265SessionCreateInfoEXTBuilder<'a>51705     pub fn builder<'a>() -> VideoEncodeH265SessionCreateInfoEXTBuilder<'a> {
51706         VideoEncodeH265SessionCreateInfoEXTBuilder {
51707             inner: Self::default(),
51708             marker: ::std::marker::PhantomData,
51709         }
51710     }
51711 }
51712 #[repr(transparent)]
51713 pub struct VideoEncodeH265SessionCreateInfoEXTBuilder<'a> {
51714     inner: VideoEncodeH265SessionCreateInfoEXT,
51715     marker: ::std::marker::PhantomData<&'a ()>,
51716 }
51717 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH265SessionCreateInfoEXTBuilder<'_> {}
51718 unsafe impl ExtendsVideoSessionCreateInfoKHR for VideoEncodeH265SessionCreateInfoEXT {}
51719 impl<'a> ::std::ops::Deref for VideoEncodeH265SessionCreateInfoEXTBuilder<'a> {
51720     type Target = VideoEncodeH265SessionCreateInfoEXT;
deref(&self) -> &Self::Target51721     fn deref(&self) -> &Self::Target {
51722         &self.inner
51723     }
51724 }
51725 impl<'a> ::std::ops::DerefMut for VideoEncodeH265SessionCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51726     fn deref_mut(&mut self) -> &mut Self::Target {
51727         &mut self.inner
51728     }
51729 }
51730 impl<'a> VideoEncodeH265SessionCreateInfoEXTBuilder<'a> {
flags(mut self, flags: VideoEncodeH265CreateFlagsEXT) -> Self51731     pub fn flags(mut self, flags: VideoEncodeH265CreateFlagsEXT) -> Self {
51732         self.inner.flags = flags;
51733         self
51734     }
std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self51735     pub fn std_extension_version(mut self, std_extension_version: &'a ExtensionProperties) -> Self {
51736         self.inner.p_std_extension_version = std_extension_version;
51737         self
51738     }
51739     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51740     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51741     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265SessionCreateInfoEXT51742     pub fn build(self) -> VideoEncodeH265SessionCreateInfoEXT {
51743         self.inner
51744     }
51745 }
51746 #[repr(C)]
51747 #[cfg_attr(feature = "debug", derive(Debug))]
51748 #[derive(Copy, Clone)]
51749 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265SessionParametersAddInfoEXT.html>"]
51750 pub struct VideoEncodeH265SessionParametersAddInfoEXT {
51751     pub s_type: StructureType,
51752     pub p_next: *const c_void,
51753     pub vps_std_count: u32,
51754     pub p_vps_std: *const StdVideoH265VideoParameterSet,
51755     pub sps_std_count: u32,
51756     pub p_sps_std: *const StdVideoH265SequenceParameterSet,
51757     pub pps_std_count: u32,
51758     pub p_pps_std: *const StdVideoH265PictureParameterSet,
51759 }
51760 impl ::std::default::Default for VideoEncodeH265SessionParametersAddInfoEXT {
default() -> Self51761     fn default() -> Self {
51762         Self {
51763             s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT,
51764             p_next: ::std::ptr::null(),
51765             vps_std_count: u32::default(),
51766             p_vps_std: ::std::ptr::null(),
51767             sps_std_count: u32::default(),
51768             p_sps_std: ::std::ptr::null(),
51769             pps_std_count: u32::default(),
51770             p_pps_std: ::std::ptr::null(),
51771         }
51772     }
51773 }
51774 impl VideoEncodeH265SessionParametersAddInfoEXT {
builder<'a>() -> VideoEncodeH265SessionParametersAddInfoEXTBuilder<'a>51775     pub fn builder<'a>() -> VideoEncodeH265SessionParametersAddInfoEXTBuilder<'a> {
51776         VideoEncodeH265SessionParametersAddInfoEXTBuilder {
51777             inner: Self::default(),
51778             marker: ::std::marker::PhantomData,
51779         }
51780     }
51781 }
51782 #[repr(transparent)]
51783 pub struct VideoEncodeH265SessionParametersAddInfoEXTBuilder<'a> {
51784     inner: VideoEncodeH265SessionParametersAddInfoEXT,
51785     marker: ::std::marker::PhantomData<&'a ()>,
51786 }
51787 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
51788     for VideoEncodeH265SessionParametersAddInfoEXTBuilder<'_>
51789 {
51790 }
51791 unsafe impl ExtendsVideoSessionParametersUpdateInfoKHR
51792     for VideoEncodeH265SessionParametersAddInfoEXT
51793 {
51794 }
51795 impl<'a> ::std::ops::Deref for VideoEncodeH265SessionParametersAddInfoEXTBuilder<'a> {
51796     type Target = VideoEncodeH265SessionParametersAddInfoEXT;
deref(&self) -> &Self::Target51797     fn deref(&self) -> &Self::Target {
51798         &self.inner
51799     }
51800 }
51801 impl<'a> ::std::ops::DerefMut for VideoEncodeH265SessionParametersAddInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51802     fn deref_mut(&mut self) -> &mut Self::Target {
51803         &mut self.inner
51804     }
51805 }
51806 impl<'a> VideoEncodeH265SessionParametersAddInfoEXTBuilder<'a> {
vps_std(mut self, vps_std: &'a [StdVideoH265VideoParameterSet]) -> Self51807     pub fn vps_std(mut self, vps_std: &'a [StdVideoH265VideoParameterSet]) -> Self {
51808         self.inner.vps_std_count = vps_std.len() as _;
51809         self.inner.p_vps_std = vps_std.as_ptr();
51810         self
51811     }
sps_std(mut self, sps_std: &'a [StdVideoH265SequenceParameterSet]) -> Self51812     pub fn sps_std(mut self, sps_std: &'a [StdVideoH265SequenceParameterSet]) -> Self {
51813         self.inner.sps_std_count = sps_std.len() as _;
51814         self.inner.p_sps_std = sps_std.as_ptr();
51815         self
51816     }
pps_std(mut self, pps_std: &'a [StdVideoH265PictureParameterSet]) -> Self51817     pub fn pps_std(mut self, pps_std: &'a [StdVideoH265PictureParameterSet]) -> Self {
51818         self.inner.pps_std_count = pps_std.len() as _;
51819         self.inner.p_pps_std = pps_std.as_ptr();
51820         self
51821     }
51822     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51823     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51824     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265SessionParametersAddInfoEXT51825     pub fn build(self) -> VideoEncodeH265SessionParametersAddInfoEXT {
51826         self.inner
51827     }
51828 }
51829 #[repr(C)]
51830 #[cfg_attr(feature = "debug", derive(Debug))]
51831 #[derive(Copy, Clone)]
51832 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265SessionParametersCreateInfoEXT.html>"]
51833 pub struct VideoEncodeH265SessionParametersCreateInfoEXT {
51834     pub s_type: StructureType,
51835     pub p_next: *const c_void,
51836     pub max_vps_std_count: u32,
51837     pub max_sps_std_count: u32,
51838     pub max_pps_std_count: u32,
51839     pub p_parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoEXT,
51840 }
51841 impl ::std::default::Default for VideoEncodeH265SessionParametersCreateInfoEXT {
default() -> Self51842     fn default() -> Self {
51843         Self {
51844             s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT,
51845             p_next: ::std::ptr::null(),
51846             max_vps_std_count: u32::default(),
51847             max_sps_std_count: u32::default(),
51848             max_pps_std_count: u32::default(),
51849             p_parameters_add_info: ::std::ptr::null(),
51850         }
51851     }
51852 }
51853 impl VideoEncodeH265SessionParametersCreateInfoEXT {
builder<'a>() -> VideoEncodeH265SessionParametersCreateInfoEXTBuilder<'a>51854     pub fn builder<'a>() -> VideoEncodeH265SessionParametersCreateInfoEXTBuilder<'a> {
51855         VideoEncodeH265SessionParametersCreateInfoEXTBuilder {
51856             inner: Self::default(),
51857             marker: ::std::marker::PhantomData,
51858         }
51859     }
51860 }
51861 #[repr(transparent)]
51862 pub struct VideoEncodeH265SessionParametersCreateInfoEXTBuilder<'a> {
51863     inner: VideoEncodeH265SessionParametersCreateInfoEXT,
51864     marker: ::std::marker::PhantomData<&'a ()>,
51865 }
51866 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
51867     for VideoEncodeH265SessionParametersCreateInfoEXTBuilder<'_>
51868 {
51869 }
51870 unsafe impl ExtendsVideoSessionParametersCreateInfoKHR
51871     for VideoEncodeH265SessionParametersCreateInfoEXT
51872 {
51873 }
51874 impl<'a> ::std::ops::Deref for VideoEncodeH265SessionParametersCreateInfoEXTBuilder<'a> {
51875     type Target = VideoEncodeH265SessionParametersCreateInfoEXT;
deref(&self) -> &Self::Target51876     fn deref(&self) -> &Self::Target {
51877         &self.inner
51878     }
51879 }
51880 impl<'a> ::std::ops::DerefMut for VideoEncodeH265SessionParametersCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51881     fn deref_mut(&mut self) -> &mut Self::Target {
51882         &mut self.inner
51883     }
51884 }
51885 impl<'a> VideoEncodeH265SessionParametersCreateInfoEXTBuilder<'a> {
max_vps_std_count(mut self, max_vps_std_count: u32) -> Self51886     pub fn max_vps_std_count(mut self, max_vps_std_count: u32) -> Self {
51887         self.inner.max_vps_std_count = max_vps_std_count;
51888         self
51889     }
max_sps_std_count(mut self, max_sps_std_count: u32) -> Self51890     pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
51891         self.inner.max_sps_std_count = max_sps_std_count;
51892         self
51893     }
max_pps_std_count(mut self, max_pps_std_count: u32) -> Self51894     pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
51895         self.inner.max_pps_std_count = max_pps_std_count;
51896         self
51897     }
parameters_add_info( mut self, parameters_add_info: &'a VideoEncodeH265SessionParametersAddInfoEXT, ) -> Self51898     pub fn parameters_add_info(
51899         mut self,
51900         parameters_add_info: &'a VideoEncodeH265SessionParametersAddInfoEXT,
51901     ) -> Self {
51902         self.inner.p_parameters_add_info = parameters_add_info;
51903         self
51904     }
51905     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51906     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51907     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265SessionParametersCreateInfoEXT51908     pub fn build(self) -> VideoEncodeH265SessionParametersCreateInfoEXT {
51909         self.inner
51910     }
51911 }
51912 #[repr(C)]
51913 #[cfg_attr(feature = "debug", derive(Debug))]
51914 #[derive(Copy, Clone)]
51915 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265VclFrameInfoEXT.html>"]
51916 pub struct VideoEncodeH265VclFrameInfoEXT {
51917     pub s_type: StructureType,
51918     pub p_next: *const c_void,
51919     pub p_reference_final_lists: *const VideoEncodeH265ReferenceListsEXT,
51920     pub nalu_slice_entry_count: u32,
51921     pub p_nalu_slice_entries: *const VideoEncodeH265NaluSliceEXT,
51922     pub p_current_picture_info: *const StdVideoEncodeH265PictureInfo,
51923 }
51924 impl ::std::default::Default for VideoEncodeH265VclFrameInfoEXT {
default() -> Self51925     fn default() -> Self {
51926         Self {
51927             s_type: StructureType::VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT,
51928             p_next: ::std::ptr::null(),
51929             p_reference_final_lists: ::std::ptr::null(),
51930             nalu_slice_entry_count: u32::default(),
51931             p_nalu_slice_entries: ::std::ptr::null(),
51932             p_current_picture_info: ::std::ptr::null(),
51933         }
51934     }
51935 }
51936 impl VideoEncodeH265VclFrameInfoEXT {
builder<'a>() -> VideoEncodeH265VclFrameInfoEXTBuilder<'a>51937     pub fn builder<'a>() -> VideoEncodeH265VclFrameInfoEXTBuilder<'a> {
51938         VideoEncodeH265VclFrameInfoEXTBuilder {
51939             inner: Self::default(),
51940             marker: ::std::marker::PhantomData,
51941         }
51942     }
51943 }
51944 #[repr(transparent)]
51945 pub struct VideoEncodeH265VclFrameInfoEXTBuilder<'a> {
51946     inner: VideoEncodeH265VclFrameInfoEXT,
51947     marker: ::std::marker::PhantomData<&'a ()>,
51948 }
51949 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH265VclFrameInfoEXTBuilder<'_> {}
51950 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH265VclFrameInfoEXT {}
51951 impl<'a> ::std::ops::Deref for VideoEncodeH265VclFrameInfoEXTBuilder<'a> {
51952     type Target = VideoEncodeH265VclFrameInfoEXT;
deref(&self) -> &Self::Target51953     fn deref(&self) -> &Self::Target {
51954         &self.inner
51955     }
51956 }
51957 impl<'a> ::std::ops::DerefMut for VideoEncodeH265VclFrameInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target51958     fn deref_mut(&mut self) -> &mut Self::Target {
51959         &mut self.inner
51960     }
51961 }
51962 impl<'a> VideoEncodeH265VclFrameInfoEXTBuilder<'a> {
reference_final_lists( mut self, reference_final_lists: &'a VideoEncodeH265ReferenceListsEXT, ) -> Self51963     pub fn reference_final_lists(
51964         mut self,
51965         reference_final_lists: &'a VideoEncodeH265ReferenceListsEXT,
51966     ) -> Self {
51967         self.inner.p_reference_final_lists = reference_final_lists;
51968         self
51969     }
nalu_slice_entries( mut self, nalu_slice_entries: &'a [VideoEncodeH265NaluSliceEXT], ) -> Self51970     pub fn nalu_slice_entries(
51971         mut self,
51972         nalu_slice_entries: &'a [VideoEncodeH265NaluSliceEXT],
51973     ) -> Self {
51974         self.inner.nalu_slice_entry_count = nalu_slice_entries.len() as _;
51975         self.inner.p_nalu_slice_entries = nalu_slice_entries.as_ptr();
51976         self
51977     }
current_picture_info( mut self, current_picture_info: &'a StdVideoEncodeH265PictureInfo, ) -> Self51978     pub fn current_picture_info(
51979         mut self,
51980         current_picture_info: &'a StdVideoEncodeH265PictureInfo,
51981     ) -> Self {
51982         self.inner.p_current_picture_info = current_picture_info;
51983         self
51984     }
51985     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
51986     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
51987     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265VclFrameInfoEXT51988     pub fn build(self) -> VideoEncodeH265VclFrameInfoEXT {
51989         self.inner
51990     }
51991 }
51992 #[repr(C)]
51993 #[cfg_attr(feature = "debug", derive(Debug))]
51994 #[derive(Copy, Clone)]
51995 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265EmitPictureParametersEXT.html>"]
51996 pub struct VideoEncodeH265EmitPictureParametersEXT {
51997     pub s_type: StructureType,
51998     pub p_next: *const c_void,
51999     pub vps_id: u8,
52000     pub sps_id: u8,
52001     pub emit_vps_enable: Bool32,
52002     pub emit_sps_enable: Bool32,
52003     pub pps_id_entry_count: u32,
52004     pub pps_id_entries: *const u8,
52005 }
52006 impl ::std::default::Default for VideoEncodeH265EmitPictureParametersEXT {
default() -> Self52007     fn default() -> Self {
52008         Self {
52009             s_type: StructureType::VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT,
52010             p_next: ::std::ptr::null(),
52011             vps_id: u8::default(),
52012             sps_id: u8::default(),
52013             emit_vps_enable: Bool32::default(),
52014             emit_sps_enable: Bool32::default(),
52015             pps_id_entry_count: u32::default(),
52016             pps_id_entries: ::std::ptr::null(),
52017         }
52018     }
52019 }
52020 impl VideoEncodeH265EmitPictureParametersEXT {
builder<'a>() -> VideoEncodeH265EmitPictureParametersEXTBuilder<'a>52021     pub fn builder<'a>() -> VideoEncodeH265EmitPictureParametersEXTBuilder<'a> {
52022         VideoEncodeH265EmitPictureParametersEXTBuilder {
52023             inner: Self::default(),
52024             marker: ::std::marker::PhantomData,
52025         }
52026     }
52027 }
52028 #[repr(transparent)]
52029 pub struct VideoEncodeH265EmitPictureParametersEXTBuilder<'a> {
52030     inner: VideoEncodeH265EmitPictureParametersEXT,
52031     marker: ::std::marker::PhantomData<&'a ()>,
52032 }
52033 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH265EmitPictureParametersEXTBuilder<'_> {}
52034 unsafe impl ExtendsVideoEncodeInfoKHR for VideoEncodeH265EmitPictureParametersEXT {}
52035 impl<'a> ::std::ops::Deref for VideoEncodeH265EmitPictureParametersEXTBuilder<'a> {
52036     type Target = VideoEncodeH265EmitPictureParametersEXT;
deref(&self) -> &Self::Target52037     fn deref(&self) -> &Self::Target {
52038         &self.inner
52039     }
52040 }
52041 impl<'a> ::std::ops::DerefMut for VideoEncodeH265EmitPictureParametersEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52042     fn deref_mut(&mut self) -> &mut Self::Target {
52043         &mut self.inner
52044     }
52045 }
52046 impl<'a> VideoEncodeH265EmitPictureParametersEXTBuilder<'a> {
vps_id(mut self, vps_id: u8) -> Self52047     pub fn vps_id(mut self, vps_id: u8) -> Self {
52048         self.inner.vps_id = vps_id;
52049         self
52050     }
sps_id(mut self, sps_id: u8) -> Self52051     pub fn sps_id(mut self, sps_id: u8) -> Self {
52052         self.inner.sps_id = sps_id;
52053         self
52054     }
emit_vps_enable(mut self, emit_vps_enable: bool) -> Self52055     pub fn emit_vps_enable(mut self, emit_vps_enable: bool) -> Self {
52056         self.inner.emit_vps_enable = emit_vps_enable.into();
52057         self
52058     }
emit_sps_enable(mut self, emit_sps_enable: bool) -> Self52059     pub fn emit_sps_enable(mut self, emit_sps_enable: bool) -> Self {
52060         self.inner.emit_sps_enable = emit_sps_enable.into();
52061         self
52062     }
pps_id_entries(mut self, pps_id_entries: &'a [u8]) -> Self52063     pub fn pps_id_entries(mut self, pps_id_entries: &'a [u8]) -> Self {
52064         self.inner.pps_id_entry_count = pps_id_entries.len() as _;
52065         self.inner.pps_id_entries = pps_id_entries.as_ptr();
52066         self
52067     }
52068     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52069     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52070     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265EmitPictureParametersEXT52071     pub fn build(self) -> VideoEncodeH265EmitPictureParametersEXT {
52072         self.inner
52073     }
52074 }
52075 #[repr(C)]
52076 #[cfg_attr(feature = "debug", derive(Debug))]
52077 #[derive(Copy, Clone)]
52078 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265NaluSliceEXT.html>"]
52079 pub struct VideoEncodeH265NaluSliceEXT {
52080     pub s_type: StructureType,
52081     pub p_next: *const c_void,
52082     pub ctb_count: u32,
52083     pub p_reference_final_lists: *const VideoEncodeH265ReferenceListsEXT,
52084     pub p_slice_header_std: *const StdVideoEncodeH265SliceHeader,
52085 }
52086 impl ::std::default::Default for VideoEncodeH265NaluSliceEXT {
default() -> Self52087     fn default() -> Self {
52088         Self {
52089             s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_EXT,
52090             p_next: ::std::ptr::null(),
52091             ctb_count: u32::default(),
52092             p_reference_final_lists: ::std::ptr::null(),
52093             p_slice_header_std: ::std::ptr::null(),
52094         }
52095     }
52096 }
52097 impl VideoEncodeH265NaluSliceEXT {
builder<'a>() -> VideoEncodeH265NaluSliceEXTBuilder<'a>52098     pub fn builder<'a>() -> VideoEncodeH265NaluSliceEXTBuilder<'a> {
52099         VideoEncodeH265NaluSliceEXTBuilder {
52100             inner: Self::default(),
52101             marker: ::std::marker::PhantomData,
52102         }
52103     }
52104 }
52105 #[repr(transparent)]
52106 pub struct VideoEncodeH265NaluSliceEXTBuilder<'a> {
52107     inner: VideoEncodeH265NaluSliceEXT,
52108     marker: ::std::marker::PhantomData<&'a ()>,
52109 }
52110 impl<'a> ::std::ops::Deref for VideoEncodeH265NaluSliceEXTBuilder<'a> {
52111     type Target = VideoEncodeH265NaluSliceEXT;
deref(&self) -> &Self::Target52112     fn deref(&self) -> &Self::Target {
52113         &self.inner
52114     }
52115 }
52116 impl<'a> ::std::ops::DerefMut for VideoEncodeH265NaluSliceEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52117     fn deref_mut(&mut self) -> &mut Self::Target {
52118         &mut self.inner
52119     }
52120 }
52121 impl<'a> VideoEncodeH265NaluSliceEXTBuilder<'a> {
ctb_count(mut self, ctb_count: u32) -> Self52122     pub fn ctb_count(mut self, ctb_count: u32) -> Self {
52123         self.inner.ctb_count = ctb_count;
52124         self
52125     }
reference_final_lists( mut self, reference_final_lists: &'a VideoEncodeH265ReferenceListsEXT, ) -> Self52126     pub fn reference_final_lists(
52127         mut self,
52128         reference_final_lists: &'a VideoEncodeH265ReferenceListsEXT,
52129     ) -> Self {
52130         self.inner.p_reference_final_lists = reference_final_lists;
52131         self
52132     }
slice_header_std(mut self, slice_header_std: &'a StdVideoEncodeH265SliceHeader) -> Self52133     pub fn slice_header_std(mut self, slice_header_std: &'a StdVideoEncodeH265SliceHeader) -> Self {
52134         self.inner.p_slice_header_std = slice_header_std;
52135         self
52136     }
52137     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52138     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52139     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265NaluSliceEXT52140     pub fn build(self) -> VideoEncodeH265NaluSliceEXT {
52141         self.inner
52142     }
52143 }
52144 #[repr(C)]
52145 #[cfg_attr(feature = "debug", derive(Debug))]
52146 #[derive(Copy, Clone)]
52147 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265RateControlInfoEXT.html>"]
52148 pub struct VideoEncodeH265RateControlInfoEXT {
52149     pub s_type: StructureType,
52150     pub p_next: *const c_void,
52151     pub gop_frame_count: u32,
52152     pub idr_period: u32,
52153     pub consecutive_b_frame_count: u32,
52154     pub rate_control_structure: VideoEncodeH265RateControlStructureFlagsEXT,
52155     pub sub_layer_count: u8,
52156 }
52157 impl ::std::default::Default for VideoEncodeH265RateControlInfoEXT {
default() -> Self52158     fn default() -> Self {
52159         Self {
52160             s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT,
52161             p_next: ::std::ptr::null(),
52162             gop_frame_count: u32::default(),
52163             idr_period: u32::default(),
52164             consecutive_b_frame_count: u32::default(),
52165             rate_control_structure: VideoEncodeH265RateControlStructureFlagsEXT::default(),
52166             sub_layer_count: u8::default(),
52167         }
52168     }
52169 }
52170 impl VideoEncodeH265RateControlInfoEXT {
builder<'a>() -> VideoEncodeH265RateControlInfoEXTBuilder<'a>52171     pub fn builder<'a>() -> VideoEncodeH265RateControlInfoEXTBuilder<'a> {
52172         VideoEncodeH265RateControlInfoEXTBuilder {
52173             inner: Self::default(),
52174             marker: ::std::marker::PhantomData,
52175         }
52176     }
52177 }
52178 #[repr(transparent)]
52179 pub struct VideoEncodeH265RateControlInfoEXTBuilder<'a> {
52180     inner: VideoEncodeH265RateControlInfoEXT,
52181     marker: ::std::marker::PhantomData<&'a ()>,
52182 }
52183 unsafe impl ExtendsVideoEncodeRateControlInfoKHR for VideoEncodeH265RateControlInfoEXTBuilder<'_> {}
52184 unsafe impl ExtendsVideoEncodeRateControlInfoKHR for VideoEncodeH265RateControlInfoEXT {}
52185 impl<'a> ::std::ops::Deref for VideoEncodeH265RateControlInfoEXTBuilder<'a> {
52186     type Target = VideoEncodeH265RateControlInfoEXT;
deref(&self) -> &Self::Target52187     fn deref(&self) -> &Self::Target {
52188         &self.inner
52189     }
52190 }
52191 impl<'a> ::std::ops::DerefMut for VideoEncodeH265RateControlInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52192     fn deref_mut(&mut self) -> &mut Self::Target {
52193         &mut self.inner
52194     }
52195 }
52196 impl<'a> VideoEncodeH265RateControlInfoEXTBuilder<'a> {
gop_frame_count(mut self, gop_frame_count: u32) -> Self52197     pub fn gop_frame_count(mut self, gop_frame_count: u32) -> Self {
52198         self.inner.gop_frame_count = gop_frame_count;
52199         self
52200     }
idr_period(mut self, idr_period: u32) -> Self52201     pub fn idr_period(mut self, idr_period: u32) -> Self {
52202         self.inner.idr_period = idr_period;
52203         self
52204     }
consecutive_b_frame_count(mut self, consecutive_b_frame_count: u32) -> Self52205     pub fn consecutive_b_frame_count(mut self, consecutive_b_frame_count: u32) -> Self {
52206         self.inner.consecutive_b_frame_count = consecutive_b_frame_count;
52207         self
52208     }
rate_control_structure( mut self, rate_control_structure: VideoEncodeH265RateControlStructureFlagsEXT, ) -> Self52209     pub fn rate_control_structure(
52210         mut self,
52211         rate_control_structure: VideoEncodeH265RateControlStructureFlagsEXT,
52212     ) -> Self {
52213         self.inner.rate_control_structure = rate_control_structure;
52214         self
52215     }
sub_layer_count(mut self, sub_layer_count: u8) -> Self52216     pub fn sub_layer_count(mut self, sub_layer_count: u8) -> Self {
52217         self.inner.sub_layer_count = sub_layer_count;
52218         self
52219     }
52220     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52221     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52222     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265RateControlInfoEXT52223     pub fn build(self) -> VideoEncodeH265RateControlInfoEXT {
52224         self.inner
52225     }
52226 }
52227 #[repr(C)]
52228 #[cfg_attr(feature = "debug", derive(Debug))]
52229 #[derive(Copy, Clone, Default)]
52230 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265QpEXT.html>"]
52231 pub struct VideoEncodeH265QpEXT {
52232     pub qp_i: i32,
52233     pub qp_p: i32,
52234     pub qp_b: i32,
52235 }
52236 impl VideoEncodeH265QpEXT {
builder<'a>() -> VideoEncodeH265QpEXTBuilder<'a>52237     pub fn builder<'a>() -> VideoEncodeH265QpEXTBuilder<'a> {
52238         VideoEncodeH265QpEXTBuilder {
52239             inner: Self::default(),
52240             marker: ::std::marker::PhantomData,
52241         }
52242     }
52243 }
52244 #[repr(transparent)]
52245 pub struct VideoEncodeH265QpEXTBuilder<'a> {
52246     inner: VideoEncodeH265QpEXT,
52247     marker: ::std::marker::PhantomData<&'a ()>,
52248 }
52249 impl<'a> ::std::ops::Deref for VideoEncodeH265QpEXTBuilder<'a> {
52250     type Target = VideoEncodeH265QpEXT;
deref(&self) -> &Self::Target52251     fn deref(&self) -> &Self::Target {
52252         &self.inner
52253     }
52254 }
52255 impl<'a> ::std::ops::DerefMut for VideoEncodeH265QpEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52256     fn deref_mut(&mut self) -> &mut Self::Target {
52257         &mut self.inner
52258     }
52259 }
52260 impl<'a> VideoEncodeH265QpEXTBuilder<'a> {
qp_i(mut self, qp_i: i32) -> Self52261     pub fn qp_i(mut self, qp_i: i32) -> Self {
52262         self.inner.qp_i = qp_i;
52263         self
52264     }
qp_p(mut self, qp_p: i32) -> Self52265     pub fn qp_p(mut self, qp_p: i32) -> Self {
52266         self.inner.qp_p = qp_p;
52267         self
52268     }
qp_b(mut self, qp_b: i32) -> Self52269     pub fn qp_b(mut self, qp_b: i32) -> Self {
52270         self.inner.qp_b = qp_b;
52271         self
52272     }
52273     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52274     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52275     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265QpEXT52276     pub fn build(self) -> VideoEncodeH265QpEXT {
52277         self.inner
52278     }
52279 }
52280 #[repr(C)]
52281 #[cfg_attr(feature = "debug", derive(Debug))]
52282 #[derive(Copy, Clone, Default)]
52283 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265FrameSizeEXT.html>"]
52284 pub struct VideoEncodeH265FrameSizeEXT {
52285     pub frame_i_size: u32,
52286     pub frame_p_size: u32,
52287     pub frame_b_size: u32,
52288 }
52289 impl VideoEncodeH265FrameSizeEXT {
builder<'a>() -> VideoEncodeH265FrameSizeEXTBuilder<'a>52290     pub fn builder<'a>() -> VideoEncodeH265FrameSizeEXTBuilder<'a> {
52291         VideoEncodeH265FrameSizeEXTBuilder {
52292             inner: Self::default(),
52293             marker: ::std::marker::PhantomData,
52294         }
52295     }
52296 }
52297 #[repr(transparent)]
52298 pub struct VideoEncodeH265FrameSizeEXTBuilder<'a> {
52299     inner: VideoEncodeH265FrameSizeEXT,
52300     marker: ::std::marker::PhantomData<&'a ()>,
52301 }
52302 impl<'a> ::std::ops::Deref for VideoEncodeH265FrameSizeEXTBuilder<'a> {
52303     type Target = VideoEncodeH265FrameSizeEXT;
deref(&self) -> &Self::Target52304     fn deref(&self) -> &Self::Target {
52305         &self.inner
52306     }
52307 }
52308 impl<'a> ::std::ops::DerefMut for VideoEncodeH265FrameSizeEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52309     fn deref_mut(&mut self) -> &mut Self::Target {
52310         &mut self.inner
52311     }
52312 }
52313 impl<'a> VideoEncodeH265FrameSizeEXTBuilder<'a> {
frame_i_size(mut self, frame_i_size: u32) -> Self52314     pub fn frame_i_size(mut self, frame_i_size: u32) -> Self {
52315         self.inner.frame_i_size = frame_i_size;
52316         self
52317     }
frame_p_size(mut self, frame_p_size: u32) -> Self52318     pub fn frame_p_size(mut self, frame_p_size: u32) -> Self {
52319         self.inner.frame_p_size = frame_p_size;
52320         self
52321     }
frame_b_size(mut self, frame_b_size: u32) -> Self52322     pub fn frame_b_size(mut self, frame_b_size: u32) -> Self {
52323         self.inner.frame_b_size = frame_b_size;
52324         self
52325     }
52326     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52327     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52328     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265FrameSizeEXT52329     pub fn build(self) -> VideoEncodeH265FrameSizeEXT {
52330         self.inner
52331     }
52332 }
52333 #[repr(C)]
52334 #[cfg_attr(feature = "debug", derive(Debug))]
52335 #[derive(Copy, Clone)]
52336 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265RateControlLayerInfoEXT.html>"]
52337 pub struct VideoEncodeH265RateControlLayerInfoEXT {
52338     pub s_type: StructureType,
52339     pub p_next: *const c_void,
52340     pub temporal_id: u8,
52341     pub use_initial_rc_qp: Bool32,
52342     pub initial_rc_qp: VideoEncodeH265QpEXT,
52343     pub use_min_qp: Bool32,
52344     pub min_qp: VideoEncodeH265QpEXT,
52345     pub use_max_qp: Bool32,
52346     pub max_qp: VideoEncodeH265QpEXT,
52347     pub use_max_frame_size: Bool32,
52348     pub max_frame_size: VideoEncodeH265FrameSizeEXT,
52349 }
52350 impl ::std::default::Default for VideoEncodeH265RateControlLayerInfoEXT {
default() -> Self52351     fn default() -> Self {
52352         Self {
52353             s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT,
52354             p_next: ::std::ptr::null(),
52355             temporal_id: u8::default(),
52356             use_initial_rc_qp: Bool32::default(),
52357             initial_rc_qp: VideoEncodeH265QpEXT::default(),
52358             use_min_qp: Bool32::default(),
52359             min_qp: VideoEncodeH265QpEXT::default(),
52360             use_max_qp: Bool32::default(),
52361             max_qp: VideoEncodeH265QpEXT::default(),
52362             use_max_frame_size: Bool32::default(),
52363             max_frame_size: VideoEncodeH265FrameSizeEXT::default(),
52364         }
52365     }
52366 }
52367 impl VideoEncodeH265RateControlLayerInfoEXT {
builder<'a>() -> VideoEncodeH265RateControlLayerInfoEXTBuilder<'a>52368     pub fn builder<'a>() -> VideoEncodeH265RateControlLayerInfoEXTBuilder<'a> {
52369         VideoEncodeH265RateControlLayerInfoEXTBuilder {
52370             inner: Self::default(),
52371             marker: ::std::marker::PhantomData,
52372         }
52373     }
52374 }
52375 #[repr(transparent)]
52376 pub struct VideoEncodeH265RateControlLayerInfoEXTBuilder<'a> {
52377     inner: VideoEncodeH265RateControlLayerInfoEXT,
52378     marker: ::std::marker::PhantomData<&'a ()>,
52379 }
52380 unsafe impl ExtendsVideoEncodeRateControlLayerInfoKHR
52381     for VideoEncodeH265RateControlLayerInfoEXTBuilder<'_>
52382 {
52383 }
52384 unsafe impl ExtendsVideoEncodeRateControlLayerInfoKHR for VideoEncodeH265RateControlLayerInfoEXT {}
52385 impl<'a> ::std::ops::Deref for VideoEncodeH265RateControlLayerInfoEXTBuilder<'a> {
52386     type Target = VideoEncodeH265RateControlLayerInfoEXT;
deref(&self) -> &Self::Target52387     fn deref(&self) -> &Self::Target {
52388         &self.inner
52389     }
52390 }
52391 impl<'a> ::std::ops::DerefMut for VideoEncodeH265RateControlLayerInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52392     fn deref_mut(&mut self) -> &mut Self::Target {
52393         &mut self.inner
52394     }
52395 }
52396 impl<'a> VideoEncodeH265RateControlLayerInfoEXTBuilder<'a> {
temporal_id(mut self, temporal_id: u8) -> Self52397     pub fn temporal_id(mut self, temporal_id: u8) -> Self {
52398         self.inner.temporal_id = temporal_id;
52399         self
52400     }
use_initial_rc_qp(mut self, use_initial_rc_qp: bool) -> Self52401     pub fn use_initial_rc_qp(mut self, use_initial_rc_qp: bool) -> Self {
52402         self.inner.use_initial_rc_qp = use_initial_rc_qp.into();
52403         self
52404     }
initial_rc_qp(mut self, initial_rc_qp: VideoEncodeH265QpEXT) -> Self52405     pub fn initial_rc_qp(mut self, initial_rc_qp: VideoEncodeH265QpEXT) -> Self {
52406         self.inner.initial_rc_qp = initial_rc_qp;
52407         self
52408     }
use_min_qp(mut self, use_min_qp: bool) -> Self52409     pub fn use_min_qp(mut self, use_min_qp: bool) -> Self {
52410         self.inner.use_min_qp = use_min_qp.into();
52411         self
52412     }
min_qp(mut self, min_qp: VideoEncodeH265QpEXT) -> Self52413     pub fn min_qp(mut self, min_qp: VideoEncodeH265QpEXT) -> Self {
52414         self.inner.min_qp = min_qp;
52415         self
52416     }
use_max_qp(mut self, use_max_qp: bool) -> Self52417     pub fn use_max_qp(mut self, use_max_qp: bool) -> Self {
52418         self.inner.use_max_qp = use_max_qp.into();
52419         self
52420     }
max_qp(mut self, max_qp: VideoEncodeH265QpEXT) -> Self52421     pub fn max_qp(mut self, max_qp: VideoEncodeH265QpEXT) -> Self {
52422         self.inner.max_qp = max_qp;
52423         self
52424     }
use_max_frame_size(mut self, use_max_frame_size: bool) -> Self52425     pub fn use_max_frame_size(mut self, use_max_frame_size: bool) -> Self {
52426         self.inner.use_max_frame_size = use_max_frame_size.into();
52427         self
52428     }
max_frame_size(mut self, max_frame_size: VideoEncodeH265FrameSizeEXT) -> Self52429     pub fn max_frame_size(mut self, max_frame_size: VideoEncodeH265FrameSizeEXT) -> Self {
52430         self.inner.max_frame_size = max_frame_size;
52431         self
52432     }
52433     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52434     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52435     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265RateControlLayerInfoEXT52436     pub fn build(self) -> VideoEncodeH265RateControlLayerInfoEXT {
52437         self.inner
52438     }
52439 }
52440 #[repr(C)]
52441 #[cfg_attr(feature = "debug", derive(Debug))]
52442 #[derive(Copy, Clone)]
52443 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265ProfileEXT.html>"]
52444 pub struct VideoEncodeH265ProfileEXT {
52445     pub s_type: StructureType,
52446     pub p_next: *const c_void,
52447     pub std_profile_idc: StdVideoH265ProfileIdc,
52448 }
52449 impl ::std::default::Default for VideoEncodeH265ProfileEXT {
default() -> Self52450     fn default() -> Self {
52451         Self {
52452             s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_EXT,
52453             p_next: ::std::ptr::null(),
52454             std_profile_idc: StdVideoH265ProfileIdc::default(),
52455         }
52456     }
52457 }
52458 impl VideoEncodeH265ProfileEXT {
builder<'a>() -> VideoEncodeH265ProfileEXTBuilder<'a>52459     pub fn builder<'a>() -> VideoEncodeH265ProfileEXTBuilder<'a> {
52460         VideoEncodeH265ProfileEXTBuilder {
52461             inner: Self::default(),
52462             marker: ::std::marker::PhantomData,
52463         }
52464     }
52465 }
52466 #[repr(transparent)]
52467 pub struct VideoEncodeH265ProfileEXTBuilder<'a> {
52468     inner: VideoEncodeH265ProfileEXT,
52469     marker: ::std::marker::PhantomData<&'a ()>,
52470 }
52471 unsafe impl ExtendsVideoProfileKHR for VideoEncodeH265ProfileEXTBuilder<'_> {}
52472 unsafe impl ExtendsVideoProfileKHR for VideoEncodeH265ProfileEXT {}
52473 unsafe impl ExtendsQueryPoolCreateInfo for VideoEncodeH265ProfileEXTBuilder<'_> {}
52474 unsafe impl ExtendsQueryPoolCreateInfo for VideoEncodeH265ProfileEXT {}
52475 unsafe impl ExtendsFormatProperties2 for VideoEncodeH265ProfileEXTBuilder<'_> {}
52476 unsafe impl ExtendsFormatProperties2 for VideoEncodeH265ProfileEXT {}
52477 unsafe impl ExtendsImageCreateInfo for VideoEncodeH265ProfileEXTBuilder<'_> {}
52478 unsafe impl ExtendsImageCreateInfo for VideoEncodeH265ProfileEXT {}
52479 unsafe impl ExtendsImageViewCreateInfo for VideoEncodeH265ProfileEXTBuilder<'_> {}
52480 unsafe impl ExtendsImageViewCreateInfo for VideoEncodeH265ProfileEXT {}
52481 unsafe impl ExtendsBufferCreateInfo for VideoEncodeH265ProfileEXTBuilder<'_> {}
52482 unsafe impl ExtendsBufferCreateInfo for VideoEncodeH265ProfileEXT {}
52483 impl<'a> ::std::ops::Deref for VideoEncodeH265ProfileEXTBuilder<'a> {
52484     type Target = VideoEncodeH265ProfileEXT;
deref(&self) -> &Self::Target52485     fn deref(&self) -> &Self::Target {
52486         &self.inner
52487     }
52488 }
52489 impl<'a> ::std::ops::DerefMut for VideoEncodeH265ProfileEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52490     fn deref_mut(&mut self) -> &mut Self::Target {
52491         &mut self.inner
52492     }
52493 }
52494 impl<'a> VideoEncodeH265ProfileEXTBuilder<'a> {
std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self52495     pub fn std_profile_idc(mut self, std_profile_idc: StdVideoH265ProfileIdc) -> Self {
52496         self.inner.std_profile_idc = std_profile_idc;
52497         self
52498     }
52499     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52500     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52501     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265ProfileEXT52502     pub fn build(self) -> VideoEncodeH265ProfileEXT {
52503         self.inner
52504     }
52505 }
52506 #[repr(C)]
52507 #[cfg_attr(feature = "debug", derive(Debug))]
52508 #[derive(Copy, Clone)]
52509 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265DpbSlotInfoEXT.html>"]
52510 pub struct VideoEncodeH265DpbSlotInfoEXT {
52511     pub s_type: StructureType,
52512     pub p_next: *const c_void,
52513     pub slot_index: i8,
52514     pub p_std_reference_info: *const StdVideoEncodeH265ReferenceInfo,
52515 }
52516 impl ::std::default::Default for VideoEncodeH265DpbSlotInfoEXT {
default() -> Self52517     fn default() -> Self {
52518         Self {
52519             s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT,
52520             p_next: ::std::ptr::null(),
52521             slot_index: i8::default(),
52522             p_std_reference_info: ::std::ptr::null(),
52523         }
52524     }
52525 }
52526 impl VideoEncodeH265DpbSlotInfoEXT {
builder<'a>() -> VideoEncodeH265DpbSlotInfoEXTBuilder<'a>52527     pub fn builder<'a>() -> VideoEncodeH265DpbSlotInfoEXTBuilder<'a> {
52528         VideoEncodeH265DpbSlotInfoEXTBuilder {
52529             inner: Self::default(),
52530             marker: ::std::marker::PhantomData,
52531         }
52532     }
52533 }
52534 #[repr(transparent)]
52535 pub struct VideoEncodeH265DpbSlotInfoEXTBuilder<'a> {
52536     inner: VideoEncodeH265DpbSlotInfoEXT,
52537     marker: ::std::marker::PhantomData<&'a ()>,
52538 }
52539 impl<'a> ::std::ops::Deref for VideoEncodeH265DpbSlotInfoEXTBuilder<'a> {
52540     type Target = VideoEncodeH265DpbSlotInfoEXT;
deref(&self) -> &Self::Target52541     fn deref(&self) -> &Self::Target {
52542         &self.inner
52543     }
52544 }
52545 impl<'a> ::std::ops::DerefMut for VideoEncodeH265DpbSlotInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52546     fn deref_mut(&mut self) -> &mut Self::Target {
52547         &mut self.inner
52548     }
52549 }
52550 impl<'a> VideoEncodeH265DpbSlotInfoEXTBuilder<'a> {
slot_index(mut self, slot_index: i8) -> Self52551     pub fn slot_index(mut self, slot_index: i8) -> Self {
52552         self.inner.slot_index = slot_index;
52553         self
52554     }
std_reference_info( mut self, std_reference_info: &'a StdVideoEncodeH265ReferenceInfo, ) -> Self52555     pub fn std_reference_info(
52556         mut self,
52557         std_reference_info: &'a StdVideoEncodeH265ReferenceInfo,
52558     ) -> Self {
52559         self.inner.p_std_reference_info = std_reference_info;
52560         self
52561     }
52562     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52563     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52564     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265DpbSlotInfoEXT52565     pub fn build(self) -> VideoEncodeH265DpbSlotInfoEXT {
52566         self.inner
52567     }
52568 }
52569 #[repr(C)]
52570 #[cfg_attr(feature = "debug", derive(Debug))]
52571 #[derive(Copy, Clone)]
52572 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVideoEncodeH265ReferenceListsEXT.html>"]
52573 pub struct VideoEncodeH265ReferenceListsEXT {
52574     pub s_type: StructureType,
52575     pub p_next: *const c_void,
52576     pub reference_list0_entry_count: u8,
52577     pub p_reference_list0_entries: *const VideoEncodeH265DpbSlotInfoEXT,
52578     pub reference_list1_entry_count: u8,
52579     pub p_reference_list1_entries: *const VideoEncodeH265DpbSlotInfoEXT,
52580     pub p_reference_modifications: *const StdVideoEncodeH265ReferenceModifications,
52581 }
52582 impl ::std::default::Default for VideoEncodeH265ReferenceListsEXT {
default() -> Self52583     fn default() -> Self {
52584         Self {
52585             s_type: StructureType::VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT,
52586             p_next: ::std::ptr::null(),
52587             reference_list0_entry_count: u8::default(),
52588             p_reference_list0_entries: ::std::ptr::null(),
52589             reference_list1_entry_count: u8::default(),
52590             p_reference_list1_entries: ::std::ptr::null(),
52591             p_reference_modifications: ::std::ptr::null(),
52592         }
52593     }
52594 }
52595 impl VideoEncodeH265ReferenceListsEXT {
builder<'a>() -> VideoEncodeH265ReferenceListsEXTBuilder<'a>52596     pub fn builder<'a>() -> VideoEncodeH265ReferenceListsEXTBuilder<'a> {
52597         VideoEncodeH265ReferenceListsEXTBuilder {
52598             inner: Self::default(),
52599             marker: ::std::marker::PhantomData,
52600         }
52601     }
52602 }
52603 #[repr(transparent)]
52604 pub struct VideoEncodeH265ReferenceListsEXTBuilder<'a> {
52605     inner: VideoEncodeH265ReferenceListsEXT,
52606     marker: ::std::marker::PhantomData<&'a ()>,
52607 }
52608 impl<'a> ::std::ops::Deref for VideoEncodeH265ReferenceListsEXTBuilder<'a> {
52609     type Target = VideoEncodeH265ReferenceListsEXT;
deref(&self) -> &Self::Target52610     fn deref(&self) -> &Self::Target {
52611         &self.inner
52612     }
52613 }
52614 impl<'a> ::std::ops::DerefMut for VideoEncodeH265ReferenceListsEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52615     fn deref_mut(&mut self) -> &mut Self::Target {
52616         &mut self.inner
52617     }
52618 }
52619 impl<'a> VideoEncodeH265ReferenceListsEXTBuilder<'a> {
reference_list0_entries( mut self, reference_list0_entries: &'a [VideoEncodeH265DpbSlotInfoEXT], ) -> Self52620     pub fn reference_list0_entries(
52621         mut self,
52622         reference_list0_entries: &'a [VideoEncodeH265DpbSlotInfoEXT],
52623     ) -> Self {
52624         self.inner.reference_list0_entry_count = reference_list0_entries.len() as _;
52625         self.inner.p_reference_list0_entries = reference_list0_entries.as_ptr();
52626         self
52627     }
reference_list1_entries( mut self, reference_list1_entries: &'a [VideoEncodeH265DpbSlotInfoEXT], ) -> Self52628     pub fn reference_list1_entries(
52629         mut self,
52630         reference_list1_entries: &'a [VideoEncodeH265DpbSlotInfoEXT],
52631     ) -> Self {
52632         self.inner.reference_list1_entry_count = reference_list1_entries.len() as _;
52633         self.inner.p_reference_list1_entries = reference_list1_entries.as_ptr();
52634         self
52635     }
reference_modifications( mut self, reference_modifications: &'a StdVideoEncodeH265ReferenceModifications, ) -> Self52636     pub fn reference_modifications(
52637         mut self,
52638         reference_modifications: &'a StdVideoEncodeH265ReferenceModifications,
52639     ) -> Self {
52640         self.inner.p_reference_modifications = reference_modifications;
52641         self
52642     }
52643     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52644     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52645     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> VideoEncodeH265ReferenceListsEXT52646     pub fn build(self) -> VideoEncodeH265ReferenceListsEXT {
52647         self.inner
52648     }
52649 }
52650 #[repr(C)]
52651 #[cfg_attr(feature = "debug", derive(Debug))]
52652 #[derive(Copy, Clone)]
52653 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>"]
52654 pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
52655     pub s_type: StructureType,
52656     pub p_next: *mut c_void,
52657     pub inherited_viewport_scissor2_d: Bool32,
52658 }
52659 impl ::std::default::Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
default() -> Self52660     fn default() -> Self {
52661         Self {
52662             s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
52663             p_next: ::std::ptr::null_mut(),
52664             inherited_viewport_scissor2_d: Bool32::default(),
52665         }
52666     }
52667 }
52668 impl PhysicalDeviceInheritedViewportScissorFeaturesNV {
builder<'a>() -> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a>52669     pub fn builder<'a>() -> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
52670         PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder {
52671             inner: Self::default(),
52672             marker: ::std::marker::PhantomData,
52673         }
52674     }
52675 }
52676 #[repr(transparent)]
52677 pub struct PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
52678     inner: PhysicalDeviceInheritedViewportScissorFeaturesNV,
52679     marker: ::std::marker::PhantomData<&'a ()>,
52680 }
52681 unsafe impl ExtendsPhysicalDeviceFeatures2
52682     for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'_>
52683 {
52684 }
52685 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
52686 unsafe impl ExtendsDeviceCreateInfo
52687     for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'_>
52688 {
52689 }
52690 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
52691 impl<'a> ::std::ops::Deref for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
52692     type Target = PhysicalDeviceInheritedViewportScissorFeaturesNV;
deref(&self) -> &Self::Target52693     fn deref(&self) -> &Self::Target {
52694         &self.inner
52695     }
52696 }
52697 impl<'a> ::std::ops::DerefMut for PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52698     fn deref_mut(&mut self) -> &mut Self::Target {
52699         &mut self.inner
52700     }
52701 }
52702 impl<'a> PhysicalDeviceInheritedViewportScissorFeaturesNVBuilder<'a> {
inherited_viewport_scissor2_d(mut self, inherited_viewport_scissor2_d: bool) -> Self52703     pub fn inherited_viewport_scissor2_d(mut self, inherited_viewport_scissor2_d: bool) -> Self {
52704         self.inner.inherited_viewport_scissor2_d = inherited_viewport_scissor2_d.into();
52705         self
52706     }
52707     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52708     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52709     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceInheritedViewportScissorFeaturesNV52710     pub fn build(self) -> PhysicalDeviceInheritedViewportScissorFeaturesNV {
52711         self.inner
52712     }
52713 }
52714 #[repr(C)]
52715 #[cfg_attr(feature = "debug", derive(Debug))]
52716 #[derive(Copy, Clone)]
52717 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>"]
52718 pub struct CommandBufferInheritanceViewportScissorInfoNV {
52719     pub s_type: StructureType,
52720     pub p_next: *const c_void,
52721     pub viewport_scissor2_d: Bool32,
52722     pub viewport_depth_count: u32,
52723     pub p_viewport_depths: *const Viewport,
52724 }
52725 impl ::std::default::Default for CommandBufferInheritanceViewportScissorInfoNV {
default() -> Self52726     fn default() -> Self {
52727         Self {
52728             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
52729             p_next: ::std::ptr::null(),
52730             viewport_scissor2_d: Bool32::default(),
52731             viewport_depth_count: u32::default(),
52732             p_viewport_depths: ::std::ptr::null(),
52733         }
52734     }
52735 }
52736 impl CommandBufferInheritanceViewportScissorInfoNV {
builder<'a>() -> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a>52737     pub fn builder<'a>() -> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
52738         CommandBufferInheritanceViewportScissorInfoNVBuilder {
52739             inner: Self::default(),
52740             marker: ::std::marker::PhantomData,
52741         }
52742     }
52743 }
52744 #[repr(transparent)]
52745 pub struct CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
52746     inner: CommandBufferInheritanceViewportScissorInfoNV,
52747     marker: ::std::marker::PhantomData<&'a ()>,
52748 }
52749 unsafe impl ExtendsCommandBufferInheritanceInfo
52750     for CommandBufferInheritanceViewportScissorInfoNVBuilder<'_>
52751 {
52752 }
52753 unsafe impl ExtendsCommandBufferInheritanceInfo for CommandBufferInheritanceViewportScissorInfoNV {}
52754 impl<'a> ::std::ops::Deref for CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
52755     type Target = CommandBufferInheritanceViewportScissorInfoNV;
deref(&self) -> &Self::Target52756     fn deref(&self) -> &Self::Target {
52757         &self.inner
52758     }
52759 }
52760 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52761     fn deref_mut(&mut self) -> &mut Self::Target {
52762         &mut self.inner
52763     }
52764 }
52765 impl<'a> CommandBufferInheritanceViewportScissorInfoNVBuilder<'a> {
viewport_scissor2_d(mut self, viewport_scissor2_d: bool) -> Self52766     pub fn viewport_scissor2_d(mut self, viewport_scissor2_d: bool) -> Self {
52767         self.inner.viewport_scissor2_d = viewport_scissor2_d.into();
52768         self
52769     }
viewport_depth_count(mut self, viewport_depth_count: u32) -> Self52770     pub fn viewport_depth_count(mut self, viewport_depth_count: u32) -> Self {
52771         self.inner.viewport_depth_count = viewport_depth_count;
52772         self
52773     }
viewport_depths(mut self, viewport_depths: &'a Viewport) -> Self52774     pub fn viewport_depths(mut self, viewport_depths: &'a Viewport) -> Self {
52775         self.inner.p_viewport_depths = viewport_depths;
52776         self
52777     }
52778     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52779     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52780     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceViewportScissorInfoNV52781     pub fn build(self) -> CommandBufferInheritanceViewportScissorInfoNV {
52782         self.inner
52783     }
52784 }
52785 #[repr(C)]
52786 #[cfg_attr(feature = "debug", derive(Debug))]
52787 #[derive(Copy, Clone)]
52788 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>"]
52789 pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
52790     pub s_type: StructureType,
52791     pub p_next: *mut c_void,
52792     pub ycbcr2plane444_formats: Bool32,
52793 }
52794 impl ::std::default::Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
default() -> Self52795     fn default() -> Self {
52796         Self {
52797             s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
52798             p_next: ::std::ptr::null_mut(),
52799             ycbcr2plane444_formats: Bool32::default(),
52800         }
52801     }
52802 }
52803 impl PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
builder<'a>() -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a>52804     pub fn builder<'a>() -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
52805         PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder {
52806             inner: Self::default(),
52807             marker: ::std::marker::PhantomData,
52808         }
52809     }
52810 }
52811 #[repr(transparent)]
52812 pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
52813     inner: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT,
52814     marker: ::std::marker::PhantomData<&'a ()>,
52815 }
52816 unsafe impl ExtendsPhysicalDeviceFeatures2
52817     for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'_>
52818 {
52819 }
52820 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
52821 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'_> {}
52822 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
52823 impl<'a> ::std::ops::Deref for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
52824     type Target = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
deref(&self) -> &Self::Target52825     fn deref(&self) -> &Self::Target {
52826         &self.inner
52827     }
52828 }
52829 impl<'a> ::std::ops::DerefMut for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52830     fn deref_mut(&mut self) -> &mut Self::Target {
52831         &mut self.inner
52832     }
52833 }
52834 impl<'a> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTBuilder<'a> {
ycbcr2plane444_formats(mut self, ycbcr2plane444_formats: bool) -> Self52835     pub fn ycbcr2plane444_formats(mut self, ycbcr2plane444_formats: bool) -> Self {
52836         self.inner.ycbcr2plane444_formats = ycbcr2plane444_formats.into();
52837         self
52838     }
52839     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52840     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52841     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT52842     pub fn build(self) -> PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
52843         self.inner
52844     }
52845 }
52846 #[repr(C)]
52847 #[cfg_attr(feature = "debug", derive(Debug))]
52848 #[derive(Copy, Clone)]
52849 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>"]
52850 pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
52851     pub s_type: StructureType,
52852     pub p_next: *mut c_void,
52853     pub provoking_vertex_last: Bool32,
52854     pub transform_feedback_preserves_provoking_vertex: Bool32,
52855 }
52856 impl ::std::default::Default for PhysicalDeviceProvokingVertexFeaturesEXT {
default() -> Self52857     fn default() -> Self {
52858         Self {
52859             s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
52860             p_next: ::std::ptr::null_mut(),
52861             provoking_vertex_last: Bool32::default(),
52862             transform_feedback_preserves_provoking_vertex: Bool32::default(),
52863         }
52864     }
52865 }
52866 impl PhysicalDeviceProvokingVertexFeaturesEXT {
builder<'a>() -> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a>52867     pub fn builder<'a>() -> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
52868         PhysicalDeviceProvokingVertexFeaturesEXTBuilder {
52869             inner: Self::default(),
52870             marker: ::std::marker::PhantomData,
52871         }
52872     }
52873 }
52874 #[repr(transparent)]
52875 pub struct PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
52876     inner: PhysicalDeviceProvokingVertexFeaturesEXT,
52877     marker: ::std::marker::PhantomData<&'a ()>,
52878 }
52879 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'_> {}
52880 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceProvokingVertexFeaturesEXT {}
52881 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'_> {}
52882 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceProvokingVertexFeaturesEXT {}
52883 impl<'a> ::std::ops::Deref for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
52884     type Target = PhysicalDeviceProvokingVertexFeaturesEXT;
deref(&self) -> &Self::Target52885     fn deref(&self) -> &Self::Target {
52886         &self.inner
52887     }
52888 }
52889 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52890     fn deref_mut(&mut self) -> &mut Self::Target {
52891         &mut self.inner
52892     }
52893 }
52894 impl<'a> PhysicalDeviceProvokingVertexFeaturesEXTBuilder<'a> {
provoking_vertex_last(mut self, provoking_vertex_last: bool) -> Self52895     pub fn provoking_vertex_last(mut self, provoking_vertex_last: bool) -> Self {
52896         self.inner.provoking_vertex_last = provoking_vertex_last.into();
52897         self
52898     }
transform_feedback_preserves_provoking_vertex( mut self, transform_feedback_preserves_provoking_vertex: bool, ) -> Self52899     pub fn transform_feedback_preserves_provoking_vertex(
52900         mut self,
52901         transform_feedback_preserves_provoking_vertex: bool,
52902     ) -> Self {
52903         self.inner.transform_feedback_preserves_provoking_vertex =
52904             transform_feedback_preserves_provoking_vertex.into();
52905         self
52906     }
52907     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52908     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52909     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProvokingVertexFeaturesEXT52910     pub fn build(self) -> PhysicalDeviceProvokingVertexFeaturesEXT {
52911         self.inner
52912     }
52913 }
52914 #[repr(C)]
52915 #[cfg_attr(feature = "debug", derive(Debug))]
52916 #[derive(Copy, Clone)]
52917 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>"]
52918 pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
52919     pub s_type: StructureType,
52920     pub p_next: *mut c_void,
52921     pub provoking_vertex_mode_per_pipeline: Bool32,
52922     pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
52923 }
52924 impl ::std::default::Default for PhysicalDeviceProvokingVertexPropertiesEXT {
default() -> Self52925     fn default() -> Self {
52926         Self {
52927             s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
52928             p_next: ::std::ptr::null_mut(),
52929             provoking_vertex_mode_per_pipeline: Bool32::default(),
52930             transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
52931         }
52932     }
52933 }
52934 impl PhysicalDeviceProvokingVertexPropertiesEXT {
builder<'a>() -> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a>52935     pub fn builder<'a>() -> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
52936         PhysicalDeviceProvokingVertexPropertiesEXTBuilder {
52937             inner: Self::default(),
52938             marker: ::std::marker::PhantomData,
52939         }
52940     }
52941 }
52942 #[repr(transparent)]
52943 pub struct PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
52944     inner: PhysicalDeviceProvokingVertexPropertiesEXT,
52945     marker: ::std::marker::PhantomData<&'a ()>,
52946 }
52947 unsafe impl ExtendsPhysicalDeviceProperties2
52948     for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'_>
52949 {
52950 }
52951 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceProvokingVertexPropertiesEXT {}
52952 impl<'a> ::std::ops::Deref for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
52953     type Target = PhysicalDeviceProvokingVertexPropertiesEXT;
deref(&self) -> &Self::Target52954     fn deref(&self) -> &Self::Target {
52955         &self.inner
52956     }
52957 }
52958 impl<'a> ::std::ops::DerefMut for PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target52959     fn deref_mut(&mut self) -> &mut Self::Target {
52960         &mut self.inner
52961     }
52962 }
52963 impl<'a> PhysicalDeviceProvokingVertexPropertiesEXTBuilder<'a> {
provoking_vertex_mode_per_pipeline( mut self, provoking_vertex_mode_per_pipeline: bool, ) -> Self52964     pub fn provoking_vertex_mode_per_pipeline(
52965         mut self,
52966         provoking_vertex_mode_per_pipeline: bool,
52967     ) -> Self {
52968         self.inner.provoking_vertex_mode_per_pipeline = provoking_vertex_mode_per_pipeline.into();
52969         self
52970     }
transform_feedback_preserves_triangle_fan_provoking_vertex( mut self, transform_feedback_preserves_triangle_fan_provoking_vertex: bool, ) -> Self52971     pub fn transform_feedback_preserves_triangle_fan_provoking_vertex(
52972         mut self,
52973         transform_feedback_preserves_triangle_fan_provoking_vertex: bool,
52974     ) -> Self {
52975         self.inner
52976             .transform_feedback_preserves_triangle_fan_provoking_vertex =
52977             transform_feedback_preserves_triangle_fan_provoking_vertex.into();
52978         self
52979     }
52980     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
52981     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
52982     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceProvokingVertexPropertiesEXT52983     pub fn build(self) -> PhysicalDeviceProvokingVertexPropertiesEXT {
52984         self.inner
52985     }
52986 }
52987 #[repr(C)]
52988 #[cfg_attr(feature = "debug", derive(Debug))]
52989 #[derive(Copy, Clone)]
52990 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>"]
52991 pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
52992     pub s_type: StructureType,
52993     pub p_next: *const c_void,
52994     pub provoking_vertex_mode: ProvokingVertexModeEXT,
52995 }
52996 impl ::std::default::Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
default() -> Self52997     fn default() -> Self {
52998         Self {
52999             s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
53000             p_next: ::std::ptr::null(),
53001             provoking_vertex_mode: ProvokingVertexModeEXT::default(),
53002         }
53003     }
53004 }
53005 impl PipelineRasterizationProvokingVertexStateCreateInfoEXT {
builder<'a>() -> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a>53006     pub fn builder<'a>() -> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
53007         PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder {
53008             inner: Self::default(),
53009             marker: ::std::marker::PhantomData,
53010         }
53011     }
53012 }
53013 #[repr(transparent)]
53014 pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
53015     inner: PipelineRasterizationProvokingVertexStateCreateInfoEXT,
53016     marker: ::std::marker::PhantomData<&'a ()>,
53017 }
53018 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
53019     for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'_>
53020 {
53021 }
53022 unsafe impl ExtendsPipelineRasterizationStateCreateInfo
53023     for PipelineRasterizationProvokingVertexStateCreateInfoEXT
53024 {
53025 }
53026 impl<'a> ::std::ops::Deref for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
53027     type Target = PipelineRasterizationProvokingVertexStateCreateInfoEXT;
deref(&self) -> &Self::Target53028     fn deref(&self) -> &Self::Target {
53029         &self.inner
53030     }
53031 }
53032 impl<'a> ::std::ops::DerefMut
53033     for PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a>
53034 {
deref_mut(&mut self) -> &mut Self::Target53035     fn deref_mut(&mut self) -> &mut Self::Target {
53036         &mut self.inner
53037     }
53038 }
53039 impl<'a> PipelineRasterizationProvokingVertexStateCreateInfoEXTBuilder<'a> {
provoking_vertex_mode(mut self, provoking_vertex_mode: ProvokingVertexModeEXT) -> Self53040     pub fn provoking_vertex_mode(mut self, provoking_vertex_mode: ProvokingVertexModeEXT) -> Self {
53041         self.inner.provoking_vertex_mode = provoking_vertex_mode;
53042         self
53043     }
53044     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53045     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53046     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRasterizationProvokingVertexStateCreateInfoEXT53047     pub fn build(self) -> PipelineRasterizationProvokingVertexStateCreateInfoEXT {
53048         self.inner
53049     }
53050 }
53051 #[repr(C)]
53052 #[cfg_attr(feature = "debug", derive(Debug))]
53053 #[derive(Copy, Clone)]
53054 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuModuleCreateInfoNVX.html>"]
53055 pub struct CuModuleCreateInfoNVX {
53056     pub s_type: StructureType,
53057     pub p_next: *const c_void,
53058     pub data_size: usize,
53059     pub p_data: *const c_void,
53060 }
53061 impl ::std::default::Default for CuModuleCreateInfoNVX {
default() -> Self53062     fn default() -> Self {
53063         Self {
53064             s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
53065             p_next: ::std::ptr::null(),
53066             data_size: usize::default(),
53067             p_data: ::std::ptr::null(),
53068         }
53069     }
53070 }
53071 impl CuModuleCreateInfoNVX {
builder<'a>() -> CuModuleCreateInfoNVXBuilder<'a>53072     pub fn builder<'a>() -> CuModuleCreateInfoNVXBuilder<'a> {
53073         CuModuleCreateInfoNVXBuilder {
53074             inner: Self::default(),
53075             marker: ::std::marker::PhantomData,
53076         }
53077     }
53078 }
53079 #[repr(transparent)]
53080 pub struct CuModuleCreateInfoNVXBuilder<'a> {
53081     inner: CuModuleCreateInfoNVX,
53082     marker: ::std::marker::PhantomData<&'a ()>,
53083 }
53084 impl<'a> ::std::ops::Deref for CuModuleCreateInfoNVXBuilder<'a> {
53085     type Target = CuModuleCreateInfoNVX;
deref(&self) -> &Self::Target53086     fn deref(&self) -> &Self::Target {
53087         &self.inner
53088     }
53089 }
53090 impl<'a> ::std::ops::DerefMut for CuModuleCreateInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53091     fn deref_mut(&mut self) -> &mut Self::Target {
53092         &mut self.inner
53093     }
53094 }
53095 impl<'a> CuModuleCreateInfoNVXBuilder<'a> {
data(mut self, data: &'a [u8]) -> Self53096     pub fn data(mut self, data: &'a [u8]) -> Self {
53097         self.inner.data_size = data.len() as _;
53098         self.inner.p_data = data.as_ptr() as *const c_void;
53099         self
53100     }
53101     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53102     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53103     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CuModuleCreateInfoNVX53104     pub fn build(self) -> CuModuleCreateInfoNVX {
53105         self.inner
53106     }
53107 }
53108 #[repr(C)]
53109 #[cfg_attr(feature = "debug", derive(Debug))]
53110 #[derive(Copy, Clone)]
53111 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuFunctionCreateInfoNVX.html>"]
53112 pub struct CuFunctionCreateInfoNVX {
53113     pub s_type: StructureType,
53114     pub p_next: *const c_void,
53115     pub module: CuModuleNVX,
53116     pub p_name: *const c_char,
53117 }
53118 impl ::std::default::Default for CuFunctionCreateInfoNVX {
default() -> Self53119     fn default() -> Self {
53120         Self {
53121             s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
53122             p_next: ::std::ptr::null(),
53123             module: CuModuleNVX::default(),
53124             p_name: ::std::ptr::null(),
53125         }
53126     }
53127 }
53128 impl CuFunctionCreateInfoNVX {
builder<'a>() -> CuFunctionCreateInfoNVXBuilder<'a>53129     pub fn builder<'a>() -> CuFunctionCreateInfoNVXBuilder<'a> {
53130         CuFunctionCreateInfoNVXBuilder {
53131             inner: Self::default(),
53132             marker: ::std::marker::PhantomData,
53133         }
53134     }
53135 }
53136 #[repr(transparent)]
53137 pub struct CuFunctionCreateInfoNVXBuilder<'a> {
53138     inner: CuFunctionCreateInfoNVX,
53139     marker: ::std::marker::PhantomData<&'a ()>,
53140 }
53141 impl<'a> ::std::ops::Deref for CuFunctionCreateInfoNVXBuilder<'a> {
53142     type Target = CuFunctionCreateInfoNVX;
deref(&self) -> &Self::Target53143     fn deref(&self) -> &Self::Target {
53144         &self.inner
53145     }
53146 }
53147 impl<'a> ::std::ops::DerefMut for CuFunctionCreateInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53148     fn deref_mut(&mut self) -> &mut Self::Target {
53149         &mut self.inner
53150     }
53151 }
53152 impl<'a> CuFunctionCreateInfoNVXBuilder<'a> {
module(mut self, module: CuModuleNVX) -> Self53153     pub fn module(mut self, module: CuModuleNVX) -> Self {
53154         self.inner.module = module;
53155         self
53156     }
name(mut self, name: &'a ::std::ffi::CStr) -> Self53157     pub fn name(mut self, name: &'a ::std::ffi::CStr) -> Self {
53158         self.inner.p_name = name.as_ptr();
53159         self
53160     }
53161     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53162     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53163     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CuFunctionCreateInfoNVX53164     pub fn build(self) -> CuFunctionCreateInfoNVX {
53165         self.inner
53166     }
53167 }
53168 #[repr(C)]
53169 #[cfg_attr(feature = "debug", derive(Debug))]
53170 #[derive(Copy, Clone)]
53171 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCuLaunchInfoNVX.html>"]
53172 pub struct CuLaunchInfoNVX {
53173     pub s_type: StructureType,
53174     pub p_next: *const c_void,
53175     pub function: CuFunctionNVX,
53176     pub grid_dim_x: u32,
53177     pub grid_dim_y: u32,
53178     pub grid_dim_z: u32,
53179     pub block_dim_x: u32,
53180     pub block_dim_y: u32,
53181     pub block_dim_z: u32,
53182     pub shared_mem_bytes: u32,
53183     pub param_count: usize,
53184     pub p_params: *const *const c_void,
53185     pub extra_count: usize,
53186     pub p_extras: *const *const c_void,
53187 }
53188 impl ::std::default::Default for CuLaunchInfoNVX {
default() -> Self53189     fn default() -> Self {
53190         Self {
53191             s_type: StructureType::CU_LAUNCH_INFO_NVX,
53192             p_next: ::std::ptr::null(),
53193             function: CuFunctionNVX::default(),
53194             grid_dim_x: u32::default(),
53195             grid_dim_y: u32::default(),
53196             grid_dim_z: u32::default(),
53197             block_dim_x: u32::default(),
53198             block_dim_y: u32::default(),
53199             block_dim_z: u32::default(),
53200             shared_mem_bytes: u32::default(),
53201             param_count: usize::default(),
53202             p_params: ::std::ptr::null(),
53203             extra_count: usize::default(),
53204             p_extras: ::std::ptr::null(),
53205         }
53206     }
53207 }
53208 impl CuLaunchInfoNVX {
builder<'a>() -> CuLaunchInfoNVXBuilder<'a>53209     pub fn builder<'a>() -> CuLaunchInfoNVXBuilder<'a> {
53210         CuLaunchInfoNVXBuilder {
53211             inner: Self::default(),
53212             marker: ::std::marker::PhantomData,
53213         }
53214     }
53215 }
53216 #[repr(transparent)]
53217 pub struct CuLaunchInfoNVXBuilder<'a> {
53218     inner: CuLaunchInfoNVX,
53219     marker: ::std::marker::PhantomData<&'a ()>,
53220 }
53221 impl<'a> ::std::ops::Deref for CuLaunchInfoNVXBuilder<'a> {
53222     type Target = CuLaunchInfoNVX;
deref(&self) -> &Self::Target53223     fn deref(&self) -> &Self::Target {
53224         &self.inner
53225     }
53226 }
53227 impl<'a> ::std::ops::DerefMut for CuLaunchInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53228     fn deref_mut(&mut self) -> &mut Self::Target {
53229         &mut self.inner
53230     }
53231 }
53232 impl<'a> CuLaunchInfoNVXBuilder<'a> {
function(mut self, function: CuFunctionNVX) -> Self53233     pub fn function(mut self, function: CuFunctionNVX) -> Self {
53234         self.inner.function = function;
53235         self
53236     }
grid_dim_x(mut self, grid_dim_x: u32) -> Self53237     pub fn grid_dim_x(mut self, grid_dim_x: u32) -> Self {
53238         self.inner.grid_dim_x = grid_dim_x;
53239         self
53240     }
grid_dim_y(mut self, grid_dim_y: u32) -> Self53241     pub fn grid_dim_y(mut self, grid_dim_y: u32) -> Self {
53242         self.inner.grid_dim_y = grid_dim_y;
53243         self
53244     }
grid_dim_z(mut self, grid_dim_z: u32) -> Self53245     pub fn grid_dim_z(mut self, grid_dim_z: u32) -> Self {
53246         self.inner.grid_dim_z = grid_dim_z;
53247         self
53248     }
block_dim_x(mut self, block_dim_x: u32) -> Self53249     pub fn block_dim_x(mut self, block_dim_x: u32) -> Self {
53250         self.inner.block_dim_x = block_dim_x;
53251         self
53252     }
block_dim_y(mut self, block_dim_y: u32) -> Self53253     pub fn block_dim_y(mut self, block_dim_y: u32) -> Self {
53254         self.inner.block_dim_y = block_dim_y;
53255         self
53256     }
block_dim_z(mut self, block_dim_z: u32) -> Self53257     pub fn block_dim_z(mut self, block_dim_z: u32) -> Self {
53258         self.inner.block_dim_z = block_dim_z;
53259         self
53260     }
shared_mem_bytes(mut self, shared_mem_bytes: u32) -> Self53261     pub fn shared_mem_bytes(mut self, shared_mem_bytes: u32) -> Self {
53262         self.inner.shared_mem_bytes = shared_mem_bytes;
53263         self
53264     }
params(mut self, params: &'a [*const c_void]) -> Self53265     pub fn params(mut self, params: &'a [*const c_void]) -> Self {
53266         self.inner.param_count = params.len() as _;
53267         self.inner.p_params = params.as_ptr();
53268         self
53269     }
extras(mut self, extras: &'a [*const c_void]) -> Self53270     pub fn extras(mut self, extras: &'a [*const c_void]) -> Self {
53271         self.inner.extra_count = extras.len() as _;
53272         self.inner.p_extras = extras.as_ptr();
53273         self
53274     }
53275     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53276     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53277     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CuLaunchInfoNVX53278     pub fn build(self) -> CuLaunchInfoNVX {
53279         self.inner
53280     }
53281 }
53282 #[repr(C)]
53283 #[cfg_attr(feature = "debug", derive(Debug))]
53284 #[derive(Copy, Clone)]
53285 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>"]
53286 pub struct PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
53287     pub s_type: StructureType,
53288     pub p_next: *mut c_void,
53289     pub shader_integer_dot_product: Bool32,
53290 }
53291 impl ::std::default::Default for PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
default() -> Self53292     fn default() -> Self {
53293         Self {
53294             s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR,
53295             p_next: ::std::ptr::null_mut(),
53296             shader_integer_dot_product: Bool32::default(),
53297         }
53298     }
53299 }
53300 impl PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
builder<'a>() -> PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a>53301     pub fn builder<'a>() -> PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
53302         PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder {
53303             inner: Self::default(),
53304             marker: ::std::marker::PhantomData,
53305         }
53306     }
53307 }
53308 #[repr(transparent)]
53309 pub struct PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
53310     inner: PhysicalDeviceShaderIntegerDotProductFeaturesKHR,
53311     marker: ::std::marker::PhantomData<&'a ()>,
53312 }
53313 unsafe impl ExtendsPhysicalDeviceFeatures2
53314     for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'_>
53315 {
53316 }
53317 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceShaderIntegerDotProductFeaturesKHR {}
53318 unsafe impl ExtendsDeviceCreateInfo
53319     for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'_>
53320 {
53321 }
53322 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceShaderIntegerDotProductFeaturesKHR {}
53323 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
53324     type Target = PhysicalDeviceShaderIntegerDotProductFeaturesKHR;
deref(&self) -> &Self::Target53325     fn deref(&self) -> &Self::Target {
53326         &self.inner
53327     }
53328 }
53329 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53330     fn deref_mut(&mut self) -> &mut Self::Target {
53331         &mut self.inner
53332     }
53333 }
53334 impl<'a> PhysicalDeviceShaderIntegerDotProductFeaturesKHRBuilder<'a> {
shader_integer_dot_product(mut self, shader_integer_dot_product: bool) -> Self53335     pub fn shader_integer_dot_product(mut self, shader_integer_dot_product: bool) -> Self {
53336         self.inner.shader_integer_dot_product = shader_integer_dot_product.into();
53337         self
53338     }
53339     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53340     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53341     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR53342     pub fn build(self) -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR {
53343         self.inner
53344     }
53345 }
53346 #[repr(C)]
53347 #[cfg_attr(feature = "debug", derive(Debug))]
53348 #[derive(Copy, Clone)]
53349 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>"]
53350 pub struct PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
53351     pub s_type: StructureType,
53352     pub p_next: *mut c_void,
53353     pub integer_dot_product8_bit_unsigned_accelerated: Bool32,
53354     pub integer_dot_product8_bit_signed_accelerated: Bool32,
53355     pub integer_dot_product8_bit_mixed_signedness_accelerated: Bool32,
53356     pub integer_dot_product4x8_bit_packed_unsigned_accelerated: Bool32,
53357     pub integer_dot_product4x8_bit_packed_signed_accelerated: Bool32,
53358     pub integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: Bool32,
53359     pub integer_dot_product16_bit_unsigned_accelerated: Bool32,
53360     pub integer_dot_product16_bit_signed_accelerated: Bool32,
53361     pub integer_dot_product16_bit_mixed_signedness_accelerated: Bool32,
53362     pub integer_dot_product32_bit_unsigned_accelerated: Bool32,
53363     pub integer_dot_product32_bit_signed_accelerated: Bool32,
53364     pub integer_dot_product32_bit_mixed_signedness_accelerated: Bool32,
53365     pub integer_dot_product64_bit_unsigned_accelerated: Bool32,
53366     pub integer_dot_product64_bit_signed_accelerated: Bool32,
53367     pub integer_dot_product64_bit_mixed_signedness_accelerated: Bool32,
53368     pub integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: Bool32,
53369     pub integer_dot_product_accumulating_saturating8_bit_signed_accelerated: Bool32,
53370     pub integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: Bool32,
53371     pub integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: Bool32,
53372     pub integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: Bool32,
53373     pub integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated:
53374         Bool32,
53375     pub integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: Bool32,
53376     pub integer_dot_product_accumulating_saturating16_bit_signed_accelerated: Bool32,
53377     pub integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: Bool32,
53378     pub integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: Bool32,
53379     pub integer_dot_product_accumulating_saturating32_bit_signed_accelerated: Bool32,
53380     pub integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: Bool32,
53381     pub integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: Bool32,
53382     pub integer_dot_product_accumulating_saturating64_bit_signed_accelerated: Bool32,
53383     pub integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: Bool32,
53384 }
53385 impl ::std::default::Default for PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
default() -> Self53386     fn default() -> Self {
53387         Self { 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 () }
53388     }
53389 }
53390 impl PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
builder<'a>() -> PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a>53391     pub fn builder<'a>() -> PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
53392         PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder {
53393             inner: Self::default(),
53394             marker: ::std::marker::PhantomData,
53395         }
53396     }
53397 }
53398 #[repr(transparent)]
53399 pub struct PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
53400     inner: PhysicalDeviceShaderIntegerDotProductPropertiesKHR,
53401     marker: ::std::marker::PhantomData<&'a ()>,
53402 }
53403 unsafe impl ExtendsPhysicalDeviceProperties2
53404     for PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'_>
53405 {
53406 }
53407 unsafe impl ExtendsPhysicalDeviceProperties2
53408     for PhysicalDeviceShaderIntegerDotProductPropertiesKHR
53409 {
53410 }
53411 impl<'a> ::std::ops::Deref for PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
53412     type Target = PhysicalDeviceShaderIntegerDotProductPropertiesKHR;
deref(&self) -> &Self::Target53413     fn deref(&self) -> &Self::Target {
53414         &self.inner
53415     }
53416 }
53417 impl<'a> ::std::ops::DerefMut for PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53418     fn deref_mut(&mut self) -> &mut Self::Target {
53419         &mut self.inner
53420     }
53421 }
53422 impl<'a> PhysicalDeviceShaderIntegerDotProductPropertiesKHRBuilder<'a> {
integer_dot_product8_bit_unsigned_accelerated( mut self, integer_dot_product8_bit_unsigned_accelerated: bool, ) -> Self53423     pub fn integer_dot_product8_bit_unsigned_accelerated(
53424         mut self,
53425         integer_dot_product8_bit_unsigned_accelerated: bool,
53426     ) -> Self {
53427         self.inner.integer_dot_product8_bit_unsigned_accelerated =
53428             integer_dot_product8_bit_unsigned_accelerated.into();
53429         self
53430     }
integer_dot_product8_bit_signed_accelerated( mut self, integer_dot_product8_bit_signed_accelerated: bool, ) -> Self53431     pub fn integer_dot_product8_bit_signed_accelerated(
53432         mut self,
53433         integer_dot_product8_bit_signed_accelerated: bool,
53434     ) -> Self {
53435         self.inner.integer_dot_product8_bit_signed_accelerated =
53436             integer_dot_product8_bit_signed_accelerated.into();
53437         self
53438     }
integer_dot_product8_bit_mixed_signedness_accelerated( mut self, integer_dot_product8_bit_mixed_signedness_accelerated: bool, ) -> Self53439     pub fn integer_dot_product8_bit_mixed_signedness_accelerated(
53440         mut self,
53441         integer_dot_product8_bit_mixed_signedness_accelerated: bool,
53442     ) -> Self {
53443         self.inner
53444             .integer_dot_product8_bit_mixed_signedness_accelerated =
53445             integer_dot_product8_bit_mixed_signedness_accelerated.into();
53446         self
53447     }
integer_dot_product4x8_bit_packed_unsigned_accelerated( mut self, integer_dot_product4x8_bit_packed_unsigned_accelerated: bool, ) -> Self53448     pub fn integer_dot_product4x8_bit_packed_unsigned_accelerated(
53449         mut self,
53450         integer_dot_product4x8_bit_packed_unsigned_accelerated: bool,
53451     ) -> Self {
53452         self.inner
53453             .integer_dot_product4x8_bit_packed_unsigned_accelerated =
53454             integer_dot_product4x8_bit_packed_unsigned_accelerated.into();
53455         self
53456     }
integer_dot_product4x8_bit_packed_signed_accelerated( mut self, integer_dot_product4x8_bit_packed_signed_accelerated: bool, ) -> Self53457     pub fn integer_dot_product4x8_bit_packed_signed_accelerated(
53458         mut self,
53459         integer_dot_product4x8_bit_packed_signed_accelerated: bool,
53460     ) -> Self {
53461         self.inner
53462             .integer_dot_product4x8_bit_packed_signed_accelerated =
53463             integer_dot_product4x8_bit_packed_signed_accelerated.into();
53464         self
53465     }
integer_dot_product4x8_bit_packed_mixed_signedness_accelerated( mut self, integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: bool, ) -> Self53466     pub fn integer_dot_product4x8_bit_packed_mixed_signedness_accelerated(
53467         mut self,
53468         integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: bool,
53469     ) -> Self {
53470         self.inner
53471             .integer_dot_product4x8_bit_packed_mixed_signedness_accelerated =
53472             integer_dot_product4x8_bit_packed_mixed_signedness_accelerated.into();
53473         self
53474     }
integer_dot_product16_bit_unsigned_accelerated( mut self, integer_dot_product16_bit_unsigned_accelerated: bool, ) -> Self53475     pub fn integer_dot_product16_bit_unsigned_accelerated(
53476         mut self,
53477         integer_dot_product16_bit_unsigned_accelerated: bool,
53478     ) -> Self {
53479         self.inner.integer_dot_product16_bit_unsigned_accelerated =
53480             integer_dot_product16_bit_unsigned_accelerated.into();
53481         self
53482     }
integer_dot_product16_bit_signed_accelerated( mut self, integer_dot_product16_bit_signed_accelerated: bool, ) -> Self53483     pub fn integer_dot_product16_bit_signed_accelerated(
53484         mut self,
53485         integer_dot_product16_bit_signed_accelerated: bool,
53486     ) -> Self {
53487         self.inner.integer_dot_product16_bit_signed_accelerated =
53488             integer_dot_product16_bit_signed_accelerated.into();
53489         self
53490     }
integer_dot_product16_bit_mixed_signedness_accelerated( mut self, integer_dot_product16_bit_mixed_signedness_accelerated: bool, ) -> Self53491     pub fn integer_dot_product16_bit_mixed_signedness_accelerated(
53492         mut self,
53493         integer_dot_product16_bit_mixed_signedness_accelerated: bool,
53494     ) -> Self {
53495         self.inner
53496             .integer_dot_product16_bit_mixed_signedness_accelerated =
53497             integer_dot_product16_bit_mixed_signedness_accelerated.into();
53498         self
53499     }
integer_dot_product32_bit_unsigned_accelerated( mut self, integer_dot_product32_bit_unsigned_accelerated: bool, ) -> Self53500     pub fn integer_dot_product32_bit_unsigned_accelerated(
53501         mut self,
53502         integer_dot_product32_bit_unsigned_accelerated: bool,
53503     ) -> Self {
53504         self.inner.integer_dot_product32_bit_unsigned_accelerated =
53505             integer_dot_product32_bit_unsigned_accelerated.into();
53506         self
53507     }
integer_dot_product32_bit_signed_accelerated( mut self, integer_dot_product32_bit_signed_accelerated: bool, ) -> Self53508     pub fn integer_dot_product32_bit_signed_accelerated(
53509         mut self,
53510         integer_dot_product32_bit_signed_accelerated: bool,
53511     ) -> Self {
53512         self.inner.integer_dot_product32_bit_signed_accelerated =
53513             integer_dot_product32_bit_signed_accelerated.into();
53514         self
53515     }
integer_dot_product32_bit_mixed_signedness_accelerated( mut self, integer_dot_product32_bit_mixed_signedness_accelerated: bool, ) -> Self53516     pub fn integer_dot_product32_bit_mixed_signedness_accelerated(
53517         mut self,
53518         integer_dot_product32_bit_mixed_signedness_accelerated: bool,
53519     ) -> Self {
53520         self.inner
53521             .integer_dot_product32_bit_mixed_signedness_accelerated =
53522             integer_dot_product32_bit_mixed_signedness_accelerated.into();
53523         self
53524     }
integer_dot_product64_bit_unsigned_accelerated( mut self, integer_dot_product64_bit_unsigned_accelerated: bool, ) -> Self53525     pub fn integer_dot_product64_bit_unsigned_accelerated(
53526         mut self,
53527         integer_dot_product64_bit_unsigned_accelerated: bool,
53528     ) -> Self {
53529         self.inner.integer_dot_product64_bit_unsigned_accelerated =
53530             integer_dot_product64_bit_unsigned_accelerated.into();
53531         self
53532     }
integer_dot_product64_bit_signed_accelerated( mut self, integer_dot_product64_bit_signed_accelerated: bool, ) -> Self53533     pub fn integer_dot_product64_bit_signed_accelerated(
53534         mut self,
53535         integer_dot_product64_bit_signed_accelerated: bool,
53536     ) -> Self {
53537         self.inner.integer_dot_product64_bit_signed_accelerated =
53538             integer_dot_product64_bit_signed_accelerated.into();
53539         self
53540     }
integer_dot_product64_bit_mixed_signedness_accelerated( mut self, integer_dot_product64_bit_mixed_signedness_accelerated: bool, ) -> Self53541     pub fn integer_dot_product64_bit_mixed_signedness_accelerated(
53542         mut self,
53543         integer_dot_product64_bit_mixed_signedness_accelerated: bool,
53544     ) -> Self {
53545         self.inner
53546             .integer_dot_product64_bit_mixed_signedness_accelerated =
53547             integer_dot_product64_bit_mixed_signedness_accelerated.into();
53548         self
53549     }
integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: bool, ) -> Self53550     pub fn integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated(
53551         mut self,
53552         integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: bool,
53553     ) -> Self {
53554         self.inner
53555             .integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated =
53556             integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated.into();
53557         self
53558     }
integer_dot_product_accumulating_saturating8_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating8_bit_signed_accelerated: bool, ) -> Self53559     pub fn integer_dot_product_accumulating_saturating8_bit_signed_accelerated(
53560         mut self,
53561         integer_dot_product_accumulating_saturating8_bit_signed_accelerated: bool,
53562     ) -> Self {
53563         self.inner
53564             .integer_dot_product_accumulating_saturating8_bit_signed_accelerated =
53565             integer_dot_product_accumulating_saturating8_bit_signed_accelerated.into();
53566         self
53567     }
integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: bool, ) -> Self53568     pub fn integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated(
53569         mut self,
53570         integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: bool,
53571     ) -> Self {
53572         self.inner
53573             .integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated =
53574             integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated.into();
53575         self
53576     }
integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: bool, ) -> Self53577     pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated(
53578         mut self,
53579         integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: bool,
53580     ) -> Self {
53581         self.inner
53582             .integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated =
53583             integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated.into();
53584         self
53585     }
integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated( mut self, integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: bool, ) -> Self53586     pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated(
53587         mut self,
53588         integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: bool,
53589     ) -> Self {
53590         self.inner
53591             .integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated =
53592             integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated.into();
53593         self
53594     }
integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated : bool, ) -> Self53595     pub fn integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated(
53596         mut self,
53597         integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated : bool,
53598     ) -> Self {
53599         self . inner . integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated = integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated . into () ;
53600         self
53601     }
integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: bool, ) -> Self53602     pub fn integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated(
53603         mut self,
53604         integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: bool,
53605     ) -> Self {
53606         self.inner
53607             .integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated =
53608             integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated.into();
53609         self
53610     }
integer_dot_product_accumulating_saturating16_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating16_bit_signed_accelerated: bool, ) -> Self53611     pub fn integer_dot_product_accumulating_saturating16_bit_signed_accelerated(
53612         mut self,
53613         integer_dot_product_accumulating_saturating16_bit_signed_accelerated: bool,
53614     ) -> Self {
53615         self.inner
53616             .integer_dot_product_accumulating_saturating16_bit_signed_accelerated =
53617             integer_dot_product_accumulating_saturating16_bit_signed_accelerated.into();
53618         self
53619     }
integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: bool, ) -> Self53620     pub fn integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated(
53621         mut self,
53622         integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: bool,
53623     ) -> Self {
53624         self.inner
53625             .integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated =
53626             integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated.into();
53627         self
53628     }
integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: bool, ) -> Self53629     pub fn integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated(
53630         mut self,
53631         integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: bool,
53632     ) -> Self {
53633         self.inner
53634             .integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated =
53635             integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated.into();
53636         self
53637     }
integer_dot_product_accumulating_saturating32_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating32_bit_signed_accelerated: bool, ) -> Self53638     pub fn integer_dot_product_accumulating_saturating32_bit_signed_accelerated(
53639         mut self,
53640         integer_dot_product_accumulating_saturating32_bit_signed_accelerated: bool,
53641     ) -> Self {
53642         self.inner
53643             .integer_dot_product_accumulating_saturating32_bit_signed_accelerated =
53644             integer_dot_product_accumulating_saturating32_bit_signed_accelerated.into();
53645         self
53646     }
integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: bool, ) -> Self53647     pub fn integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated(
53648         mut self,
53649         integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: bool,
53650     ) -> Self {
53651         self.inner
53652             .integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated =
53653             integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated.into();
53654         self
53655     }
integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated( mut self, integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: bool, ) -> Self53656     pub fn integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated(
53657         mut self,
53658         integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: bool,
53659     ) -> Self {
53660         self.inner
53661             .integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated =
53662             integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated.into();
53663         self
53664     }
integer_dot_product_accumulating_saturating64_bit_signed_accelerated( mut self, integer_dot_product_accumulating_saturating64_bit_signed_accelerated: bool, ) -> Self53665     pub fn integer_dot_product_accumulating_saturating64_bit_signed_accelerated(
53666         mut self,
53667         integer_dot_product_accumulating_saturating64_bit_signed_accelerated: bool,
53668     ) -> Self {
53669         self.inner
53670             .integer_dot_product_accumulating_saturating64_bit_signed_accelerated =
53671             integer_dot_product_accumulating_saturating64_bit_signed_accelerated.into();
53672         self
53673     }
integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated( mut self, integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: bool, ) -> Self53674     pub fn integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated(
53675         mut self,
53676         integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: bool,
53677     ) -> Self {
53678         self.inner
53679             .integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated =
53680             integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated.into();
53681         self
53682     }
53683     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53684     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53685     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceShaderIntegerDotProductPropertiesKHR53686     pub fn build(self) -> PhysicalDeviceShaderIntegerDotProductPropertiesKHR {
53687         self.inner
53688     }
53689 }
53690 #[repr(C)]
53691 #[cfg_attr(feature = "debug", derive(Debug))]
53692 #[derive(Copy, Clone)]
53693 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>"]
53694 pub struct PhysicalDeviceDrmPropertiesEXT {
53695     pub s_type: StructureType,
53696     pub p_next: *mut c_void,
53697     pub has_primary: Bool32,
53698     pub has_render: Bool32,
53699     pub primary_major: i64,
53700     pub primary_minor: i64,
53701     pub render_major: i64,
53702     pub render_minor: i64,
53703 }
53704 impl ::std::default::Default for PhysicalDeviceDrmPropertiesEXT {
default() -> Self53705     fn default() -> Self {
53706         Self {
53707             s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
53708             p_next: ::std::ptr::null_mut(),
53709             has_primary: Bool32::default(),
53710             has_render: Bool32::default(),
53711             primary_major: i64::default(),
53712             primary_minor: i64::default(),
53713             render_major: i64::default(),
53714             render_minor: i64::default(),
53715         }
53716     }
53717 }
53718 impl PhysicalDeviceDrmPropertiesEXT {
builder<'a>() -> PhysicalDeviceDrmPropertiesEXTBuilder<'a>53719     pub fn builder<'a>() -> PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
53720         PhysicalDeviceDrmPropertiesEXTBuilder {
53721             inner: Self::default(),
53722             marker: ::std::marker::PhantomData,
53723         }
53724     }
53725 }
53726 #[repr(transparent)]
53727 pub struct PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
53728     inner: PhysicalDeviceDrmPropertiesEXT,
53729     marker: ::std::marker::PhantomData<&'a ()>,
53730 }
53731 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDrmPropertiesEXTBuilder<'_> {}
53732 unsafe impl ExtendsPhysicalDeviceProperties2 for PhysicalDeviceDrmPropertiesEXT {}
53733 impl<'a> ::std::ops::Deref for PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
53734     type Target = PhysicalDeviceDrmPropertiesEXT;
deref(&self) -> &Self::Target53735     fn deref(&self) -> &Self::Target {
53736         &self.inner
53737     }
53738 }
53739 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53740     fn deref_mut(&mut self) -> &mut Self::Target {
53741         &mut self.inner
53742     }
53743 }
53744 impl<'a> PhysicalDeviceDrmPropertiesEXTBuilder<'a> {
has_primary(mut self, has_primary: bool) -> Self53745     pub fn has_primary(mut self, has_primary: bool) -> Self {
53746         self.inner.has_primary = has_primary.into();
53747         self
53748     }
has_render(mut self, has_render: bool) -> Self53749     pub fn has_render(mut self, has_render: bool) -> Self {
53750         self.inner.has_render = has_render.into();
53751         self
53752     }
primary_major(mut self, primary_major: i64) -> Self53753     pub fn primary_major(mut self, primary_major: i64) -> Self {
53754         self.inner.primary_major = primary_major;
53755         self
53756     }
primary_minor(mut self, primary_minor: i64) -> Self53757     pub fn primary_minor(mut self, primary_minor: i64) -> Self {
53758         self.inner.primary_minor = primary_minor;
53759         self
53760     }
render_major(mut self, render_major: i64) -> Self53761     pub fn render_major(mut self, render_major: i64) -> Self {
53762         self.inner.render_major = render_major;
53763         self
53764     }
render_minor(mut self, render_minor: i64) -> Self53765     pub fn render_minor(mut self, render_minor: i64) -> Self {
53766         self.inner.render_minor = render_minor;
53767         self
53768     }
53769     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53770     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53771     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDrmPropertiesEXT53772     pub fn build(self) -> PhysicalDeviceDrmPropertiesEXT {
53773         self.inner
53774     }
53775 }
53776 #[repr(C)]
53777 #[cfg_attr(feature = "debug", derive(Debug))]
53778 #[derive(Copy, Clone)]
53779 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>"]
53780 pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
53781     pub s_type: StructureType,
53782     pub p_next: *mut c_void,
53783     pub ray_tracing_motion_blur: Bool32,
53784     pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
53785 }
53786 impl ::std::default::Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
default() -> Self53787     fn default() -> Self {
53788         Self {
53789             s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
53790             p_next: ::std::ptr::null_mut(),
53791             ray_tracing_motion_blur: Bool32::default(),
53792             ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
53793         }
53794     }
53795 }
53796 impl PhysicalDeviceRayTracingMotionBlurFeaturesNV {
builder<'a>() -> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a>53797     pub fn builder<'a>() -> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
53798         PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder {
53799             inner: Self::default(),
53800             marker: ::std::marker::PhantomData,
53801         }
53802     }
53803 }
53804 #[repr(transparent)]
53805 pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
53806     inner: PhysicalDeviceRayTracingMotionBlurFeaturesNV,
53807     marker: ::std::marker::PhantomData<&'a ()>,
53808 }
53809 unsafe impl ExtendsPhysicalDeviceFeatures2
53810     for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'_>
53811 {
53812 }
53813 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
53814 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'_> {}
53815 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
53816 impl<'a> ::std::ops::Deref for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
53817     type Target = PhysicalDeviceRayTracingMotionBlurFeaturesNV;
deref(&self) -> &Self::Target53818     fn deref(&self) -> &Self::Target {
53819         &self.inner
53820     }
53821 }
53822 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53823     fn deref_mut(&mut self) -> &mut Self::Target {
53824         &mut self.inner
53825     }
53826 }
53827 impl<'a> PhysicalDeviceRayTracingMotionBlurFeaturesNVBuilder<'a> {
ray_tracing_motion_blur(mut self, ray_tracing_motion_blur: bool) -> Self53828     pub fn ray_tracing_motion_blur(mut self, ray_tracing_motion_blur: bool) -> Self {
53829         self.inner.ray_tracing_motion_blur = ray_tracing_motion_blur.into();
53830         self
53831     }
ray_tracing_motion_blur_pipeline_trace_rays_indirect( mut self, ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool, ) -> Self53832     pub fn ray_tracing_motion_blur_pipeline_trace_rays_indirect(
53833         mut self,
53834         ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool,
53835     ) -> Self {
53836         self.inner
53837             .ray_tracing_motion_blur_pipeline_trace_rays_indirect =
53838             ray_tracing_motion_blur_pipeline_trace_rays_indirect.into();
53839         self
53840     }
53841     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53842     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53843     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRayTracingMotionBlurFeaturesNV53844     pub fn build(self) -> PhysicalDeviceRayTracingMotionBlurFeaturesNV {
53845         self.inner
53846     }
53847 }
53848 #[repr(C)]
53849 #[derive(Copy, Clone)]
53850 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureGeometryMotionTrianglesDataNV.html>"]
53851 pub struct AccelerationStructureGeometryMotionTrianglesDataNV {
53852     pub s_type: StructureType,
53853     pub p_next: *const c_void,
53854     pub vertex_data: DeviceOrHostAddressConstKHR,
53855 }
53856 #[cfg(feature = "debug")]
53857 impl fmt::Debug for AccelerationStructureGeometryMotionTrianglesDataNV {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result53858     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
53859         fmt.debug_struct("AccelerationStructureGeometryMotionTrianglesDataNV")
53860             .field("s_type", &self.s_type)
53861             .field("p_next", &self.p_next)
53862             .field("vertex_data", &"union")
53863             .finish()
53864     }
53865 }
53866 impl ::std::default::Default for AccelerationStructureGeometryMotionTrianglesDataNV {
default() -> Self53867     fn default() -> Self {
53868         Self {
53869             s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV,
53870             p_next: ::std::ptr::null(),
53871             vertex_data: DeviceOrHostAddressConstKHR::default(),
53872         }
53873     }
53874 }
53875 impl AccelerationStructureGeometryMotionTrianglesDataNV {
builder<'a>() -> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a>53876     pub fn builder<'a>() -> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
53877         AccelerationStructureGeometryMotionTrianglesDataNVBuilder {
53878             inner: Self::default(),
53879             marker: ::std::marker::PhantomData,
53880         }
53881     }
53882 }
53883 #[repr(transparent)]
53884 pub struct AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
53885     inner: AccelerationStructureGeometryMotionTrianglesDataNV,
53886     marker: ::std::marker::PhantomData<&'a ()>,
53887 }
53888 unsafe impl ExtendsAccelerationStructureGeometryTrianglesDataKHR
53889     for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'_>
53890 {
53891 }
53892 unsafe impl ExtendsAccelerationStructureGeometryTrianglesDataKHR
53893     for AccelerationStructureGeometryMotionTrianglesDataNV
53894 {
53895 }
53896 impl<'a> ::std::ops::Deref for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
53897     type Target = AccelerationStructureGeometryMotionTrianglesDataNV;
deref(&self) -> &Self::Target53898     fn deref(&self) -> &Self::Target {
53899         &self.inner
53900     }
53901 }
53902 impl<'a> ::std::ops::DerefMut for AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53903     fn deref_mut(&mut self) -> &mut Self::Target {
53904         &mut self.inner
53905     }
53906 }
53907 impl<'a> AccelerationStructureGeometryMotionTrianglesDataNVBuilder<'a> {
vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self53908     pub fn vertex_data(mut self, vertex_data: DeviceOrHostAddressConstKHR) -> Self {
53909         self.inner.vertex_data = vertex_data;
53910         self
53911     }
53912     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53913     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53914     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureGeometryMotionTrianglesDataNV53915     pub fn build(self) -> AccelerationStructureGeometryMotionTrianglesDataNV {
53916         self.inner
53917     }
53918 }
53919 #[repr(C)]
53920 #[cfg_attr(feature = "debug", derive(Debug))]
53921 #[derive(Copy, Clone)]
53922 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInfoNV.html>"]
53923 pub struct AccelerationStructureMotionInfoNV {
53924     pub s_type: StructureType,
53925     pub p_next: *const c_void,
53926     pub max_instances: u32,
53927     pub flags: AccelerationStructureMotionInfoFlagsNV,
53928 }
53929 impl ::std::default::Default for AccelerationStructureMotionInfoNV {
default() -> Self53930     fn default() -> Self {
53931         Self {
53932             s_type: StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV,
53933             p_next: ::std::ptr::null(),
53934             max_instances: u32::default(),
53935             flags: AccelerationStructureMotionInfoFlagsNV::default(),
53936         }
53937     }
53938 }
53939 impl AccelerationStructureMotionInfoNV {
builder<'a>() -> AccelerationStructureMotionInfoNVBuilder<'a>53940     pub fn builder<'a>() -> AccelerationStructureMotionInfoNVBuilder<'a> {
53941         AccelerationStructureMotionInfoNVBuilder {
53942             inner: Self::default(),
53943             marker: ::std::marker::PhantomData,
53944         }
53945     }
53946 }
53947 #[repr(transparent)]
53948 pub struct AccelerationStructureMotionInfoNVBuilder<'a> {
53949     inner: AccelerationStructureMotionInfoNV,
53950     marker: ::std::marker::PhantomData<&'a ()>,
53951 }
53952 unsafe impl ExtendsAccelerationStructureCreateInfoKHR
53953     for AccelerationStructureMotionInfoNVBuilder<'_>
53954 {
53955 }
53956 unsafe impl ExtendsAccelerationStructureCreateInfoKHR for AccelerationStructureMotionInfoNV {}
53957 impl<'a> ::std::ops::Deref for AccelerationStructureMotionInfoNVBuilder<'a> {
53958     type Target = AccelerationStructureMotionInfoNV;
deref(&self) -> &Self::Target53959     fn deref(&self) -> &Self::Target {
53960         &self.inner
53961     }
53962 }
53963 impl<'a> ::std::ops::DerefMut for AccelerationStructureMotionInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target53964     fn deref_mut(&mut self) -> &mut Self::Target {
53965         &mut self.inner
53966     }
53967 }
53968 impl<'a> AccelerationStructureMotionInfoNVBuilder<'a> {
max_instances(mut self, max_instances: u32) -> Self53969     pub fn max_instances(mut self, max_instances: u32) -> Self {
53970         self.inner.max_instances = max_instances;
53971         self
53972     }
flags(mut self, flags: AccelerationStructureMotionInfoFlagsNV) -> Self53973     pub fn flags(mut self, flags: AccelerationStructureMotionInfoFlagsNV) -> Self {
53974         self.inner.flags = flags;
53975         self
53976     }
53977     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
53978     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
53979     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureMotionInfoNV53980     pub fn build(self) -> AccelerationStructureMotionInfoNV {
53981         self.inner
53982     }
53983 }
53984 #[repr(C)]
53985 #[cfg_attr(feature = "debug", derive(Debug))]
53986 #[derive(Copy, Clone, Default)]
53987 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSRTDataNV.html>"]
53988 pub struct SRTDataNV {
53989     pub sx: f32,
53990     pub a: f32,
53991     pub b: f32,
53992     pub pvx: f32,
53993     pub sy: f32,
53994     pub c: f32,
53995     pub pvy: f32,
53996     pub sz: f32,
53997     pub pvz: f32,
53998     pub qx: f32,
53999     pub qy: f32,
54000     pub qz: f32,
54001     pub qw: f32,
54002     pub tx: f32,
54003     pub ty: f32,
54004     pub tz: f32,
54005 }
54006 impl SRTDataNV {
builder<'a>() -> SRTDataNVBuilder<'a>54007     pub fn builder<'a>() -> SRTDataNVBuilder<'a> {
54008         SRTDataNVBuilder {
54009             inner: Self::default(),
54010             marker: ::std::marker::PhantomData,
54011         }
54012     }
54013 }
54014 #[repr(transparent)]
54015 pub struct SRTDataNVBuilder<'a> {
54016     inner: SRTDataNV,
54017     marker: ::std::marker::PhantomData<&'a ()>,
54018 }
54019 impl<'a> ::std::ops::Deref for SRTDataNVBuilder<'a> {
54020     type Target = SRTDataNV;
deref(&self) -> &Self::Target54021     fn deref(&self) -> &Self::Target {
54022         &self.inner
54023     }
54024 }
54025 impl<'a> ::std::ops::DerefMut for SRTDataNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54026     fn deref_mut(&mut self) -> &mut Self::Target {
54027         &mut self.inner
54028     }
54029 }
54030 impl<'a> SRTDataNVBuilder<'a> {
sx(mut self, sx: f32) -> Self54031     pub fn sx(mut self, sx: f32) -> Self {
54032         self.inner.sx = sx;
54033         self
54034     }
a(mut self, a: f32) -> Self54035     pub fn a(mut self, a: f32) -> Self {
54036         self.inner.a = a;
54037         self
54038     }
b(mut self, b: f32) -> Self54039     pub fn b(mut self, b: f32) -> Self {
54040         self.inner.b = b;
54041         self
54042     }
pvx(mut self, pvx: f32) -> Self54043     pub fn pvx(mut self, pvx: f32) -> Self {
54044         self.inner.pvx = pvx;
54045         self
54046     }
sy(mut self, sy: f32) -> Self54047     pub fn sy(mut self, sy: f32) -> Self {
54048         self.inner.sy = sy;
54049         self
54050     }
c(mut self, c: f32) -> Self54051     pub fn c(mut self, c: f32) -> Self {
54052         self.inner.c = c;
54053         self
54054     }
pvy(mut self, pvy: f32) -> Self54055     pub fn pvy(mut self, pvy: f32) -> Self {
54056         self.inner.pvy = pvy;
54057         self
54058     }
sz(mut self, sz: f32) -> Self54059     pub fn sz(mut self, sz: f32) -> Self {
54060         self.inner.sz = sz;
54061         self
54062     }
pvz(mut self, pvz: f32) -> Self54063     pub fn pvz(mut self, pvz: f32) -> Self {
54064         self.inner.pvz = pvz;
54065         self
54066     }
qx(mut self, qx: f32) -> Self54067     pub fn qx(mut self, qx: f32) -> Self {
54068         self.inner.qx = qx;
54069         self
54070     }
qy(mut self, qy: f32) -> Self54071     pub fn qy(mut self, qy: f32) -> Self {
54072         self.inner.qy = qy;
54073         self
54074     }
qz(mut self, qz: f32) -> Self54075     pub fn qz(mut self, qz: f32) -> Self {
54076         self.inner.qz = qz;
54077         self
54078     }
qw(mut self, qw: f32) -> Self54079     pub fn qw(mut self, qw: f32) -> Self {
54080         self.inner.qw = qw;
54081         self
54082     }
tx(mut self, tx: f32) -> Self54083     pub fn tx(mut self, tx: f32) -> Self {
54084         self.inner.tx = tx;
54085         self
54086     }
ty(mut self, ty: f32) -> Self54087     pub fn ty(mut self, ty: f32) -> Self {
54088         self.inner.ty = ty;
54089         self
54090     }
tz(mut self, tz: f32) -> Self54091     pub fn tz(mut self, tz: f32) -> Self {
54092         self.inner.tz = tz;
54093         self
54094     }
54095     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54096     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54097     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SRTDataNV54098     pub fn build(self) -> SRTDataNV {
54099         self.inner
54100     }
54101 }
54102 #[repr(C)]
54103 #[derive(Copy, Clone)]
54104 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureSRTMotionInstanceNV.html>"]
54105 pub struct AccelerationStructureSRTMotionInstanceNV {
54106     pub transform_t0: SRTDataNV,
54107     pub transform_t1: SRTDataNV,
54108     #[doc = r" Use [`Packed24_8::new(instance_custom_index, mask)`][Packed24_8::new()] to construct this field"]
54109     pub instance_custom_index_and_mask: Packed24_8,
54110     #[doc = r" Use [`Packed24_8::new(instance_shader_binding_table_record_offset, flags)`][Packed24_8::new()] to construct this field"]
54111     pub instance_shader_binding_table_record_offset_and_flags: Packed24_8,
54112     pub acceleration_structure_reference: AccelerationStructureReferenceKHR,
54113 }
54114 #[repr(C)]
54115 #[derive(Copy, Clone)]
54116 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/AccelerationStructureMatrixMotionInstanceNV.html>"]
54117 pub struct AccelerationStructureMatrixMotionInstanceNV {
54118     pub transform_t0: TransformMatrixKHR,
54119     pub transform_t1: TransformMatrixKHR,
54120     #[doc = r" Use [`Packed24_8::new(instance_custom_index, mask)`][Packed24_8::new()] to construct this field"]
54121     pub instance_custom_index_and_mask: Packed24_8,
54122     #[doc = r" Use [`Packed24_8::new(instance_shader_binding_table_record_offset, flags)`][Packed24_8::new()] to construct this field"]
54123     pub instance_shader_binding_table_record_offset_and_flags: Packed24_8,
54124     pub acceleration_structure_reference: AccelerationStructureReferenceKHR,
54125 }
54126 #[repr(C)]
54127 #[derive(Copy, Clone)]
54128 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInstanceDataNV.html>"]
54129 pub union AccelerationStructureMotionInstanceDataNV {
54130     pub static_instance: AccelerationStructureInstanceKHR,
54131     pub matrix_motion_instance: AccelerationStructureMatrixMotionInstanceNV,
54132     pub srt_motion_instance: AccelerationStructureSRTMotionInstanceNV,
54133 }
54134 impl ::std::default::Default for AccelerationStructureMotionInstanceDataNV {
default() -> Self54135     fn default() -> Self {
54136         unsafe { ::std::mem::zeroed() }
54137     }
54138 }
54139 #[repr(C)]
54140 #[derive(Copy, Clone, Default)]
54141 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInstanceNV.html>"]
54142 pub struct AccelerationStructureMotionInstanceNV {
54143     pub ty: AccelerationStructureMotionInstanceTypeNV,
54144     pub flags: AccelerationStructureMotionInstanceFlagsNV,
54145     pub data: AccelerationStructureMotionInstanceDataNV,
54146 }
54147 #[cfg(feature = "debug")]
54148 impl fmt::Debug for AccelerationStructureMotionInstanceNV {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result54149     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
54150         fmt.debug_struct("AccelerationStructureMotionInstanceNV")
54151             .field("ty", &self.ty)
54152             .field("flags", &self.flags)
54153             .field("data", &"union")
54154             .finish()
54155     }
54156 }
54157 impl AccelerationStructureMotionInstanceNV {
builder<'a>() -> AccelerationStructureMotionInstanceNVBuilder<'a>54158     pub fn builder<'a>() -> AccelerationStructureMotionInstanceNVBuilder<'a> {
54159         AccelerationStructureMotionInstanceNVBuilder {
54160             inner: Self::default(),
54161             marker: ::std::marker::PhantomData,
54162         }
54163     }
54164 }
54165 #[repr(transparent)]
54166 pub struct AccelerationStructureMotionInstanceNVBuilder<'a> {
54167     inner: AccelerationStructureMotionInstanceNV,
54168     marker: ::std::marker::PhantomData<&'a ()>,
54169 }
54170 impl<'a> ::std::ops::Deref for AccelerationStructureMotionInstanceNVBuilder<'a> {
54171     type Target = AccelerationStructureMotionInstanceNV;
deref(&self) -> &Self::Target54172     fn deref(&self) -> &Self::Target {
54173         &self.inner
54174     }
54175 }
54176 impl<'a> ::std::ops::DerefMut for AccelerationStructureMotionInstanceNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54177     fn deref_mut(&mut self) -> &mut Self::Target {
54178         &mut self.inner
54179     }
54180 }
54181 impl<'a> AccelerationStructureMotionInstanceNVBuilder<'a> {
ty(mut self, ty: AccelerationStructureMotionInstanceTypeNV) -> Self54182     pub fn ty(mut self, ty: AccelerationStructureMotionInstanceTypeNV) -> Self {
54183         self.inner.ty = ty;
54184         self
54185     }
flags(mut self, flags: AccelerationStructureMotionInstanceFlagsNV) -> Self54186     pub fn flags(mut self, flags: AccelerationStructureMotionInstanceFlagsNV) -> Self {
54187         self.inner.flags = flags;
54188         self
54189     }
data(mut self, data: AccelerationStructureMotionInstanceDataNV) -> Self54190     pub fn data(mut self, data: AccelerationStructureMotionInstanceDataNV) -> Self {
54191         self.inner.data = data;
54192         self
54193     }
54194     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54195     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54196     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AccelerationStructureMotionInstanceNV54197     pub fn build(self) -> AccelerationStructureMotionInstanceNV {
54198         self.inner
54199     }
54200 }
54201 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRemoteAddressNV.html>"]
54202 pub type RemoteAddressNV = c_void;
54203 #[repr(C)]
54204 #[cfg_attr(feature = "debug", derive(Debug))]
54205 #[derive(Copy, Clone)]
54206 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryGetRemoteAddressInfoNV.html>"]
54207 pub struct MemoryGetRemoteAddressInfoNV {
54208     pub s_type: StructureType,
54209     pub p_next: *const c_void,
54210     pub memory: DeviceMemory,
54211     pub handle_type: ExternalMemoryHandleTypeFlags,
54212 }
54213 impl ::std::default::Default for MemoryGetRemoteAddressInfoNV {
default() -> Self54214     fn default() -> Self {
54215         Self {
54216             s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
54217             p_next: ::std::ptr::null(),
54218             memory: DeviceMemory::default(),
54219             handle_type: ExternalMemoryHandleTypeFlags::default(),
54220         }
54221     }
54222 }
54223 impl MemoryGetRemoteAddressInfoNV {
builder<'a>() -> MemoryGetRemoteAddressInfoNVBuilder<'a>54224     pub fn builder<'a>() -> MemoryGetRemoteAddressInfoNVBuilder<'a> {
54225         MemoryGetRemoteAddressInfoNVBuilder {
54226             inner: Self::default(),
54227             marker: ::std::marker::PhantomData,
54228         }
54229     }
54230 }
54231 #[repr(transparent)]
54232 pub struct MemoryGetRemoteAddressInfoNVBuilder<'a> {
54233     inner: MemoryGetRemoteAddressInfoNV,
54234     marker: ::std::marker::PhantomData<&'a ()>,
54235 }
54236 impl<'a> ::std::ops::Deref for MemoryGetRemoteAddressInfoNVBuilder<'a> {
54237     type Target = MemoryGetRemoteAddressInfoNV;
deref(&self) -> &Self::Target54238     fn deref(&self) -> &Self::Target {
54239         &self.inner
54240     }
54241 }
54242 impl<'a> ::std::ops::DerefMut for MemoryGetRemoteAddressInfoNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54243     fn deref_mut(&mut self) -> &mut Self::Target {
54244         &mut self.inner
54245     }
54246 }
54247 impl<'a> MemoryGetRemoteAddressInfoNVBuilder<'a> {
memory(mut self, memory: DeviceMemory) -> Self54248     pub fn memory(mut self, memory: DeviceMemory) -> Self {
54249         self.inner.memory = memory;
54250         self
54251     }
handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self54252     pub fn handle_type(mut self, handle_type: ExternalMemoryHandleTypeFlags) -> Self {
54253         self.inner.handle_type = handle_type;
54254         self
54255     }
54256     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54257     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54258     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MemoryGetRemoteAddressInfoNV54259     pub fn build(self) -> MemoryGetRemoteAddressInfoNV {
54260         self.inner
54261     }
54262 }
54263 #[repr(C)]
54264 #[cfg_attr(feature = "debug", derive(Debug))]
54265 #[derive(Copy, Clone)]
54266 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>"]
54267 pub struct ImportMemoryBufferCollectionFUCHSIA {
54268     pub s_type: StructureType,
54269     pub p_next: *const c_void,
54270     pub collection: BufferCollectionFUCHSIA,
54271     pub index: u32,
54272 }
54273 impl ::std::default::Default for ImportMemoryBufferCollectionFUCHSIA {
default() -> Self54274     fn default() -> Self {
54275         Self {
54276             s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
54277             p_next: ::std::ptr::null(),
54278             collection: BufferCollectionFUCHSIA::default(),
54279             index: u32::default(),
54280         }
54281     }
54282 }
54283 impl ImportMemoryBufferCollectionFUCHSIA {
builder<'a>() -> ImportMemoryBufferCollectionFUCHSIABuilder<'a>54284     pub fn builder<'a>() -> ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
54285         ImportMemoryBufferCollectionFUCHSIABuilder {
54286             inner: Self::default(),
54287             marker: ::std::marker::PhantomData,
54288         }
54289     }
54290 }
54291 #[repr(transparent)]
54292 pub struct ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
54293     inner: ImportMemoryBufferCollectionFUCHSIA,
54294     marker: ::std::marker::PhantomData<&'a ()>,
54295 }
54296 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryBufferCollectionFUCHSIABuilder<'_> {}
54297 unsafe impl ExtendsMemoryAllocateInfo for ImportMemoryBufferCollectionFUCHSIA {}
54298 impl<'a> ::std::ops::Deref for ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
54299     type Target = ImportMemoryBufferCollectionFUCHSIA;
deref(&self) -> &Self::Target54300     fn deref(&self) -> &Self::Target {
54301         &self.inner
54302     }
54303 }
54304 impl<'a> ::std::ops::DerefMut for ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54305     fn deref_mut(&mut self) -> &mut Self::Target {
54306         &mut self.inner
54307     }
54308 }
54309 impl<'a> ImportMemoryBufferCollectionFUCHSIABuilder<'a> {
collection(mut self, collection: BufferCollectionFUCHSIA) -> Self54310     pub fn collection(mut self, collection: BufferCollectionFUCHSIA) -> Self {
54311         self.inner.collection = collection;
54312         self
54313     }
index(mut self, index: u32) -> Self54314     pub fn index(mut self, index: u32) -> Self {
54315         self.inner.index = index;
54316         self
54317     }
54318     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54319     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54320     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImportMemoryBufferCollectionFUCHSIA54321     pub fn build(self) -> ImportMemoryBufferCollectionFUCHSIA {
54322         self.inner
54323     }
54324 }
54325 #[repr(C)]
54326 #[cfg_attr(feature = "debug", derive(Debug))]
54327 #[derive(Copy, Clone)]
54328 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>"]
54329 pub struct BufferCollectionImageCreateInfoFUCHSIA {
54330     pub s_type: StructureType,
54331     pub p_next: *const c_void,
54332     pub collection: BufferCollectionFUCHSIA,
54333     pub index: u32,
54334 }
54335 impl ::std::default::Default for BufferCollectionImageCreateInfoFUCHSIA {
default() -> Self54336     fn default() -> Self {
54337         Self {
54338             s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
54339             p_next: ::std::ptr::null(),
54340             collection: BufferCollectionFUCHSIA::default(),
54341             index: u32::default(),
54342         }
54343     }
54344 }
54345 impl BufferCollectionImageCreateInfoFUCHSIA {
builder<'a>() -> BufferCollectionImageCreateInfoFUCHSIABuilder<'a>54346     pub fn builder<'a>() -> BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
54347         BufferCollectionImageCreateInfoFUCHSIABuilder {
54348             inner: Self::default(),
54349             marker: ::std::marker::PhantomData,
54350         }
54351     }
54352 }
54353 #[repr(transparent)]
54354 pub struct BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
54355     inner: BufferCollectionImageCreateInfoFUCHSIA,
54356     marker: ::std::marker::PhantomData<&'a ()>,
54357 }
54358 unsafe impl ExtendsImageCreateInfo for BufferCollectionImageCreateInfoFUCHSIABuilder<'_> {}
54359 unsafe impl ExtendsImageCreateInfo for BufferCollectionImageCreateInfoFUCHSIA {}
54360 impl<'a> ::std::ops::Deref for BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
54361     type Target = BufferCollectionImageCreateInfoFUCHSIA;
deref(&self) -> &Self::Target54362     fn deref(&self) -> &Self::Target {
54363         &self.inner
54364     }
54365 }
54366 impl<'a> ::std::ops::DerefMut for BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54367     fn deref_mut(&mut self) -> &mut Self::Target {
54368         &mut self.inner
54369     }
54370 }
54371 impl<'a> BufferCollectionImageCreateInfoFUCHSIABuilder<'a> {
collection(mut self, collection: BufferCollectionFUCHSIA) -> Self54372     pub fn collection(mut self, collection: BufferCollectionFUCHSIA) -> Self {
54373         self.inner.collection = collection;
54374         self
54375     }
index(mut self, index: u32) -> Self54376     pub fn index(mut self, index: u32) -> Self {
54377         self.inner.index = index;
54378         self
54379     }
54380     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54381     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54382     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCollectionImageCreateInfoFUCHSIA54383     pub fn build(self) -> BufferCollectionImageCreateInfoFUCHSIA {
54384         self.inner
54385     }
54386 }
54387 #[repr(C)]
54388 #[cfg_attr(feature = "debug", derive(Debug))]
54389 #[derive(Copy, Clone)]
54390 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>"]
54391 pub struct BufferCollectionBufferCreateInfoFUCHSIA {
54392     pub s_type: StructureType,
54393     pub p_next: *const c_void,
54394     pub collection: BufferCollectionFUCHSIA,
54395     pub index: u32,
54396 }
54397 impl ::std::default::Default for BufferCollectionBufferCreateInfoFUCHSIA {
default() -> Self54398     fn default() -> Self {
54399         Self {
54400             s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
54401             p_next: ::std::ptr::null(),
54402             collection: BufferCollectionFUCHSIA::default(),
54403             index: u32::default(),
54404         }
54405     }
54406 }
54407 impl BufferCollectionBufferCreateInfoFUCHSIA {
builder<'a>() -> BufferCollectionBufferCreateInfoFUCHSIABuilder<'a>54408     pub fn builder<'a>() -> BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
54409         BufferCollectionBufferCreateInfoFUCHSIABuilder {
54410             inner: Self::default(),
54411             marker: ::std::marker::PhantomData,
54412         }
54413     }
54414 }
54415 #[repr(transparent)]
54416 pub struct BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
54417     inner: BufferCollectionBufferCreateInfoFUCHSIA,
54418     marker: ::std::marker::PhantomData<&'a ()>,
54419 }
54420 unsafe impl ExtendsBufferCreateInfo for BufferCollectionBufferCreateInfoFUCHSIABuilder<'_> {}
54421 unsafe impl ExtendsBufferCreateInfo for BufferCollectionBufferCreateInfoFUCHSIA {}
54422 impl<'a> ::std::ops::Deref for BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
54423     type Target = BufferCollectionBufferCreateInfoFUCHSIA;
deref(&self) -> &Self::Target54424     fn deref(&self) -> &Self::Target {
54425         &self.inner
54426     }
54427 }
54428 impl<'a> ::std::ops::DerefMut for BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54429     fn deref_mut(&mut self) -> &mut Self::Target {
54430         &mut self.inner
54431     }
54432 }
54433 impl<'a> BufferCollectionBufferCreateInfoFUCHSIABuilder<'a> {
collection(mut self, collection: BufferCollectionFUCHSIA) -> Self54434     pub fn collection(mut self, collection: BufferCollectionFUCHSIA) -> Self {
54435         self.inner.collection = collection;
54436         self
54437     }
index(mut self, index: u32) -> Self54438     pub fn index(mut self, index: u32) -> Self {
54439         self.inner.index = index;
54440         self
54441     }
54442     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54443     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54444     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCollectionBufferCreateInfoFUCHSIA54445     pub fn build(self) -> BufferCollectionBufferCreateInfoFUCHSIA {
54446         self.inner
54447     }
54448 }
54449 #[repr(C)]
54450 #[cfg_attr(feature = "debug", derive(Debug))]
54451 #[derive(Copy, Clone)]
54452 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>"]
54453 pub struct BufferCollectionCreateInfoFUCHSIA {
54454     pub s_type: StructureType,
54455     pub p_next: *const c_void,
54456     pub collection_token: zx_handle_t,
54457 }
54458 impl ::std::default::Default for BufferCollectionCreateInfoFUCHSIA {
default() -> Self54459     fn default() -> Self {
54460         Self {
54461             s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
54462             p_next: ::std::ptr::null(),
54463             collection_token: zx_handle_t::default(),
54464         }
54465     }
54466 }
54467 impl BufferCollectionCreateInfoFUCHSIA {
builder<'a>() -> BufferCollectionCreateInfoFUCHSIABuilder<'a>54468     pub fn builder<'a>() -> BufferCollectionCreateInfoFUCHSIABuilder<'a> {
54469         BufferCollectionCreateInfoFUCHSIABuilder {
54470             inner: Self::default(),
54471             marker: ::std::marker::PhantomData,
54472         }
54473     }
54474 }
54475 #[repr(transparent)]
54476 pub struct BufferCollectionCreateInfoFUCHSIABuilder<'a> {
54477     inner: BufferCollectionCreateInfoFUCHSIA,
54478     marker: ::std::marker::PhantomData<&'a ()>,
54479 }
54480 impl<'a> ::std::ops::Deref for BufferCollectionCreateInfoFUCHSIABuilder<'a> {
54481     type Target = BufferCollectionCreateInfoFUCHSIA;
deref(&self) -> &Self::Target54482     fn deref(&self) -> &Self::Target {
54483         &self.inner
54484     }
54485 }
54486 impl<'a> ::std::ops::DerefMut for BufferCollectionCreateInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54487     fn deref_mut(&mut self) -> &mut Self::Target {
54488         &mut self.inner
54489     }
54490 }
54491 impl<'a> BufferCollectionCreateInfoFUCHSIABuilder<'a> {
collection_token(mut self, collection_token: zx_handle_t) -> Self54492     pub fn collection_token(mut self, collection_token: zx_handle_t) -> Self {
54493         self.inner.collection_token = collection_token;
54494         self
54495     }
54496     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54497     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54498     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCollectionCreateInfoFUCHSIA54499     pub fn build(self) -> BufferCollectionCreateInfoFUCHSIA {
54500         self.inner
54501     }
54502 }
54503 #[repr(C)]
54504 #[cfg_attr(feature = "debug", derive(Debug))]
54505 #[derive(Copy, Clone)]
54506 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCollectionPropertiesFUCHSIA.html>"]
54507 pub struct BufferCollectionPropertiesFUCHSIA {
54508     pub s_type: StructureType,
54509     pub p_next: *mut c_void,
54510     pub memory_type_bits: u32,
54511     pub buffer_count: u32,
54512     pub create_info_index: u32,
54513     pub sysmem_pixel_format: u64,
54514     pub format_features: FormatFeatureFlags,
54515     pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
54516     pub sampler_ycbcr_conversion_components: ComponentMapping,
54517     pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
54518     pub suggested_ycbcr_range: SamplerYcbcrRange,
54519     pub suggested_x_chroma_offset: ChromaLocation,
54520     pub suggested_y_chroma_offset: ChromaLocation,
54521 }
54522 impl ::std::default::Default for BufferCollectionPropertiesFUCHSIA {
default() -> Self54523     fn default() -> Self {
54524         Self {
54525             s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
54526             p_next: ::std::ptr::null_mut(),
54527             memory_type_bits: u32::default(),
54528             buffer_count: u32::default(),
54529             create_info_index: u32::default(),
54530             sysmem_pixel_format: u64::default(),
54531             format_features: FormatFeatureFlags::default(),
54532             sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
54533             sampler_ycbcr_conversion_components: ComponentMapping::default(),
54534             suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
54535             suggested_ycbcr_range: SamplerYcbcrRange::default(),
54536             suggested_x_chroma_offset: ChromaLocation::default(),
54537             suggested_y_chroma_offset: ChromaLocation::default(),
54538         }
54539     }
54540 }
54541 impl BufferCollectionPropertiesFUCHSIA {
builder<'a>() -> BufferCollectionPropertiesFUCHSIABuilder<'a>54542     pub fn builder<'a>() -> BufferCollectionPropertiesFUCHSIABuilder<'a> {
54543         BufferCollectionPropertiesFUCHSIABuilder {
54544             inner: Self::default(),
54545             marker: ::std::marker::PhantomData,
54546         }
54547     }
54548 }
54549 #[repr(transparent)]
54550 pub struct BufferCollectionPropertiesFUCHSIABuilder<'a> {
54551     inner: BufferCollectionPropertiesFUCHSIA,
54552     marker: ::std::marker::PhantomData<&'a ()>,
54553 }
54554 impl<'a> ::std::ops::Deref for BufferCollectionPropertiesFUCHSIABuilder<'a> {
54555     type Target = BufferCollectionPropertiesFUCHSIA;
deref(&self) -> &Self::Target54556     fn deref(&self) -> &Self::Target {
54557         &self.inner
54558     }
54559 }
54560 impl<'a> ::std::ops::DerefMut for BufferCollectionPropertiesFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54561     fn deref_mut(&mut self) -> &mut Self::Target {
54562         &mut self.inner
54563     }
54564 }
54565 impl<'a> BufferCollectionPropertiesFUCHSIABuilder<'a> {
memory_type_bits(mut self, memory_type_bits: u32) -> Self54566     pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
54567         self.inner.memory_type_bits = memory_type_bits;
54568         self
54569     }
buffer_count(mut self, buffer_count: u32) -> Self54570     pub fn buffer_count(mut self, buffer_count: u32) -> Self {
54571         self.inner.buffer_count = buffer_count;
54572         self
54573     }
create_info_index(mut self, create_info_index: u32) -> Self54574     pub fn create_info_index(mut self, create_info_index: u32) -> Self {
54575         self.inner.create_info_index = create_info_index;
54576         self
54577     }
sysmem_pixel_format(mut self, sysmem_pixel_format: u64) -> Self54578     pub fn sysmem_pixel_format(mut self, sysmem_pixel_format: u64) -> Self {
54579         self.inner.sysmem_pixel_format = sysmem_pixel_format;
54580         self
54581     }
format_features(mut self, format_features: FormatFeatureFlags) -> Self54582     pub fn format_features(mut self, format_features: FormatFeatureFlags) -> Self {
54583         self.inner.format_features = format_features;
54584         self
54585     }
sysmem_color_space_index( mut self, sysmem_color_space_index: SysmemColorSpaceFUCHSIA, ) -> Self54586     pub fn sysmem_color_space_index(
54587         mut self,
54588         sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
54589     ) -> Self {
54590         self.inner.sysmem_color_space_index = sysmem_color_space_index;
54591         self
54592     }
sampler_ycbcr_conversion_components( mut self, sampler_ycbcr_conversion_components: ComponentMapping, ) -> Self54593     pub fn sampler_ycbcr_conversion_components(
54594         mut self,
54595         sampler_ycbcr_conversion_components: ComponentMapping,
54596     ) -> Self {
54597         self.inner.sampler_ycbcr_conversion_components = sampler_ycbcr_conversion_components;
54598         self
54599     }
suggested_ycbcr_model( mut self, suggested_ycbcr_model: SamplerYcbcrModelConversion, ) -> Self54600     pub fn suggested_ycbcr_model(
54601         mut self,
54602         suggested_ycbcr_model: SamplerYcbcrModelConversion,
54603     ) -> Self {
54604         self.inner.suggested_ycbcr_model = suggested_ycbcr_model;
54605         self
54606     }
suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self54607     pub fn suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self {
54608         self.inner.suggested_ycbcr_range = suggested_ycbcr_range;
54609         self
54610     }
suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self54611     pub fn suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self {
54612         self.inner.suggested_x_chroma_offset = suggested_x_chroma_offset;
54613         self
54614     }
suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self54615     pub fn suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self {
54616         self.inner.suggested_y_chroma_offset = suggested_y_chroma_offset;
54617         self
54618     }
54619     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54620     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54621     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCollectionPropertiesFUCHSIA54622     pub fn build(self) -> BufferCollectionPropertiesFUCHSIA {
54623         self.inner
54624     }
54625 }
54626 #[repr(C)]
54627 #[cfg_attr(feature = "debug", derive(Debug))]
54628 #[derive(Copy, Clone)]
54629 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferConstraintsInfoFUCHSIA.html>"]
54630 pub struct BufferConstraintsInfoFUCHSIA {
54631     pub s_type: StructureType,
54632     pub p_next: *const c_void,
54633     pub create_info: BufferCreateInfo,
54634     pub required_format_features: FormatFeatureFlags,
54635     pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
54636 }
54637 impl ::std::default::Default for BufferConstraintsInfoFUCHSIA {
default() -> Self54638     fn default() -> Self {
54639         Self {
54640             s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
54641             p_next: ::std::ptr::null(),
54642             create_info: BufferCreateInfo::default(),
54643             required_format_features: FormatFeatureFlags::default(),
54644             buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
54645         }
54646     }
54647 }
54648 impl BufferConstraintsInfoFUCHSIA {
builder<'a>() -> BufferConstraintsInfoFUCHSIABuilder<'a>54649     pub fn builder<'a>() -> BufferConstraintsInfoFUCHSIABuilder<'a> {
54650         BufferConstraintsInfoFUCHSIABuilder {
54651             inner: Self::default(),
54652             marker: ::std::marker::PhantomData,
54653         }
54654     }
54655 }
54656 #[repr(transparent)]
54657 pub struct BufferConstraintsInfoFUCHSIABuilder<'a> {
54658     inner: BufferConstraintsInfoFUCHSIA,
54659     marker: ::std::marker::PhantomData<&'a ()>,
54660 }
54661 impl<'a> ::std::ops::Deref for BufferConstraintsInfoFUCHSIABuilder<'a> {
54662     type Target = BufferConstraintsInfoFUCHSIA;
deref(&self) -> &Self::Target54663     fn deref(&self) -> &Self::Target {
54664         &self.inner
54665     }
54666 }
54667 impl<'a> ::std::ops::DerefMut for BufferConstraintsInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54668     fn deref_mut(&mut self) -> &mut Self::Target {
54669         &mut self.inner
54670     }
54671 }
54672 impl<'a> BufferConstraintsInfoFUCHSIABuilder<'a> {
create_info(mut self, create_info: BufferCreateInfo) -> Self54673     pub fn create_info(mut self, create_info: BufferCreateInfo) -> Self {
54674         self.inner.create_info = create_info;
54675         self
54676     }
required_format_features( mut self, required_format_features: FormatFeatureFlags, ) -> Self54677     pub fn required_format_features(
54678         mut self,
54679         required_format_features: FormatFeatureFlags,
54680     ) -> Self {
54681         self.inner.required_format_features = required_format_features;
54682         self
54683     }
buffer_collection_constraints( mut self, buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA, ) -> Self54684     pub fn buffer_collection_constraints(
54685         mut self,
54686         buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
54687     ) -> Self {
54688         self.inner.buffer_collection_constraints = buffer_collection_constraints;
54689         self
54690     }
54691     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54692     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54693     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferConstraintsInfoFUCHSIA54694     pub fn build(self) -> BufferConstraintsInfoFUCHSIA {
54695         self.inner
54696     }
54697 }
54698 #[repr(C)]
54699 #[cfg_attr(feature = "debug", derive(Debug))]
54700 #[derive(Copy, Clone)]
54701 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSysmemColorSpaceFUCHSIA.html>"]
54702 pub struct SysmemColorSpaceFUCHSIA {
54703     pub s_type: StructureType,
54704     pub p_next: *const c_void,
54705     pub color_space: u32,
54706 }
54707 impl ::std::default::Default for SysmemColorSpaceFUCHSIA {
default() -> Self54708     fn default() -> Self {
54709         Self {
54710             s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
54711             p_next: ::std::ptr::null(),
54712             color_space: u32::default(),
54713         }
54714     }
54715 }
54716 impl SysmemColorSpaceFUCHSIA {
builder<'a>() -> SysmemColorSpaceFUCHSIABuilder<'a>54717     pub fn builder<'a>() -> SysmemColorSpaceFUCHSIABuilder<'a> {
54718         SysmemColorSpaceFUCHSIABuilder {
54719             inner: Self::default(),
54720             marker: ::std::marker::PhantomData,
54721         }
54722     }
54723 }
54724 #[repr(transparent)]
54725 pub struct SysmemColorSpaceFUCHSIABuilder<'a> {
54726     inner: SysmemColorSpaceFUCHSIA,
54727     marker: ::std::marker::PhantomData<&'a ()>,
54728 }
54729 impl<'a> ::std::ops::Deref for SysmemColorSpaceFUCHSIABuilder<'a> {
54730     type Target = SysmemColorSpaceFUCHSIA;
deref(&self) -> &Self::Target54731     fn deref(&self) -> &Self::Target {
54732         &self.inner
54733     }
54734 }
54735 impl<'a> ::std::ops::DerefMut for SysmemColorSpaceFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54736     fn deref_mut(&mut self) -> &mut Self::Target {
54737         &mut self.inner
54738     }
54739 }
54740 impl<'a> SysmemColorSpaceFUCHSIABuilder<'a> {
color_space(mut self, color_space: u32) -> Self54741     pub fn color_space(mut self, color_space: u32) -> Self {
54742         self.inner.color_space = color_space;
54743         self
54744     }
54745     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54746     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54747     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> SysmemColorSpaceFUCHSIA54748     pub fn build(self) -> SysmemColorSpaceFUCHSIA {
54749         self.inner
54750     }
54751 }
54752 #[repr(C)]
54753 #[cfg_attr(feature = "debug", derive(Debug))]
54754 #[derive(Copy, Clone)]
54755 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>"]
54756 pub struct ImageFormatConstraintsInfoFUCHSIA {
54757     pub s_type: StructureType,
54758     pub p_next: *const c_void,
54759     pub image_create_info: ImageCreateInfo,
54760     pub required_format_features: FormatFeatureFlags,
54761     pub flags: ImageFormatConstraintsFlagsFUCHSIA,
54762     pub sysmem_pixel_format: u64,
54763     pub color_space_count: u32,
54764     pub p_color_spaces: *const SysmemColorSpaceFUCHSIA,
54765 }
54766 impl ::std::default::Default for ImageFormatConstraintsInfoFUCHSIA {
default() -> Self54767     fn default() -> Self {
54768         Self {
54769             s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
54770             p_next: ::std::ptr::null(),
54771             image_create_info: ImageCreateInfo::default(),
54772             required_format_features: FormatFeatureFlags::default(),
54773             flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
54774             sysmem_pixel_format: u64::default(),
54775             color_space_count: u32::default(),
54776             p_color_spaces: ::std::ptr::null(),
54777         }
54778     }
54779 }
54780 impl ImageFormatConstraintsInfoFUCHSIA {
builder<'a>() -> ImageFormatConstraintsInfoFUCHSIABuilder<'a>54781     pub fn builder<'a>() -> ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
54782         ImageFormatConstraintsInfoFUCHSIABuilder {
54783             inner: Self::default(),
54784             marker: ::std::marker::PhantomData,
54785         }
54786     }
54787 }
54788 #[repr(transparent)]
54789 pub struct ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
54790     inner: ImageFormatConstraintsInfoFUCHSIA,
54791     marker: ::std::marker::PhantomData<&'a ()>,
54792 }
54793 impl<'a> ::std::ops::Deref for ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
54794     type Target = ImageFormatConstraintsInfoFUCHSIA;
deref(&self) -> &Self::Target54795     fn deref(&self) -> &Self::Target {
54796         &self.inner
54797     }
54798 }
54799 impl<'a> ::std::ops::DerefMut for ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54800     fn deref_mut(&mut self) -> &mut Self::Target {
54801         &mut self.inner
54802     }
54803 }
54804 impl<'a> ImageFormatConstraintsInfoFUCHSIABuilder<'a> {
image_create_info(mut self, image_create_info: ImageCreateInfo) -> Self54805     pub fn image_create_info(mut self, image_create_info: ImageCreateInfo) -> Self {
54806         self.inner.image_create_info = image_create_info;
54807         self
54808     }
required_format_features( mut self, required_format_features: FormatFeatureFlags, ) -> Self54809     pub fn required_format_features(
54810         mut self,
54811         required_format_features: FormatFeatureFlags,
54812     ) -> Self {
54813         self.inner.required_format_features = required_format_features;
54814         self
54815     }
flags(mut self, flags: ImageFormatConstraintsFlagsFUCHSIA) -> Self54816     pub fn flags(mut self, flags: ImageFormatConstraintsFlagsFUCHSIA) -> Self {
54817         self.inner.flags = flags;
54818         self
54819     }
sysmem_pixel_format(mut self, sysmem_pixel_format: u64) -> Self54820     pub fn sysmem_pixel_format(mut self, sysmem_pixel_format: u64) -> Self {
54821         self.inner.sysmem_pixel_format = sysmem_pixel_format;
54822         self
54823     }
color_space_count(mut self, color_space_count: u32) -> Self54824     pub fn color_space_count(mut self, color_space_count: u32) -> Self {
54825         self.inner.color_space_count = color_space_count;
54826         self
54827     }
color_spaces(mut self, color_spaces: &'a SysmemColorSpaceFUCHSIA) -> Self54828     pub fn color_spaces(mut self, color_spaces: &'a SysmemColorSpaceFUCHSIA) -> Self {
54829         self.inner.p_color_spaces = color_spaces;
54830         self
54831     }
54832     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54833     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54834     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageFormatConstraintsInfoFUCHSIA54835     pub fn build(self) -> ImageFormatConstraintsInfoFUCHSIA {
54836         self.inner
54837     }
54838 }
54839 #[repr(C)]
54840 #[cfg_attr(feature = "debug", derive(Debug))]
54841 #[derive(Copy, Clone)]
54842 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageConstraintsInfoFUCHSIA.html>"]
54843 pub struct ImageConstraintsInfoFUCHSIA {
54844     pub s_type: StructureType,
54845     pub p_next: *const c_void,
54846     pub format_constraints_count: u32,
54847     pub p_format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
54848     pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
54849     pub flags: ImageConstraintsInfoFlagsFUCHSIA,
54850 }
54851 impl ::std::default::Default for ImageConstraintsInfoFUCHSIA {
default() -> Self54852     fn default() -> Self {
54853         Self {
54854             s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
54855             p_next: ::std::ptr::null(),
54856             format_constraints_count: u32::default(),
54857             p_format_constraints: ::std::ptr::null(),
54858             buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
54859             flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
54860         }
54861     }
54862 }
54863 impl ImageConstraintsInfoFUCHSIA {
builder<'a>() -> ImageConstraintsInfoFUCHSIABuilder<'a>54864     pub fn builder<'a>() -> ImageConstraintsInfoFUCHSIABuilder<'a> {
54865         ImageConstraintsInfoFUCHSIABuilder {
54866             inner: Self::default(),
54867             marker: ::std::marker::PhantomData,
54868         }
54869     }
54870 }
54871 #[repr(transparent)]
54872 pub struct ImageConstraintsInfoFUCHSIABuilder<'a> {
54873     inner: ImageConstraintsInfoFUCHSIA,
54874     marker: ::std::marker::PhantomData<&'a ()>,
54875 }
54876 impl<'a> ::std::ops::Deref for ImageConstraintsInfoFUCHSIABuilder<'a> {
54877     type Target = ImageConstraintsInfoFUCHSIA;
deref(&self) -> &Self::Target54878     fn deref(&self) -> &Self::Target {
54879         &self.inner
54880     }
54881 }
54882 impl<'a> ::std::ops::DerefMut for ImageConstraintsInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54883     fn deref_mut(&mut self) -> &mut Self::Target {
54884         &mut self.inner
54885     }
54886 }
54887 impl<'a> ImageConstraintsInfoFUCHSIABuilder<'a> {
format_constraints( mut self, format_constraints: &'a [ImageFormatConstraintsInfoFUCHSIA], ) -> Self54888     pub fn format_constraints(
54889         mut self,
54890         format_constraints: &'a [ImageFormatConstraintsInfoFUCHSIA],
54891     ) -> Self {
54892         self.inner.format_constraints_count = format_constraints.len() as _;
54893         self.inner.p_format_constraints = format_constraints.as_ptr();
54894         self
54895     }
buffer_collection_constraints( mut self, buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA, ) -> Self54896     pub fn buffer_collection_constraints(
54897         mut self,
54898         buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
54899     ) -> Self {
54900         self.inner.buffer_collection_constraints = buffer_collection_constraints;
54901         self
54902     }
flags(mut self, flags: ImageConstraintsInfoFlagsFUCHSIA) -> Self54903     pub fn flags(mut self, flags: ImageConstraintsInfoFlagsFUCHSIA) -> Self {
54904         self.inner.flags = flags;
54905         self
54906     }
54907     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54908     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54909     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageConstraintsInfoFUCHSIA54910     pub fn build(self) -> ImageConstraintsInfoFUCHSIA {
54911         self.inner
54912     }
54913 }
54914 #[repr(C)]
54915 #[cfg_attr(feature = "debug", derive(Debug))]
54916 #[derive(Copy, Clone)]
54917 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>"]
54918 pub struct BufferCollectionConstraintsInfoFUCHSIA {
54919     pub s_type: StructureType,
54920     pub p_next: *const c_void,
54921     pub min_buffer_count: u32,
54922     pub max_buffer_count: u32,
54923     pub min_buffer_count_for_camping: u32,
54924     pub min_buffer_count_for_dedicated_slack: u32,
54925     pub min_buffer_count_for_shared_slack: u32,
54926 }
54927 impl ::std::default::Default for BufferCollectionConstraintsInfoFUCHSIA {
default() -> Self54928     fn default() -> Self {
54929         Self {
54930             s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
54931             p_next: ::std::ptr::null(),
54932             min_buffer_count: u32::default(),
54933             max_buffer_count: u32::default(),
54934             min_buffer_count_for_camping: u32::default(),
54935             min_buffer_count_for_dedicated_slack: u32::default(),
54936             min_buffer_count_for_shared_slack: u32::default(),
54937         }
54938     }
54939 }
54940 impl BufferCollectionConstraintsInfoFUCHSIA {
builder<'a>() -> BufferCollectionConstraintsInfoFUCHSIABuilder<'a>54941     pub fn builder<'a>() -> BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
54942         BufferCollectionConstraintsInfoFUCHSIABuilder {
54943             inner: Self::default(),
54944             marker: ::std::marker::PhantomData,
54945         }
54946     }
54947 }
54948 #[repr(transparent)]
54949 pub struct BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
54950     inner: BufferCollectionConstraintsInfoFUCHSIA,
54951     marker: ::std::marker::PhantomData<&'a ()>,
54952 }
54953 impl<'a> ::std::ops::Deref for BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
54954     type Target = BufferCollectionConstraintsInfoFUCHSIA;
deref(&self) -> &Self::Target54955     fn deref(&self) -> &Self::Target {
54956         &self.inner
54957     }
54958 }
54959 impl<'a> ::std::ops::DerefMut for BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target54960     fn deref_mut(&mut self) -> &mut Self::Target {
54961         &mut self.inner
54962     }
54963 }
54964 impl<'a> BufferCollectionConstraintsInfoFUCHSIABuilder<'a> {
min_buffer_count(mut self, min_buffer_count: u32) -> Self54965     pub fn min_buffer_count(mut self, min_buffer_count: u32) -> Self {
54966         self.inner.min_buffer_count = min_buffer_count;
54967         self
54968     }
max_buffer_count(mut self, max_buffer_count: u32) -> Self54969     pub fn max_buffer_count(mut self, max_buffer_count: u32) -> Self {
54970         self.inner.max_buffer_count = max_buffer_count;
54971         self
54972     }
min_buffer_count_for_camping(mut self, min_buffer_count_for_camping: u32) -> Self54973     pub fn min_buffer_count_for_camping(mut self, min_buffer_count_for_camping: u32) -> Self {
54974         self.inner.min_buffer_count_for_camping = min_buffer_count_for_camping;
54975         self
54976     }
min_buffer_count_for_dedicated_slack( mut self, min_buffer_count_for_dedicated_slack: u32, ) -> Self54977     pub fn min_buffer_count_for_dedicated_slack(
54978         mut self,
54979         min_buffer_count_for_dedicated_slack: u32,
54980     ) -> Self {
54981         self.inner.min_buffer_count_for_dedicated_slack = min_buffer_count_for_dedicated_slack;
54982         self
54983     }
min_buffer_count_for_shared_slack( mut self, min_buffer_count_for_shared_slack: u32, ) -> Self54984     pub fn min_buffer_count_for_shared_slack(
54985         mut self,
54986         min_buffer_count_for_shared_slack: u32,
54987     ) -> Self {
54988         self.inner.min_buffer_count_for_shared_slack = min_buffer_count_for_shared_slack;
54989         self
54990     }
54991     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
54992     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
54993     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> BufferCollectionConstraintsInfoFUCHSIA54994     pub fn build(self) -> BufferCollectionConstraintsInfoFUCHSIA {
54995         self.inner
54996     }
54997 }
54998 #[repr(C)]
54999 #[cfg_attr(feature = "debug", derive(Debug))]
55000 #[derive(Copy, Clone)]
55001 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>"]
55002 pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
55003     pub s_type: StructureType,
55004     pub p_next: *mut c_void,
55005     pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
55006 }
55007 impl ::std::default::Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
default() -> Self55008     fn default() -> Self {
55009         Self {
55010             s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
55011             p_next: ::std::ptr::null_mut(),
55012             format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
55013         }
55014     }
55015 }
55016 impl PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
builder<'a>() -> PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a>55017     pub fn builder<'a>() -> PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
55018         PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder {
55019             inner: Self::default(),
55020             marker: ::std::marker::PhantomData,
55021         }
55022     }
55023 }
55024 #[repr(transparent)]
55025 pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
55026     inner: PhysicalDeviceRGBA10X6FormatsFeaturesEXT,
55027     marker: ::std::marker::PhantomData<&'a ()>,
55028 }
55029 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'_> {}
55030 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
55031 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'_> {}
55032 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
55033 impl<'a> ::std::ops::Deref for PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
55034     type Target = PhysicalDeviceRGBA10X6FormatsFeaturesEXT;
deref(&self) -> &Self::Target55035     fn deref(&self) -> &Self::Target {
55036         &self.inner
55037     }
55038 }
55039 impl<'a> ::std::ops::DerefMut for PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55040     fn deref_mut(&mut self) -> &mut Self::Target {
55041         &mut self.inner
55042     }
55043 }
55044 impl<'a> PhysicalDeviceRGBA10X6FormatsFeaturesEXTBuilder<'a> {
format_rgba10x6_without_y_cb_cr_sampler( mut self, format_rgba10x6_without_y_cb_cr_sampler: bool, ) -> Self55045     pub fn format_rgba10x6_without_y_cb_cr_sampler(
55046         mut self,
55047         format_rgba10x6_without_y_cb_cr_sampler: bool,
55048     ) -> Self {
55049         self.inner.format_rgba10x6_without_y_cb_cr_sampler =
55050             format_rgba10x6_without_y_cb_cr_sampler.into();
55051         self
55052     }
55053     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55054     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55055     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRGBA10X6FormatsFeaturesEXT55056     pub fn build(self) -> PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
55057         self.inner
55058     }
55059 }
55060 #[repr(C)]
55061 #[cfg_attr(feature = "debug", derive(Debug))]
55062 #[derive(Copy, Clone)]
55063 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatProperties3KHR.html>"]
55064 pub struct FormatProperties3KHR {
55065     pub s_type: StructureType,
55066     pub p_next: *mut c_void,
55067     pub linear_tiling_features: FormatFeatureFlags2KHR,
55068     pub optimal_tiling_features: FormatFeatureFlags2KHR,
55069     pub buffer_features: FormatFeatureFlags2KHR,
55070 }
55071 impl ::std::default::Default for FormatProperties3KHR {
default() -> Self55072     fn default() -> Self {
55073         Self {
55074             s_type: StructureType::FORMAT_PROPERTIES_3_KHR,
55075             p_next: ::std::ptr::null_mut(),
55076             linear_tiling_features: FormatFeatureFlags2KHR::default(),
55077             optimal_tiling_features: FormatFeatureFlags2KHR::default(),
55078             buffer_features: FormatFeatureFlags2KHR::default(),
55079         }
55080     }
55081 }
55082 impl FormatProperties3KHR {
builder<'a>() -> FormatProperties3KHRBuilder<'a>55083     pub fn builder<'a>() -> FormatProperties3KHRBuilder<'a> {
55084         FormatProperties3KHRBuilder {
55085             inner: Self::default(),
55086             marker: ::std::marker::PhantomData,
55087         }
55088     }
55089 }
55090 #[repr(transparent)]
55091 pub struct FormatProperties3KHRBuilder<'a> {
55092     inner: FormatProperties3KHR,
55093     marker: ::std::marker::PhantomData<&'a ()>,
55094 }
55095 unsafe impl ExtendsFormatProperties2 for FormatProperties3KHRBuilder<'_> {}
55096 unsafe impl ExtendsFormatProperties2 for FormatProperties3KHR {}
55097 impl<'a> ::std::ops::Deref for FormatProperties3KHRBuilder<'a> {
55098     type Target = FormatProperties3KHR;
deref(&self) -> &Self::Target55099     fn deref(&self) -> &Self::Target {
55100         &self.inner
55101     }
55102 }
55103 impl<'a> ::std::ops::DerefMut for FormatProperties3KHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55104     fn deref_mut(&mut self) -> &mut Self::Target {
55105         &mut self.inner
55106     }
55107 }
55108 impl<'a> FormatProperties3KHRBuilder<'a> {
linear_tiling_features( mut self, linear_tiling_features: FormatFeatureFlags2KHR, ) -> Self55109     pub fn linear_tiling_features(
55110         mut self,
55111         linear_tiling_features: FormatFeatureFlags2KHR,
55112     ) -> Self {
55113         self.inner.linear_tiling_features = linear_tiling_features;
55114         self
55115     }
optimal_tiling_features( mut self, optimal_tiling_features: FormatFeatureFlags2KHR, ) -> Self55116     pub fn optimal_tiling_features(
55117         mut self,
55118         optimal_tiling_features: FormatFeatureFlags2KHR,
55119     ) -> Self {
55120         self.inner.optimal_tiling_features = optimal_tiling_features;
55121         self
55122     }
buffer_features(mut self, buffer_features: FormatFeatureFlags2KHR) -> Self55123     pub fn buffer_features(mut self, buffer_features: FormatFeatureFlags2KHR) -> Self {
55124         self.inner.buffer_features = buffer_features;
55125         self
55126     }
55127     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55128     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55129     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> FormatProperties3KHR55130     pub fn build(self) -> FormatProperties3KHR {
55131         self.inner
55132     }
55133 }
55134 #[repr(C)]
55135 #[cfg_attr(feature = "debug", derive(Debug))]
55136 #[derive(Copy, Clone)]
55137 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrmFormatModifierPropertiesList2EXT.html>"]
55138 pub struct DrmFormatModifierPropertiesList2EXT {
55139     pub s_type: StructureType,
55140     pub p_next: *mut c_void,
55141     pub drm_format_modifier_count: u32,
55142     pub p_drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
55143 }
55144 impl ::std::default::Default for DrmFormatModifierPropertiesList2EXT {
default() -> Self55145     fn default() -> Self {
55146         Self {
55147             s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
55148             p_next: ::std::ptr::null_mut(),
55149             drm_format_modifier_count: u32::default(),
55150             p_drm_format_modifier_properties: ::std::ptr::null_mut(),
55151         }
55152     }
55153 }
55154 impl DrmFormatModifierPropertiesList2EXT {
builder<'a>() -> DrmFormatModifierPropertiesList2EXTBuilder<'a>55155     pub fn builder<'a>() -> DrmFormatModifierPropertiesList2EXTBuilder<'a> {
55156         DrmFormatModifierPropertiesList2EXTBuilder {
55157             inner: Self::default(),
55158             marker: ::std::marker::PhantomData,
55159         }
55160     }
55161 }
55162 #[repr(transparent)]
55163 pub struct DrmFormatModifierPropertiesList2EXTBuilder<'a> {
55164     inner: DrmFormatModifierPropertiesList2EXT,
55165     marker: ::std::marker::PhantomData<&'a ()>,
55166 }
55167 unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesList2EXTBuilder<'_> {}
55168 unsafe impl ExtendsFormatProperties2 for DrmFormatModifierPropertiesList2EXT {}
55169 impl<'a> ::std::ops::Deref for DrmFormatModifierPropertiesList2EXTBuilder<'a> {
55170     type Target = DrmFormatModifierPropertiesList2EXT;
deref(&self) -> &Self::Target55171     fn deref(&self) -> &Self::Target {
55172         &self.inner
55173     }
55174 }
55175 impl<'a> ::std::ops::DerefMut for DrmFormatModifierPropertiesList2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55176     fn deref_mut(&mut self) -> &mut Self::Target {
55177         &mut self.inner
55178     }
55179 }
55180 impl<'a> DrmFormatModifierPropertiesList2EXTBuilder<'a> {
drm_format_modifier_properties( mut self, drm_format_modifier_properties: &'a mut [DrmFormatModifierProperties2EXT], ) -> Self55181     pub fn drm_format_modifier_properties(
55182         mut self,
55183         drm_format_modifier_properties: &'a mut [DrmFormatModifierProperties2EXT],
55184     ) -> Self {
55185         self.inner.drm_format_modifier_count = drm_format_modifier_properties.len() as _;
55186         self.inner.p_drm_format_modifier_properties = drm_format_modifier_properties.as_mut_ptr();
55187         self
55188     }
55189     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55190     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55191     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrmFormatModifierPropertiesList2EXT55192     pub fn build(self) -> DrmFormatModifierPropertiesList2EXT {
55193         self.inner
55194     }
55195 }
55196 #[repr(C)]
55197 #[cfg_attr(feature = "debug", derive(Debug))]
55198 #[derive(Copy, Clone, Default)]
55199 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrmFormatModifierProperties2EXT.html>"]
55200 pub struct DrmFormatModifierProperties2EXT {
55201     pub drm_format_modifier: u64,
55202     pub drm_format_modifier_plane_count: u32,
55203     pub drm_format_modifier_tiling_features: FormatFeatureFlags2KHR,
55204 }
55205 impl DrmFormatModifierProperties2EXT {
builder<'a>() -> DrmFormatModifierProperties2EXTBuilder<'a>55206     pub fn builder<'a>() -> DrmFormatModifierProperties2EXTBuilder<'a> {
55207         DrmFormatModifierProperties2EXTBuilder {
55208             inner: Self::default(),
55209             marker: ::std::marker::PhantomData,
55210         }
55211     }
55212 }
55213 #[repr(transparent)]
55214 pub struct DrmFormatModifierProperties2EXTBuilder<'a> {
55215     inner: DrmFormatModifierProperties2EXT,
55216     marker: ::std::marker::PhantomData<&'a ()>,
55217 }
55218 impl<'a> ::std::ops::Deref for DrmFormatModifierProperties2EXTBuilder<'a> {
55219     type Target = DrmFormatModifierProperties2EXT;
deref(&self) -> &Self::Target55220     fn deref(&self) -> &Self::Target {
55221         &self.inner
55222     }
55223 }
55224 impl<'a> ::std::ops::DerefMut for DrmFormatModifierProperties2EXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55225     fn deref_mut(&mut self) -> &mut Self::Target {
55226         &mut self.inner
55227     }
55228 }
55229 impl<'a> DrmFormatModifierProperties2EXTBuilder<'a> {
drm_format_modifier(mut self, drm_format_modifier: u64) -> Self55230     pub fn drm_format_modifier(mut self, drm_format_modifier: u64) -> Self {
55231         self.inner.drm_format_modifier = drm_format_modifier;
55232         self
55233     }
drm_format_modifier_plane_count(mut self, drm_format_modifier_plane_count: u32) -> Self55234     pub fn drm_format_modifier_plane_count(mut self, drm_format_modifier_plane_count: u32) -> Self {
55235         self.inner.drm_format_modifier_plane_count = drm_format_modifier_plane_count;
55236         self
55237     }
drm_format_modifier_tiling_features( mut self, drm_format_modifier_tiling_features: FormatFeatureFlags2KHR, ) -> Self55238     pub fn drm_format_modifier_tiling_features(
55239         mut self,
55240         drm_format_modifier_tiling_features: FormatFeatureFlags2KHR,
55241     ) -> Self {
55242         self.inner.drm_format_modifier_tiling_features = drm_format_modifier_tiling_features;
55243         self
55244     }
55245     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55246     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55247     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> DrmFormatModifierProperties2EXT55248     pub fn build(self) -> DrmFormatModifierProperties2EXT {
55249         self.inner
55250     }
55251 }
55252 #[repr(C)]
55253 #[cfg_attr(feature = "debug", derive(Debug))]
55254 #[derive(Copy, Clone)]
55255 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAndroidHardwareBufferFormatProperties2ANDROID.html>"]
55256 pub struct AndroidHardwareBufferFormatProperties2ANDROID {
55257     pub s_type: StructureType,
55258     pub p_next: *mut c_void,
55259     pub format: Format,
55260     pub external_format: u64,
55261     pub format_features: FormatFeatureFlags2KHR,
55262     pub sampler_ycbcr_conversion_components: ComponentMapping,
55263     pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
55264     pub suggested_ycbcr_range: SamplerYcbcrRange,
55265     pub suggested_x_chroma_offset: ChromaLocation,
55266     pub suggested_y_chroma_offset: ChromaLocation,
55267 }
55268 impl ::std::default::Default for AndroidHardwareBufferFormatProperties2ANDROID {
default() -> Self55269     fn default() -> Self {
55270         Self {
55271             s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID,
55272             p_next: ::std::ptr::null_mut(),
55273             format: Format::default(),
55274             external_format: u64::default(),
55275             format_features: FormatFeatureFlags2KHR::default(),
55276             sampler_ycbcr_conversion_components: ComponentMapping::default(),
55277             suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
55278             suggested_ycbcr_range: SamplerYcbcrRange::default(),
55279             suggested_x_chroma_offset: ChromaLocation::default(),
55280             suggested_y_chroma_offset: ChromaLocation::default(),
55281         }
55282     }
55283 }
55284 impl AndroidHardwareBufferFormatProperties2ANDROID {
builder<'a>() -> AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a>55285     pub fn builder<'a>() -> AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
55286         AndroidHardwareBufferFormatProperties2ANDROIDBuilder {
55287             inner: Self::default(),
55288             marker: ::std::marker::PhantomData,
55289         }
55290     }
55291 }
55292 #[repr(transparent)]
55293 pub struct AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
55294     inner: AndroidHardwareBufferFormatProperties2ANDROID,
55295     marker: ::std::marker::PhantomData<&'a ()>,
55296 }
55297 unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID
55298     for AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'_>
55299 {
55300 }
55301 unsafe impl ExtendsAndroidHardwareBufferPropertiesANDROID
55302     for AndroidHardwareBufferFormatProperties2ANDROID
55303 {
55304 }
55305 impl<'a> ::std::ops::Deref for AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
55306     type Target = AndroidHardwareBufferFormatProperties2ANDROID;
deref(&self) -> &Self::Target55307     fn deref(&self) -> &Self::Target {
55308         &self.inner
55309     }
55310 }
55311 impl<'a> ::std::ops::DerefMut for AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55312     fn deref_mut(&mut self) -> &mut Self::Target {
55313         &mut self.inner
55314     }
55315 }
55316 impl<'a> AndroidHardwareBufferFormatProperties2ANDROIDBuilder<'a> {
format(mut self, format: Format) -> Self55317     pub fn format(mut self, format: Format) -> Self {
55318         self.inner.format = format;
55319         self
55320     }
external_format(mut self, external_format: u64) -> Self55321     pub fn external_format(mut self, external_format: u64) -> Self {
55322         self.inner.external_format = external_format;
55323         self
55324     }
format_features(mut self, format_features: FormatFeatureFlags2KHR) -> Self55325     pub fn format_features(mut self, format_features: FormatFeatureFlags2KHR) -> Self {
55326         self.inner.format_features = format_features;
55327         self
55328     }
sampler_ycbcr_conversion_components( mut self, sampler_ycbcr_conversion_components: ComponentMapping, ) -> Self55329     pub fn sampler_ycbcr_conversion_components(
55330         mut self,
55331         sampler_ycbcr_conversion_components: ComponentMapping,
55332     ) -> Self {
55333         self.inner.sampler_ycbcr_conversion_components = sampler_ycbcr_conversion_components;
55334         self
55335     }
suggested_ycbcr_model( mut self, suggested_ycbcr_model: SamplerYcbcrModelConversion, ) -> Self55336     pub fn suggested_ycbcr_model(
55337         mut self,
55338         suggested_ycbcr_model: SamplerYcbcrModelConversion,
55339     ) -> Self {
55340         self.inner.suggested_ycbcr_model = suggested_ycbcr_model;
55341         self
55342     }
suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self55343     pub fn suggested_ycbcr_range(mut self, suggested_ycbcr_range: SamplerYcbcrRange) -> Self {
55344         self.inner.suggested_ycbcr_range = suggested_ycbcr_range;
55345         self
55346     }
suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self55347     pub fn suggested_x_chroma_offset(mut self, suggested_x_chroma_offset: ChromaLocation) -> Self {
55348         self.inner.suggested_x_chroma_offset = suggested_x_chroma_offset;
55349         self
55350     }
suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self55351     pub fn suggested_y_chroma_offset(mut self, suggested_y_chroma_offset: ChromaLocation) -> Self {
55352         self.inner.suggested_y_chroma_offset = suggested_y_chroma_offset;
55353         self
55354     }
55355     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55356     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55357     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AndroidHardwareBufferFormatProperties2ANDROID55358     pub fn build(self) -> AndroidHardwareBufferFormatProperties2ANDROID {
55359         self.inner
55360     }
55361 }
55362 #[repr(C)]
55363 #[cfg_attr(feature = "debug", derive(Debug))]
55364 #[derive(Copy, Clone)]
55365 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRenderingCreateInfoKHR.html>"]
55366 pub struct PipelineRenderingCreateInfoKHR {
55367     pub s_type: StructureType,
55368     pub p_next: *const c_void,
55369     pub view_mask: u32,
55370     pub color_attachment_count: u32,
55371     pub p_color_attachment_formats: *const Format,
55372     pub depth_attachment_format: Format,
55373     pub stencil_attachment_format: Format,
55374 }
55375 impl ::std::default::Default for PipelineRenderingCreateInfoKHR {
default() -> Self55376     fn default() -> Self {
55377         Self {
55378             s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO_KHR,
55379             p_next: ::std::ptr::null(),
55380             view_mask: u32::default(),
55381             color_attachment_count: u32::default(),
55382             p_color_attachment_formats: ::std::ptr::null(),
55383             depth_attachment_format: Format::default(),
55384             stencil_attachment_format: Format::default(),
55385         }
55386     }
55387 }
55388 impl PipelineRenderingCreateInfoKHR {
builder<'a>() -> PipelineRenderingCreateInfoKHRBuilder<'a>55389     pub fn builder<'a>() -> PipelineRenderingCreateInfoKHRBuilder<'a> {
55390         PipelineRenderingCreateInfoKHRBuilder {
55391             inner: Self::default(),
55392             marker: ::std::marker::PhantomData,
55393         }
55394     }
55395 }
55396 #[repr(transparent)]
55397 pub struct PipelineRenderingCreateInfoKHRBuilder<'a> {
55398     inner: PipelineRenderingCreateInfoKHR,
55399     marker: ::std::marker::PhantomData<&'a ()>,
55400 }
55401 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineRenderingCreateInfoKHRBuilder<'_> {}
55402 unsafe impl ExtendsGraphicsPipelineCreateInfo for PipelineRenderingCreateInfoKHR {}
55403 impl<'a> ::std::ops::Deref for PipelineRenderingCreateInfoKHRBuilder<'a> {
55404     type Target = PipelineRenderingCreateInfoKHR;
deref(&self) -> &Self::Target55405     fn deref(&self) -> &Self::Target {
55406         &self.inner
55407     }
55408 }
55409 impl<'a> ::std::ops::DerefMut for PipelineRenderingCreateInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55410     fn deref_mut(&mut self) -> &mut Self::Target {
55411         &mut self.inner
55412     }
55413 }
55414 impl<'a> PipelineRenderingCreateInfoKHRBuilder<'a> {
view_mask(mut self, view_mask: u32) -> Self55415     pub fn view_mask(mut self, view_mask: u32) -> Self {
55416         self.inner.view_mask = view_mask;
55417         self
55418     }
color_attachment_formats(mut self, color_attachment_formats: &'a [Format]) -> Self55419     pub fn color_attachment_formats(mut self, color_attachment_formats: &'a [Format]) -> Self {
55420         self.inner.color_attachment_count = color_attachment_formats.len() as _;
55421         self.inner.p_color_attachment_formats = color_attachment_formats.as_ptr();
55422         self
55423     }
depth_attachment_format(mut self, depth_attachment_format: Format) -> Self55424     pub fn depth_attachment_format(mut self, depth_attachment_format: Format) -> Self {
55425         self.inner.depth_attachment_format = depth_attachment_format;
55426         self
55427     }
stencil_attachment_format(mut self, stencil_attachment_format: Format) -> Self55428     pub fn stencil_attachment_format(mut self, stencil_attachment_format: Format) -> Self {
55429         self.inner.stencil_attachment_format = stencil_attachment_format;
55430         self
55431     }
55432     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55433     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55434     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PipelineRenderingCreateInfoKHR55435     pub fn build(self) -> PipelineRenderingCreateInfoKHR {
55436         self.inner
55437     }
55438 }
55439 #[repr(C)]
55440 #[cfg_attr(feature = "debug", derive(Debug))]
55441 #[derive(Copy, Clone)]
55442 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderingInfoKHR.html>"]
55443 pub struct RenderingInfoKHR {
55444     pub s_type: StructureType,
55445     pub p_next: *const c_void,
55446     pub flags: RenderingFlagsKHR,
55447     pub render_area: Rect2D,
55448     pub layer_count: u32,
55449     pub view_mask: u32,
55450     pub color_attachment_count: u32,
55451     pub p_color_attachments: *const RenderingAttachmentInfoKHR,
55452     pub p_depth_attachment: *const RenderingAttachmentInfoKHR,
55453     pub p_stencil_attachment: *const RenderingAttachmentInfoKHR,
55454 }
55455 impl ::std::default::Default for RenderingInfoKHR {
default() -> Self55456     fn default() -> Self {
55457         Self {
55458             s_type: StructureType::RENDERING_INFO_KHR,
55459             p_next: ::std::ptr::null(),
55460             flags: RenderingFlagsKHR::default(),
55461             render_area: Rect2D::default(),
55462             layer_count: u32::default(),
55463             view_mask: u32::default(),
55464             color_attachment_count: u32::default(),
55465             p_color_attachments: ::std::ptr::null(),
55466             p_depth_attachment: ::std::ptr::null(),
55467             p_stencil_attachment: ::std::ptr::null(),
55468         }
55469     }
55470 }
55471 impl RenderingInfoKHR {
builder<'a>() -> RenderingInfoKHRBuilder<'a>55472     pub fn builder<'a>() -> RenderingInfoKHRBuilder<'a> {
55473         RenderingInfoKHRBuilder {
55474             inner: Self::default(),
55475             marker: ::std::marker::PhantomData,
55476         }
55477     }
55478 }
55479 #[repr(transparent)]
55480 pub struct RenderingInfoKHRBuilder<'a> {
55481     inner: RenderingInfoKHR,
55482     marker: ::std::marker::PhantomData<&'a ()>,
55483 }
55484 pub unsafe trait ExtendsRenderingInfoKHR {}
55485 impl<'a> ::std::ops::Deref for RenderingInfoKHRBuilder<'a> {
55486     type Target = RenderingInfoKHR;
deref(&self) -> &Self::Target55487     fn deref(&self) -> &Self::Target {
55488         &self.inner
55489     }
55490 }
55491 impl<'a> ::std::ops::DerefMut for RenderingInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55492     fn deref_mut(&mut self) -> &mut Self::Target {
55493         &mut self.inner
55494     }
55495 }
55496 impl<'a> RenderingInfoKHRBuilder<'a> {
flags(mut self, flags: RenderingFlagsKHR) -> Self55497     pub fn flags(mut self, flags: RenderingFlagsKHR) -> Self {
55498         self.inner.flags = flags;
55499         self
55500     }
render_area(mut self, render_area: Rect2D) -> Self55501     pub fn render_area(mut self, render_area: Rect2D) -> Self {
55502         self.inner.render_area = render_area;
55503         self
55504     }
layer_count(mut self, layer_count: u32) -> Self55505     pub fn layer_count(mut self, layer_count: u32) -> Self {
55506         self.inner.layer_count = layer_count;
55507         self
55508     }
view_mask(mut self, view_mask: u32) -> Self55509     pub fn view_mask(mut self, view_mask: u32) -> Self {
55510         self.inner.view_mask = view_mask;
55511         self
55512     }
color_attachments( mut self, color_attachments: &'a [RenderingAttachmentInfoKHR], ) -> Self55513     pub fn color_attachments(
55514         mut self,
55515         color_attachments: &'a [RenderingAttachmentInfoKHR],
55516     ) -> Self {
55517         self.inner.color_attachment_count = color_attachments.len() as _;
55518         self.inner.p_color_attachments = color_attachments.as_ptr();
55519         self
55520     }
depth_attachment(mut self, depth_attachment: &'a RenderingAttachmentInfoKHR) -> Self55521     pub fn depth_attachment(mut self, depth_attachment: &'a RenderingAttachmentInfoKHR) -> Self {
55522         self.inner.p_depth_attachment = depth_attachment;
55523         self
55524     }
stencil_attachment( mut self, stencil_attachment: &'a RenderingAttachmentInfoKHR, ) -> Self55525     pub fn stencil_attachment(
55526         mut self,
55527         stencil_attachment: &'a RenderingAttachmentInfoKHR,
55528     ) -> Self {
55529         self.inner.p_stencil_attachment = stencil_attachment;
55530         self
55531     }
55532     #[doc = r" Prepends the given extension struct between the root and the first pointer. This"]
55533     #[doc = r" method only exists on structs that can be passed to a function directly. Only"]
55534     #[doc = r" valid extension structs can be pushed into the chain."]
55535     #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"]
55536     #[doc = r" chain will look like `A -> D -> B -> C`."]
push_next<T: ExtendsRenderingInfoKHR>(mut self, next: &'a mut T) -> Self55537     pub fn push_next<T: ExtendsRenderingInfoKHR>(mut self, next: &'a mut T) -> Self {
55538         unsafe {
55539             let next_ptr = next as *mut T as *mut BaseOutStructure;
55540             let last_next = ptr_chain_iter(next).last().unwrap();
55541             (*last_next).p_next = self.inner.p_next as _;
55542             self.inner.p_next = next_ptr as _;
55543         }
55544         self
55545     }
55546     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55547     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55548     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderingInfoKHR55549     pub fn build(self) -> RenderingInfoKHR {
55550         self.inner
55551     }
55552 }
55553 #[repr(C)]
55554 #[derive(Copy, Clone)]
55555 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderingAttachmentInfoKHR.html>"]
55556 pub struct RenderingAttachmentInfoKHR {
55557     pub s_type: StructureType,
55558     pub p_next: *const c_void,
55559     pub image_view: ImageView,
55560     pub image_layout: ImageLayout,
55561     pub resolve_mode: ResolveModeFlags,
55562     pub resolve_image_view: ImageView,
55563     pub resolve_image_layout: ImageLayout,
55564     pub load_op: AttachmentLoadOp,
55565     pub store_op: AttachmentStoreOp,
55566     pub clear_value: ClearValue,
55567 }
55568 #[cfg(feature = "debug")]
55569 impl fmt::Debug for RenderingAttachmentInfoKHR {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result55570     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
55571         fmt.debug_struct("RenderingAttachmentInfoKHR")
55572             .field("s_type", &self.s_type)
55573             .field("p_next", &self.p_next)
55574             .field("image_view", &self.image_view)
55575             .field("image_layout", &self.image_layout)
55576             .field("resolve_mode", &self.resolve_mode)
55577             .field("resolve_image_view", &self.resolve_image_view)
55578             .field("resolve_image_layout", &self.resolve_image_layout)
55579             .field("load_op", &self.load_op)
55580             .field("store_op", &self.store_op)
55581             .field("clear_value", &"union")
55582             .finish()
55583     }
55584 }
55585 impl ::std::default::Default for RenderingAttachmentInfoKHR {
default() -> Self55586     fn default() -> Self {
55587         Self {
55588             s_type: StructureType::RENDERING_ATTACHMENT_INFO_KHR,
55589             p_next: ::std::ptr::null(),
55590             image_view: ImageView::default(),
55591             image_layout: ImageLayout::default(),
55592             resolve_mode: ResolveModeFlags::default(),
55593             resolve_image_view: ImageView::default(),
55594             resolve_image_layout: ImageLayout::default(),
55595             load_op: AttachmentLoadOp::default(),
55596             store_op: AttachmentStoreOp::default(),
55597             clear_value: ClearValue::default(),
55598         }
55599     }
55600 }
55601 impl RenderingAttachmentInfoKHR {
builder<'a>() -> RenderingAttachmentInfoKHRBuilder<'a>55602     pub fn builder<'a>() -> RenderingAttachmentInfoKHRBuilder<'a> {
55603         RenderingAttachmentInfoKHRBuilder {
55604             inner: Self::default(),
55605             marker: ::std::marker::PhantomData,
55606         }
55607     }
55608 }
55609 #[repr(transparent)]
55610 pub struct RenderingAttachmentInfoKHRBuilder<'a> {
55611     inner: RenderingAttachmentInfoKHR,
55612     marker: ::std::marker::PhantomData<&'a ()>,
55613 }
55614 impl<'a> ::std::ops::Deref for RenderingAttachmentInfoKHRBuilder<'a> {
55615     type Target = RenderingAttachmentInfoKHR;
deref(&self) -> &Self::Target55616     fn deref(&self) -> &Self::Target {
55617         &self.inner
55618     }
55619 }
55620 impl<'a> ::std::ops::DerefMut for RenderingAttachmentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55621     fn deref_mut(&mut self) -> &mut Self::Target {
55622         &mut self.inner
55623     }
55624 }
55625 impl<'a> RenderingAttachmentInfoKHRBuilder<'a> {
image_view(mut self, image_view: ImageView) -> Self55626     pub fn image_view(mut self, image_view: ImageView) -> Self {
55627         self.inner.image_view = image_view;
55628         self
55629     }
image_layout(mut self, image_layout: ImageLayout) -> Self55630     pub fn image_layout(mut self, image_layout: ImageLayout) -> Self {
55631         self.inner.image_layout = image_layout;
55632         self
55633     }
resolve_mode(mut self, resolve_mode: ResolveModeFlags) -> Self55634     pub fn resolve_mode(mut self, resolve_mode: ResolveModeFlags) -> Self {
55635         self.inner.resolve_mode = resolve_mode;
55636         self
55637     }
resolve_image_view(mut self, resolve_image_view: ImageView) -> Self55638     pub fn resolve_image_view(mut self, resolve_image_view: ImageView) -> Self {
55639         self.inner.resolve_image_view = resolve_image_view;
55640         self
55641     }
resolve_image_layout(mut self, resolve_image_layout: ImageLayout) -> Self55642     pub fn resolve_image_layout(mut self, resolve_image_layout: ImageLayout) -> Self {
55643         self.inner.resolve_image_layout = resolve_image_layout;
55644         self
55645     }
load_op(mut self, load_op: AttachmentLoadOp) -> Self55646     pub fn load_op(mut self, load_op: AttachmentLoadOp) -> Self {
55647         self.inner.load_op = load_op;
55648         self
55649     }
store_op(mut self, store_op: AttachmentStoreOp) -> Self55650     pub fn store_op(mut self, store_op: AttachmentStoreOp) -> Self {
55651         self.inner.store_op = store_op;
55652         self
55653     }
clear_value(mut self, clear_value: ClearValue) -> Self55654     pub fn clear_value(mut self, clear_value: ClearValue) -> Self {
55655         self.inner.clear_value = clear_value;
55656         self
55657     }
55658     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55659     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55660     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderingAttachmentInfoKHR55661     pub fn build(self) -> RenderingAttachmentInfoKHR {
55662         self.inner
55663     }
55664 }
55665 #[repr(C)]
55666 #[cfg_attr(feature = "debug", derive(Debug))]
55667 #[derive(Copy, Clone)]
55668 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>"]
55669 pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
55670     pub s_type: StructureType,
55671     pub p_next: *const c_void,
55672     pub image_view: ImageView,
55673     pub image_layout: ImageLayout,
55674     pub shading_rate_attachment_texel_size: Extent2D,
55675 }
55676 impl ::std::default::Default for RenderingFragmentShadingRateAttachmentInfoKHR {
default() -> Self55677     fn default() -> Self {
55678         Self {
55679             s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
55680             p_next: ::std::ptr::null(),
55681             image_view: ImageView::default(),
55682             image_layout: ImageLayout::default(),
55683             shading_rate_attachment_texel_size: Extent2D::default(),
55684         }
55685     }
55686 }
55687 impl RenderingFragmentShadingRateAttachmentInfoKHR {
builder<'a>() -> RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a>55688     pub fn builder<'a>() -> RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
55689         RenderingFragmentShadingRateAttachmentInfoKHRBuilder {
55690             inner: Self::default(),
55691             marker: ::std::marker::PhantomData,
55692         }
55693     }
55694 }
55695 #[repr(transparent)]
55696 pub struct RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
55697     inner: RenderingFragmentShadingRateAttachmentInfoKHR,
55698     marker: ::std::marker::PhantomData<&'a ()>,
55699 }
55700 unsafe impl ExtendsRenderingInfoKHR for RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'_> {}
55701 unsafe impl ExtendsRenderingInfoKHR for RenderingFragmentShadingRateAttachmentInfoKHR {}
55702 impl<'a> ::std::ops::Deref for RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
55703     type Target = RenderingFragmentShadingRateAttachmentInfoKHR;
deref(&self) -> &Self::Target55704     fn deref(&self) -> &Self::Target {
55705         &self.inner
55706     }
55707 }
55708 impl<'a> ::std::ops::DerefMut for RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55709     fn deref_mut(&mut self) -> &mut Self::Target {
55710         &mut self.inner
55711     }
55712 }
55713 impl<'a> RenderingFragmentShadingRateAttachmentInfoKHRBuilder<'a> {
image_view(mut self, image_view: ImageView) -> Self55714     pub fn image_view(mut self, image_view: ImageView) -> Self {
55715         self.inner.image_view = image_view;
55716         self
55717     }
image_layout(mut self, image_layout: ImageLayout) -> Self55718     pub fn image_layout(mut self, image_layout: ImageLayout) -> Self {
55719         self.inner.image_layout = image_layout;
55720         self
55721     }
shading_rate_attachment_texel_size( mut self, shading_rate_attachment_texel_size: Extent2D, ) -> Self55722     pub fn shading_rate_attachment_texel_size(
55723         mut self,
55724         shading_rate_attachment_texel_size: Extent2D,
55725     ) -> Self {
55726         self.inner.shading_rate_attachment_texel_size = shading_rate_attachment_texel_size;
55727         self
55728     }
55729     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55730     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55731     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderingFragmentShadingRateAttachmentInfoKHR55732     pub fn build(self) -> RenderingFragmentShadingRateAttachmentInfoKHR {
55733         self.inner
55734     }
55735 }
55736 #[repr(C)]
55737 #[cfg_attr(feature = "debug", derive(Debug))]
55738 #[derive(Copy, Clone)]
55739 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>"]
55740 pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
55741     pub s_type: StructureType,
55742     pub p_next: *const c_void,
55743     pub image_view: ImageView,
55744     pub image_layout: ImageLayout,
55745 }
55746 impl ::std::default::Default for RenderingFragmentDensityMapAttachmentInfoEXT {
default() -> Self55747     fn default() -> Self {
55748         Self {
55749             s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
55750             p_next: ::std::ptr::null(),
55751             image_view: ImageView::default(),
55752             image_layout: ImageLayout::default(),
55753         }
55754     }
55755 }
55756 impl RenderingFragmentDensityMapAttachmentInfoEXT {
builder<'a>() -> RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a>55757     pub fn builder<'a>() -> RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
55758         RenderingFragmentDensityMapAttachmentInfoEXTBuilder {
55759             inner: Self::default(),
55760             marker: ::std::marker::PhantomData,
55761         }
55762     }
55763 }
55764 #[repr(transparent)]
55765 pub struct RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
55766     inner: RenderingFragmentDensityMapAttachmentInfoEXT,
55767     marker: ::std::marker::PhantomData<&'a ()>,
55768 }
55769 unsafe impl ExtendsRenderingInfoKHR for RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'_> {}
55770 unsafe impl ExtendsRenderingInfoKHR for RenderingFragmentDensityMapAttachmentInfoEXT {}
55771 impl<'a> ::std::ops::Deref for RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
55772     type Target = RenderingFragmentDensityMapAttachmentInfoEXT;
deref(&self) -> &Self::Target55773     fn deref(&self) -> &Self::Target {
55774         &self.inner
55775     }
55776 }
55777 impl<'a> ::std::ops::DerefMut for RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55778     fn deref_mut(&mut self) -> &mut Self::Target {
55779         &mut self.inner
55780     }
55781 }
55782 impl<'a> RenderingFragmentDensityMapAttachmentInfoEXTBuilder<'a> {
image_view(mut self, image_view: ImageView) -> Self55783     pub fn image_view(mut self, image_view: ImageView) -> Self {
55784         self.inner.image_view = image_view;
55785         self
55786     }
image_layout(mut self, image_layout: ImageLayout) -> Self55787     pub fn image_layout(mut self, image_layout: ImageLayout) -> Self {
55788         self.inner.image_layout = image_layout;
55789         self
55790     }
55791     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55792     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55793     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> RenderingFragmentDensityMapAttachmentInfoEXT55794     pub fn build(self) -> RenderingFragmentDensityMapAttachmentInfoEXT {
55795         self.inner
55796     }
55797 }
55798 #[repr(C)]
55799 #[cfg_attr(feature = "debug", derive(Debug))]
55800 #[derive(Copy, Clone)]
55801 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>"]
55802 pub struct PhysicalDeviceDynamicRenderingFeaturesKHR {
55803     pub s_type: StructureType,
55804     pub p_next: *mut c_void,
55805     pub dynamic_rendering: Bool32,
55806 }
55807 impl ::std::default::Default for PhysicalDeviceDynamicRenderingFeaturesKHR {
default() -> Self55808     fn default() -> Self {
55809         Self {
55810             s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR,
55811             p_next: ::std::ptr::null_mut(),
55812             dynamic_rendering: Bool32::default(),
55813         }
55814     }
55815 }
55816 impl PhysicalDeviceDynamicRenderingFeaturesKHR {
builder<'a>() -> PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'a>55817     pub fn builder<'a>() -> PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'a> {
55818         PhysicalDeviceDynamicRenderingFeaturesKHRBuilder {
55819             inner: Self::default(),
55820             marker: ::std::marker::PhantomData,
55821         }
55822     }
55823 }
55824 #[repr(transparent)]
55825 pub struct PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'a> {
55826     inner: PhysicalDeviceDynamicRenderingFeaturesKHR,
55827     marker: ::std::marker::PhantomData<&'a ()>,
55828 }
55829 unsafe impl ExtendsPhysicalDeviceFeatures2
55830     for PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'_>
55831 {
55832 }
55833 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceDynamicRenderingFeaturesKHR {}
55834 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'_> {}
55835 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceDynamicRenderingFeaturesKHR {}
55836 impl<'a> ::std::ops::Deref for PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'a> {
55837     type Target = PhysicalDeviceDynamicRenderingFeaturesKHR;
deref(&self) -> &Self::Target55838     fn deref(&self) -> &Self::Target {
55839         &self.inner
55840     }
55841 }
55842 impl<'a> ::std::ops::DerefMut for PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55843     fn deref_mut(&mut self) -> &mut Self::Target {
55844         &mut self.inner
55845     }
55846 }
55847 impl<'a> PhysicalDeviceDynamicRenderingFeaturesKHRBuilder<'a> {
dynamic_rendering(mut self, dynamic_rendering: bool) -> Self55848     pub fn dynamic_rendering(mut self, dynamic_rendering: bool) -> Self {
55849         self.inner.dynamic_rendering = dynamic_rendering.into();
55850         self
55851     }
55852     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55853     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55854     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceDynamicRenderingFeaturesKHR55855     pub fn build(self) -> PhysicalDeviceDynamicRenderingFeaturesKHR {
55856         self.inner
55857     }
55858 }
55859 #[repr(C)]
55860 #[cfg_attr(feature = "debug", derive(Debug))]
55861 #[derive(Copy, Clone)]
55862 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>"]
55863 pub struct CommandBufferInheritanceRenderingInfoKHR {
55864     pub s_type: StructureType,
55865     pub p_next: *const c_void,
55866     pub flags: RenderingFlagsKHR,
55867     pub view_mask: u32,
55868     pub color_attachment_count: u32,
55869     pub p_color_attachment_formats: *const Format,
55870     pub depth_attachment_format: Format,
55871     pub stencil_attachment_format: Format,
55872     pub rasterization_samples: SampleCountFlags,
55873 }
55874 impl ::std::default::Default for CommandBufferInheritanceRenderingInfoKHR {
default() -> Self55875     fn default() -> Self {
55876         Self {
55877             s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR,
55878             p_next: ::std::ptr::null(),
55879             flags: RenderingFlagsKHR::default(),
55880             view_mask: u32::default(),
55881             color_attachment_count: u32::default(),
55882             p_color_attachment_formats: ::std::ptr::null(),
55883             depth_attachment_format: Format::default(),
55884             stencil_attachment_format: Format::default(),
55885             rasterization_samples: SampleCountFlags::default(),
55886         }
55887     }
55888 }
55889 impl CommandBufferInheritanceRenderingInfoKHR {
builder<'a>() -> CommandBufferInheritanceRenderingInfoKHRBuilder<'a>55890     pub fn builder<'a>() -> CommandBufferInheritanceRenderingInfoKHRBuilder<'a> {
55891         CommandBufferInheritanceRenderingInfoKHRBuilder {
55892             inner: Self::default(),
55893             marker: ::std::marker::PhantomData,
55894         }
55895     }
55896 }
55897 #[repr(transparent)]
55898 pub struct CommandBufferInheritanceRenderingInfoKHRBuilder<'a> {
55899     inner: CommandBufferInheritanceRenderingInfoKHR,
55900     marker: ::std::marker::PhantomData<&'a ()>,
55901 }
55902 unsafe impl ExtendsCommandBufferInheritanceInfo
55903     for CommandBufferInheritanceRenderingInfoKHRBuilder<'_>
55904 {
55905 }
55906 unsafe impl ExtendsCommandBufferInheritanceInfo for CommandBufferInheritanceRenderingInfoKHR {}
55907 impl<'a> ::std::ops::Deref for CommandBufferInheritanceRenderingInfoKHRBuilder<'a> {
55908     type Target = CommandBufferInheritanceRenderingInfoKHR;
deref(&self) -> &Self::Target55909     fn deref(&self) -> &Self::Target {
55910         &self.inner
55911     }
55912 }
55913 impl<'a> ::std::ops::DerefMut for CommandBufferInheritanceRenderingInfoKHRBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55914     fn deref_mut(&mut self) -> &mut Self::Target {
55915         &mut self.inner
55916     }
55917 }
55918 impl<'a> CommandBufferInheritanceRenderingInfoKHRBuilder<'a> {
flags(mut self, flags: RenderingFlagsKHR) -> Self55919     pub fn flags(mut self, flags: RenderingFlagsKHR) -> Self {
55920         self.inner.flags = flags;
55921         self
55922     }
view_mask(mut self, view_mask: u32) -> Self55923     pub fn view_mask(mut self, view_mask: u32) -> Self {
55924         self.inner.view_mask = view_mask;
55925         self
55926     }
color_attachment_formats(mut self, color_attachment_formats: &'a [Format]) -> Self55927     pub fn color_attachment_formats(mut self, color_attachment_formats: &'a [Format]) -> Self {
55928         self.inner.color_attachment_count = color_attachment_formats.len() as _;
55929         self.inner.p_color_attachment_formats = color_attachment_formats.as_ptr();
55930         self
55931     }
depth_attachment_format(mut self, depth_attachment_format: Format) -> Self55932     pub fn depth_attachment_format(mut self, depth_attachment_format: Format) -> Self {
55933         self.inner.depth_attachment_format = depth_attachment_format;
55934         self
55935     }
stencil_attachment_format(mut self, stencil_attachment_format: Format) -> Self55936     pub fn stencil_attachment_format(mut self, stencil_attachment_format: Format) -> Self {
55937         self.inner.stencil_attachment_format = stencil_attachment_format;
55938         self
55939     }
rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self55940     pub fn rasterization_samples(mut self, rasterization_samples: SampleCountFlags) -> Self {
55941         self.inner.rasterization_samples = rasterization_samples;
55942         self
55943     }
55944     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
55945     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
55946     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> CommandBufferInheritanceRenderingInfoKHR55947     pub fn build(self) -> CommandBufferInheritanceRenderingInfoKHR {
55948         self.inner
55949     }
55950 }
55951 #[repr(C)]
55952 #[cfg_attr(feature = "debug", derive(Debug))]
55953 #[derive(Copy, Clone)]
55954 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentSampleCountInfoAMD.html>"]
55955 pub struct AttachmentSampleCountInfoAMD {
55956     pub s_type: StructureType,
55957     pub p_next: *const c_void,
55958     pub color_attachment_count: u32,
55959     pub p_color_attachment_samples: *const SampleCountFlags,
55960     pub depth_stencil_attachment_samples: SampleCountFlags,
55961 }
55962 impl ::std::default::Default for AttachmentSampleCountInfoAMD {
default() -> Self55963     fn default() -> Self {
55964         Self {
55965             s_type: StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
55966             p_next: ::std::ptr::null(),
55967             color_attachment_count: u32::default(),
55968             p_color_attachment_samples: ::std::ptr::null(),
55969             depth_stencil_attachment_samples: SampleCountFlags::default(),
55970         }
55971     }
55972 }
55973 impl AttachmentSampleCountInfoAMD {
builder<'a>() -> AttachmentSampleCountInfoAMDBuilder<'a>55974     pub fn builder<'a>() -> AttachmentSampleCountInfoAMDBuilder<'a> {
55975         AttachmentSampleCountInfoAMDBuilder {
55976             inner: Self::default(),
55977             marker: ::std::marker::PhantomData,
55978         }
55979     }
55980 }
55981 #[repr(transparent)]
55982 pub struct AttachmentSampleCountInfoAMDBuilder<'a> {
55983     inner: AttachmentSampleCountInfoAMD,
55984     marker: ::std::marker::PhantomData<&'a ()>,
55985 }
55986 unsafe impl ExtendsCommandBufferInheritanceInfo for AttachmentSampleCountInfoAMDBuilder<'_> {}
55987 unsafe impl ExtendsCommandBufferInheritanceInfo for AttachmentSampleCountInfoAMD {}
55988 unsafe impl ExtendsGraphicsPipelineCreateInfo for AttachmentSampleCountInfoAMDBuilder<'_> {}
55989 unsafe impl ExtendsGraphicsPipelineCreateInfo for AttachmentSampleCountInfoAMD {}
55990 impl<'a> ::std::ops::Deref for AttachmentSampleCountInfoAMDBuilder<'a> {
55991     type Target = AttachmentSampleCountInfoAMD;
deref(&self) -> &Self::Target55992     fn deref(&self) -> &Self::Target {
55993         &self.inner
55994     }
55995 }
55996 impl<'a> ::std::ops::DerefMut for AttachmentSampleCountInfoAMDBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target55997     fn deref_mut(&mut self) -> &mut Self::Target {
55998         &mut self.inner
55999     }
56000 }
56001 impl<'a> AttachmentSampleCountInfoAMDBuilder<'a> {
color_attachment_samples( mut self, color_attachment_samples: &'a [SampleCountFlags], ) -> Self56002     pub fn color_attachment_samples(
56003         mut self,
56004         color_attachment_samples: &'a [SampleCountFlags],
56005     ) -> Self {
56006         self.inner.color_attachment_count = color_attachment_samples.len() as _;
56007         self.inner.p_color_attachment_samples = color_attachment_samples.as_ptr();
56008         self
56009     }
depth_stencil_attachment_samples( mut self, depth_stencil_attachment_samples: SampleCountFlags, ) -> Self56010     pub fn depth_stencil_attachment_samples(
56011         mut self,
56012         depth_stencil_attachment_samples: SampleCountFlags,
56013     ) -> Self {
56014         self.inner.depth_stencil_attachment_samples = depth_stencil_attachment_samples;
56015         self
56016     }
56017     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
56018     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
56019     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> AttachmentSampleCountInfoAMD56020     pub fn build(self) -> AttachmentSampleCountInfoAMD {
56021         self.inner
56022     }
56023 }
56024 #[repr(C)]
56025 #[cfg_attr(feature = "debug", derive(Debug))]
56026 #[derive(Copy, Clone)]
56027 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMultiviewPerViewAttributesInfoNVX.html>"]
56028 pub struct MultiviewPerViewAttributesInfoNVX {
56029     pub s_type: StructureType,
56030     pub p_next: *const c_void,
56031     pub per_view_attributes: Bool32,
56032     pub per_view_attributes_position_x_only: Bool32,
56033 }
56034 impl ::std::default::Default for MultiviewPerViewAttributesInfoNVX {
default() -> Self56035     fn default() -> Self {
56036         Self {
56037             s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
56038             p_next: ::std::ptr::null(),
56039             per_view_attributes: Bool32::default(),
56040             per_view_attributes_position_x_only: Bool32::default(),
56041         }
56042     }
56043 }
56044 impl MultiviewPerViewAttributesInfoNVX {
builder<'a>() -> MultiviewPerViewAttributesInfoNVXBuilder<'a>56045     pub fn builder<'a>() -> MultiviewPerViewAttributesInfoNVXBuilder<'a> {
56046         MultiviewPerViewAttributesInfoNVXBuilder {
56047             inner: Self::default(),
56048             marker: ::std::marker::PhantomData,
56049         }
56050     }
56051 }
56052 #[repr(transparent)]
56053 pub struct MultiviewPerViewAttributesInfoNVXBuilder<'a> {
56054     inner: MultiviewPerViewAttributesInfoNVX,
56055     marker: ::std::marker::PhantomData<&'a ()>,
56056 }
56057 unsafe impl ExtendsCommandBufferInheritanceInfo for MultiviewPerViewAttributesInfoNVXBuilder<'_> {}
56058 unsafe impl ExtendsCommandBufferInheritanceInfo for MultiviewPerViewAttributesInfoNVX {}
56059 unsafe impl ExtendsGraphicsPipelineCreateInfo for MultiviewPerViewAttributesInfoNVXBuilder<'_> {}
56060 unsafe impl ExtendsGraphicsPipelineCreateInfo for MultiviewPerViewAttributesInfoNVX {}
56061 unsafe impl ExtendsRenderingInfoKHR for MultiviewPerViewAttributesInfoNVXBuilder<'_> {}
56062 unsafe impl ExtendsRenderingInfoKHR for MultiviewPerViewAttributesInfoNVX {}
56063 impl<'a> ::std::ops::Deref for MultiviewPerViewAttributesInfoNVXBuilder<'a> {
56064     type Target = MultiviewPerViewAttributesInfoNVX;
deref(&self) -> &Self::Target56065     fn deref(&self) -> &Self::Target {
56066         &self.inner
56067     }
56068 }
56069 impl<'a> ::std::ops::DerefMut for MultiviewPerViewAttributesInfoNVXBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target56070     fn deref_mut(&mut self) -> &mut Self::Target {
56071         &mut self.inner
56072     }
56073 }
56074 impl<'a> MultiviewPerViewAttributesInfoNVXBuilder<'a> {
per_view_attributes(mut self, per_view_attributes: bool) -> Self56075     pub fn per_view_attributes(mut self, per_view_attributes: bool) -> Self {
56076         self.inner.per_view_attributes = per_view_attributes.into();
56077         self
56078     }
per_view_attributes_position_x_only( mut self, per_view_attributes_position_x_only: bool, ) -> Self56079     pub fn per_view_attributes_position_x_only(
56080         mut self,
56081         per_view_attributes_position_x_only: bool,
56082     ) -> Self {
56083         self.inner.per_view_attributes_position_x_only = per_view_attributes_position_x_only.into();
56084         self
56085     }
56086     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
56087     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
56088     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> MultiviewPerViewAttributesInfoNVX56089     pub fn build(self) -> MultiviewPerViewAttributesInfoNVX {
56090         self.inner
56091     }
56092 }
56093 #[repr(C)]
56094 #[cfg_attr(feature = "debug", derive(Debug))]
56095 #[derive(Copy, Clone)]
56096 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>"]
56097 pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
56098     pub s_type: StructureType,
56099     pub p_next: *mut c_void,
56100     pub min_lod: Bool32,
56101 }
56102 impl ::std::default::Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
default() -> Self56103     fn default() -> Self {
56104         Self {
56105             s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
56106             p_next: ::std::ptr::null_mut(),
56107             min_lod: Bool32::default(),
56108         }
56109     }
56110 }
56111 impl PhysicalDeviceImageViewMinLodFeaturesEXT {
builder<'a>() -> PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a>56112     pub fn builder<'a>() -> PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
56113         PhysicalDeviceImageViewMinLodFeaturesEXTBuilder {
56114             inner: Self::default(),
56115             marker: ::std::marker::PhantomData,
56116         }
56117     }
56118 }
56119 #[repr(transparent)]
56120 pub struct PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
56121     inner: PhysicalDeviceImageViewMinLodFeaturesEXT,
56122     marker: ::std::marker::PhantomData<&'a ()>,
56123 }
56124 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'_> {}
56125 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceImageViewMinLodFeaturesEXT {}
56126 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'_> {}
56127 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceImageViewMinLodFeaturesEXT {}
56128 impl<'a> ::std::ops::Deref for PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
56129     type Target = PhysicalDeviceImageViewMinLodFeaturesEXT;
deref(&self) -> &Self::Target56130     fn deref(&self) -> &Self::Target {
56131         &self.inner
56132     }
56133 }
56134 impl<'a> ::std::ops::DerefMut for PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target56135     fn deref_mut(&mut self) -> &mut Self::Target {
56136         &mut self.inner
56137     }
56138 }
56139 impl<'a> PhysicalDeviceImageViewMinLodFeaturesEXTBuilder<'a> {
min_lod(mut self, min_lod: bool) -> Self56140     pub fn min_lod(mut self, min_lod: bool) -> Self {
56141         self.inner.min_lod = min_lod.into();
56142         self
56143     }
56144     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
56145     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
56146     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceImageViewMinLodFeaturesEXT56147     pub fn build(self) -> PhysicalDeviceImageViewMinLodFeaturesEXT {
56148         self.inner
56149     }
56150 }
56151 #[repr(C)]
56152 #[cfg_attr(feature = "debug", derive(Debug))]
56153 #[derive(Copy, Clone)]
56154 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewMinLodCreateInfoEXT.html>"]
56155 pub struct ImageViewMinLodCreateInfoEXT {
56156     pub s_type: StructureType,
56157     pub p_next: *const c_void,
56158     pub min_lod: f32,
56159 }
56160 impl ::std::default::Default for ImageViewMinLodCreateInfoEXT {
default() -> Self56161     fn default() -> Self {
56162         Self {
56163             s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
56164             p_next: ::std::ptr::null(),
56165             min_lod: f32::default(),
56166         }
56167     }
56168 }
56169 impl ImageViewMinLodCreateInfoEXT {
builder<'a>() -> ImageViewMinLodCreateInfoEXTBuilder<'a>56170     pub fn builder<'a>() -> ImageViewMinLodCreateInfoEXTBuilder<'a> {
56171         ImageViewMinLodCreateInfoEXTBuilder {
56172             inner: Self::default(),
56173             marker: ::std::marker::PhantomData,
56174         }
56175     }
56176 }
56177 #[repr(transparent)]
56178 pub struct ImageViewMinLodCreateInfoEXTBuilder<'a> {
56179     inner: ImageViewMinLodCreateInfoEXT,
56180     marker: ::std::marker::PhantomData<&'a ()>,
56181 }
56182 unsafe impl ExtendsImageViewCreateInfo for ImageViewMinLodCreateInfoEXTBuilder<'_> {}
56183 unsafe impl ExtendsImageViewCreateInfo for ImageViewMinLodCreateInfoEXT {}
56184 impl<'a> ::std::ops::Deref for ImageViewMinLodCreateInfoEXTBuilder<'a> {
56185     type Target = ImageViewMinLodCreateInfoEXT;
deref(&self) -> &Self::Target56186     fn deref(&self) -> &Self::Target {
56187         &self.inner
56188     }
56189 }
56190 impl<'a> ::std::ops::DerefMut for ImageViewMinLodCreateInfoEXTBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target56191     fn deref_mut(&mut self) -> &mut Self::Target {
56192         &mut self.inner
56193     }
56194 }
56195 impl<'a> ImageViewMinLodCreateInfoEXTBuilder<'a> {
min_lod(mut self, min_lod: f32) -> Self56196     pub fn min_lod(mut self, min_lod: f32) -> Self {
56197         self.inner.min_lod = min_lod;
56198         self
56199     }
56200     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
56201     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
56202     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> ImageViewMinLodCreateInfoEXT56203     pub fn build(self) -> ImageViewMinLodCreateInfoEXT {
56204         self.inner
56205     }
56206 }
56207 #[repr(C)]
56208 #[cfg_attr(feature = "debug", derive(Debug))]
56209 #[derive(Copy, Clone)]
56210 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>"]
56211 pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM {
56212     pub s_type: StructureType,
56213     pub p_next: *const c_void,
56214     pub rasterization_order_color_attachment_access: Bool32,
56215     pub rasterization_order_depth_attachment_access: Bool32,
56216     pub rasterization_order_stencil_attachment_access: Bool32,
56217 }
56218 impl ::std::default::Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM {
default() -> Self56219     fn default() -> Self {
56220         Self {
56221             s_type:
56222                 StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM,
56223             p_next: ::std::ptr::null(),
56224             rasterization_order_color_attachment_access: Bool32::default(),
56225             rasterization_order_depth_attachment_access: Bool32::default(),
56226             rasterization_order_stencil_attachment_access: Bool32::default(),
56227         }
56228     }
56229 }
56230 impl PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM {
builder<'a>() -> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'a>56231     pub fn builder<'a>() -> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'a> {
56232         PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder {
56233             inner: Self::default(),
56234             marker: ::std::marker::PhantomData,
56235         }
56236     }
56237 }
56238 #[repr(transparent)]
56239 pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'a> {
56240     inner: PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM,
56241     marker: ::std::marker::PhantomData<&'a ()>,
56242 }
56243 unsafe impl ExtendsPhysicalDeviceFeatures2
56244     for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'_>
56245 {
56246 }
56247 unsafe impl ExtendsPhysicalDeviceFeatures2
56248     for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM
56249 {
56250 }
56251 unsafe impl ExtendsDeviceCreateInfo
56252     for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'_>
56253 {
56254 }
56255 unsafe impl ExtendsDeviceCreateInfo
56256     for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM
56257 {
56258 }
56259 impl<'a> ::std::ops::Deref
56260     for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'a>
56261 {
56262     type Target = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
deref(&self) -> &Self::Target56263     fn deref(&self) -> &Self::Target {
56264         &self.inner
56265     }
56266 }
56267 impl<'a> ::std::ops::DerefMut
56268     for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'a>
56269 {
deref_mut(&mut self) -> &mut Self::Target56270     fn deref_mut(&mut self) -> &mut Self::Target {
56271         &mut self.inner
56272     }
56273 }
56274 impl<'a> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARMBuilder<'a> {
rasterization_order_color_attachment_access( mut self, rasterization_order_color_attachment_access: bool, ) -> Self56275     pub fn rasterization_order_color_attachment_access(
56276         mut self,
56277         rasterization_order_color_attachment_access: bool,
56278     ) -> Self {
56279         self.inner.rasterization_order_color_attachment_access =
56280             rasterization_order_color_attachment_access.into();
56281         self
56282     }
rasterization_order_depth_attachment_access( mut self, rasterization_order_depth_attachment_access: bool, ) -> Self56283     pub fn rasterization_order_depth_attachment_access(
56284         mut self,
56285         rasterization_order_depth_attachment_access: bool,
56286     ) -> Self {
56287         self.inner.rasterization_order_depth_attachment_access =
56288             rasterization_order_depth_attachment_access.into();
56289         self
56290     }
rasterization_order_stencil_attachment_access( mut self, rasterization_order_stencil_attachment_access: bool, ) -> Self56291     pub fn rasterization_order_stencil_attachment_access(
56292         mut self,
56293         rasterization_order_stencil_attachment_access: bool,
56294     ) -> Self {
56295         self.inner.rasterization_order_stencil_attachment_access =
56296             rasterization_order_stencil_attachment_access.into();
56297         self
56298     }
56299     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
56300     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
56301     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM56302     pub fn build(self) -> PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM {
56303         self.inner
56304     }
56305 }
56306 #[repr(C)]
56307 #[cfg_attr(feature = "debug", derive(Debug))]
56308 #[derive(Copy, Clone)]
56309 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>"]
56310 pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
56311     pub s_type: StructureType,
56312     pub p_next: *mut c_void,
56313     pub linear_color_attachment: Bool32,
56314 }
56315 impl ::std::default::Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
default() -> Self56316     fn default() -> Self {
56317         Self {
56318             s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
56319             p_next: ::std::ptr::null_mut(),
56320             linear_color_attachment: Bool32::default(),
56321         }
56322     }
56323 }
56324 impl PhysicalDeviceLinearColorAttachmentFeaturesNV {
builder<'a>() -> PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a>56325     pub fn builder<'a>() -> PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
56326         PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder {
56327             inner: Self::default(),
56328             marker: ::std::marker::PhantomData,
56329         }
56330     }
56331 }
56332 #[repr(transparent)]
56333 pub struct PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
56334     inner: PhysicalDeviceLinearColorAttachmentFeaturesNV,
56335     marker: ::std::marker::PhantomData<&'a ()>,
56336 }
56337 unsafe impl ExtendsPhysicalDeviceFeatures2
56338     for PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'_>
56339 {
56340 }
56341 unsafe impl ExtendsPhysicalDeviceFeatures2 for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
56342 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'_> {}
56343 unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
56344 impl<'a> ::std::ops::Deref for PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
56345     type Target = PhysicalDeviceLinearColorAttachmentFeaturesNV;
deref(&self) -> &Self::Target56346     fn deref(&self) -> &Self::Target {
56347         &self.inner
56348     }
56349 }
56350 impl<'a> ::std::ops::DerefMut for PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
deref_mut(&mut self) -> &mut Self::Target56351     fn deref_mut(&mut self) -> &mut Self::Target {
56352         &mut self.inner
56353     }
56354 }
56355 impl<'a> PhysicalDeviceLinearColorAttachmentFeaturesNVBuilder<'a> {
linear_color_attachment(mut self, linear_color_attachment: bool) -> Self56356     pub fn linear_color_attachment(mut self, linear_color_attachment: bool) -> Self {
56357         self.inner.linear_color_attachment = linear_color_attachment.into();
56358         self
56359     }
56360     #[doc = r" Calling build will **discard** all the lifetime information. Only call this if"]
56361     #[doc = r" necessary! Builders implement `Deref` targeting their corresponding Vulkan struct,"]
56362     #[doc = r" so references to builders can be passed directly to Vulkan functions."]
build(self) -> PhysicalDeviceLinearColorAttachmentFeaturesNV56363     pub fn build(self) -> PhysicalDeviceLinearColorAttachmentFeaturesNV {
56364         self.inner
56365     }
56366 }
56367