From 719f2c934030f74ce0a4892233f494f168852698 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Wed, 14 Feb 2018 23:42:50 -0800 Subject: [PATCH] i965: Support 0 ARB_get_program_binary formats for compat profiles The QT framework has a bug in their shader program cache, which is built on GL_ARB_get_program_binary. To give QT and distributions time to fix the bug and roll the fix out to users, for the 18.0 release we will advertise support for 0 binary formats for compatibility profiles. This is only being done on the 18.0 release branch. Ref: https://bugreports.qt.io/browse/QTBUG-66420 Ref: https://bugs.freedesktop.org/show_bug.cgi?id=105065 Cc: "18.0" Signed-off-by: Jordan Justen Tested-by: Scott D Phillips Reviewed-by: Scott D Phillips --- docs/relnotes/17.4.0.html | 4 +++- src/mesa/drivers/dri/i965/brw_context.c | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/relnotes/17.4.0.html b/docs/relnotes/17.4.0.html index 412c0fc455e..f3ab46ad873 100644 --- a/docs/relnotes/17.4.0.html +++ b/docs/relnotes/17.4.0.html @@ -53,7 +53,9 @@ Note: some of the new features are only available with certain drivers.
  • GL_ARB_enhanced_layouts on r600/evergreen+
  • GL_ARB_bindless_texture on nvc0/kepler
  • OpenGL 4.3 on r600/evergreen with hw fp64 support
  • -
  • Support 1 binary format for GL_ARB_get_program_binary on i965
  • +
  • Support 1 binary format for GL_ARB_get_program_binary on i965. + (For the 18.0 release, 0 formats continue to be supported in + compatibility profiles.)
  • Bug fixes

    diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index e9358b7bc9c..58527d77263 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -704,7 +704,14 @@ brw_initialize_context_constants(struct brw_context *brw) ctx->Const.AllowMappedBuffersDuringExecution = true; /* GL_ARB_get_program_binary */ - ctx->Const.NumProgramBinaryFormats = 1; + /* 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. + * This is only being done on the 18.0 release branch. + */ + if (ctx->API != API_OPENGL_COMPAT) { + ctx->Const.NumProgramBinaryFormats = 1; + } } static void