Dave Rigby wrote: > Greetings, > > I'm currently trying to migrate an old in-house app (which no longer > have the source for) to a new Linux box. Previously this app ran on a > RH6.2 box, and I've noticed some strange behaviour in how this app > uses Mesa, specifically the glXUseXFont() function. I was seeing some > some font rendering issues; it looked like characters were getting > cropped. > > I've tracked down the problem - for some reason this app has it's own > implementation of Fake_glXUseXFont(). When the API function > glXUseXFont (in mesa, libGL) is called, this calls the function which > does the real work (Fake_glXUseXFont) via a function table, and it > appears that this ends up getting resolved to it's own internal > Fake_glXUseXFont() symbol; instead of the function inside libGL (Mesa). > > Now I've solved this for now by rebuilding Mesa and changing the Fake_ > prefix to MesaImpl_ which stops the libGL function table finding this > app's symbol, but if possible I'd like to solve this in a way which > doesn't involve me maintaining patches on top of Mesa forever! > > I'd like to understand the rationale for these Fake_* functions - is > what I have encountered by design (i.e. to allow apps to override the > default Mesa implementation), or is this behaviour purely accidental, > and these Fake_* symbols should have a more limited visibility (i.e. > hidden / internal); so they can never be overridden? > > (note this is all pure software rendering; hardware accel is the next > step!.) > > Any advice / info would be most appreciated.
Mesa can basically be built in two ways for X: real GLX support (with hardware rendering) or simulated GLX support (with software rendering). The later is implemented with the Fake_glx*() functions. We needed the Fake prefix to avoid collisions with "real" implementation of GLX. If you're building Mesa with 'make linux' then you're getting fake GLX support. Building with 'make linux-dri' would give you real GLX support and hardware acceleration if you have the right hardware. The problem of symbol overloading and the library errantly calling app-provided functions shouldn't be happening because the Mesa libGL is build with the -Bsymbolic flag. What application are you using? Do you know why the app has its own Fake_glXUseXFont() and why it's being used instead of the normal glXUseXFont()? -Brian ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Mesa3d-dev mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
