@@ -114,16 +114,16 @@ impl BufferItemCount for ImageSize {
114114 }
115115}
116116
117- impl < T , B : BufferItemCount , const U : u32 > GenericFlexBuffer < T , B , U > {
117+ impl < T , B : BufferItemCount + Copy , const U : u32 > GenericFlexBuffer < T , B , U > {
118118 fn new (
119119 device : & wgpu:: Device ,
120120 name : String ,
121121 item_count : B ,
122122 ) -> Result < Self , BufferSizeError > {
123+ Self :: check_size ( item_count) ?;
123124 let item_count = item_count. item_count ( ) ;
124125 let size = Self :: calculate_buffer_size ( item_count) ;
125126 let usage = wgpu:: BufferUsages :: from_bits ( U ) . unwrap ( ) ;
126- Self :: check_size ( usage, size) ?;
127127 let data = device. create_buffer ( & wgpu:: BufferDescriptor {
128128 label : Some ( name. as_str ( ) ) ,
129129 size,
@@ -155,10 +155,11 @@ impl<T, B: BufferItemCount, const U: u32> GenericFlexBuffer<T, B, U> {
155155 Self :: calculate_buffer_size ( self . item_count )
156156 }
157157
158- fn check_size (
159- usage : wgpu:: BufferUsages ,
160- size : u64 ,
161- ) -> Result < ( ) , BufferSizeError > {
158+ fn check_size ( item_count : B ) -> Result < ( ) , BufferSizeError > {
159+ let item_count = item_count. item_count ( ) ;
160+ let size = Self :: calculate_buffer_size ( item_count) ;
161+ let usage = wgpu:: BufferUsages :: from_bits ( U ) . unwrap ( ) ;
162+
162163 let buf_ty = if usage. contains ( wgpu:: BufferUsages :: STORAGE ) {
163164 BufferType :: Storage
164165 } else if usage. contains ( wgpu:: BufferUsages :: UNIFORM ) {
@@ -180,11 +181,11 @@ impl<T, B: BufferItemCount, const U: u32> GenericFlexBuffer<T, B, U> {
180181 device : & wgpu:: Device ,
181182 item_count : B ,
182183 ) -> Result < ( ) , BufferSizeError > {
184+ Self :: check_size ( item_count) ?;
183185 let item_count = item_count. item_count ( ) ;
184186 if item_count > self . item_capacity ( ) {
185187 let size = Self :: calculate_buffer_size ( item_count) ;
186188 let usage = self . data . usage ( ) ;
187- Self :: check_size ( usage, size) ?;
188189 self . data = device. create_buffer ( & wgpu:: BufferDescriptor {
189190 label : Some ( self . name . as_str ( ) ) ,
190191 size,
0 commit comments