@@ -692,27 +692,34 @@ impl Queue {
692692
693693 self . validate_write_buffer_impl ( & buffer, buffer_offset, staging_buffer. size ) ?;
694694
695- let region = hal:: BufferCopy {
696- src_offset : 0 ,
697- dst_offset : buffer_offset,
698- size : staging_buffer. size ,
699- } ;
700- let barriers = iter:: once ( hal:: BufferBarrier {
701- buffer : staging_buffer. raw ( ) ,
702- usage : hal:: StateTransition {
703- from : wgt:: BufferUses :: MAP_WRITE ,
704- to : wgt:: BufferUses :: COPY_SRC ,
705- } ,
706- } )
707- . chain ( transition. map ( |pending| pending. into_hal ( & buffer, snatch_guard) ) )
708- . collect :: < Vec < _ > > ( ) ;
709- let encoder = pending_writes. activate ( ) ;
710- unsafe {
711- encoder. transition_buffers ( & barriers) ;
712- encoder. copy_buffer_to_buffer ( staging_buffer. raw ( ) , dst_raw, & [ region] ) ;
713- }
695+ if buffer
696+ . usage
697+ . intersects ( wgt:: BufferUsages :: MAP_READ | wgt:: BufferUsages :: MAP_WRITE )
698+ {
699+ let asdf = buffer. raw ( & self . device . snatchable_lock . read ( ) ) . unwrap ( ) ;
700+ } else {
701+ let region = hal:: BufferCopy {
702+ src_offset : 0 ,
703+ dst_offset : buffer_offset,
704+ size : staging_buffer. size ,
705+ } ;
706+ let barriers = iter:: once ( hal:: BufferBarrier {
707+ buffer : staging_buffer. raw ( ) ,
708+ usage : hal:: StateTransition {
709+ from : wgt:: BufferUses :: MAP_WRITE ,
710+ to : wgt:: BufferUses :: COPY_SRC ,
711+ } ,
712+ } )
713+ . chain ( transition. map ( |pending| pending. into_hal ( & buffer, snatch_guard) ) )
714+ . collect :: < Vec < _ > > ( ) ;
715+ let encoder = pending_writes. activate ( ) ;
716+ unsafe {
717+ encoder. transition_buffers ( & barriers) ;
718+ encoder. copy_buffer_to_buffer ( staging_buffer. raw ( ) , dst_raw, & [ region] ) ;
719+ }
714720
715- pending_writes. insert_buffer ( & buffer) ;
721+ pending_writes. insert_buffer ( & buffer) ;
722+ }
716723
717724 // Ensure the overwritten bytes are marked as initialized so
718725 // they don't need to be nulled prior to mapping or binding.
0 commit comments