From: Ian R. <id...@us...> - 2003-07-30 16:26:32
|
Marcelo E. Magallon wrote: > > > I'm inclined to believe that the comments in dri_glx.c are just > > > wrong. __glXRegisterExtensions has to be called before a call to > > > glXGetProcAddress. The app can query that string via > > > glXQueryExtensionsString long before calling glXGetProcAddress. In > > > fact, it may never call glXGetProcAddress. I'm sure glxinfo > > > doesn't. :) > > On the other hand, the app can call glXGetProcAddress without opening a > display or creating a context. If you follow the letter of the spec > the only way to be sure that a extension is supported is by inspecting > the extensions string, and for that you need a display. > > > So this does influence which extensions are listed in the extension > > string, contradicting what Keith wrote? In that case I have one more > > question. How can this work with multi-head configurations where you > > can have multiple different cards (different screens) on one display. > > Then each driver will add or readd extensions. But they should never > > disable any extensions, right? You don't want drivers to disable each > > others extensions, do you? > > Intuitively glGetString(GL_EXTENSIONS) should return the list of the > extensions supported on the context that's current. For GLX extensions glXQueryExtensionsString is used. All this function gets is a Display pointer and a screen number. > That doesn't say > anything about the extension being supported in hardware or software, > which is I think the point of your question. That means that if the > driver supports the extension and the extension is not precluded by the > current context the extension should be reported as being supported. I > remember someone on this list mentioning that the NVIDIA drivers do > something fuzzy in this respect. > > OTOH, if you are talking about GLX extensions, most don't make sense > without hardware support. Right. As an example, we don't want the R200 driver to expose GLX_MESA_swap_control if there's no vblank interrupt available. Since it can't implement the functionality, we don't want to advertise it. |