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" <mesa-stable@lists.freedesktop.org> Tested-by: Kai Wasserbäch <kai@dev.carbon-project.org>
This commit is contained in:
@@ -468,7 +468,7 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
|
|||||||
? true : false;
|
? true : false;
|
||||||
|
|
||||||
/* GL limits and extensions */
|
/* GL limits and extensions */
|
||||||
st_init_limits(pipe->screen, &ctx->Const, &ctx->Extensions);
|
st_init_limits(pipe->screen, &ctx->Const, &ctx->Extensions, ctx->API);
|
||||||
st_init_extensions(pipe->screen, &ctx->Const,
|
st_init_extensions(pipe->screen, &ctx->Const,
|
||||||
&ctx->Extensions, &st->options, ctx->API);
|
&ctx->Extensions, &st->options, ctx->API);
|
||||||
|
|
||||||
|
@@ -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.
|
* Note that we have to limit/clamp against Mesa's internal limits too.
|
||||||
*/
|
*/
|
||||||
void st_init_limits(struct pipe_screen *screen,
|
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;
|
int supported_irs;
|
||||||
unsigned sh;
|
unsigned sh;
|
||||||
@@ -437,8 +438,14 @@ void st_init_limits(struct pipe_screen *screen,
|
|||||||
c->GLSLFrontFacingIsSysVal =
|
c->GLSLFrontFacingIsSysVal =
|
||||||
screen->get_param(screen, PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL);
|
screen->get_param(screen, PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL);
|
||||||
|
|
||||||
/* GL_ARB_get_program_binary */
|
/* GL_ARB_get_program_binary
|
||||||
if (screen->get_disk_shader_cache && screen->get_disk_shader_cache(screen))
|
*
|
||||||
|
* 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->NumProgramBinaryFormats = 1;
|
||||||
|
|
||||||
c->MaxAtomicBufferBindings =
|
c->MaxAtomicBufferBindings =
|
||||||
|
@@ -35,7 +35,8 @@ struct pipe_screen;
|
|||||||
|
|
||||||
extern void st_init_limits(struct pipe_screen *screen,
|
extern void st_init_limits(struct pipe_screen *screen,
|
||||||
struct gl_constants *c,
|
struct gl_constants *c,
|
||||||
struct gl_extensions *extensions);
|
struct gl_extensions *extensions,
|
||||||
|
gl_api api);
|
||||||
|
|
||||||
extern void st_init_extensions(struct pipe_screen *screen,
|
extern void st_init_extensions(struct pipe_screen *screen,
|
||||||
struct gl_constants *consts,
|
struct gl_constants *consts,
|
||||||
|
@@ -1207,7 +1207,7 @@ get_version(struct pipe_screen *screen,
|
|||||||
_mesa_init_constants(&consts, api);
|
_mesa_init_constants(&consts, api);
|
||||||
_mesa_init_extensions(&extensions);
|
_mesa_init_extensions(&extensions);
|
||||||
|
|
||||||
st_init_limits(screen, &consts, &extensions);
|
st_init_limits(screen, &consts, &extensions, api);
|
||||||
st_init_extensions(screen, &consts, &extensions, options, api);
|
st_init_extensions(screen, &consts, &extensions, options, api);
|
||||||
|
|
||||||
return _mesa_get_version(&extensions, &consts, api);
|
return _mesa_get_version(&extensions, &consts, api);
|
||||||
|
Reference in New Issue
Block a user