Various fixes

This commit is contained in:
Ilya Laktyushin
2022-12-19 06:42:40 +04:00
parent d255aec28f
commit 76cf224611

View File

@@ -693,8 +693,26 @@ final class Texture {
func createCGImage() -> CGImage? { func createCGImage() -> CGImage? {
let dataProvider: CGDataProvider let dataProvider: CGDataProvider
if #available(iOS 12.0, *) { // if #available(iOS 12.0, *) {
#if targetEnvironment(simulator) //#if targetEnvironment(simulator)
// guard let data = NSMutableData(capacity: self.bytesPerRow * self.height) else {
// return nil
// }
// data.length = self.bytesPerRow * self.height
// self.texture.getBytes(data.mutableBytes, bytesPerRow: self.bytesPerRow, bytesPerImage: self.bytesPerRow * self.height, from: MTLRegion(origin: MTLOrigin(), size: MTLSize(width: self.width, height: self.height, depth: 1)), mipmapLevel: 0, slice: 0)
//
// guard let provider = CGDataProvider(data: data as CFData) else {
// return nil
// }
// dataProvider = provider
//#else
// guard let buffer = self.buffer, let provider = CGDataProvider(data: Data(bytesNoCopy: buffer.contents(), count: buffer.length, deallocator: .custom { _, _ in
// }) as CFData) else {
// return nil
// }
// dataProvider = provider
//#endif
// } else {
guard let data = NSMutableData(capacity: self.bytesPerRow * self.height) else { guard let data = NSMutableData(capacity: self.bytesPerRow * self.height) else {
return nil return nil
} }
@@ -705,25 +723,7 @@ final class Texture {
return nil return nil
} }
dataProvider = provider dataProvider = provider
#else // }
guard let buffer = self.buffer, let provider = CGDataProvider(data: Data(bytesNoCopy: buffer.contents(), count: buffer.length, deallocator: .custom { _, _ in
}) as CFData) else {
return nil
}
dataProvider = provider
#endif
} else {
guard let data = NSMutableData(capacity: self.bytesPerRow * self.height) else {
return nil
}
data.length = self.bytesPerRow * self.height
self.texture.getBytes(data.mutableBytes, bytesPerRow: self.bytesPerRow, bytesPerImage: self.bytesPerRow * self.height, from: MTLRegion(origin: MTLOrigin(), size: MTLSize(width: self.width, height: self.height, depth: 1)), mipmapLevel: 0, slice: 0)
guard let provider = CGDataProvider(data: data as CFData) else {
return nil
}
dataProvider = provider
}
guard let image = CGImage( guard let image = CGImage(
width: Int(self.width), width: Int(self.width),