- if(self.swizzle==RGBA_TO_RGB)
- {
- const uint32_t *src = static_cast<const uint32_t *>(data);
- uint32_t *dst = static_cast<uint32_t *>(staging);
- size_t i = 0;
- for(; i+3<count; i+=4)
- {
- dst[0] = src[0]|0xFF000000;
- dst[1] = (src[0]>>24)|(src[1]<<8)|0xFF000000;
- dst[2] = (src[1]>>16)|(src[2]<<16)|0xFF000000;
- dst[3] = (src[2]>>8)|0xFF000000;
- src += 3;
- dst += 4;
- }
-
- if(i<count)
- {
- const uint8_t *src_bytes = reinterpret_cast<const uint8_t *>(src);
- for(; i<count; ++i)
- {
- *dst++ = src_bytes[0]|(src_bytes[1]<<8)|(src_bytes[2]<<16)|0xFF000000;
- src_bytes += 3;
- }
- }
- }
+ if(!mip_view_handles.empty())
+ return;
+
+ mip_view_handles.resize(self.n_levels);
+ if(self.n_levels==1)
+ mip_view_handles[0] = view_handle;