Forget the other patch, this one actually works. I tested it with a modified radeon driver. They way I tried to access per-screen glx extension data before didn't work. It used some X extension list to find the screen data structure for a given display and screen number. But while the DRI screens are being created the display was not yet on the extension list.
Good thing I haven't had a chance to review it then. :)
So I moved the glx extension data to the end of __DRIscreenRec and added a pointer to __DRIscreenPrivateRec that points back to the __DRIscreenRec. This pointer is then passed to __glXScrEnable/DisableExtension by the driver's createScreen function. There may be binary compatibility issues as __DRIscreenRec is accessed by both libGL and the drivers. But adding new stuff to the end should be fine. Those added entries are only accessed by libGL.
They may only be access in libGL, but where is the memory allocated? I don't remember for that structure without looking, but I seem to recall that at least one or two of the structures are allocated in the driver. Most of them are allocated by libGL, but we should be sure. :)
Then it may be better to move that data back to __GLXscreenConfigs and add a pointer to __DRIscreenRec that points back to __GLXscreenConfigs. Thoughts?
I'll have to look at it. I should get a chance before the IRC meeting on Monday. We'll talk some about it then.
------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel