@@ -2021,69 +2021,9 @@ impl Global {
20212021
20222022 let buffer = hub. buffers . get ( buffer_id) . get ( ) ?;
20232023
2024- {
2025- let snatch_guard = buffer. device . snatchable_lock . read ( ) ;
2026- buffer. check_destroyed ( & snatch_guard) ?;
2027- }
2028-
2029- let range_size = if let Some ( size) = size {
2030- size
2031- } else {
2032- buffer. size . saturating_sub ( offset)
2033- } ;
2034-
2035- if offset % wgt:: MAP_ALIGNMENT != 0 {
2036- return Err ( BufferAccessError :: UnalignedOffset { offset } ) ;
2037- }
2038- if range_size % wgt:: COPY_BUFFER_ALIGNMENT != 0 {
2039- return Err ( BufferAccessError :: UnalignedRangeSize { range_size } ) ;
2040- }
2041- let map_state = & * buffer. map_state . lock ( ) ;
2042- match * map_state {
2043- resource:: BufferMapState :: Init { ref staging_buffer } => {
2044- // offset (u64) can not be < 0, so no need to validate the lower bound
2045- if offset + range_size > buffer. size {
2046- return Err ( BufferAccessError :: OutOfBoundsOverrun {
2047- index : offset + range_size - 1 ,
2048- max : buffer. size ,
2049- } ) ;
2050- }
2051- let ptr = unsafe { staging_buffer. ptr ( ) } ;
2052- let ptr = unsafe { NonNull :: new_unchecked ( ptr. as_ptr ( ) . offset ( offset as isize ) ) } ;
2053- Ok ( ( ptr, range_size) )
2054- }
2055- resource:: BufferMapState :: Active {
2056- ref mapping,
2057- ref range,
2058- ..
2059- } => {
2060- if offset < range. start {
2061- return Err ( BufferAccessError :: OutOfBoundsUnderrun {
2062- index : offset,
2063- min : range. start ,
2064- } ) ;
2065- }
2066- if offset + range_size > range. end {
2067- return Err ( BufferAccessError :: OutOfBoundsOverrun {
2068- index : offset + range_size - 1 ,
2069- max : range. end ,
2070- } ) ;
2071- }
2072- // ptr points to the beginning of the range we mapped in map_async
2073- // rather than the beginning of the buffer.
2074- let relative_offset = ( offset - range. start ) as isize ;
2075- unsafe {
2076- Ok ( (
2077- NonNull :: new_unchecked ( mapping. ptr . as_ptr ( ) . offset ( relative_offset) ) ,
2078- range_size,
2079- ) )
2080- }
2081- }
2082- resource:: BufferMapState :: Idle | resource:: BufferMapState :: Waiting ( _) => {
2083- Err ( BufferAccessError :: NotMapped )
2084- }
2085- }
2024+ buffer. get_mapped_range ( offset, size)
20862025 }
2026+
20872027 pub fn buffer_unmap ( & self , buffer_id : id:: BufferId ) -> BufferAccessResult {
20882028 profiling:: scope!( "unmap" , "Buffer" ) ;
20892029 api_log ! ( "Buffer::unmap {buffer_id:?}" ) ;
0 commit comments