http://bugs.winehq.org/show_bug.cgi?id=19412
--- Comment #11 from Charles Davis cdavis@mines.edu 2009-07-28 14:30:37 --- (In reply to comment #10)
This is probably an interaction between PBOs and client storage. Although neither extension explicitly mentions this, it would make sense that you can't use both client storage and a PBO when specifying a texture image. The comment in surface_allocate_surface() seems to agree.
Unfortunately we don't use glCompressedTexSubImage2D() but glCompressedTexImage2D() in surface_upload_data(), which respecifies the texture. The comment there seems to indicate this was a workaround for a driver bug, but perhaps we should get rid of that. The other option would probably be to disable either PBOs or client storage for compressed textures if both extensions are available.
Stefan added the client storage code, so adding him to CC.
That makes sense--well, as much sense as I can make out of the extremely complex wined3d code. (Not for OpenGL neophytes... at least I understand the comments.) That also explains why it only happens on Mac OS (client storage is one of Apple's GL extensions).
Seriously, how many people still have an ATI R200 chip? I don't. Then again, I wonder, considering that Apple, not nVidia, wrote the Mac OS X GeForce drivers, if their driver has many of the same quirks as their ATI drivers.