1
1
use super :: conv;
2
2
3
3
use arrayvec:: ArrayVec ;
4
- use ash:: { extensions :: ext, vk} ;
4
+ use ash:: { ext, vk} ;
5
5
6
6
use std:: { mem, ops:: Range , slice} ;
7
7
@@ -39,12 +39,6 @@ impl super::Texture {
39
39
}
40
40
}
41
41
42
- impl super :: DeviceShared {
43
- fn debug_messenger ( & self ) -> Option < & ext:: DebugUtils > {
44
- Some ( & self . instance . debug_utils . as_ref ( ) ?. extension )
45
- }
46
- }
47
-
48
42
impl super :: CommandEncoder {
49
43
fn write_pass_end_timestamp_if_requested ( & mut self ) {
50
44
if let Some ( ( query_set, index) ) = self . end_of_pass_timer_query . take ( ) {
@@ -65,31 +59,23 @@ impl crate::CommandEncoder for super::CommandEncoder {
65
59
66
60
unsafe fn begin_encoding ( & mut self , label : crate :: Label ) -> Result < ( ) , crate :: DeviceError > {
67
61
if self . free . is_empty ( ) {
68
- let vk_info = vk:: CommandBufferAllocateInfo :: builder ( )
62
+ let vk_info = vk:: CommandBufferAllocateInfo :: default ( )
69
63
. command_pool ( self . raw )
70
- . command_buffer_count ( ALLOCATION_GRANULARITY )
71
- . build ( ) ;
64
+ . command_buffer_count ( ALLOCATION_GRANULARITY ) ;
72
65
let cmd_buf_vec = unsafe { self . device . raw . allocate_command_buffers ( & vk_info) ? } ;
73
66
self . free . extend ( cmd_buf_vec) ;
74
67
}
75
68
let raw = self . free . pop ( ) . unwrap ( ) ;
76
69
77
70
// Set the name unconditionally, since there might be a
78
71
// previous name assigned to this.
79
- unsafe {
80
- self . device . set_object_name (
81
- vk:: ObjectType :: COMMAND_BUFFER ,
82
- raw,
83
- label. unwrap_or_default ( ) ,
84
- )
85
- } ;
72
+ unsafe { self . device . set_object_name ( raw, label. unwrap_or_default ( ) ) } ;
86
73
87
74
// Reset this in case the last renderpass was never ended.
88
75
self . rpass_debug_marker_active = false ;
89
76
90
- let vk_info = vk:: CommandBufferBeginInfo :: builder ( )
91
- . flags ( vk:: CommandBufferUsageFlags :: ONE_TIME_SUBMIT )
92
- . build ( ) ;
77
+ let vk_info = vk:: CommandBufferBeginInfo :: default ( )
78
+ . flags ( vk:: CommandBufferUsageFlags :: ONE_TIME_SUBMIT ) ;
93
79
unsafe { self . device . raw . begin_command_buffer ( raw, & vk_info) } ?;
94
80
self . active = raw;
95
81
@@ -140,12 +126,11 @@ impl crate::CommandEncoder for super::CommandEncoder {
140
126
dst_stages |= dst_stage;
141
127
142
128
vk_barriers. push (
143
- vk:: BufferMemoryBarrier :: builder ( )
129
+ vk:: BufferMemoryBarrier :: default ( )
144
130
. buffer ( bar. buffer . raw )
145
131
. size ( vk:: WHOLE_SIZE )
146
132
. src_access_mask ( src_access)
147
- . dst_access_mask ( dst_access)
148
- . build ( ) ,
133
+ . dst_access_mask ( dst_access) ,
149
134
)
150
135
}
151
136
@@ -187,14 +172,13 @@ impl crate::CommandEncoder for super::CommandEncoder {
187
172
dst_stages |= dst_stage;
188
173
189
174
vk_barriers. push (
190
- vk:: ImageMemoryBarrier :: builder ( )
175
+ vk:: ImageMemoryBarrier :: default ( )
191
176
. image ( bar. texture . raw )
192
177
. subresource_range ( range)
193
178
. src_access_mask ( src_access)
194
179
. dst_access_mask ( dst_access)
195
180
. old_layout ( src_layout)
196
- . new_layout ( dst_layout)
197
- . build ( ) ,
181
+ . new_layout ( dst_layout) ,
198
182
) ;
199
183
}
200
184
@@ -437,7 +421,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
437
421
Some ( buffer) => ray_tracing_functions
438
422
. buffer_device_address
439
423
. get_buffer_device_address (
440
- & vk:: BufferDeviceAddressInfo :: builder ( ) . buffer ( buffer. raw ) ,
424
+ & vk:: BufferDeviceAddressInfo :: default ( ) . buffer ( buffer. raw ) ,
441
425
) ,
442
426
None => panic ! ( "Buffers are required to build acceleration structures" ) ,
443
427
}
@@ -464,23 +448,24 @@ impl crate::CommandEncoder for super::CommandEncoder {
464
448
for desc in descriptors {
465
449
let ( geometries, ranges) = match * desc. entries {
466
450
crate :: AccelerationStructureEntries :: Instances ( ref instances) => {
467
- let instance_data = vk:: AccelerationStructureGeometryInstancesDataKHR :: builder (
451
+ let instance_data = vk:: AccelerationStructureGeometryInstancesDataKHR :: default (
452
+ // TODO: Code is so large that rustfmt refuses to treat this... :(
468
453
)
469
454
. data ( vk:: DeviceOrHostAddressConstKHR {
470
455
device_address : get_device_address ( instances. buffer ) ,
471
456
} ) ;
472
457
473
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
458
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
474
459
. geometry_type ( vk:: GeometryTypeKHR :: INSTANCES )
475
460
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
476
- instances : * instance_data,
461
+ instances : instance_data,
477
462
} ) ;
478
463
479
- let range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( )
464
+ let range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( )
480
465
. primitive_count ( instances. count )
481
466
. primitive_offset ( instances. offset ) ;
482
467
483
- ( smallvec:: smallvec![ * geometry] , smallvec:: smallvec![ * range] )
468
+ ( smallvec:: smallvec![ geometry] , smallvec:: smallvec![ range] )
484
469
}
485
470
crate :: AccelerationStructureEntries :: Triangles ( ref in_geometries) => {
486
471
let mut ranges = smallvec:: SmallVec :: <
@@ -491,15 +476,15 @@ impl crate::CommandEncoder for super::CommandEncoder {
491
476
> :: with_capacity ( in_geometries. len ( ) ) ;
492
477
for triangles in in_geometries {
493
478
let mut triangle_data =
494
- vk:: AccelerationStructureGeometryTrianglesDataKHR :: builder ( )
479
+ vk:: AccelerationStructureGeometryTrianglesDataKHR :: default ( )
495
480
. vertex_data ( vk:: DeviceOrHostAddressConstKHR {
496
481
device_address : get_device_address ( triangles. vertex_buffer ) ,
497
482
} )
498
483
. vertex_format ( conv:: map_vertex_format ( triangles. vertex_format ) )
499
484
. max_vertex ( triangles. vertex_count )
500
485
. vertex_stride ( triangles. vertex_stride ) ;
501
486
502
- let mut range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( ) ;
487
+ let mut range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( ) ;
503
488
504
489
if let Some ( ref indices) = triangles. indices {
505
490
triangle_data = triangle_data
@@ -523,7 +508,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
523
508
ray_tracing_functions
524
509
. buffer_device_address
525
510
. get_buffer_device_address (
526
- & vk:: BufferDeviceAddressInfo :: builder ( )
511
+ & vk:: BufferDeviceAddressInfo :: default ( )
527
512
. buffer ( transform. buffer . raw ) ,
528
513
)
529
514
} ;
@@ -535,17 +520,17 @@ impl crate::CommandEncoder for super::CommandEncoder {
535
520
range = range. transform_offset ( transform. offset ) ;
536
521
}
537
522
538
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
523
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
539
524
. geometry_type ( vk:: GeometryTypeKHR :: TRIANGLES )
540
525
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
541
- triangles : * triangle_data,
526
+ triangles : triangle_data,
542
527
} )
543
528
. flags ( conv:: map_acceleration_structure_geometry_flags (
544
529
triangles. flags ,
545
530
) ) ;
546
531
547
- geometries. push ( * geometry) ;
548
- ranges. push ( * range) ;
532
+ geometries. push ( geometry) ;
533
+ ranges. push ( range) ;
549
534
}
550
535
( geometries, ranges)
551
536
}
@@ -557,25 +542,25 @@ impl crate::CommandEncoder for super::CommandEncoder {
557
542
[ vk:: AccelerationStructureGeometryKHR ; CAPACITY_INNER ] ,
558
543
> :: with_capacity ( in_geometries. len ( ) ) ;
559
544
for aabb in in_geometries {
560
- let aabbs_data = vk:: AccelerationStructureGeometryAabbsDataKHR :: builder ( )
545
+ let aabbs_data = vk:: AccelerationStructureGeometryAabbsDataKHR :: default ( )
561
546
. data ( vk:: DeviceOrHostAddressConstKHR {
562
547
device_address : get_device_address ( aabb. buffer ) ,
563
548
} )
564
549
. stride ( aabb. stride ) ;
565
550
566
- let range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( )
551
+ let range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( )
567
552
. primitive_count ( aabb. count )
568
553
. primitive_offset ( aabb. offset ) ;
569
554
570
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
555
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
571
556
. geometry_type ( vk:: GeometryTypeKHR :: AABBS )
572
557
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
573
- aabbs : * aabbs_data,
558
+ aabbs : aabbs_data,
574
559
} )
575
560
. flags ( conv:: map_acceleration_structure_geometry_flags ( aabb. flags ) ) ;
576
561
577
- geometries. push ( * geometry) ;
578
- ranges. push ( * range) ;
562
+ geometries. push ( geometry) ;
563
+ ranges. push ( range) ;
579
564
}
580
565
( geometries, ranges)
581
566
}
@@ -588,7 +573,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
588
573
ray_tracing_functions
589
574
. buffer_device_address
590
575
. get_buffer_device_address (
591
- & vk:: BufferDeviceAddressInfo :: builder ( ) . buffer ( desc. scratch_buffer . raw ) ,
576
+ & vk:: BufferDeviceAddressInfo :: default ( ) . buffer ( desc. scratch_buffer . raw ) ,
592
577
)
593
578
} ;
594
579
let ty = match * desc. entries {
@@ -597,7 +582,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
597
582
}
598
583
_ => vk:: AccelerationStructureTypeKHR :: BOTTOM_LEVEL ,
599
584
} ;
600
- let mut geometry_info = vk:: AccelerationStructureBuildGeometryInfoKHR :: builder ( )
585
+ let mut geometry_info = vk:: AccelerationStructureBuildGeometryInfoKHR :: default ( )
601
586
. ty ( ty)
602
587
. mode ( conv:: map_acceleration_structure_build_mode ( desc. mode ) )
603
588
. flags ( conv:: map_acceleration_structure_flags ( desc. flags ) )
@@ -613,7 +598,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
613
598
. raw ;
614
599
}
615
600
616
- geometry_infos. push ( * geometry_info) ;
601
+ geometry_infos. push ( geometry_info) ;
617
602
}
618
603
619
604
for ( i, geometry_info) in geometry_infos. iter_mut ( ) . enumerate ( ) {
@@ -644,10 +629,9 @@ impl crate::CommandEncoder for super::CommandEncoder {
644
629
src_stage | vk:: PipelineStageFlags :: TOP_OF_PIPE ,
645
630
dst_stage | vk:: PipelineStageFlags :: BOTTOM_OF_PIPE ,
646
631
vk:: DependencyFlags :: empty ( ) ,
647
- & [ vk:: MemoryBarrier :: builder ( )
632
+ & [ vk:: MemoryBarrier :: default ( )
648
633
. src_access_mask ( src_access)
649
- . dst_access_mask ( dst_access)
650
- . build ( ) ] ,
634
+ . dst_access_mask ( dst_access) ] ,
651
635
& [ ] ,
652
636
& [ ] ,
653
637
)
@@ -749,17 +733,13 @@ impl crate::CommandEncoder for super::CommandEncoder {
749
733
. make_framebuffer ( fb_key, raw_pass, desc. label )
750
734
. unwrap ( ) ;
751
735
752
- let mut vk_info = vk:: RenderPassBeginInfo :: builder ( )
736
+ let mut vk_info = vk:: RenderPassBeginInfo :: default ( )
753
737
. render_pass ( raw_pass)
754
738
. render_area ( render_area)
755
739
. clear_values ( & vk_clear_values)
756
740
. framebuffer ( raw_framebuffer) ;
757
741
let mut vk_attachment_info = if caps. imageless_framebuffers {
758
- Some (
759
- vk:: RenderPassAttachmentBeginInfo :: builder ( )
760
- . attachments ( & vk_image_views)
761
- . build ( ) ,
762
- )
742
+ Some ( vk:: RenderPassAttachmentBeginInfo :: default ( ) . attachments ( & vk_image_views) )
763
743
} else {
764
744
None
765
745
} ;
@@ -854,21 +834,21 @@ impl crate::CommandEncoder for super::CommandEncoder {
854
834
}
855
835
856
836
unsafe fn insert_debug_marker ( & mut self , label : & str ) {
857
- if let Some ( ext) = self . device . debug_messenger ( ) {
837
+ if let Some ( ext) = self . device . extension_fns . debug_utils . as_ref ( ) {
858
838
let cstr = self . temp . make_c_str ( label) ;
859
- let vk_label = vk:: DebugUtilsLabelEXT :: builder ( ) . label_name ( cstr) . build ( ) ;
839
+ let vk_label = vk:: DebugUtilsLabelEXT :: default ( ) . label_name ( cstr) ;
860
840
unsafe { ext. cmd_insert_debug_utils_label ( self . active , & vk_label) } ;
861
841
}
862
842
}
863
843
unsafe fn begin_debug_marker ( & mut self , group_label : & str ) {
864
- if let Some ( ext) = self . device . debug_messenger ( ) {
844
+ if let Some ( ext) = self . device . extension_fns . debug_utils . as_ref ( ) {
865
845
let cstr = self . temp . make_c_str ( group_label) ;
866
- let vk_label = vk:: DebugUtilsLabelEXT :: builder ( ) . label_name ( cstr) . build ( ) ;
846
+ let vk_label = vk:: DebugUtilsLabelEXT :: default ( ) . label_name ( cstr) ;
867
847
unsafe { ext. cmd_begin_debug_utils_label ( self . active , & vk_label) } ;
868
848
}
869
849
}
870
850
unsafe fn end_debug_marker ( & mut self ) {
871
- if let Some ( ext) = self . device . debug_messenger ( ) {
851
+ if let Some ( ext) = self . device . extension_fns . debug_utils . as_ref ( ) {
872
852
unsafe { ext. cmd_end_debug_utils_label ( self . active ) } ;
873
853
}
874
854
}
0 commit comments