Ok, I recently started using System Shock 2 fullscreen with xvidmode enabled in my wine config, and here's something strange. When xvidmode is enabled, and I'm in a game and press esc to go to the menu, then esc again to return to the game, or load another save or go through a bulkhead/elevator and cause it to load another level, when it returns to the game the 3D area is completely black, though the HUD/inventory and brackets around items all shows up.
Well, seeing this description, I could say only one thing : DRIVER PROBLEM :-)
You description seems to imply that the glReadPixels call returns a completely black frame buffer (whereas the drawing seems to work well as shown when you remove the surface locking stuf). To be 100 % sure, you could enable the debug code in the Lock / Unlock case to have nice screenshots (if they are all black, that would show that :-) ).
Maybe it could be fixed by my attempts to use the texture engine instead of glReadPixels (to be submitted only after profiling)...
Did you try changing the resolution manually using Ctrl +/- ? Does it work like that ?
As for System Shock 2, I have the full game, so no need to show me the demo.
Lionel
PS: do not count on me to debug this, I hate XVidMode :-)