We may want to port the program binary disk cache from QOpenGLShaderProgram since the OpenGL backend of QRhi does not and cannot rely on the "convenience" QOpenGL classes.(note: QOpenGLContext and QOpenGL(Extra)Functions are not convenience and are essential still)
This means losing the gl program binary disk cache by default. Consider if this is acceptable or not. If not, port the machinery.
We do not have to duplicate code when it comes to "porting". However, QOpenGLProgramBinaryCache has to be made as independent as possible, allowing it to be placed next to QRhi when the rest of the QOpenGL classes (such as QOpenGLShader and QOpenGLShaderProgram) are moved to some other place.