I am developing a realtime vision processing app on Xcode 12.4 and iOS 14.3 and have an issue where after being on for a random amount of time, the app stops using my iPhone's performance cores and shifts over to the efficiency cores. This accompanies a marked drop in FPS. The queue used for the bulk of the CPU work (rendering via cgContext and then conversion using CIImage(cgImage) is as follows:
private let dataOutputQueue = DispatchQueue(label: "video data queue", qos: .userInteractive, attributes: [.concurrent], autoreleaseFrequency: .workItem)
I am surprised that a .userInteractive queue would shift over to efficiency cores like this given that it is not able to keep up.
My question is, why would performance cores just stop working like this? Can I not assume that I can retain use of the performance cores? Picture from Instruments attached for reference.
