Fix for the BadMatch error (bug #4945)

fenix at club-internet.fr fenix at club-internet.fr
Wed May 24 08:22:59 CDT 2006


----Message d'origine----
>De: "Wino Rojo" <winorojo at hotmail.com>
>A: wine-devel at winehq.org
>Date: Tue, 23 May 2006 18:12:36 -0400
>Sujet: Fix for the BadMatch error (bug #4945)
>
>Hi,
>
>I'v found a way to fix my problem with wglShareLists - BadMatch error 
>(X_GLXMakeCurrent) (see bug #4945).
>
>In X11DRV_setup_opengl_visual() (x11drv/opengl.c), I've changed this line:
>
>int dblBuf[] = {GLX_RGBA,GLX_DEPTH_SIZE, 16, GLX_STENCIL_SIZE, 8, 
>GLX_DOUBLEBUFFER, None};
>
>to this:
>
>int dblBuf[] = {GLX_RGBA,GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, 8, 
>GLX_ALPHA_SIZE, 8, GLX_DOUBLEBUFFER, None};
>
>That is, I choose a visual with a depth size of 24 *and* I also need to set 
>the alpha size to 8. With this small change, I can use my 3d app without 
>problems
>
>Does anybody see a problem with this fix?

I aggree. The problem is that will break for cards who don't support 24-32 bits frame buffers.

You must add a fallback for 16 bits :

- try GLX_RGBA,GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, 8, GLX_DOUBLEBUFFER
- if failed try  GLX_RGBA,GLX_DEPTH_SIZE, 16, GLX_STENCIL_SIZE, 8, GLX_DOUBLEBUFFER
- if failed try GLX_RGBA,GLX_DEPTH_SIZE, 16, GLX_DOUBLEBUFFER
   
>
>Thanks,
>
>Wino


Raphael




More information about the wine-devel mailing list