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
@@ -40,8 +40,10 @@ impl super::Texture {
40
40
}
41
41
42
42
impl super :: DeviceShared {
43
- fn debug_messenger ( & self ) -> Option < & ext:: DebugUtils > {
44
- Some ( & self . instance . debug_utils . as_ref ( ) ?. extension )
43
+ /// Returns loaded [`ext::debug_utils`] for the device
44
+ // TODO: Inline this now-shorter function?
45
+ fn debug_utils_device ( & self ) -> Option < & ext:: debug_utils:: Device > {
46
+ self . extension_fns . debug_utils . as_ref ( )
45
47
}
46
48
}
47
49
@@ -65,31 +67,23 @@ impl crate::CommandEncoder for super::CommandEncoder {
65
67
66
68
unsafe fn begin_encoding ( & mut self , label : crate :: Label ) -> Result < ( ) , crate :: DeviceError > {
67
69
if self . free . is_empty ( ) {
68
- let vk_info = vk:: CommandBufferAllocateInfo :: builder ( )
70
+ let vk_info = vk:: CommandBufferAllocateInfo :: default ( )
69
71
. command_pool ( self . raw )
70
- . command_buffer_count ( ALLOCATION_GRANULARITY )
71
- . build ( ) ;
72
+ . command_buffer_count ( ALLOCATION_GRANULARITY ) ;
72
73
let cmd_buf_vec = unsafe { self . device . raw . allocate_command_buffers ( & vk_info) ? } ;
73
74
self . free . extend ( cmd_buf_vec) ;
74
75
}
75
76
let raw = self . free . pop ( ) . unwrap ( ) ;
76
77
77
78
// Set the name unconditionally, since there might be a
78
79
// 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
- } ;
80
+ unsafe { self . device . set_object_name ( raw, label. unwrap_or_default ( ) ) } ;
86
81
87
82
// Reset this in case the last renderpass was never ended.
88
83
self . rpass_debug_marker_active = false ;
89
84
90
- let vk_info = vk:: CommandBufferBeginInfo :: builder ( )
91
- . flags ( vk:: CommandBufferUsageFlags :: ONE_TIME_SUBMIT )
92
- . build ( ) ;
85
+ let vk_info = vk:: CommandBufferBeginInfo :: default ( )
86
+ . flags ( vk:: CommandBufferUsageFlags :: ONE_TIME_SUBMIT ) ;
93
87
unsafe { self . device . raw . begin_command_buffer ( raw, & vk_info) } ?;
94
88
self . active = raw;
95
89
@@ -140,12 +134,11 @@ impl crate::CommandEncoder for super::CommandEncoder {
140
134
dst_stages |= dst_stage;
141
135
142
136
vk_barriers. push (
143
- vk:: BufferMemoryBarrier :: builder ( )
137
+ vk:: BufferMemoryBarrier :: default ( )
144
138
. buffer ( bar. buffer . raw )
145
139
. size ( vk:: WHOLE_SIZE )
146
140
. src_access_mask ( src_access)
147
- . dst_access_mask ( dst_access)
148
- . build ( ) ,
141
+ . dst_access_mask ( dst_access) ,
149
142
)
150
143
}
151
144
@@ -187,14 +180,13 @@ impl crate::CommandEncoder for super::CommandEncoder {
187
180
dst_stages |= dst_stage;
188
181
189
182
vk_barriers. push (
190
- vk:: ImageMemoryBarrier :: builder ( )
183
+ vk:: ImageMemoryBarrier :: default ( )
191
184
. image ( bar. texture . raw )
192
185
. subresource_range ( range)
193
186
. src_access_mask ( src_access)
194
187
. dst_access_mask ( dst_access)
195
188
. old_layout ( src_layout)
196
- . new_layout ( dst_layout)
197
- . build ( ) ,
189
+ . new_layout ( dst_layout) ,
198
190
) ;
199
191
}
200
192
@@ -437,7 +429,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
437
429
Some ( buffer) => ray_tracing_functions
438
430
. buffer_device_address
439
431
. get_buffer_device_address (
440
- & vk:: BufferDeviceAddressInfo :: builder ( ) . buffer ( buffer. raw ) ,
432
+ & vk:: BufferDeviceAddressInfo :: default ( ) . buffer ( buffer. raw ) ,
441
433
) ,
442
434
None => panic ! ( "Buffers are required to build acceleration structures" ) ,
443
435
}
@@ -464,23 +456,24 @@ impl crate::CommandEncoder for super::CommandEncoder {
464
456
for desc in descriptors {
465
457
let ( geometries, ranges) = match * desc. entries {
466
458
crate :: AccelerationStructureEntries :: Instances ( ref instances) => {
467
- let instance_data = vk:: AccelerationStructureGeometryInstancesDataKHR :: builder (
459
+ let instance_data = vk:: AccelerationStructureGeometryInstancesDataKHR :: default (
460
+ // TODO: Code is so large that rustfmt refuses to treat this... :(
468
461
)
469
462
. data ( vk:: DeviceOrHostAddressConstKHR {
470
463
device_address : get_device_address ( instances. buffer ) ,
471
464
} ) ;
472
465
473
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
466
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
474
467
. geometry_type ( vk:: GeometryTypeKHR :: INSTANCES )
475
468
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
476
- instances : * instance_data,
469
+ instances : instance_data,
477
470
} ) ;
478
471
479
- let range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( )
472
+ let range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( )
480
473
. primitive_count ( instances. count )
481
474
. primitive_offset ( instances. offset ) ;
482
475
483
- ( smallvec:: smallvec![ * geometry] , smallvec:: smallvec![ * range] )
476
+ ( smallvec:: smallvec![ geometry] , smallvec:: smallvec![ range] )
484
477
}
485
478
crate :: AccelerationStructureEntries :: Triangles ( ref in_geometries) => {
486
479
let mut ranges = smallvec:: SmallVec :: <
@@ -491,15 +484,15 @@ impl crate::CommandEncoder for super::CommandEncoder {
491
484
> :: with_capacity ( in_geometries. len ( ) ) ;
492
485
for triangles in in_geometries {
493
486
let mut triangle_data =
494
- vk:: AccelerationStructureGeometryTrianglesDataKHR :: builder ( )
487
+ vk:: AccelerationStructureGeometryTrianglesDataKHR :: default ( )
495
488
. vertex_data ( vk:: DeviceOrHostAddressConstKHR {
496
489
device_address : get_device_address ( triangles. vertex_buffer ) ,
497
490
} )
498
491
. vertex_format ( conv:: map_vertex_format ( triangles. vertex_format ) )
499
492
. max_vertex ( triangles. vertex_count )
500
493
. vertex_stride ( triangles. vertex_stride ) ;
501
494
502
- let mut range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( ) ;
495
+ let mut range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( ) ;
503
496
504
497
if let Some ( ref indices) = triangles. indices {
505
498
triangle_data = triangle_data
@@ -523,7 +516,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
523
516
ray_tracing_functions
524
517
. buffer_device_address
525
518
. get_buffer_device_address (
526
- & vk:: BufferDeviceAddressInfo :: builder ( )
519
+ & vk:: BufferDeviceAddressInfo :: default ( )
527
520
. buffer ( transform. buffer . raw ) ,
528
521
)
529
522
} ;
@@ -535,17 +528,17 @@ impl crate::CommandEncoder for super::CommandEncoder {
535
528
range = range. transform_offset ( transform. offset ) ;
536
529
}
537
530
538
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
531
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
539
532
. geometry_type ( vk:: GeometryTypeKHR :: TRIANGLES )
540
533
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
541
- triangles : * triangle_data,
534
+ triangles : triangle_data,
542
535
} )
543
536
. flags ( conv:: map_acceleration_structure_geometry_flags (
544
537
triangles. flags ,
545
538
) ) ;
546
539
547
- geometries. push ( * geometry) ;
548
- ranges. push ( * range) ;
540
+ geometries. push ( geometry) ;
541
+ ranges. push ( range) ;
549
542
}
550
543
( geometries, ranges)
551
544
}
@@ -557,25 +550,25 @@ impl crate::CommandEncoder for super::CommandEncoder {
557
550
[ vk:: AccelerationStructureGeometryKHR ; CAPACITY_INNER ] ,
558
551
> :: with_capacity ( in_geometries. len ( ) ) ;
559
552
for aabb in in_geometries {
560
- let aabbs_data = vk:: AccelerationStructureGeometryAabbsDataKHR :: builder ( )
553
+ let aabbs_data = vk:: AccelerationStructureGeometryAabbsDataKHR :: default ( )
561
554
. data ( vk:: DeviceOrHostAddressConstKHR {
562
555
device_address : get_device_address ( aabb. buffer ) ,
563
556
} )
564
557
. stride ( aabb. stride ) ;
565
558
566
- let range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( )
559
+ let range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( )
567
560
. primitive_count ( aabb. count )
568
561
. primitive_offset ( aabb. offset ) ;
569
562
570
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
563
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
571
564
. geometry_type ( vk:: GeometryTypeKHR :: AABBS )
572
565
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
573
- aabbs : * aabbs_data,
566
+ aabbs : aabbs_data,
574
567
} )
575
568
. flags ( conv:: map_acceleration_structure_geometry_flags ( aabb. flags ) ) ;
576
569
577
- geometries. push ( * geometry) ;
578
- ranges. push ( * range) ;
570
+ geometries. push ( geometry) ;
571
+ ranges. push ( range) ;
579
572
}
580
573
( geometries, ranges)
581
574
}
@@ -588,7 +581,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
588
581
ray_tracing_functions
589
582
. buffer_device_address
590
583
. get_buffer_device_address (
591
- & vk:: BufferDeviceAddressInfo :: builder ( ) . buffer ( desc. scratch_buffer . raw ) ,
584
+ & vk:: BufferDeviceAddressInfo :: default ( ) . buffer ( desc. scratch_buffer . raw ) ,
592
585
)
593
586
} ;
594
587
let ty = match * desc. entries {
@@ -597,7 +590,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
597
590
}
598
591
_ => vk:: AccelerationStructureTypeKHR :: BOTTOM_LEVEL ,
599
592
} ;
600
- let mut geometry_info = vk:: AccelerationStructureBuildGeometryInfoKHR :: builder ( )
593
+ let mut geometry_info = vk:: AccelerationStructureBuildGeometryInfoKHR :: default ( )
601
594
. ty ( ty)
602
595
. mode ( conv:: map_acceleration_structure_build_mode ( desc. mode ) )
603
596
. flags ( conv:: map_acceleration_structure_flags ( desc. flags ) )
@@ -613,7 +606,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
613
606
. raw ;
614
607
}
615
608
616
- geometry_infos. push ( * geometry_info) ;
609
+ geometry_infos. push ( geometry_info) ;
617
610
}
618
611
619
612
for ( i, geometry_info) in geometry_infos. iter_mut ( ) . enumerate ( ) {
@@ -644,10 +637,9 @@ impl crate::CommandEncoder for super::CommandEncoder {
644
637
src_stage | vk:: PipelineStageFlags :: TOP_OF_PIPE ,
645
638
dst_stage | vk:: PipelineStageFlags :: BOTTOM_OF_PIPE ,
646
639
vk:: DependencyFlags :: empty ( ) ,
647
- & [ vk:: MemoryBarrier :: builder ( )
640
+ & [ vk:: MemoryBarrier :: default ( )
648
641
. src_access_mask ( src_access)
649
- . dst_access_mask ( dst_access)
650
- . build ( ) ] ,
642
+ . dst_access_mask ( dst_access) ] ,
651
643
& [ ] ,
652
644
& [ ] ,
653
645
)
@@ -749,17 +741,13 @@ impl crate::CommandEncoder for super::CommandEncoder {
749
741
. make_framebuffer ( fb_key, raw_pass, desc. label )
750
742
. unwrap ( ) ;
751
743
752
- let mut vk_info = vk:: RenderPassBeginInfo :: builder ( )
744
+ let mut vk_info = vk:: RenderPassBeginInfo :: default ( )
753
745
. render_pass ( raw_pass)
754
746
. render_area ( render_area)
755
747
. clear_values ( & vk_clear_values)
756
748
. framebuffer ( raw_framebuffer) ;
757
749
let mut vk_attachment_info = if caps. imageless_framebuffers {
758
- Some (
759
- vk:: RenderPassAttachmentBeginInfo :: builder ( )
760
- . attachments ( & vk_image_views)
761
- . build ( ) ,
762
- )
750
+ Some ( vk:: RenderPassAttachmentBeginInfo :: default ( ) . attachments ( & vk_image_views) )
763
751
} else {
764
752
None
765
753
} ;
@@ -854,21 +842,21 @@ impl crate::CommandEncoder for super::CommandEncoder {
854
842
}
855
843
856
844
unsafe fn insert_debug_marker ( & mut self , label : & str ) {
857
- if let Some ( ext) = self . device . debug_messenger ( ) {
845
+ if let Some ( ext) = self . device . debug_utils_device ( ) {
858
846
let cstr = self . temp . make_c_str ( label) ;
859
- let vk_label = vk:: DebugUtilsLabelEXT :: builder ( ) . label_name ( cstr) . build ( ) ;
847
+ let vk_label = vk:: DebugUtilsLabelEXT :: default ( ) . label_name ( cstr) ;
860
848
unsafe { ext. cmd_insert_debug_utils_label ( self . active , & vk_label) } ;
861
849
}
862
850
}
863
851
unsafe fn begin_debug_marker ( & mut self , group_label : & str ) {
864
- if let Some ( ext) = self . device . debug_messenger ( ) {
852
+ if let Some ( ext) = self . device . debug_utils_device ( ) {
865
853
let cstr = self . temp . make_c_str ( group_label) ;
866
- let vk_label = vk:: DebugUtilsLabelEXT :: builder ( ) . label_name ( cstr) . build ( ) ;
854
+ let vk_label = vk:: DebugUtilsLabelEXT :: default ( ) . label_name ( cstr) ;
867
855
unsafe { ext. cmd_begin_debug_utils_label ( self . active , & vk_label) } ;
868
856
}
869
857
}
870
858
unsafe fn end_debug_marker ( & mut self ) {
871
- if let Some ( ext) = self . device . debug_messenger ( ) {
859
+ if let Some ( ext) = self . device . debug_utils_device ( ) {
872
860
unsafe { ext. cmd_end_debug_utils_label ( self . active ) } ;
873
861
}
874
862
}
0 commit comments