@@ -65,7 +65,8 @@ use vulkano::buffer::{
6565} ;
6666use vulkano:: descriptor:: descriptor_set:: {
6767 FixedSizeDescriptorSetsPool ,
68- FixedSizeDescriptorSet
68+ FixedSizeDescriptorSet ,
69+ PersistentDescriptorSetBuf
6970} ;
7071
7172use image:: GenericImageView ;
@@ -77,7 +78,7 @@ const VALIDATION_LAYERS: &[&str] = &[
7778 "VK_LAYER_LUNARG_standard_validation"
7879] ;
7980
80- const TEXTURE_PATH : & ' static str = "src/bin/23_statue.jpg" ;
81+ const TEXTURE_PATH : & str = "src/bin/23_statue.jpg" ;
8182
8283/// Required device extensions
8384fn device_extensions ( ) -> DeviceExtensions {
@@ -118,6 +119,7 @@ impl Vertex {
118119}
119120impl_vertex ! ( Vertex , pos, color) ;
120121
122+ #[ allow( dead_code) ]
121123#[ derive( Copy , Clone ) ]
122124struct UniformBufferObject {
123125 model : glm:: Mat4 ,
@@ -138,6 +140,8 @@ fn indices() -> [u16; 6] {
138140 [ 0 , 1 , 2 , 2 , 3 , 0 ]
139141}
140142
143+ type DescriptorSetResources = ( ( ) , PersistentDescriptorSetBuf < Arc < CpuAccessibleBuffer < UniformBufferObject > > > ) ;
144+
141145struct HelloTriangleApplication {
142146 instance : Arc < Instance > ,
143147 #[ allow( unused) ]
@@ -160,13 +164,14 @@ struct HelloTriangleApplication {
160164
161165 swap_chain_framebuffers : Vec < Arc < FramebufferAbstract + Send + Sync > > ,
162166
167+ #[ allow( dead_code) ]
163168 texture_image : Arc < ImmutableImage < Format > > ,
164169
165170 vertex_buffer : Arc < BufferAccess + Send + Sync > ,
166171 index_buffer : Arc < TypedBufferAccess < Content =[ u16 ] > + Send + Sync > ,
167172 uniform_buffers : Vec < Arc < CpuAccessibleBuffer < UniformBufferObject > > > ,
168173
169- descriptor_sets : Vec < Arc < FixedSizeDescriptorSet < Arc < GraphicsPipelineAbstract + Send + Sync > , ( ( ) , vulkano :: descriptor :: descriptor_set :: PersistentDescriptorSetBuf < std :: sync :: Arc < vulkano :: buffer :: CpuAccessibleBuffer < UniformBufferObject > > > ) > > > ,
174+ descriptor_sets : Vec < Arc < FixedSizeDescriptorSet < Arc < GraphicsPipelineAbstract + Send + Sync > , DescriptorSetResources > > > ,
170175
171176 command_buffers : Vec < Arc < AutoCommandBuffer > > ,
172177
@@ -268,7 +273,7 @@ impl HelloTriangleApplication {
268273 let required_extensions = Self :: get_required_extensions ( ) ;
269274
270275 if ENABLE_VALIDATION_LAYERS && Self :: check_validation_layer_support ( ) {
271- Instance :: new ( Some ( & app_info) , & required_extensions, VALIDATION_LAYERS . iter ( ) . map ( |s| * s ) )
276+ Instance :: new ( Some ( & app_info) , & required_extensions, VALIDATION_LAYERS . iter ( ) . cloned ( ) )
272277 . expect ( "failed to create Vulkan instance" )
273278 } else {
274279 Instance :: new ( Some ( & app_info) , & required_extensions, None )
@@ -494,7 +499,7 @@ impl HelloTriangleApplication {
494499 }
495500
496501 fn create_framebuffers (
497- swap_chain_images : & Vec < Arc < SwapchainImage < Window > > > ,
502+ swap_chain_images : & [ Arc < SwapchainImage < Window > > ] ,
498503 render_pass : & Arc < RenderPassAbstract + Send + Sync >
499504 ) -> Vec < Arc < FramebufferAbstract + Send + Sync > > {
500505 swap_chain_images. iter ( )
@@ -524,7 +529,7 @@ impl HelloTriangleApplication {
524529
525530 future. flush ( ) . unwrap ( ) ;
526531
527- return image_view;
532+ image_view
528533 }
529534
530535 fn create_vertex_buffer ( graphics_queue : & Arc < Queue > ) -> Arc < BufferAccess + Send + Sync > {
@@ -580,10 +585,11 @@ impl HelloTriangleApplication {
580585 )
581586 }
582587
588+
583589 fn create_descriptor_sets (
584590 pool : & Arc < Mutex < FixedSizeDescriptorSetsPool < Arc < GraphicsPipelineAbstract + Send + Sync > > > > ,
585- uniform_buffers : & Vec < Arc < CpuAccessibleBuffer < UniformBufferObject > > > ,
586- ) -> Vec < Arc < FixedSizeDescriptorSet < Arc < GraphicsPipelineAbstract + Send + Sync > , ( ( ) , vulkano :: descriptor :: descriptor_set :: PersistentDescriptorSetBuf < std :: sync :: Arc < vulkano :: buffer :: CpuAccessibleBuffer < UniformBufferObject > > > ) > > >
591+ uniform_buffers : & [ Arc < CpuAccessibleBuffer < UniformBufferObject > > ] ,
592+ ) -> Vec < Arc < FixedSizeDescriptorSet < Arc < GraphicsPipelineAbstract + Send + Sync > , DescriptorSetResources > > >
587593 {
588594 uniform_buffers
589595 . iter ( )
@@ -705,9 +711,8 @@ impl HelloTriangleApplication {
705711
706712 let mut done = false ;
707713 self . events_loop . poll_events ( |ev| {
708- match ev {
709- Event :: WindowEvent { event : WindowEvent :: CloseRequested , .. } => done = true ,
710- _ => ( )
714+ if let Event :: WindowEvent { event : WindowEvent :: CloseRequested , .. } = ev {
715+ done = true
711716 }
712717 } ) ;
713718 if done {
@@ -761,7 +766,7 @@ impl HelloTriangleApplication {
761766
762767 fn update_uniform_buffer ( start_time : Instant , dimensions : [ f32 ; 2 ] ) -> UniformBufferObject {
763768 let duration = Instant :: now ( ) . duration_since ( start_time) ;
764- let elapsed = ( duration. as_secs ( ) * 1000 ) + duration. subsec_millis ( ) as u64 ;
769+ let elapsed = ( duration. as_secs ( ) * 1000 ) + u64 :: from ( duration. subsec_millis ( ) ) ;
765770
766771 let identity_matrix = glm:: mat4 (
767772 1.0 , 0.0 , 0.0 , 0.0 ,
0 commit comments