http://bugs.winehq.org/show_bug.cgi?id=21618
--- Comment #19 from Stefan Dösinger stefandoesinger@gmx.at 2010-02-07 16:26:23 --- I can imagine what the driver is complaining about: We're passing GL_MAP_READ_BIT | GL_MAP_FLUSH_EXPLICIT_BIT as map flags when the app passes D3DLOCK_READONLY, but flushing doesn't make much sense when you're not writing to the buffer.
The GL extension is pretty specific about this:
http://www.opengl.org/registry/specs/ARB/map_buffer_range.txt
MAP_FLUSH_EXPLICIT_BIT indicates that one or ... This flag may only be used in conjunction with MAP_WRITE_BIT
We do have a d3d test testing READONLY maps, but it only checks the D3D return value, and does not try to access the memory returned, so it doesn't catch the bug. Apparently there is no GL error raised, or I missed it in my testing, although the extension spec mandates that GL_INVALID_OPERATION shall be raised. There's a checkGLcall missing, but later checkGLcall calls should pick up the error.
Still, before I build a patch I'll wait for your test results with my earlier debug patch.