@@ -58,14 +58,21 @@ impl Commands {
5858 } )
5959 }
6060
61+ pub fn flush_command_buffer ( & mut self ) -> Result < ( ) > {
62+ self . command_buffer . commit ( ) ;
63+ let command_buffer = self . command_queue . new_command_buffer ( ) . to_owned ( ) ;
64+ self . command_buffer = command_buffer. clone ( ) ;
65+ self . command_buffer_index = 0 ;
66+
67+ Ok ( ( ) )
68+ }
69+
6170 pub fn command_buffer ( & mut self ) -> Result < ( bool , CommandBuffer ) > {
6271 let mut command_buffer = self . command_buffer . to_owned ( ) ;
6372 let mut flushed = false ;
6473 if self . command_buffer_index > self . compute_per_buffer {
65- self . command_buffer . commit ( ) ;
66- command_buffer = self . command_queue . new_command_buffer ( ) . to_owned ( ) ;
67- self . command_buffer = command_buffer. clone ( ) ;
68- self . command_buffer_index = 0 ;
74+ self . flush_command_buffer ( ) ?;
75+ command_buffer = self . command_buffer . to_owned ( ) ;
6976 flushed = true ;
7077 }
7178 self . command_buffer_index += 1 ;
@@ -181,6 +188,13 @@ impl MetalDevice {
181188 Ok ( ( ) )
182189 }
183190
191+ pub fn flush_command_buffer ( & self ) -> Result < ( ) > {
192+ let mut commands = self . commands . write ( ) . map_err ( MetalError :: from) ?;
193+ commands. flush_command_buffer ( ) ?;
194+
195+ Ok ( ( ) )
196+ }
197+
184198 pub fn command_buffer ( & self ) -> Result < CommandBuffer > {
185199 let mut commands = self . commands . write ( ) . map_err ( MetalError :: from) ?;
186200 let ( flushed, command_buffer) = commands. command_buffer ( ) ?;
@@ -190,6 +204,11 @@ impl MetalDevice {
190204 Ok ( command_buffer)
191205 }
192206
207+ pub fn new_command_buffer ( & self ) -> Result < CommandBuffer > {
208+ let commands = self . commands . write ( ) . map_err ( MetalError :: from) ?;
209+ Ok ( commands. command_queue . new_command_buffer ( ) . to_owned ( ) )
210+ }
211+
193212 pub fn wait_until_completed ( & self ) -> Result < ( ) > {
194213 let mut commands = self . commands . write ( ) . map_err ( MetalError :: from) ?;
195214 commands. wait_until_completed ( )
0 commit comments