R. Steven Rainwater
2006-Apr-27 13:40 UTC
[Wine] Re: problem installing DesignCAD 3D Max 14.1 under wine
Daniel Skorka wrote:> R. Steven Rainwater <steve@ncc.com> wrote: >>The only errors that showed up on the console during all this were: >><...> >>err:wgl:X11DRV_ChoosePixelFormat glXChooseFBConfig returns NULL (glError: 0) > > That's why you don't see anything. DesignCAD uses OpenGL to do the > actual drawing, and wine isn't performing very gracefully in your case.I've continued to work on debugging this. I've got wine compiling from source and have dropped in some extra TRACE statements in the opengl.c source file of the x11drv DLL. I've found what appears to be the problem. The glXChooseFBConfig API requires GLX v1.3 but if I query GLX using the glXQueryVersion function, it returns 1.2. According to the OpenGL reference manual, "This subroutine requires GLX 1.3 support on both the GLX system on the client and on the specified screen on the X server." glxinfo reports: server glx version string: 1.2 client glx version string: 1.4 The glxQueryVersion function returns 1.2 as well, so the problem appears to be the server version. I'm not certain what that means as far as which piece of software I need to look at on my Fedora Core 5 box. I'm using an NVidia card, so the driver is nv. There is no 3D acceleration support for NVidia cards in the free software world at this time, so I assume GLX is not part of the driver itself. There's presumably some OpenGL software emulation being used. I did a search on the xorg.freedesktop.org wiki for GLX but it didn't turn up any results. Does anyone have a pointer to a good source of information on what piece of code provides the GLX API in Xorg as supplied with Fedora Core 5? As an aside, it seems like it would be good coding practice if the Wine opengl.c code queried the GLX API and reported an error if it was not v1.3 or higher. I can submit a patch to do that if it's appropriate. -Steve
Daniel Skorka
2006-Apr-27 14:10 UTC
[Wine] Re: problem installing DesignCAD 3D Max 14.1 under wine
R. Steven Rainwater <steve@ncc.com> wrote:> I've found what appears to be the problem. The glXChooseFBConfig API > requires GLX v1.3 but if I query GLX using the glXQueryVersion function, > it returns 1.2. According to the OpenGL reference manual, "This > subroutine requires GLX 1.3 support on both the GLX system on the client > and on the specified screen on the X server."Uh, yeah. I could have told this had I known you were working on it...> The glxQueryVersion function returns 1.2 as well, so the problem appears > to be the server version. I'm not certain what that means as far as > which piece of software I need to look at on my Fedora Core 5 box. > > I'm using an NVidia card, so the driver is nv. There is no 3Dnv is the free driver?> time, so I assume GLX is not part of the driver itself. There'sGLX is an extension to the X server, part of which (I think) requires support in the driver. Oh, the driver also needs to be able to use your cards hardware.> presumably some OpenGL software emulation being used. I did a search onIf you don't have hardware acceleration, mesa software rendering will be used. Before you start looking, mesa is a part of XFree86/Xorg> opengl.c code queried the GLX API and reported an error if it was not > v1.3 or higher. I can submit a patch to do that if it's appropriate.Actually, it's even more complex. For some reason, some drivers support GLXChooseFBConfig, although they claim to be GLX v1.2. This has led to GLXChooseFBConfig being used indiscriminately. And while you can check whether a specific function is supported, a patch for just that won't do it. You still need to provide an alternative code path for selecting a matching visual. Daniel