1
1
use super :: conv;
2
2
3
3
use arrayvec:: ArrayVec ;
4
- use ash:: { extensions :: ext , vk } ;
4
+ use ash:: 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
@@ -145,12 +131,11 @@ impl crate::CommandEncoder for super::CommandEncoder {
145
131
dst_stages |= dst_stage;
146
132
147
133
vk_barriers. push (
148
- vk:: BufferMemoryBarrier :: builder ( )
134
+ vk:: BufferMemoryBarrier :: default ( )
149
135
. buffer ( bar. buffer . raw )
150
136
. size ( vk:: WHOLE_SIZE )
151
137
. src_access_mask ( src_access)
152
- . dst_access_mask ( dst_access)
153
- . build ( ) ,
138
+ . dst_access_mask ( dst_access) ,
154
139
)
155
140
}
156
141
@@ -192,14 +177,13 @@ impl crate::CommandEncoder for super::CommandEncoder {
192
177
dst_stages |= dst_stage;
193
178
194
179
vk_barriers. push (
195
- vk:: ImageMemoryBarrier :: builder ( )
180
+ vk:: ImageMemoryBarrier :: default ( )
196
181
. image ( bar. texture . raw )
197
182
. subresource_range ( range)
198
183
. src_access_mask ( src_access)
199
184
. dst_access_mask ( dst_access)
200
185
. old_layout ( src_layout)
201
- . new_layout ( dst_layout)
202
- . build ( ) ,
186
+ . new_layout ( dst_layout) ,
203
187
) ;
204
188
}
205
189
@@ -442,7 +426,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
442
426
Some ( buffer) => ray_tracing_functions
443
427
. buffer_device_address
444
428
. get_buffer_device_address (
445
- & vk:: BufferDeviceAddressInfo :: builder ( ) . buffer ( buffer. raw ) ,
429
+ & vk:: BufferDeviceAddressInfo :: default ( ) . buffer ( buffer. raw ) ,
446
430
) ,
447
431
None => panic ! ( "Buffers are required to build acceleration structures" ) ,
448
432
}
@@ -469,23 +453,24 @@ impl crate::CommandEncoder for super::CommandEncoder {
469
453
for desc in descriptors {
470
454
let ( geometries, ranges) = match * desc. entries {
471
455
crate :: AccelerationStructureEntries :: Instances ( ref instances) => {
472
- let instance_data = vk:: AccelerationStructureGeometryInstancesDataKHR :: builder (
456
+ let instance_data = vk:: AccelerationStructureGeometryInstancesDataKHR :: default (
457
+ // TODO: Code is so large that rustfmt refuses to treat this... :(
473
458
)
474
459
. data ( vk:: DeviceOrHostAddressConstKHR {
475
460
device_address : get_device_address ( instances. buffer ) ,
476
461
} ) ;
477
462
478
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
463
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
479
464
. geometry_type ( vk:: GeometryTypeKHR :: INSTANCES )
480
465
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
481
- instances : * instance_data,
466
+ instances : instance_data,
482
467
} ) ;
483
468
484
- let range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( )
469
+ let range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( )
485
470
. primitive_count ( instances. count )
486
471
. primitive_offset ( instances. offset ) ;
487
472
488
- ( smallvec:: smallvec![ * geometry] , smallvec:: smallvec![ * range] )
473
+ ( smallvec:: smallvec![ geometry] , smallvec:: smallvec![ range] )
489
474
}
490
475
crate :: AccelerationStructureEntries :: Triangles ( ref in_geometries) => {
491
476
let mut ranges = smallvec:: SmallVec :: <
@@ -496,15 +481,15 @@ impl crate::CommandEncoder for super::CommandEncoder {
496
481
> :: with_capacity ( in_geometries. len ( ) ) ;
497
482
for triangles in in_geometries {
498
483
let mut triangle_data =
499
- vk:: AccelerationStructureGeometryTrianglesDataKHR :: builder ( )
484
+ vk:: AccelerationStructureGeometryTrianglesDataKHR :: default ( )
500
485
. vertex_data ( vk:: DeviceOrHostAddressConstKHR {
501
486
device_address : get_device_address ( triangles. vertex_buffer ) ,
502
487
} )
503
488
. vertex_format ( conv:: map_vertex_format ( triangles. vertex_format ) )
504
489
. max_vertex ( triangles. vertex_count )
505
490
. vertex_stride ( triangles. vertex_stride ) ;
506
491
507
- let mut range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( ) ;
492
+ let mut range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( ) ;
508
493
509
494
if let Some ( ref indices) = triangles. indices {
510
495
triangle_data = triangle_data
@@ -528,7 +513,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
528
513
ray_tracing_functions
529
514
. buffer_device_address
530
515
. get_buffer_device_address (
531
- & vk:: BufferDeviceAddressInfo :: builder ( )
516
+ & vk:: BufferDeviceAddressInfo :: default ( )
532
517
. buffer ( transform. buffer . raw ) ,
533
518
)
534
519
} ;
@@ -540,17 +525,17 @@ impl crate::CommandEncoder for super::CommandEncoder {
540
525
range = range. transform_offset ( transform. offset ) ;
541
526
}
542
527
543
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
528
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
544
529
. geometry_type ( vk:: GeometryTypeKHR :: TRIANGLES )
545
530
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
546
- triangles : * triangle_data,
531
+ triangles : triangle_data,
547
532
} )
548
533
. flags ( conv:: map_acceleration_structure_geometry_flags (
549
534
triangles. flags ,
550
535
) ) ;
551
536
552
- geometries. push ( * geometry) ;
553
- ranges. push ( * range) ;
537
+ geometries. push ( geometry) ;
538
+ ranges. push ( range) ;
554
539
}
555
540
( geometries, ranges)
556
541
}
@@ -562,25 +547,25 @@ impl crate::CommandEncoder for super::CommandEncoder {
562
547
[ vk:: AccelerationStructureGeometryKHR ; CAPACITY_INNER ] ,
563
548
> :: with_capacity ( in_geometries. len ( ) ) ;
564
549
for aabb in in_geometries {
565
- let aabbs_data = vk:: AccelerationStructureGeometryAabbsDataKHR :: builder ( )
550
+ let aabbs_data = vk:: AccelerationStructureGeometryAabbsDataKHR :: default ( )
566
551
. data ( vk:: DeviceOrHostAddressConstKHR {
567
552
device_address : get_device_address ( aabb. buffer ) ,
568
553
} )
569
554
. stride ( aabb. stride ) ;
570
555
571
- let range = vk:: AccelerationStructureBuildRangeInfoKHR :: builder ( )
556
+ let range = vk:: AccelerationStructureBuildRangeInfoKHR :: default ( )
572
557
. primitive_count ( aabb. count )
573
558
. primitive_offset ( aabb. offset ) ;
574
559
575
- let geometry = vk:: AccelerationStructureGeometryKHR :: builder ( )
560
+ let geometry = vk:: AccelerationStructureGeometryKHR :: default ( )
576
561
. geometry_type ( vk:: GeometryTypeKHR :: AABBS )
577
562
. geometry ( vk:: AccelerationStructureGeometryDataKHR {
578
- aabbs : * aabbs_data,
563
+ aabbs : aabbs_data,
579
564
} )
580
565
. flags ( conv:: map_acceleration_structure_geometry_flags ( aabb. flags ) ) ;
581
566
582
- geometries. push ( * geometry) ;
583
- ranges. push ( * range) ;
567
+ geometries. push ( geometry) ;
568
+ ranges. push ( range) ;
584
569
}
585
570
( geometries, ranges)
586
571
}
@@ -593,7 +578,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
593
578
ray_tracing_functions
594
579
. buffer_device_address
595
580
. get_buffer_device_address (
596
- & vk:: BufferDeviceAddressInfo :: builder ( ) . buffer ( desc. scratch_buffer . raw ) ,
581
+ & vk:: BufferDeviceAddressInfo :: default ( ) . buffer ( desc. scratch_buffer . raw ) ,
597
582
)
598
583
} ;
599
584
let ty = match * desc. entries {
@@ -602,7 +587,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
602
587
}
603
588
_ => vk:: AccelerationStructureTypeKHR :: BOTTOM_LEVEL ,
604
589
} ;
605
- let mut geometry_info = vk:: AccelerationStructureBuildGeometryInfoKHR :: builder ( )
590
+ let mut geometry_info = vk:: AccelerationStructureBuildGeometryInfoKHR :: default ( )
606
591
. ty ( ty)
607
592
. mode ( conv:: map_acceleration_structure_build_mode ( desc. mode ) )
608
593
. flags ( conv:: map_acceleration_structure_flags ( desc. flags ) )
@@ -618,7 +603,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
618
603
. raw ;
619
604
}
620
605
621
- geometry_infos. push ( * geometry_info) ;
606
+ geometry_infos. push ( geometry_info) ;
622
607
}
623
608
624
609
for ( i, geometry_info) in geometry_infos. iter_mut ( ) . enumerate ( ) {
@@ -649,10 +634,9 @@ impl crate::CommandEncoder for super::CommandEncoder {
649
634
src_stage | vk:: PipelineStageFlags :: TOP_OF_PIPE ,
650
635
dst_stage | vk:: PipelineStageFlags :: BOTTOM_OF_PIPE ,
651
636
vk:: DependencyFlags :: empty ( ) ,
652
- & [ vk:: MemoryBarrier :: builder ( )
637
+ & [ vk:: MemoryBarrier :: default ( )
653
638
. src_access_mask ( src_access)
654
- . dst_access_mask ( dst_access)
655
- . build ( ) ] ,
639
+ . dst_access_mask ( dst_access) ] ,
656
640
& [ ] ,
657
641
& [ ] ,
658
642
)
@@ -754,17 +738,13 @@ impl crate::CommandEncoder for super::CommandEncoder {
754
738
. make_framebuffer ( fb_key, raw_pass, desc. label )
755
739
. unwrap ( ) ;
756
740
757
- let mut vk_info = vk:: RenderPassBeginInfo :: builder ( )
741
+ let mut vk_info = vk:: RenderPassBeginInfo :: default ( )
758
742
. render_pass ( raw_pass)
759
743
. render_area ( render_area)
760
744
. clear_values ( & vk_clear_values)
761
745
. framebuffer ( raw_framebuffer) ;
762
746
let mut vk_attachment_info = if caps. imageless_framebuffers {
763
- Some (
764
- vk:: RenderPassAttachmentBeginInfo :: builder ( )
765
- . attachments ( & vk_image_views)
766
- . build ( ) ,
767
- )
747
+ Some ( vk:: RenderPassAttachmentBeginInfo :: default ( ) . attachments ( & vk_image_views) )
768
748
} else {
769
749
None
770
750
} ;
@@ -859,21 +839,21 @@ impl crate::CommandEncoder for super::CommandEncoder {
859
839
}
860
840
861
841
unsafe fn insert_debug_marker ( & mut self , label : & str ) {
862
- if let Some ( ext) = self . device . debug_messenger ( ) {
842
+ if let Some ( ext) = self . device . extension_fns . debug_utils . as_ref ( ) {
863
843
let cstr = self . temp . make_c_str ( label) ;
864
- let vk_label = vk:: DebugUtilsLabelEXT :: builder ( ) . label_name ( cstr) . build ( ) ;
844
+ let vk_label = vk:: DebugUtilsLabelEXT :: default ( ) . label_name ( cstr) ;
865
845
unsafe { ext. cmd_insert_debug_utils_label ( self . active , & vk_label) } ;
866
846
}
867
847
}
868
848
unsafe fn begin_debug_marker ( & mut self , group_label : & str ) {
869
- if let Some ( ext) = self . device . debug_messenger ( ) {
849
+ if let Some ( ext) = self . device . extension_fns . debug_utils . as_ref ( ) {
870
850
let cstr = self . temp . make_c_str ( group_label) ;
871
- let vk_label = vk:: DebugUtilsLabelEXT :: builder ( ) . label_name ( cstr) . build ( ) ;
851
+ let vk_label = vk:: DebugUtilsLabelEXT :: default ( ) . label_name ( cstr) ;
872
852
unsafe { ext. cmd_begin_debug_utils_label ( self . active , & vk_label) } ;
873
853
}
874
854
}
875
855
unsafe fn end_debug_marker ( & mut self ) {
876
- if let Some ( ext) = self . device . debug_messenger ( ) {
856
+ if let Some ( ext) = self . device . extension_fns . debug_utils . as_ref ( ) {
877
857
unsafe { ext. cmd_end_debug_utils_label ( self . active ) } ;
878
858
}
879
859
}
0 commit comments