I work on a Qt/QML app that is deployed to both Windows and iPads. With a recent iPad OS upgrade to 26.1, many iPad users are reporting the application freezing after panning and/or identifying features in the map. It runs fine for our Windows users.
I was able to reproduce this and grabbed the following error messages when the freeze happens:
IOGPUMetalError: Caused GPU Address Fault Error (0000000b:kIOGPUCommandBufferCallbackErrorPageFault) IOGPUMetalError: Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource) |
Environment:
Because it appears to be a Metal error, I tried using OpenGL: QQuickWindow::setGraphicsApi(QSGRendererInterface::GraphicsApi::OpenGL)
Which worked! No more freezing. But I'm seeing many posts that OpenGL has been deprecated by Apple.
Thanks,
Kelley
@KCLewelling Thanks for the report. For some background, we certify the latest versions of the product (200.8) on the newest environments, such as iOS 26, but since 200.4 is in extended support, we have not tested nor certified that version on the latest versions of iOS. We do plan to take a look shortly to see if we can reproduce, and will let you know if we have any information to share. In the meantime, for your question about whether OpenGL is a suitable alternative, the answer is that yes, it is fully supported in that version of the product and should work just fine. The only downside is that it is deprecated from Apple. However, that deprecation was announced several years ago and there hasn't been much additional discussion we've seen since, so we have no reason to believe it's getting pulled imminently. If you plan to migrate away from the QML API, OpenGL would seem like a suitable stop-gap solution.
@HariniChaganti - thank you for your reply. To clarify, we are currently on version 200.3 of the sdk. I have not tested it on the 200.4 version (I anticipate some issues that would need to be addressed if I upgrade). But, if it turns out that these GPU Metal errors do not occur with 200.4, that is a possible option for us. Going to the current version of the sdk is not an option because of the deprecation of the QML api.
I have a check in the Qt code to determine if the ipados major version is greater than 26; I am only setting the graphics api to openGL if it is. Is there a way in Qt to also check if OpenGL is available? Or is Objective C++ the only option to do that?
@KCLewelling We’re looking into whether this can be reproduced with the environment you mentioned. Regarding your question, you can try creating an OpenGL context and checking its validity. Note that the RHI backend needs to be set using QQuickWindow::setGraphicsApi before any drawing occurs.
QOpenGLContext context;
if (!context.create()) {
qWarning() << "OpenGL context creation failed!";
return;
}
@KCLewelling We have not certified version 200.3 on iOS 26, and we tested version 200.3 QML on iPadOS 26 and were unable to reproduce the reported issue. As a workaround, we recommend using OpenGL ES, which should keep things working for you.