Details
-
Suggestion
-
Resolution: Unresolved
-
Not Evaluated
-
None
-
5.15.17, 6.7.3, 6.8.0
Description
An commercial user is requesting adding a macro to forcibly disabling the shader cache, that is shared by QOpenGLShaderProgram and QRhi OpenGL backend.
The back ground of this request :
- QOpenGLProgramBinarySupportCheck::QOpenGLProgramBinarySupportCheck() checks :
(Check 1) OpenGLES version is 3 or newer? If YES, it sets the shader cache as "supported".
(Check 2) Even if OpenGLES is older than 3, is there "GL_OES_get_program_binary" extension? If YES, it sets the shader cache as "supported".
- However, under some Yocto Linux environment, when the "GL_OES_get_program_binary" extension is found in Check 2 and the shader cache gets enabled, calling glGetProgramBinary() causes a heap-buffer-overflow detected by Address Sanitizer. This can be avoided by forcibly disabling the shader cache, i.e. fixedly setting "const bool hasExt = false;"
- To resove this issue, the user is requesting a macro switch to disable the shader cache on demand.