[Mesa-dev] [PATCH] mesa: avoid _mesa_problem invocation when running on drivers without glsl
Ilia Mirkin
imirkin at alum.mit.edu
Fri Jul 5 05:08:54 UTC 2019
On Fri, Jul 5, 2019 at 12:56 AM Ian Romanick <idr at freedesktop.org> wrote:
>
> On 7/4/19 4:21 PM, Ilia Mirkin wrote:
> > For example wine might query GL_SHADING_LANGUAGE_VERSION on a driver
> > that doesn't support GLSL. This is not a problem in itself, we can just
> > return a INVALID_ENUM error.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109524
> > Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> > ---
> > src/mesa/main/getstring.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
> > index 3d5ae0b694b..6c0dd9048da 100644
> > --- a/src/mesa/main/getstring.c
> > +++ b/src/mesa/main/getstring.c
> > @@ -150,6 +150,8 @@ _mesa_GetString( GLenum name )
> > case GL_SHADING_LANGUAGE_VERSION:
> > if (ctx->API == API_OPENGLES)
> > break;
> > + if (_mesa_is_desktop_gl(ctx) && ctx->Const.GLSLVersion == 0)
> > + break;
>
> GLSL version should never be zero. We advertise GL_ARB_shading_language
> in all drivers, so every driver has "GLSL" even if it doesn't have
> vertex shaders or fragment shaders. I thought I sent out a patch some
> time ago that set GLSLVersion to 120 by default to avoid problems like this.
That may be, but either they weren't merged, or other things changed
in between which nullified their effect. Currently
_mesa_compute_version will leave GLSLVersion blank for pre-GL 2.0
contexts. FWIW this makes wine work ok:
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 5f004ff1dab..948bdbcc891 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -634,6 +634,8 @@ _mesa_compute_version(struct gl_context *ctx)
default:
if (ctx->Version >= 33)
ctx->Const.GLSLVersion = ctx->Version * 10;
+ else
+ ctx->Const.GLSLVersion = 120;
break;
}
}
-ilia
More information about the mesa-dev
mailing list