On Fri, 4 Feb 2011 08:58:31 -0800 (PST), Benoit Jacob <bja...@mozilla.com> 
wrote:
> ----- Original Message -----
> > On Thu, Feb 3, 2011 at 4:37 PM, Benoit Jacob <bja...@mozilla.com>
> > wrote:
> > > Hi,
> > >
> > > I'm trying to see how to implement selective
> > > whitelisting/blacklisting of driver versions on X11 (my use case is
> > > to whitelist drivers for Firefox). The naive approach consists in
> > > creating an OpenGL context and calling glGetString(), however that
> > > is not optimal for me, for these reasons:
> > >  * This has been enough to trigger crashes in the past.
> > >  * This can take long (this affects the startup time of the
> > >  browser).
> > >  * This doesn't always give driver version information (at least the
> > >  ATI blob doesn't seem to).
> > >
> > > Ideally I want to be able to know the driver name, driver version,
> > > Mesa version, and any other thing that you think may be relevant. I
> > > need to get that information in a fast and safe way.
> > >
> > > Is there a good solution to this problem? It might even be
> > > acceptable to assume that the X server is local, although of course
> > > I would prefer a solution that works with remote X.
> > >
> > > I've been told to check xdriinfo, but this seems to only give the
> > > driver name and not a driver version. I've also been told that
> > > checking for GLX >= 1.4 would already ensure Mesa >= 7.9, is that
> > > correct?
> > >
> > > Cheers,
> > > Benoit
> > 
> > There is no other way than glGetString if you ever experienced crash
> > with it, it would be because you are doing something terribly wrong
> > like using it without current context. glGetString is one of the most
> > tested gl functions with the open source stack as it's the foundation
> > of one of the most used gl program on linux aka glxinfo. I never did
> > see glxinfo trigger a crash on any released mesa.
> 
> It's not glGetString that's crashing, it's glXMakeCurrent.
> 
> I forwarded a bug report from a user, though he's not been able to reproduce 
> since:
> 
>   https://bugs.freedesktop.org/show_bug.cgi?id=32238
> 
> A search in Mesa's bugzilla confirms that I'm not alone:
> 
>   https://bugs.freedesktop.org/show_bug.cgi?id=30557
> 
> It seems that such crashes happen only after a X error in
> glxCreateNewContext. So it may be possible to avoid them by doing
> XSync and checking for errors. But that makes the process even slower.

> 
> It's not surprising that we'd be hitting crashes that glxinfo doesn't, since 
> we may have done lots of X and GL calls already earlier in our application. 
> One could say that we should check driver information once and for all upon 
> creation of the first GL context; but I've had users experiencing these 
> crashes already upon creation of the first GL context (mozilla bug 616416)

It would be good to get some testcases to produce these failures.  I've
spent the last 2 hours trying to come up with any way I could execute a
valid series of GLX calls that would result in a segfault in MakeCurrent
on my non-gallium driver, focusing on getting an error from
glXCreateNewContext().  I've got a couple of new piglit cases for GLX
stuff out of it, but no evidence that there's a problem.  If the gallium
drivers are failing, they should just be fixed instead of blacklisting
them so they never get fixed.

Attachment: pgpVTTaCYMVGp.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to