On Wednesday 22 August 2007 12:58:18 pm Stefan Dösinger wrote:
I think for applications like css, we shouldn't activate that code at all. css renders to a top level window, so it doesn't have any clipping problems. The pixel format problem should be fixed in other ways, like making it safe to recreate X11 windows, as it seems to be needed for other things too.
It would be simple to do this on WGL's end and let it render directly to a window after recreating it with the proper visual, although the actual recreation may be tricky. As it is though, it can already use the window directly if the requested format matches the visual, and it wouldn't be hard to add a Wine-specific GL extension for WineD3D to use, if present, to get the current format.
I have tested this with a few apps. Simple d3d8 and d3d7 demos work nicely, but the mfctex and mfcfog samples crash with a GLXBadDrawable in X_GLXMakeCurrent.
A whole bunch of GLX errors will need to be ignored, especially in the case of GLXPixmaps (where the current method to resize is very crude, given the lack of a method to resize pixmaps like you can windows). I didn't get those in my testing though, so I didn't know if which needed to be ignored yet.
Wine also complains about missing GLX_MESA_copy_sub_buffer, but it does that in both working and broken demos.
That extension is generally required for the GLXPixmap method to work, since the GLX specs say that glXSwapBuffers has no effect on them. However, both MESA and nVidia's binary drivers seem to have an effect anyway (others may also as well). Obviously we can't rely on that, but it should work as-is for (future) single-buffered modes, and I plan on attempting to use other methods and extensions to get a more reliable swap effect.