1#[doc(alias = "VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION")]
4pub const NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION: u32 = 3;
5#[doc(alias = "VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME")]
7pub const NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME: *const std::os::raw::c_char = crate::cstr!(
8 "VK_NV_device_generated_commands"
9);
10pub const FN_CMD_EXECUTE_GENERATED_COMMANDS_NV: *const std::os::raw::c_char = crate::cstr!(
12 "vkCmdExecuteGeneratedCommandsNV"
13);
14pub const FN_CMD_PREPROCESS_GENERATED_COMMANDS_NV: *const std::os::raw::c_char = crate::cstr!(
16 "vkCmdPreprocessGeneratedCommandsNV"
17);
18pub const FN_CMD_BIND_PIPELINE_SHADER_GROUP_NV: *const std::os::raw::c_char = crate::cstr!(
20 "vkCmdBindPipelineShaderGroupNV"
21);
22pub const FN_GET_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_NV: *const std::os::raw::c_char = crate::cstr!(
24 "vkGetGeneratedCommandsMemoryRequirementsNV"
25);
26pub const FN_CREATE_INDIRECT_COMMANDS_LAYOUT_NV: *const std::os::raw::c_char = crate::cstr!(
28 "vkCreateIndirectCommandsLayoutNV"
29);
30pub const FN_DESTROY_INDIRECT_COMMANDS_LAYOUT_NV: *const std::os::raw::c_char = crate::cstr!(
32 "vkDestroyIndirectCommandsLayoutNV"
33);
34crate::non_dispatchable_handle!(
35 IndirectCommandsLayoutNV, INDIRECT_COMMANDS_LAYOUT_NV,
36 "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutNV.html) · Non-dispatchable Handle",
37 "VkIndirectCommandsLayoutNV"
38);
39impl crate::vk1_0::AccessFlagBits {
41 pub const COMMAND_PREPROCESS_READ_NV: Self = Self(131072);
42 pub const COMMAND_PREPROCESS_WRITE_NV: Self = Self(262144);
43}
44impl crate::vk1_0::PipelineCreateFlagBits {
46 pub const INDIRECT_BINDABLE_NV: Self = Self(262144);
47}
48impl crate::vk1_0::StructureType {
50 pub const PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV: Self = Self(
51 1000277000,
52 );
53 pub const GRAPHICS_SHADER_GROUP_CREATE_INFO_NV: Self = Self(1000277001);
54 pub const GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV: Self = Self(1000277002);
55 pub const INDIRECT_COMMANDS_LAYOUT_TOKEN_NV: Self = Self(1000277003);
56 pub const INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV: Self = Self(1000277004);
57 pub const GENERATED_COMMANDS_INFO_NV: Self = Self(1000277005);
58 pub const GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV: Self = Self(1000277006);
59 pub const PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: Self = Self(
60 1000277007,
61 );
62}
63impl crate::vk1_0::PipelineStageFlagBits {
65 pub const COMMAND_PREPROCESS_NV: Self = Self(131072);
66}
67impl crate::vk1_0::ObjectType {
69 pub const INDIRECT_COMMANDS_LAYOUT_NV: Self = Self(1000277000);
70}
71bitflags::bitflags! {
72 #[doc =
73 "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutUsageFlagsNV.html) · Bitmask of [`IndirectCommandsLayoutUsageFlagBitsNV`]"]
74 #[doc(alias = "VkIndirectCommandsLayoutUsageFlagsNV")] #[derive(Default)]
75 #[repr(transparent)] pub struct IndirectCommandsLayoutUsageFlagsNV : u32 { const
76 EXPLICIT_PREPROCESS_NV =
77 IndirectCommandsLayoutUsageFlagBitsNV::EXPLICIT_PREPROCESS_NV.0; const
78 INDEXED_SEQUENCES_NV = IndirectCommandsLayoutUsageFlagBitsNV::INDEXED_SEQUENCES_NV.0;
79 const UNORDERED_SEQUENCES_NV =
80 IndirectCommandsLayoutUsageFlagBitsNV::UNORDERED_SEQUENCES_NV.0; }
81}
82#[doc(alias = "VkIndirectCommandsLayoutUsageFlagBitsNV")]
84#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
85#[repr(transparent)]
86pub struct IndirectCommandsLayoutUsageFlagBitsNV(pub u32);
87impl IndirectCommandsLayoutUsageFlagBitsNV {
88 #[inline]
89 pub const fn bitmask(&self) -> IndirectCommandsLayoutUsageFlagsNV {
91 IndirectCommandsLayoutUsageFlagsNV::from_bits_truncate(self.0)
92 }
93}
94impl std::fmt::Debug for IndirectCommandsLayoutUsageFlagBitsNV {
95 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
96 f.write_str(
97 match self {
98 &Self::EXPLICIT_PREPROCESS_NV => "EXPLICIT_PREPROCESS_NV",
99 &Self::INDEXED_SEQUENCES_NV => "INDEXED_SEQUENCES_NV",
100 &Self::UNORDERED_SEQUENCES_NV => "UNORDERED_SEQUENCES_NV",
101 _ => "(unknown variant)",
102 },
103 )
104 }
105}
106impl crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutUsageFlagBitsNV {
108 pub const EXPLICIT_PREPROCESS_NV: Self = Self(1);
109 pub const INDEXED_SEQUENCES_NV: Self = Self(2);
110 pub const UNORDERED_SEQUENCES_NV: Self = Self(4);
111}
112#[doc(alias = "VkIndirectCommandsTokenTypeNV")]
114#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
115#[repr(transparent)]
116pub struct IndirectCommandsTokenTypeNV(pub i32);
117impl std::fmt::Debug for IndirectCommandsTokenTypeNV {
118 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
119 f.write_str(
120 match self {
121 &Self::SHADER_GROUP_NV => "SHADER_GROUP_NV",
122 &Self::STATE_FLAGS_NV => "STATE_FLAGS_NV",
123 &Self::INDEX_BUFFER_NV => "INDEX_BUFFER_NV",
124 &Self::VERTEX_BUFFER_NV => "VERTEX_BUFFER_NV",
125 &Self::PUSH_CONSTANT_NV => "PUSH_CONSTANT_NV",
126 &Self::DRAW_INDEXED_NV => "DRAW_INDEXED_NV",
127 &Self::DRAW_NV => "DRAW_NV",
128 &Self::DRAW_TASKS_NV => "DRAW_TASKS_NV",
129 _ => "(unknown variant)",
130 },
131 )
132 }
133}
134impl crate::extensions::nv_device_generated_commands::IndirectCommandsTokenTypeNV {
136 pub const SHADER_GROUP_NV: Self = Self(0);
137 pub const STATE_FLAGS_NV: Self = Self(1);
138 pub const INDEX_BUFFER_NV: Self = Self(2);
139 pub const VERTEX_BUFFER_NV: Self = Self(3);
140 pub const PUSH_CONSTANT_NV: Self = Self(4);
141 pub const DRAW_INDEXED_NV: Self = Self(5);
142 pub const DRAW_NV: Self = Self(6);
143 pub const DRAW_TASKS_NV: Self = Self(7);
144}
145bitflags::bitflags! {
146 #[doc =
147 "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectStateFlagsNV.html) · Bitmask of [`IndirectStateFlagBitsNV`]"]
148 #[doc(alias = "VkIndirectStateFlagsNV")] #[derive(Default)] #[repr(transparent)] pub
149 struct IndirectStateFlagsNV : u32 { const FLAG_FRONTFACE_NV =
150 IndirectStateFlagBitsNV::FLAG_FRONTFACE_NV.0; }
151}
152#[doc(alias = "VkIndirectStateFlagBitsNV")]
154#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
155#[repr(transparent)]
156pub struct IndirectStateFlagBitsNV(pub u32);
157impl IndirectStateFlagBitsNV {
158 #[inline]
159 pub const fn bitmask(&self) -> IndirectStateFlagsNV {
161 IndirectStateFlagsNV::from_bits_truncate(self.0)
162 }
163}
164impl std::fmt::Debug for IndirectStateFlagBitsNV {
165 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
166 f.write_str(
167 match self {
168 &Self::FLAG_FRONTFACE_NV => "FLAG_FRONTFACE_NV",
169 _ => "(unknown variant)",
170 },
171 )
172 }
173}
174impl crate::extensions::nv_device_generated_commands::IndirectStateFlagBitsNV {
176 pub const FLAG_FRONTFACE_NV: Self = Self(1);
177}
178#[allow(non_camel_case_types)]
180pub type PFN_vkCmdExecuteGeneratedCommandsNV = unsafe extern "system" fn(
181 command_buffer: crate::vk1_0::CommandBuffer,
182 is_preprocessed: crate::vk1_0::Bool32,
183 p_generated_commands_info: *const crate::extensions::nv_device_generated_commands::GeneratedCommandsInfoNV,
184) -> ();
185#[allow(non_camel_case_types)]
187pub type PFN_vkCmdPreprocessGeneratedCommandsNV = unsafe extern "system" fn(
188 command_buffer: crate::vk1_0::CommandBuffer,
189 p_generated_commands_info: *const crate::extensions::nv_device_generated_commands::GeneratedCommandsInfoNV,
190) -> ();
191#[allow(non_camel_case_types)]
193pub type PFN_vkCmdBindPipelineShaderGroupNV = unsafe extern "system" fn(
194 command_buffer: crate::vk1_0::CommandBuffer,
195 pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
196 pipeline: crate::vk1_0::Pipeline,
197 group_index: u32,
198) -> ();
199#[allow(non_camel_case_types)]
201pub type PFN_vkGetGeneratedCommandsMemoryRequirementsNV = unsafe extern "system" fn(
202 device: crate::vk1_0::Device,
203 p_info: *const crate::extensions::nv_device_generated_commands::GeneratedCommandsMemoryRequirementsInfoNV,
204 p_memory_requirements: *mut crate::vk1_1::MemoryRequirements2,
205) -> ();
206#[allow(non_camel_case_types)]
208pub type PFN_vkCreateIndirectCommandsLayoutNV = unsafe extern "system" fn(
209 device: crate::vk1_0::Device,
210 p_create_info: *const crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutCreateInfoNV,
211 p_allocator: *const crate::vk1_0::AllocationCallbacks,
212 p_indirect_commands_layout: *mut crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
213) -> crate::vk1_0::Result;
214#[allow(non_camel_case_types)]
216pub type PFN_vkDestroyIndirectCommandsLayoutNV = unsafe extern "system" fn(
217 device: crate::vk1_0::Device,
218 indirect_commands_layout: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
219 p_allocator: *const crate::vk1_0::AllocationCallbacks,
220) -> ();
221impl<'a> crate::ExtendableFrom<'a, PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>
222for crate::vk1_0::DeviceCreateInfoBuilder<'a> {}
223impl<
224 'a,
225> crate::ExtendableFrom<'a, PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'_>>
226for crate::vk1_0::DeviceCreateInfoBuilder<'a> {}
227impl<'a> crate::ExtendableFrom<'a, GraphicsPipelineShaderGroupsCreateInfoNV>
228for crate::vk1_0::GraphicsPipelineCreateInfoBuilder<'a> {}
229impl<'a> crate::ExtendableFrom<'a, GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'_>>
230for crate::vk1_0::GraphicsPipelineCreateInfoBuilder<'a> {}
231#[doc(alias = "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV")]
233#[derive(Copy, Clone)]
234#[repr(C)]
235pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
236 pub s_type: crate::vk1_0::StructureType,
237 pub p_next: *mut std::ffi::c_void,
238 pub device_generated_commands: crate::vk1_0::Bool32,
239}
240impl PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
241 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV;
242}
243impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
244 fn default() -> Self {
245 Self {
246 s_type: Self::STRUCTURE_TYPE,
247 p_next: std::ptr::null_mut(),
248 device_generated_commands: Default::default(),
249 }
250 }
251}
252impl std::fmt::Debug for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
253 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
254 f.debug_struct("PhysicalDeviceDeviceGeneratedCommandsFeaturesNV")
255 .field("s_type", &self.s_type)
256 .field("p_next", &self.p_next)
257 .field("device_generated_commands", &(self.device_generated_commands != 0))
258 .finish()
259 }
260}
261impl PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
262 #[inline]
263 pub fn into_builder<'a>(
264 self,
265 ) -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
266 PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder(
267 self,
268 std::marker::PhantomData,
269 )
270 }
271}
272#[derive(Copy, Clone)]
273#[repr(transparent)]
275pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a>(
276 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV,
277 std::marker::PhantomData<&'a ()>,
278);
279impl<'a> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
280 #[inline]
281 pub fn new() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
282 PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder(
283 Default::default(),
284 std::marker::PhantomData,
285 )
286 }
287 #[inline]
288 #[must_use]
289 pub fn device_generated_commands(mut self, device_generated_commands: bool) -> Self {
290 self.0.device_generated_commands = device_generated_commands as _;
291 self
292 }
293 #[inline]
294 pub fn build_dangling(self) -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
297 self.0
298 }
299}
300impl<'a> std::default::Default
301for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
302 fn default() -> PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
303 Self::new()
304 }
305}
306impl<'a> std::fmt::Debug for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
307 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
308 std::fmt::Debug::fmt(&self.0, f)
309 }
310}
311impl<'a> std::ops::Deref for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
312 type Target = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
313 fn deref(&self) -> &Self::Target {
314 &self.0
315 }
316}
317impl<'a> std::ops::DerefMut
318for PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'a> {
319 fn deref_mut(&mut self) -> &mut Self::Target {
320 &mut self.0
321 }
322}
323#[doc(alias = "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV")]
325#[derive(Copy, Clone)]
326#[repr(C)]
327pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
328 pub s_type: crate::vk1_0::StructureType,
329 pub p_next: *mut std::ffi::c_void,
330 pub max_graphics_shader_group_count: u32,
331 pub max_indirect_sequence_count: u32,
332 pub max_indirect_commands_token_count: u32,
333 pub max_indirect_commands_stream_count: u32,
334 pub max_indirect_commands_token_offset: u32,
335 pub max_indirect_commands_stream_stride: u32,
336 pub min_sequences_count_buffer_offset_alignment: u32,
337 pub min_sequences_index_buffer_offset_alignment: u32,
338 pub min_indirect_commands_buffer_offset_alignment: u32,
339}
340impl PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
341 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV;
342}
343impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
344 fn default() -> Self {
345 Self {
346 s_type: Self::STRUCTURE_TYPE,
347 p_next: std::ptr::null_mut(),
348 max_graphics_shader_group_count: Default::default(),
349 max_indirect_sequence_count: Default::default(),
350 max_indirect_commands_token_count: Default::default(),
351 max_indirect_commands_stream_count: Default::default(),
352 max_indirect_commands_token_offset: Default::default(),
353 max_indirect_commands_stream_stride: Default::default(),
354 min_sequences_count_buffer_offset_alignment: Default::default(),
355 min_sequences_index_buffer_offset_alignment: Default::default(),
356 min_indirect_commands_buffer_offset_alignment: Default::default(),
357 }
358 }
359}
360impl std::fmt::Debug for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
361 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
362 f.debug_struct("PhysicalDeviceDeviceGeneratedCommandsPropertiesNV")
363 .field("s_type", &self.s_type)
364 .field("p_next", &self.p_next)
365 .field(
366 "max_graphics_shader_group_count",
367 &self.max_graphics_shader_group_count,
368 )
369 .field("max_indirect_sequence_count", &self.max_indirect_sequence_count)
370 .field(
371 "max_indirect_commands_token_count",
372 &self.max_indirect_commands_token_count,
373 )
374 .field(
375 "max_indirect_commands_stream_count",
376 &self.max_indirect_commands_stream_count,
377 )
378 .field(
379 "max_indirect_commands_token_offset",
380 &self.max_indirect_commands_token_offset,
381 )
382 .field(
383 "max_indirect_commands_stream_stride",
384 &self.max_indirect_commands_stream_stride,
385 )
386 .field(
387 "min_sequences_count_buffer_offset_alignment",
388 &self.min_sequences_count_buffer_offset_alignment,
389 )
390 .field(
391 "min_sequences_index_buffer_offset_alignment",
392 &self.min_sequences_index_buffer_offset_alignment,
393 )
394 .field(
395 "min_indirect_commands_buffer_offset_alignment",
396 &self.min_indirect_commands_buffer_offset_alignment,
397 )
398 .finish()
399 }
400}
401impl PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
402 #[inline]
403 pub fn into_builder<'a>(
404 self,
405 ) -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
406 PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder(
407 self,
408 std::marker::PhantomData,
409 )
410 }
411}
412#[derive(Copy, Clone)]
413#[repr(transparent)]
415pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a>(
416 PhysicalDeviceDeviceGeneratedCommandsPropertiesNV,
417 std::marker::PhantomData<&'a ()>,
418);
419impl<'a> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
420 #[inline]
421 pub fn new() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
422 PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder(
423 Default::default(),
424 std::marker::PhantomData,
425 )
426 }
427 #[inline]
428 #[must_use]
429 pub fn max_graphics_shader_group_count(
430 mut self,
431 max_graphics_shader_group_count: u32,
432 ) -> Self {
433 self.0.max_graphics_shader_group_count = max_graphics_shader_group_count as _;
434 self
435 }
436 #[inline]
437 #[must_use]
438 pub fn max_indirect_sequence_count(
439 mut self,
440 max_indirect_sequence_count: u32,
441 ) -> Self {
442 self.0.max_indirect_sequence_count = max_indirect_sequence_count as _;
443 self
444 }
445 #[inline]
446 #[must_use]
447 pub fn max_indirect_commands_token_count(
448 mut self,
449 max_indirect_commands_token_count: u32,
450 ) -> Self {
451 self
452 .0
453 .max_indirect_commands_token_count = max_indirect_commands_token_count as _;
454 self
455 }
456 #[inline]
457 #[must_use]
458 pub fn max_indirect_commands_stream_count(
459 mut self,
460 max_indirect_commands_stream_count: u32,
461 ) -> Self {
462 self
463 .0
464 .max_indirect_commands_stream_count = max_indirect_commands_stream_count
465 as _;
466 self
467 }
468 #[inline]
469 #[must_use]
470 pub fn max_indirect_commands_token_offset(
471 mut self,
472 max_indirect_commands_token_offset: u32,
473 ) -> Self {
474 self
475 .0
476 .max_indirect_commands_token_offset = max_indirect_commands_token_offset
477 as _;
478 self
479 }
480 #[inline]
481 #[must_use]
482 pub fn max_indirect_commands_stream_stride(
483 mut self,
484 max_indirect_commands_stream_stride: u32,
485 ) -> Self {
486 self
487 .0
488 .max_indirect_commands_stream_stride = max_indirect_commands_stream_stride
489 as _;
490 self
491 }
492 #[inline]
493 #[must_use]
494 pub fn min_sequences_count_buffer_offset_alignment(
495 mut self,
496 min_sequences_count_buffer_offset_alignment: u32,
497 ) -> Self {
498 self
499 .0
500 .min_sequences_count_buffer_offset_alignment = min_sequences_count_buffer_offset_alignment
501 as _;
502 self
503 }
504 #[inline]
505 #[must_use]
506 pub fn min_sequences_index_buffer_offset_alignment(
507 mut self,
508 min_sequences_index_buffer_offset_alignment: u32,
509 ) -> Self {
510 self
511 .0
512 .min_sequences_index_buffer_offset_alignment = min_sequences_index_buffer_offset_alignment
513 as _;
514 self
515 }
516 #[inline]
517 #[must_use]
518 pub fn min_indirect_commands_buffer_offset_alignment(
519 mut self,
520 min_indirect_commands_buffer_offset_alignment: u32,
521 ) -> Self {
522 self
523 .0
524 .min_indirect_commands_buffer_offset_alignment = min_indirect_commands_buffer_offset_alignment
525 as _;
526 self
527 }
528 #[inline]
529 pub fn build_dangling(self) -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
532 self.0
533 }
534}
535impl<'a> std::default::Default
536for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
537 fn default() -> PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
538 Self::new()
539 }
540}
541impl<'a> std::fmt::Debug
542for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
543 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
544 std::fmt::Debug::fmt(&self.0, f)
545 }
546}
547impl<'a> std::ops::Deref
548for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
549 type Target = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
550 fn deref(&self) -> &Self::Target {
551 &self.0
552 }
553}
554impl<'a> std::ops::DerefMut
555for PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'a> {
556 fn deref_mut(&mut self) -> &mut Self::Target {
557 &mut self.0
558 }
559}
560#[doc(alias = "VkGraphicsShaderGroupCreateInfoNV")]
562#[derive(Copy, Clone)]
563#[repr(C)]
564pub struct GraphicsShaderGroupCreateInfoNV {
565 pub s_type: crate::vk1_0::StructureType,
566 pub p_next: *const std::ffi::c_void,
567 pub stage_count: u32,
568 pub p_stages: *const crate::vk1_0::PipelineShaderStageCreateInfo,
569 pub p_vertex_input_state: *const crate::vk1_0::PipelineVertexInputStateCreateInfo,
570 pub p_tessellation_state: *const crate::vk1_0::PipelineTessellationStateCreateInfo,
571}
572impl GraphicsShaderGroupCreateInfoNV {
573 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV;
574}
575impl Default for GraphicsShaderGroupCreateInfoNV {
576 fn default() -> Self {
577 Self {
578 s_type: Self::STRUCTURE_TYPE,
579 p_next: std::ptr::null(),
580 stage_count: Default::default(),
581 p_stages: std::ptr::null(),
582 p_vertex_input_state: std::ptr::null(),
583 p_tessellation_state: std::ptr::null(),
584 }
585 }
586}
587impl std::fmt::Debug for GraphicsShaderGroupCreateInfoNV {
588 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
589 f.debug_struct("GraphicsShaderGroupCreateInfoNV")
590 .field("s_type", &self.s_type)
591 .field("p_next", &self.p_next)
592 .field("stage_count", &self.stage_count)
593 .field("p_stages", &self.p_stages)
594 .field("p_vertex_input_state", &self.p_vertex_input_state)
595 .field("p_tessellation_state", &self.p_tessellation_state)
596 .finish()
597 }
598}
599impl GraphicsShaderGroupCreateInfoNV {
600 #[inline]
601 pub fn into_builder<'a>(self) -> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
602 GraphicsShaderGroupCreateInfoNVBuilder(self, std::marker::PhantomData)
603 }
604}
605#[derive(Copy, Clone)]
606#[repr(transparent)]
608pub struct GraphicsShaderGroupCreateInfoNVBuilder<'a>(
609 GraphicsShaderGroupCreateInfoNV,
610 std::marker::PhantomData<&'a ()>,
611);
612impl<'a> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
613 #[inline]
614 pub fn new() -> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
615 GraphicsShaderGroupCreateInfoNVBuilder(
616 Default::default(),
617 std::marker::PhantomData,
618 )
619 }
620 #[inline]
621 #[must_use]
622 pub fn stages(
623 mut self,
624 stages: &'a [crate::vk1_0::PipelineShaderStageCreateInfoBuilder],
625 ) -> Self {
626 self.0.p_stages = stages.as_ptr() as _;
627 self.0.stage_count = stages.len() as _;
628 self
629 }
630 #[inline]
631 #[must_use]
632 pub fn vertex_input_state(
633 mut self,
634 vertex_input_state: &'a crate::vk1_0::PipelineVertexInputStateCreateInfo,
635 ) -> Self {
636 self.0.p_vertex_input_state = vertex_input_state as _;
637 self
638 }
639 #[inline]
640 #[must_use]
641 pub fn tessellation_state(
642 mut self,
643 tessellation_state: &'a crate::vk1_0::PipelineTessellationStateCreateInfo,
644 ) -> Self {
645 self.0.p_tessellation_state = tessellation_state as _;
646 self
647 }
648 #[inline]
649 pub fn build_dangling(self) -> GraphicsShaderGroupCreateInfoNV {
652 self.0
653 }
654}
655impl<'a> std::default::Default for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
656 fn default() -> GraphicsShaderGroupCreateInfoNVBuilder<'a> {
657 Self::new()
658 }
659}
660impl<'a> std::fmt::Debug for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
661 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
662 std::fmt::Debug::fmt(&self.0, f)
663 }
664}
665impl<'a> std::ops::Deref for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
666 type Target = GraphicsShaderGroupCreateInfoNV;
667 fn deref(&self) -> &Self::Target {
668 &self.0
669 }
670}
671impl<'a> std::ops::DerefMut for GraphicsShaderGroupCreateInfoNVBuilder<'a> {
672 fn deref_mut(&mut self) -> &mut Self::Target {
673 &mut self.0
674 }
675}
676#[doc(alias = "VkGraphicsPipelineShaderGroupsCreateInfoNV")]
678#[derive(Copy, Clone)]
679#[repr(C)]
680pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
681 pub s_type: crate::vk1_0::StructureType,
682 pub p_next: *const std::ffi::c_void,
683 pub group_count: u32,
684 pub p_groups: *const crate::extensions::nv_device_generated_commands::GraphicsShaderGroupCreateInfoNV,
685 pub pipeline_count: u32,
686 pub p_pipelines: *const crate::vk1_0::Pipeline,
687}
688impl GraphicsPipelineShaderGroupsCreateInfoNV {
689 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV;
690}
691impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
692 fn default() -> Self {
693 Self {
694 s_type: Self::STRUCTURE_TYPE,
695 p_next: std::ptr::null(),
696 group_count: Default::default(),
697 p_groups: std::ptr::null(),
698 pipeline_count: Default::default(),
699 p_pipelines: std::ptr::null(),
700 }
701 }
702}
703impl std::fmt::Debug for GraphicsPipelineShaderGroupsCreateInfoNV {
704 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
705 f.debug_struct("GraphicsPipelineShaderGroupsCreateInfoNV")
706 .field("s_type", &self.s_type)
707 .field("p_next", &self.p_next)
708 .field("group_count", &self.group_count)
709 .field("p_groups", &self.p_groups)
710 .field("pipeline_count", &self.pipeline_count)
711 .field("p_pipelines", &self.p_pipelines)
712 .finish()
713 }
714}
715impl GraphicsPipelineShaderGroupsCreateInfoNV {
716 #[inline]
717 pub fn into_builder<'a>(
718 self,
719 ) -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
720 GraphicsPipelineShaderGroupsCreateInfoNVBuilder(self, std::marker::PhantomData)
721 }
722}
723#[derive(Copy, Clone)]
724#[repr(transparent)]
726pub struct GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a>(
727 GraphicsPipelineShaderGroupsCreateInfoNV,
728 std::marker::PhantomData<&'a ()>,
729);
730impl<'a> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
731 #[inline]
732 pub fn new() -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
733 GraphicsPipelineShaderGroupsCreateInfoNVBuilder(
734 Default::default(),
735 std::marker::PhantomData,
736 )
737 }
738 #[inline]
739 #[must_use]
740 pub fn groups(
741 mut self,
742 groups: &'a [crate::extensions::nv_device_generated_commands::GraphicsShaderGroupCreateInfoNVBuilder],
743 ) -> Self {
744 self.0.p_groups = groups.as_ptr() as _;
745 self.0.group_count = groups.len() as _;
746 self
747 }
748 #[inline]
749 #[must_use]
750 pub fn pipelines(mut self, pipelines: &'a [crate::vk1_0::Pipeline]) -> Self {
751 self.0.p_pipelines = pipelines.as_ptr() as _;
752 self.0.pipeline_count = pipelines.len() as _;
753 self
754 }
755 #[inline]
756 pub fn build_dangling(self) -> GraphicsPipelineShaderGroupsCreateInfoNV {
759 self.0
760 }
761}
762impl<'a> std::default::Default for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
763 fn default() -> GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
764 Self::new()
765 }
766}
767impl<'a> std::fmt::Debug for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
768 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
769 std::fmt::Debug::fmt(&self.0, f)
770 }
771}
772impl<'a> std::ops::Deref for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
773 type Target = GraphicsPipelineShaderGroupsCreateInfoNV;
774 fn deref(&self) -> &Self::Target {
775 &self.0
776 }
777}
778impl<'a> std::ops::DerefMut for GraphicsPipelineShaderGroupsCreateInfoNVBuilder<'a> {
779 fn deref_mut(&mut self) -> &mut Self::Target {
780 &mut self.0
781 }
782}
783#[doc(alias = "VkBindShaderGroupIndirectCommandNV")]
785#[derive(Copy, Clone, Hash, PartialEq, Eq)]
786#[repr(C)]
787pub struct BindShaderGroupIndirectCommandNV {
788 pub group_index: u32,
789}
790impl Default for BindShaderGroupIndirectCommandNV {
791 fn default() -> Self {
792 Self {
793 group_index: Default::default(),
794 }
795 }
796}
797impl std::fmt::Debug for BindShaderGroupIndirectCommandNV {
798 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
799 f.debug_struct("BindShaderGroupIndirectCommandNV")
800 .field("group_index", &self.group_index)
801 .finish()
802 }
803}
804impl BindShaderGroupIndirectCommandNV {
805 #[inline]
806 pub fn into_builder<'a>(self) -> BindShaderGroupIndirectCommandNVBuilder<'a> {
807 BindShaderGroupIndirectCommandNVBuilder(self, std::marker::PhantomData)
808 }
809}
810#[derive(Copy, Clone)]
811#[repr(transparent)]
813pub struct BindShaderGroupIndirectCommandNVBuilder<'a>(
814 BindShaderGroupIndirectCommandNV,
815 std::marker::PhantomData<&'a ()>,
816);
817impl<'a> BindShaderGroupIndirectCommandNVBuilder<'a> {
818 #[inline]
819 pub fn new() -> BindShaderGroupIndirectCommandNVBuilder<'a> {
820 BindShaderGroupIndirectCommandNVBuilder(
821 Default::default(),
822 std::marker::PhantomData,
823 )
824 }
825 #[inline]
826 #[must_use]
827 pub fn group_index(mut self, group_index: u32) -> Self {
828 self.0.group_index = group_index as _;
829 self
830 }
831 #[inline]
832 pub fn build(self) -> BindShaderGroupIndirectCommandNV {
833 self.0
834 }
835}
836impl<'a> std::default::Default for BindShaderGroupIndirectCommandNVBuilder<'a> {
837 fn default() -> BindShaderGroupIndirectCommandNVBuilder<'a> {
838 Self::new()
839 }
840}
841impl<'a> std::fmt::Debug for BindShaderGroupIndirectCommandNVBuilder<'a> {
842 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
843 std::fmt::Debug::fmt(&self.0, f)
844 }
845}
846impl<'a> std::ops::Deref for BindShaderGroupIndirectCommandNVBuilder<'a> {
847 type Target = BindShaderGroupIndirectCommandNV;
848 fn deref(&self) -> &Self::Target {
849 &self.0
850 }
851}
852impl<'a> std::ops::DerefMut for BindShaderGroupIndirectCommandNVBuilder<'a> {
853 fn deref_mut(&mut self) -> &mut Self::Target {
854 &mut self.0
855 }
856}
857#[doc(alias = "VkBindIndexBufferIndirectCommandNV")]
859#[derive(Copy, Clone, Hash, PartialEq, Eq)]
860#[repr(C)]
861pub struct BindIndexBufferIndirectCommandNV {
862 pub buffer_address: crate::vk1_0::DeviceAddress,
863 pub size: u32,
864 pub index_type: crate::vk1_0::IndexType,
865}
866impl Default for BindIndexBufferIndirectCommandNV {
867 fn default() -> Self {
868 Self {
869 buffer_address: Default::default(),
870 size: Default::default(),
871 index_type: Default::default(),
872 }
873 }
874}
875impl std::fmt::Debug for BindIndexBufferIndirectCommandNV {
876 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
877 f.debug_struct("BindIndexBufferIndirectCommandNV")
878 .field("buffer_address", &self.buffer_address)
879 .field("size", &self.size)
880 .field("index_type", &self.index_type)
881 .finish()
882 }
883}
884impl BindIndexBufferIndirectCommandNV {
885 #[inline]
886 pub fn into_builder<'a>(self) -> BindIndexBufferIndirectCommandNVBuilder<'a> {
887 BindIndexBufferIndirectCommandNVBuilder(self, std::marker::PhantomData)
888 }
889}
890#[derive(Copy, Clone)]
891#[repr(transparent)]
893pub struct BindIndexBufferIndirectCommandNVBuilder<'a>(
894 BindIndexBufferIndirectCommandNV,
895 std::marker::PhantomData<&'a ()>,
896);
897impl<'a> BindIndexBufferIndirectCommandNVBuilder<'a> {
898 #[inline]
899 pub fn new() -> BindIndexBufferIndirectCommandNVBuilder<'a> {
900 BindIndexBufferIndirectCommandNVBuilder(
901 Default::default(),
902 std::marker::PhantomData,
903 )
904 }
905 #[inline]
906 #[must_use]
907 pub fn buffer_address(
908 mut self,
909 buffer_address: crate::vk1_0::DeviceAddress,
910 ) -> Self {
911 self.0.buffer_address = buffer_address as _;
912 self
913 }
914 #[inline]
915 #[must_use]
916 pub fn size(mut self, size: u32) -> Self {
917 self.0.size = size as _;
918 self
919 }
920 #[inline]
921 #[must_use]
922 pub fn index_type(mut self, index_type: crate::vk1_0::IndexType) -> Self {
923 self.0.index_type = index_type as _;
924 self
925 }
926 #[inline]
927 pub fn build(self) -> BindIndexBufferIndirectCommandNV {
928 self.0
929 }
930}
931impl<'a> std::default::Default for BindIndexBufferIndirectCommandNVBuilder<'a> {
932 fn default() -> BindIndexBufferIndirectCommandNVBuilder<'a> {
933 Self::new()
934 }
935}
936impl<'a> std::fmt::Debug for BindIndexBufferIndirectCommandNVBuilder<'a> {
937 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
938 std::fmt::Debug::fmt(&self.0, f)
939 }
940}
941impl<'a> std::ops::Deref for BindIndexBufferIndirectCommandNVBuilder<'a> {
942 type Target = BindIndexBufferIndirectCommandNV;
943 fn deref(&self) -> &Self::Target {
944 &self.0
945 }
946}
947impl<'a> std::ops::DerefMut for BindIndexBufferIndirectCommandNVBuilder<'a> {
948 fn deref_mut(&mut self) -> &mut Self::Target {
949 &mut self.0
950 }
951}
952#[doc(alias = "VkBindVertexBufferIndirectCommandNV")]
954#[derive(Copy, Clone, Hash, PartialEq, Eq)]
955#[repr(C)]
956pub struct BindVertexBufferIndirectCommandNV {
957 pub buffer_address: crate::vk1_0::DeviceAddress,
958 pub size: u32,
959 pub stride: u32,
960}
961impl Default for BindVertexBufferIndirectCommandNV {
962 fn default() -> Self {
963 Self {
964 buffer_address: Default::default(),
965 size: Default::default(),
966 stride: Default::default(),
967 }
968 }
969}
970impl std::fmt::Debug for BindVertexBufferIndirectCommandNV {
971 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
972 f.debug_struct("BindVertexBufferIndirectCommandNV")
973 .field("buffer_address", &self.buffer_address)
974 .field("size", &self.size)
975 .field("stride", &self.stride)
976 .finish()
977 }
978}
979impl BindVertexBufferIndirectCommandNV {
980 #[inline]
981 pub fn into_builder<'a>(self) -> BindVertexBufferIndirectCommandNVBuilder<'a> {
982 BindVertexBufferIndirectCommandNVBuilder(self, std::marker::PhantomData)
983 }
984}
985#[derive(Copy, Clone)]
986#[repr(transparent)]
988pub struct BindVertexBufferIndirectCommandNVBuilder<'a>(
989 BindVertexBufferIndirectCommandNV,
990 std::marker::PhantomData<&'a ()>,
991);
992impl<'a> BindVertexBufferIndirectCommandNVBuilder<'a> {
993 #[inline]
994 pub fn new() -> BindVertexBufferIndirectCommandNVBuilder<'a> {
995 BindVertexBufferIndirectCommandNVBuilder(
996 Default::default(),
997 std::marker::PhantomData,
998 )
999 }
1000 #[inline]
1001 #[must_use]
1002 pub fn buffer_address(
1003 mut self,
1004 buffer_address: crate::vk1_0::DeviceAddress,
1005 ) -> Self {
1006 self.0.buffer_address = buffer_address as _;
1007 self
1008 }
1009 #[inline]
1010 #[must_use]
1011 pub fn size(mut self, size: u32) -> Self {
1012 self.0.size = size as _;
1013 self
1014 }
1015 #[inline]
1016 #[must_use]
1017 pub fn stride(mut self, stride: u32) -> Self {
1018 self.0.stride = stride as _;
1019 self
1020 }
1021 #[inline]
1022 pub fn build(self) -> BindVertexBufferIndirectCommandNV {
1023 self.0
1024 }
1025}
1026impl<'a> std::default::Default for BindVertexBufferIndirectCommandNVBuilder<'a> {
1027 fn default() -> BindVertexBufferIndirectCommandNVBuilder<'a> {
1028 Self::new()
1029 }
1030}
1031impl<'a> std::fmt::Debug for BindVertexBufferIndirectCommandNVBuilder<'a> {
1032 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1033 std::fmt::Debug::fmt(&self.0, f)
1034 }
1035}
1036impl<'a> std::ops::Deref for BindVertexBufferIndirectCommandNVBuilder<'a> {
1037 type Target = BindVertexBufferIndirectCommandNV;
1038 fn deref(&self) -> &Self::Target {
1039 &self.0
1040 }
1041}
1042impl<'a> std::ops::DerefMut for BindVertexBufferIndirectCommandNVBuilder<'a> {
1043 fn deref_mut(&mut self) -> &mut Self::Target {
1044 &mut self.0
1045 }
1046}
1047#[doc(alias = "VkSetStateFlagsIndirectCommandNV")]
1049#[derive(Copy, Clone, Hash, PartialEq, Eq)]
1050#[repr(C)]
1051pub struct SetStateFlagsIndirectCommandNV {
1052 pub data: u32,
1053}
1054impl Default for SetStateFlagsIndirectCommandNV {
1055 fn default() -> Self {
1056 Self { data: Default::default() }
1057 }
1058}
1059impl std::fmt::Debug for SetStateFlagsIndirectCommandNV {
1060 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1061 f.debug_struct("SetStateFlagsIndirectCommandNV")
1062 .field("data", &self.data)
1063 .finish()
1064 }
1065}
1066impl SetStateFlagsIndirectCommandNV {
1067 #[inline]
1068 pub fn into_builder<'a>(self) -> SetStateFlagsIndirectCommandNVBuilder<'a> {
1069 SetStateFlagsIndirectCommandNVBuilder(self, std::marker::PhantomData)
1070 }
1071}
1072#[derive(Copy, Clone)]
1073#[repr(transparent)]
1075pub struct SetStateFlagsIndirectCommandNVBuilder<'a>(
1076 SetStateFlagsIndirectCommandNV,
1077 std::marker::PhantomData<&'a ()>,
1078);
1079impl<'a> SetStateFlagsIndirectCommandNVBuilder<'a> {
1080 #[inline]
1081 pub fn new() -> SetStateFlagsIndirectCommandNVBuilder<'a> {
1082 SetStateFlagsIndirectCommandNVBuilder(
1083 Default::default(),
1084 std::marker::PhantomData,
1085 )
1086 }
1087 #[inline]
1088 #[must_use]
1089 pub fn data(mut self, data: u32) -> Self {
1090 self.0.data = data as _;
1091 self
1092 }
1093 #[inline]
1094 pub fn build(self) -> SetStateFlagsIndirectCommandNV {
1095 self.0
1096 }
1097}
1098impl<'a> std::default::Default for SetStateFlagsIndirectCommandNVBuilder<'a> {
1099 fn default() -> SetStateFlagsIndirectCommandNVBuilder<'a> {
1100 Self::new()
1101 }
1102}
1103impl<'a> std::fmt::Debug for SetStateFlagsIndirectCommandNVBuilder<'a> {
1104 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1105 std::fmt::Debug::fmt(&self.0, f)
1106 }
1107}
1108impl<'a> std::ops::Deref for SetStateFlagsIndirectCommandNVBuilder<'a> {
1109 type Target = SetStateFlagsIndirectCommandNV;
1110 fn deref(&self) -> &Self::Target {
1111 &self.0
1112 }
1113}
1114impl<'a> std::ops::DerefMut for SetStateFlagsIndirectCommandNVBuilder<'a> {
1115 fn deref_mut(&mut self) -> &mut Self::Target {
1116 &mut self.0
1117 }
1118}
1119#[doc(alias = "VkIndirectCommandsStreamNV")]
1121#[derive(Copy, Clone, Hash, PartialEq, Eq)]
1122#[repr(C)]
1123pub struct IndirectCommandsStreamNV {
1124 pub buffer: crate::vk1_0::Buffer,
1125 pub offset: crate::vk1_0::DeviceSize,
1126}
1127impl Default for IndirectCommandsStreamNV {
1128 fn default() -> Self {
1129 Self {
1130 buffer: Default::default(),
1131 offset: Default::default(),
1132 }
1133 }
1134}
1135impl std::fmt::Debug for IndirectCommandsStreamNV {
1136 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1137 f.debug_struct("IndirectCommandsStreamNV")
1138 .field("buffer", &self.buffer)
1139 .field("offset", &self.offset)
1140 .finish()
1141 }
1142}
1143impl IndirectCommandsStreamNV {
1144 #[inline]
1145 pub fn into_builder<'a>(self) -> IndirectCommandsStreamNVBuilder<'a> {
1146 IndirectCommandsStreamNVBuilder(self, std::marker::PhantomData)
1147 }
1148}
1149#[derive(Copy, Clone)]
1150#[repr(transparent)]
1152pub struct IndirectCommandsStreamNVBuilder<'a>(
1153 IndirectCommandsStreamNV,
1154 std::marker::PhantomData<&'a ()>,
1155);
1156impl<'a> IndirectCommandsStreamNVBuilder<'a> {
1157 #[inline]
1158 pub fn new() -> IndirectCommandsStreamNVBuilder<'a> {
1159 IndirectCommandsStreamNVBuilder(Default::default(), std::marker::PhantomData)
1160 }
1161 #[inline]
1162 #[must_use]
1163 pub fn buffer(mut self, buffer: crate::vk1_0::Buffer) -> Self {
1164 self.0.buffer = buffer as _;
1165 self
1166 }
1167 #[inline]
1168 #[must_use]
1169 pub fn offset(mut self, offset: crate::vk1_0::DeviceSize) -> Self {
1170 self.0.offset = offset as _;
1171 self
1172 }
1173 #[inline]
1174 pub fn build(self) -> IndirectCommandsStreamNV {
1175 self.0
1176 }
1177}
1178impl<'a> std::default::Default for IndirectCommandsStreamNVBuilder<'a> {
1179 fn default() -> IndirectCommandsStreamNVBuilder<'a> {
1180 Self::new()
1181 }
1182}
1183impl<'a> std::fmt::Debug for IndirectCommandsStreamNVBuilder<'a> {
1184 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1185 std::fmt::Debug::fmt(&self.0, f)
1186 }
1187}
1188impl<'a> std::ops::Deref for IndirectCommandsStreamNVBuilder<'a> {
1189 type Target = IndirectCommandsStreamNV;
1190 fn deref(&self) -> &Self::Target {
1191 &self.0
1192 }
1193}
1194impl<'a> std::ops::DerefMut for IndirectCommandsStreamNVBuilder<'a> {
1195 fn deref_mut(&mut self) -> &mut Self::Target {
1196 &mut self.0
1197 }
1198}
1199#[doc(alias = "VkIndirectCommandsLayoutTokenNV")]
1201#[derive(Copy, Clone)]
1202#[repr(C)]
1203pub struct IndirectCommandsLayoutTokenNV {
1204 pub s_type: crate::vk1_0::StructureType,
1205 pub p_next: *const std::ffi::c_void,
1206 pub token_type: crate::extensions::nv_device_generated_commands::IndirectCommandsTokenTypeNV,
1207 pub stream: u32,
1208 pub offset: u32,
1209 pub vertex_binding_unit: u32,
1210 pub vertex_dynamic_stride: crate::vk1_0::Bool32,
1211 pub pushconstant_pipeline_layout: crate::vk1_0::PipelineLayout,
1212 pub pushconstant_shader_stage_flags: crate::vk1_0::ShaderStageFlags,
1213 pub pushconstant_offset: u32,
1214 pub pushconstant_size: u32,
1215 pub indirect_state_flags: crate::extensions::nv_device_generated_commands::IndirectStateFlagsNV,
1216 pub index_type_count: u32,
1217 pub p_index_types: *const crate::vk1_0::IndexType,
1218 pub p_index_type_values: *const u32,
1219}
1220impl IndirectCommandsLayoutTokenNV {
1221 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV;
1222}
1223impl Default for IndirectCommandsLayoutTokenNV {
1224 fn default() -> Self {
1225 Self {
1226 s_type: Self::STRUCTURE_TYPE,
1227 p_next: std::ptr::null(),
1228 token_type: Default::default(),
1229 stream: Default::default(),
1230 offset: Default::default(),
1231 vertex_binding_unit: Default::default(),
1232 vertex_dynamic_stride: Default::default(),
1233 pushconstant_pipeline_layout: Default::default(),
1234 pushconstant_shader_stage_flags: Default::default(),
1235 pushconstant_offset: Default::default(),
1236 pushconstant_size: Default::default(),
1237 indirect_state_flags: Default::default(),
1238 index_type_count: Default::default(),
1239 p_index_types: std::ptr::null(),
1240 p_index_type_values: std::ptr::null(),
1241 }
1242 }
1243}
1244impl std::fmt::Debug for IndirectCommandsLayoutTokenNV {
1245 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1246 f.debug_struct("IndirectCommandsLayoutTokenNV")
1247 .field("s_type", &self.s_type)
1248 .field("p_next", &self.p_next)
1249 .field("token_type", &self.token_type)
1250 .field("stream", &self.stream)
1251 .field("offset", &self.offset)
1252 .field("vertex_binding_unit", &self.vertex_binding_unit)
1253 .field("vertex_dynamic_stride", &(self.vertex_dynamic_stride != 0))
1254 .field("pushconstant_pipeline_layout", &self.pushconstant_pipeline_layout)
1255 .field(
1256 "pushconstant_shader_stage_flags",
1257 &self.pushconstant_shader_stage_flags,
1258 )
1259 .field("pushconstant_offset", &self.pushconstant_offset)
1260 .field("pushconstant_size", &self.pushconstant_size)
1261 .field("indirect_state_flags", &self.indirect_state_flags)
1262 .field("index_type_count", &self.index_type_count)
1263 .field("p_index_types", &self.p_index_types)
1264 .field("p_index_type_values", &self.p_index_type_values)
1265 .finish()
1266 }
1267}
1268impl IndirectCommandsLayoutTokenNV {
1269 #[inline]
1270 pub fn into_builder<'a>(self) -> IndirectCommandsLayoutTokenNVBuilder<'a> {
1271 IndirectCommandsLayoutTokenNVBuilder(self, std::marker::PhantomData)
1272 }
1273}
1274#[derive(Copy, Clone)]
1275#[repr(transparent)]
1277pub struct IndirectCommandsLayoutTokenNVBuilder<'a>(
1278 IndirectCommandsLayoutTokenNV,
1279 std::marker::PhantomData<&'a ()>,
1280);
1281impl<'a> IndirectCommandsLayoutTokenNVBuilder<'a> {
1282 #[inline]
1283 pub fn new() -> IndirectCommandsLayoutTokenNVBuilder<'a> {
1284 IndirectCommandsLayoutTokenNVBuilder(
1285 Default::default(),
1286 std::marker::PhantomData,
1287 )
1288 }
1289 #[inline]
1290 #[must_use]
1291 pub fn token_type(
1292 mut self,
1293 token_type: crate::extensions::nv_device_generated_commands::IndirectCommandsTokenTypeNV,
1294 ) -> Self {
1295 self.0.token_type = token_type as _;
1296 self
1297 }
1298 #[inline]
1299 #[must_use]
1300 pub fn stream(mut self, stream: u32) -> Self {
1301 self.0.stream = stream as _;
1302 self
1303 }
1304 #[inline]
1305 #[must_use]
1306 pub fn offset(mut self, offset: u32) -> Self {
1307 self.0.offset = offset as _;
1308 self
1309 }
1310 #[inline]
1311 #[must_use]
1312 pub fn vertex_binding_unit(mut self, vertex_binding_unit: u32) -> Self {
1313 self.0.vertex_binding_unit = vertex_binding_unit as _;
1314 self
1315 }
1316 #[inline]
1317 #[must_use]
1318 pub fn vertex_dynamic_stride(mut self, vertex_dynamic_stride: bool) -> Self {
1319 self.0.vertex_dynamic_stride = vertex_dynamic_stride as _;
1320 self
1321 }
1322 #[inline]
1323 #[must_use]
1324 pub fn pushconstant_pipeline_layout(
1325 mut self,
1326 pushconstant_pipeline_layout: crate::vk1_0::PipelineLayout,
1327 ) -> Self {
1328 self.0.pushconstant_pipeline_layout = pushconstant_pipeline_layout as _;
1329 self
1330 }
1331 #[inline]
1332 #[must_use]
1333 pub fn pushconstant_shader_stage_flags(
1334 mut self,
1335 pushconstant_shader_stage_flags: crate::vk1_0::ShaderStageFlags,
1336 ) -> Self {
1337 self.0.pushconstant_shader_stage_flags = pushconstant_shader_stage_flags as _;
1338 self
1339 }
1340 #[inline]
1341 #[must_use]
1342 pub fn pushconstant_offset(mut self, pushconstant_offset: u32) -> Self {
1343 self.0.pushconstant_offset = pushconstant_offset as _;
1344 self
1345 }
1346 #[inline]
1347 #[must_use]
1348 pub fn pushconstant_size(mut self, pushconstant_size: u32) -> Self {
1349 self.0.pushconstant_size = pushconstant_size as _;
1350 self
1351 }
1352 #[inline]
1353 #[must_use]
1354 pub fn indirect_state_flags(
1355 mut self,
1356 indirect_state_flags: crate::extensions::nv_device_generated_commands::IndirectStateFlagsNV,
1357 ) -> Self {
1358 self.0.indirect_state_flags = indirect_state_flags as _;
1359 self
1360 }
1361 #[inline]
1362 #[must_use]
1363 pub fn index_types(mut self, index_types: &'a [crate::vk1_0::IndexType]) -> Self {
1364 self.0.p_index_types = index_types.as_ptr() as _;
1365 self.0.index_type_count = index_types.len() as _;
1366 self
1367 }
1368 #[inline]
1369 #[must_use]
1370 pub fn index_type_values(mut self, index_type_values: &'a [u32]) -> Self {
1371 self.0.p_index_type_values = index_type_values.as_ptr() as _;
1372 self.0.index_type_count = index_type_values.len() as _;
1373 self
1374 }
1375 #[inline]
1376 pub fn build_dangling(self) -> IndirectCommandsLayoutTokenNV {
1379 self.0
1380 }
1381}
1382impl<'a> std::default::Default for IndirectCommandsLayoutTokenNVBuilder<'a> {
1383 fn default() -> IndirectCommandsLayoutTokenNVBuilder<'a> {
1384 Self::new()
1385 }
1386}
1387impl<'a> std::fmt::Debug for IndirectCommandsLayoutTokenNVBuilder<'a> {
1388 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1389 std::fmt::Debug::fmt(&self.0, f)
1390 }
1391}
1392impl<'a> std::ops::Deref for IndirectCommandsLayoutTokenNVBuilder<'a> {
1393 type Target = IndirectCommandsLayoutTokenNV;
1394 fn deref(&self) -> &Self::Target {
1395 &self.0
1396 }
1397}
1398impl<'a> std::ops::DerefMut for IndirectCommandsLayoutTokenNVBuilder<'a> {
1399 fn deref_mut(&mut self) -> &mut Self::Target {
1400 &mut self.0
1401 }
1402}
1403#[doc(alias = "VkIndirectCommandsLayoutCreateInfoNV")]
1405#[derive(Copy, Clone)]
1406#[repr(C)]
1407pub struct IndirectCommandsLayoutCreateInfoNV {
1408 pub s_type: crate::vk1_0::StructureType,
1409 pub p_next: *const std::ffi::c_void,
1410 pub flags: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutUsageFlagsNV,
1411 pub pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
1412 pub token_count: u32,
1413 pub p_tokens: *const crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutTokenNV,
1414 pub stream_count: u32,
1415 pub p_stream_strides: *const u32,
1416}
1417impl IndirectCommandsLayoutCreateInfoNV {
1418 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV;
1419}
1420impl Default for IndirectCommandsLayoutCreateInfoNV {
1421 fn default() -> Self {
1422 Self {
1423 s_type: Self::STRUCTURE_TYPE,
1424 p_next: std::ptr::null(),
1425 flags: Default::default(),
1426 pipeline_bind_point: Default::default(),
1427 token_count: Default::default(),
1428 p_tokens: std::ptr::null(),
1429 stream_count: Default::default(),
1430 p_stream_strides: std::ptr::null(),
1431 }
1432 }
1433}
1434impl std::fmt::Debug for IndirectCommandsLayoutCreateInfoNV {
1435 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1436 f.debug_struct("IndirectCommandsLayoutCreateInfoNV")
1437 .field("s_type", &self.s_type)
1438 .field("p_next", &self.p_next)
1439 .field("flags", &self.flags)
1440 .field("pipeline_bind_point", &self.pipeline_bind_point)
1441 .field("token_count", &self.token_count)
1442 .field("p_tokens", &self.p_tokens)
1443 .field("stream_count", &self.stream_count)
1444 .field("p_stream_strides", &self.p_stream_strides)
1445 .finish()
1446 }
1447}
1448impl IndirectCommandsLayoutCreateInfoNV {
1449 #[inline]
1450 pub fn into_builder<'a>(self) -> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1451 IndirectCommandsLayoutCreateInfoNVBuilder(self, std::marker::PhantomData)
1452 }
1453}
1454#[derive(Copy, Clone)]
1455#[repr(transparent)]
1457pub struct IndirectCommandsLayoutCreateInfoNVBuilder<'a>(
1458 IndirectCommandsLayoutCreateInfoNV,
1459 std::marker::PhantomData<&'a ()>,
1460);
1461impl<'a> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1462 #[inline]
1463 pub fn new() -> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1464 IndirectCommandsLayoutCreateInfoNVBuilder(
1465 Default::default(),
1466 std::marker::PhantomData,
1467 )
1468 }
1469 #[inline]
1470 #[must_use]
1471 pub fn flags(
1472 mut self,
1473 flags: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutUsageFlagsNV,
1474 ) -> Self {
1475 self.0.flags = flags as _;
1476 self
1477 }
1478 #[inline]
1479 #[must_use]
1480 pub fn pipeline_bind_point(
1481 mut self,
1482 pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
1483 ) -> Self {
1484 self.0.pipeline_bind_point = pipeline_bind_point as _;
1485 self
1486 }
1487 #[inline]
1488 #[must_use]
1489 pub fn tokens(
1490 mut self,
1491 tokens: &'a [crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutTokenNVBuilder],
1492 ) -> Self {
1493 self.0.p_tokens = tokens.as_ptr() as _;
1494 self.0.token_count = tokens.len() as _;
1495 self
1496 }
1497 #[inline]
1498 #[must_use]
1499 pub fn stream_strides(mut self, stream_strides: &'a [u32]) -> Self {
1500 self.0.p_stream_strides = stream_strides.as_ptr() as _;
1501 self.0.stream_count = stream_strides.len() as _;
1502 self
1503 }
1504 #[inline]
1505 pub fn build_dangling(self) -> IndirectCommandsLayoutCreateInfoNV {
1508 self.0
1509 }
1510}
1511impl<'a> std::default::Default for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1512 fn default() -> IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1513 Self::new()
1514 }
1515}
1516impl<'a> std::fmt::Debug for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1517 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1518 std::fmt::Debug::fmt(&self.0, f)
1519 }
1520}
1521impl<'a> std::ops::Deref for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1522 type Target = IndirectCommandsLayoutCreateInfoNV;
1523 fn deref(&self) -> &Self::Target {
1524 &self.0
1525 }
1526}
1527impl<'a> std::ops::DerefMut for IndirectCommandsLayoutCreateInfoNVBuilder<'a> {
1528 fn deref_mut(&mut self) -> &mut Self::Target {
1529 &mut self.0
1530 }
1531}
1532#[doc(alias = "VkGeneratedCommandsInfoNV")]
1534#[derive(Copy, Clone)]
1535#[repr(C)]
1536pub struct GeneratedCommandsInfoNV {
1537 pub s_type: crate::vk1_0::StructureType,
1538 pub p_next: *const std::ffi::c_void,
1539 pub pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
1540 pub pipeline: crate::vk1_0::Pipeline,
1541 pub indirect_commands_layout: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
1542 pub stream_count: u32,
1543 pub p_streams: *const crate::extensions::nv_device_generated_commands::IndirectCommandsStreamNV,
1544 pub sequences_count: u32,
1545 pub preprocess_buffer: crate::vk1_0::Buffer,
1546 pub preprocess_offset: crate::vk1_0::DeviceSize,
1547 pub preprocess_size: crate::vk1_0::DeviceSize,
1548 pub sequences_count_buffer: crate::vk1_0::Buffer,
1549 pub sequences_count_offset: crate::vk1_0::DeviceSize,
1550 pub sequences_index_buffer: crate::vk1_0::Buffer,
1551 pub sequences_index_offset: crate::vk1_0::DeviceSize,
1552}
1553impl GeneratedCommandsInfoNV {
1554 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::GENERATED_COMMANDS_INFO_NV;
1555}
1556impl Default for GeneratedCommandsInfoNV {
1557 fn default() -> Self {
1558 Self {
1559 s_type: Self::STRUCTURE_TYPE,
1560 p_next: std::ptr::null(),
1561 pipeline_bind_point: Default::default(),
1562 pipeline: Default::default(),
1563 indirect_commands_layout: Default::default(),
1564 stream_count: Default::default(),
1565 p_streams: std::ptr::null(),
1566 sequences_count: Default::default(),
1567 preprocess_buffer: Default::default(),
1568 preprocess_offset: Default::default(),
1569 preprocess_size: Default::default(),
1570 sequences_count_buffer: Default::default(),
1571 sequences_count_offset: Default::default(),
1572 sequences_index_buffer: Default::default(),
1573 sequences_index_offset: Default::default(),
1574 }
1575 }
1576}
1577impl std::fmt::Debug for GeneratedCommandsInfoNV {
1578 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1579 f.debug_struct("GeneratedCommandsInfoNV")
1580 .field("s_type", &self.s_type)
1581 .field("p_next", &self.p_next)
1582 .field("pipeline_bind_point", &self.pipeline_bind_point)
1583 .field("pipeline", &self.pipeline)
1584 .field("indirect_commands_layout", &self.indirect_commands_layout)
1585 .field("stream_count", &self.stream_count)
1586 .field("p_streams", &self.p_streams)
1587 .field("sequences_count", &self.sequences_count)
1588 .field("preprocess_buffer", &self.preprocess_buffer)
1589 .field("preprocess_offset", &self.preprocess_offset)
1590 .field("preprocess_size", &self.preprocess_size)
1591 .field("sequences_count_buffer", &self.sequences_count_buffer)
1592 .field("sequences_count_offset", &self.sequences_count_offset)
1593 .field("sequences_index_buffer", &self.sequences_index_buffer)
1594 .field("sequences_index_offset", &self.sequences_index_offset)
1595 .finish()
1596 }
1597}
1598impl GeneratedCommandsInfoNV {
1599 #[inline]
1600 pub fn into_builder<'a>(self) -> GeneratedCommandsInfoNVBuilder<'a> {
1601 GeneratedCommandsInfoNVBuilder(self, std::marker::PhantomData)
1602 }
1603}
1604#[derive(Copy, Clone)]
1605#[repr(transparent)]
1607pub struct GeneratedCommandsInfoNVBuilder<'a>(
1608 GeneratedCommandsInfoNV,
1609 std::marker::PhantomData<&'a ()>,
1610);
1611impl<'a> GeneratedCommandsInfoNVBuilder<'a> {
1612 #[inline]
1613 pub fn new() -> GeneratedCommandsInfoNVBuilder<'a> {
1614 GeneratedCommandsInfoNVBuilder(Default::default(), std::marker::PhantomData)
1615 }
1616 #[inline]
1617 #[must_use]
1618 pub fn pipeline_bind_point(
1619 mut self,
1620 pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
1621 ) -> Self {
1622 self.0.pipeline_bind_point = pipeline_bind_point as _;
1623 self
1624 }
1625 #[inline]
1626 #[must_use]
1627 pub fn pipeline(mut self, pipeline: crate::vk1_0::Pipeline) -> Self {
1628 self.0.pipeline = pipeline as _;
1629 self
1630 }
1631 #[inline]
1632 #[must_use]
1633 pub fn indirect_commands_layout(
1634 mut self,
1635 indirect_commands_layout: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
1636 ) -> Self {
1637 self.0.indirect_commands_layout = indirect_commands_layout as _;
1638 self
1639 }
1640 #[inline]
1641 #[must_use]
1642 pub fn streams(
1643 mut self,
1644 streams: &'a [crate::extensions::nv_device_generated_commands::IndirectCommandsStreamNVBuilder],
1645 ) -> Self {
1646 self.0.p_streams = streams.as_ptr() as _;
1647 self.0.stream_count = streams.len() as _;
1648 self
1649 }
1650 #[inline]
1651 #[must_use]
1652 pub fn sequences_count(mut self, sequences_count: u32) -> Self {
1653 self.0.sequences_count = sequences_count as _;
1654 self
1655 }
1656 #[inline]
1657 #[must_use]
1658 pub fn preprocess_buffer(mut self, preprocess_buffer: crate::vk1_0::Buffer) -> Self {
1659 self.0.preprocess_buffer = preprocess_buffer as _;
1660 self
1661 }
1662 #[inline]
1663 #[must_use]
1664 pub fn preprocess_offset(
1665 mut self,
1666 preprocess_offset: crate::vk1_0::DeviceSize,
1667 ) -> Self {
1668 self.0.preprocess_offset = preprocess_offset as _;
1669 self
1670 }
1671 #[inline]
1672 #[must_use]
1673 pub fn preprocess_size(mut self, preprocess_size: crate::vk1_0::DeviceSize) -> Self {
1674 self.0.preprocess_size = preprocess_size as _;
1675 self
1676 }
1677 #[inline]
1678 #[must_use]
1679 pub fn sequences_count_buffer(
1680 mut self,
1681 sequences_count_buffer: crate::vk1_0::Buffer,
1682 ) -> Self {
1683 self.0.sequences_count_buffer = sequences_count_buffer as _;
1684 self
1685 }
1686 #[inline]
1687 #[must_use]
1688 pub fn sequences_count_offset(
1689 mut self,
1690 sequences_count_offset: crate::vk1_0::DeviceSize,
1691 ) -> Self {
1692 self.0.sequences_count_offset = sequences_count_offset as _;
1693 self
1694 }
1695 #[inline]
1696 #[must_use]
1697 pub fn sequences_index_buffer(
1698 mut self,
1699 sequences_index_buffer: crate::vk1_0::Buffer,
1700 ) -> Self {
1701 self.0.sequences_index_buffer = sequences_index_buffer as _;
1702 self
1703 }
1704 #[inline]
1705 #[must_use]
1706 pub fn sequences_index_offset(
1707 mut self,
1708 sequences_index_offset: crate::vk1_0::DeviceSize,
1709 ) -> Self {
1710 self.0.sequences_index_offset = sequences_index_offset as _;
1711 self
1712 }
1713 #[inline]
1714 pub fn build_dangling(self) -> GeneratedCommandsInfoNV {
1717 self.0
1718 }
1719}
1720impl<'a> std::default::Default for GeneratedCommandsInfoNVBuilder<'a> {
1721 fn default() -> GeneratedCommandsInfoNVBuilder<'a> {
1722 Self::new()
1723 }
1724}
1725impl<'a> std::fmt::Debug for GeneratedCommandsInfoNVBuilder<'a> {
1726 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1727 std::fmt::Debug::fmt(&self.0, f)
1728 }
1729}
1730impl<'a> std::ops::Deref for GeneratedCommandsInfoNVBuilder<'a> {
1731 type Target = GeneratedCommandsInfoNV;
1732 fn deref(&self) -> &Self::Target {
1733 &self.0
1734 }
1735}
1736impl<'a> std::ops::DerefMut for GeneratedCommandsInfoNVBuilder<'a> {
1737 fn deref_mut(&mut self) -> &mut Self::Target {
1738 &mut self.0
1739 }
1740}
1741#[doc(alias = "VkGeneratedCommandsMemoryRequirementsInfoNV")]
1743#[derive(Copy, Clone)]
1744#[repr(C)]
1745pub struct GeneratedCommandsMemoryRequirementsInfoNV {
1746 pub s_type: crate::vk1_0::StructureType,
1747 pub p_next: *const std::ffi::c_void,
1748 pub pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
1749 pub pipeline: crate::vk1_0::Pipeline,
1750 pub indirect_commands_layout: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
1751 pub max_sequences_count: u32,
1752}
1753impl GeneratedCommandsMemoryRequirementsInfoNV {
1754 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV;
1755}
1756impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
1757 fn default() -> Self {
1758 Self {
1759 s_type: Self::STRUCTURE_TYPE,
1760 p_next: std::ptr::null(),
1761 pipeline_bind_point: Default::default(),
1762 pipeline: Default::default(),
1763 indirect_commands_layout: Default::default(),
1764 max_sequences_count: Default::default(),
1765 }
1766 }
1767}
1768impl std::fmt::Debug for GeneratedCommandsMemoryRequirementsInfoNV {
1769 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1770 f.debug_struct("GeneratedCommandsMemoryRequirementsInfoNV")
1771 .field("s_type", &self.s_type)
1772 .field("p_next", &self.p_next)
1773 .field("pipeline_bind_point", &self.pipeline_bind_point)
1774 .field("pipeline", &self.pipeline)
1775 .field("indirect_commands_layout", &self.indirect_commands_layout)
1776 .field("max_sequences_count", &self.max_sequences_count)
1777 .finish()
1778 }
1779}
1780impl GeneratedCommandsMemoryRequirementsInfoNV {
1781 #[inline]
1782 pub fn into_builder<'a>(
1783 self,
1784 ) -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1785 GeneratedCommandsMemoryRequirementsInfoNVBuilder(self, std::marker::PhantomData)
1786 }
1787}
1788#[derive(Copy, Clone)]
1789#[repr(transparent)]
1791pub struct GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a>(
1792 GeneratedCommandsMemoryRequirementsInfoNV,
1793 std::marker::PhantomData<&'a ()>,
1794);
1795impl<'a> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1796 #[inline]
1797 pub fn new() -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1798 GeneratedCommandsMemoryRequirementsInfoNVBuilder(
1799 Default::default(),
1800 std::marker::PhantomData,
1801 )
1802 }
1803 #[inline]
1804 #[must_use]
1805 pub fn pipeline_bind_point(
1806 mut self,
1807 pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
1808 ) -> Self {
1809 self.0.pipeline_bind_point = pipeline_bind_point as _;
1810 self
1811 }
1812 #[inline]
1813 #[must_use]
1814 pub fn pipeline(mut self, pipeline: crate::vk1_0::Pipeline) -> Self {
1815 self.0.pipeline = pipeline as _;
1816 self
1817 }
1818 #[inline]
1819 #[must_use]
1820 pub fn indirect_commands_layout(
1821 mut self,
1822 indirect_commands_layout: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
1823 ) -> Self {
1824 self.0.indirect_commands_layout = indirect_commands_layout as _;
1825 self
1826 }
1827 #[inline]
1828 #[must_use]
1829 pub fn max_sequences_count(mut self, max_sequences_count: u32) -> Self {
1830 self.0.max_sequences_count = max_sequences_count as _;
1831 self
1832 }
1833 #[inline]
1834 pub fn build_dangling(self) -> GeneratedCommandsMemoryRequirementsInfoNV {
1837 self.0
1838 }
1839}
1840impl<'a> std::default::Default for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1841 fn default() -> GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1842 Self::new()
1843 }
1844}
1845impl<'a> std::fmt::Debug for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1846 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1847 std::fmt::Debug::fmt(&self.0, f)
1848 }
1849}
1850impl<'a> std::ops::Deref for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1851 type Target = GeneratedCommandsMemoryRequirementsInfoNV;
1852 fn deref(&self) -> &Self::Target {
1853 &self.0
1854 }
1855}
1856impl<'a> std::ops::DerefMut for GeneratedCommandsMemoryRequirementsInfoNVBuilder<'a> {
1857 fn deref_mut(&mut self) -> &mut Self::Target {
1858 &mut self.0
1859 }
1860}
1861impl<'a> crate::ExtendableFrom<'a, PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>
1862for crate::vk1_1::PhysicalDeviceFeatures2Builder<'a> {}
1863impl<
1864 'a,
1865> crate::ExtendableFrom<'a, PhysicalDeviceDeviceGeneratedCommandsFeaturesNVBuilder<'_>>
1866for crate::vk1_1::PhysicalDeviceFeatures2Builder<'a> {}
1867impl<'a> crate::ExtendableFrom<'a, PhysicalDeviceDeviceGeneratedCommandsPropertiesNV>
1868for crate::vk1_1::PhysicalDeviceProperties2Builder<'a> {}
1869impl<
1870 'a,
1871> crate::ExtendableFrom<'a, PhysicalDeviceDeviceGeneratedCommandsPropertiesNVBuilder<'_>>
1872for crate::vk1_1::PhysicalDeviceProperties2Builder<'a> {}
1873impl crate::DeviceLoader {
1875 #[inline]
1876 #[track_caller]
1877 #[doc(alias = "vkCmdExecuteGeneratedCommandsNV")]
1879 pub unsafe fn cmd_execute_generated_commands_nv(
1880 &self,
1881 command_buffer: crate::vk1_0::CommandBuffer,
1882 is_preprocessed: bool,
1883 generated_commands_info: &crate::extensions::nv_device_generated_commands::GeneratedCommandsInfoNV,
1884 ) -> () {
1885 let _function = self
1886 .cmd_execute_generated_commands_nv
1887 .expect(crate::NOT_LOADED_MESSAGE);
1888 let _return = _function(
1889 command_buffer as _,
1890 is_preprocessed as _,
1891 generated_commands_info as _,
1892 );
1893 ()
1894 }
1895 #[inline]
1896 #[track_caller]
1897 #[doc(alias = "vkCmdPreprocessGeneratedCommandsNV")]
1899 pub unsafe fn cmd_preprocess_generated_commands_nv(
1900 &self,
1901 command_buffer: crate::vk1_0::CommandBuffer,
1902 generated_commands_info: &crate::extensions::nv_device_generated_commands::GeneratedCommandsInfoNV,
1903 ) -> () {
1904 let _function = self
1905 .cmd_preprocess_generated_commands_nv
1906 .expect(crate::NOT_LOADED_MESSAGE);
1907 let _return = _function(command_buffer as _, generated_commands_info as _);
1908 ()
1909 }
1910 #[inline]
1911 #[track_caller]
1912 #[doc(alias = "vkCmdBindPipelineShaderGroupNV")]
1914 pub unsafe fn cmd_bind_pipeline_shader_group_nv(
1915 &self,
1916 command_buffer: crate::vk1_0::CommandBuffer,
1917 pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
1918 pipeline: crate::vk1_0::Pipeline,
1919 group_index: u32,
1920 ) -> () {
1921 let _function = self
1922 .cmd_bind_pipeline_shader_group_nv
1923 .expect(crate::NOT_LOADED_MESSAGE);
1924 let _return = _function(
1925 command_buffer as _,
1926 pipeline_bind_point as _,
1927 pipeline as _,
1928 group_index as _,
1929 );
1930 ()
1931 }
1932 #[inline]
1933 #[track_caller]
1934 #[doc(alias = "vkGetGeneratedCommandsMemoryRequirementsNV")]
1936 pub unsafe fn get_generated_commands_memory_requirements_nv(
1937 &self,
1938 info: &crate::extensions::nv_device_generated_commands::GeneratedCommandsMemoryRequirementsInfoNV,
1939 memory_requirements: &mut crate::vk1_1::MemoryRequirements2,
1940 ) -> () {
1941 let _function = self
1942 .get_generated_commands_memory_requirements_nv
1943 .expect(crate::NOT_LOADED_MESSAGE);
1944 let _return = _function(self.handle, info as _, memory_requirements as _);
1945 ()
1946 }
1947 #[inline]
1948 #[track_caller]
1949 #[doc(alias = "vkCreateIndirectCommandsLayoutNV")]
1951 pub unsafe fn create_indirect_commands_layout_nv(
1952 &self,
1953 create_info: &crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutCreateInfoNV,
1954 allocator: Option<&crate::vk1_0::AllocationCallbacks>,
1955 ) -> crate::utils::VulkanResult<
1956 crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
1957 > {
1958 let _function = self
1959 .create_indirect_commands_layout_nv
1960 .expect(crate::NOT_LOADED_MESSAGE);
1961 let mut indirect_commands_layout = Default::default();
1962 let _return = _function(
1963 self.handle,
1964 create_info as _,
1965 match allocator {
1966 Some(v) => v,
1967 None => std::ptr::null(),
1968 },
1969 &mut indirect_commands_layout,
1970 );
1971 crate::utils::VulkanResult::new(_return, indirect_commands_layout)
1972 }
1973 #[inline]
1974 #[track_caller]
1975 #[doc(alias = "vkDestroyIndirectCommandsLayoutNV")]
1977 pub unsafe fn destroy_indirect_commands_layout_nv(
1978 &self,
1979 indirect_commands_layout: crate::extensions::nv_device_generated_commands::IndirectCommandsLayoutNV,
1980 allocator: Option<&crate::vk1_0::AllocationCallbacks>,
1981 ) -> () {
1982 let _function = self
1983 .destroy_indirect_commands_layout_nv
1984 .expect(crate::NOT_LOADED_MESSAGE);
1985 let _return = _function(
1986 self.handle,
1987 indirect_commands_layout as _,
1988 match allocator {
1989 Some(v) => v,
1990 None => std::ptr::null(),
1991 },
1992 );
1993 ()
1994 }
1995}