http://bugs.winehq.org/show_bug.cgi?id=10697
--- Comment #35 from pspallanz@gmail.com 2008-01-12 12:56:26 --- OK, I submitted the patch to wine-patches.
For #32, I guess that newer cards are not affected because they support nonpower2 textures thus in surface_blt_to_drawable This->pow2Width is equal to rect.right.
For #34, that doesn't work. The first GL_INVALID_ENUM message occurs in the call to glTexImage2D in surface_allocate_surface, the fix should be applied before surface_allocate_surface is called. Maybe in IWineD3DSurfaceImpl_PrivateSetup, change
if(This->Flags & SFLAG_NONPOW2 && GL_SUPPORT(ARB_TEXTURE_RECTANGLE)) { This->glDescription.target = GL_TEXTURE_RECTANGLE_ARB; This->pow2Width = This->currentDesc.Width; This->pow2Height = This->currentDesc.Height; This->Flags &= ~SFLAG_NONPOW2; } to
if(This->Flags & SFLAG_NONPOW2 && GL_SUPPORT(ARB_TEXTURE_RECTANGLE) && This->resource.format != WINED3DFMT_P8) { This->glDescription.target = GL_TEXTURE_RECTANGLE_ARB; This->pow2Width = This->currentDesc.Width; This->pow2Height = This->currentDesc.Height; This->Flags &= ~SFLAG_NONPOW2; }