----- Original Message ----- > Benoit Jacob wrote: > > ----- Original Message ----- > >> On Thu, Feb 3, 2011 at 4:37 PM, Benoit Jacob <bja...@mozilla.com> > >> wrote: > >>> 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. > >>> > >>> 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. > >>> > >> 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. > > > > 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 > > This latter bug looks like an i915 driver bug, as opposed to a > MakeCurrent bug. > > > Since the glGetString way will at best be slow, especially if we > > have > > to XSync and check for errors, could you consider exposing this > > information as new glXGetServerString / glXGetClientString strings? > > ? I don't understand the logic here. > > You're hitting a bug in glXCreateContext or MakeCurrent or something > like that. So you'd like to add an entire new way to query the same > information a driver already provides, just to provide an alternate > path > that hopefully doesn't exhibit the bug? > > Just fix the bug! There's no reason for glX extensions to add new > functions here.
My point is just that bugs exist. Since bugs exist, I am trying to implement a driver blacklist. My problem is that with GLX it's tricky because I can't get answer to the question "should I avoid creating GL contexts on this driver" without creating a GL context. I proposed to allow handling this in glXQuery(Server|Client)String because these functions are known to be non-crashy. > > > 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. > > I don't think you need to XSync. Just do: > > glXCreateContext(...) > glGetString(...) After I create a GL context, don't I need to make it current? Are you saying that glXCreateContext makes the newly created context current? > glXDestroyContext(...) > > in your code. If that crashes, there's a bug in the implementation, so > report it and let's get it fixed! This is for Web browsers. This would be considered a security flaw. Benoit _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev