summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker/st_extensions.c
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2018-02-23 20:42:41 +0100
committerMarek Olšák <[email protected]>2018-03-07 15:36:31 -0500
commit55376cb31e2f495a4d872b4ffce2135c3365b873 (patch)
tree7e4ce2057f3391a929423e712bb554ba6854c27c /src/mesa/state_tracker/st_extensions.c
parent8ba3750d3d953a9e6a2a0564e2d3d5efc42316e1 (diff)
st/mesa: expose 0 shader binary formats for compat profiles for Qt
Bugzilla: https://bugreports.qt.io/browse/QTBUG-66420 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105065 Cc: "18.0" <[email protected]> Tested-by: Kai Wasserbäch <[email protected]>
Diffstat (limited to 'src/mesa/state_tracker/st_extensions.c')
-rw-r--r--src/mesa/state_tracker/st_extensions.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 42d53cbf82d..3b8e226e673 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -75,7 +75,8 @@ static int _clamp(int a, int min, int max)
* Note that we have to limit/clamp against Mesa's internal limits too.
*/
void st_init_limits(struct pipe_screen *screen,
- struct gl_constants *c, struct gl_extensions *extensions)
+ struct gl_constants *c, struct gl_extensions *extensions,
+ gl_api api)
{
int supported_irs;
unsigned sh;
@@ -437,8 +438,14 @@ void st_init_limits(struct pipe_screen *screen,
c->GLSLFrontFacingIsSysVal =
screen->get_param(screen, PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL);
- /* GL_ARB_get_program_binary */
- if (screen->get_disk_shader_cache && screen->get_disk_shader_cache(screen))
+ /* GL_ARB_get_program_binary
+ *
+ * The QT framework has a bug in their shader program cache, which is built
+ * on GL_ARB_get_program_binary. In an effort to allow them to fix the bug
+ * we don't enable more than 1 binary format for compatibility profiles.
+ */
+ if (api != API_OPENGL_COMPAT &&
+ screen->get_disk_shader_cache && screen->get_disk_shader_cache(screen))
c->NumProgramBinaryFormats = 1;
c->MaxAtomicBufferBindings =