https://bugs.winehq.org/show_bug.cgi?id=47419
Olivier F. R. Dierick o.dierick@piezo-forte.be changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |--- Status|RESOLVED |REOPENED
--- Comment #3 from Olivier F. R. Dierick o.dierick@piezo-forte.be --- (In reply to Henri Verbeet from comment #2)
(In reply to Olivier F. R. Dierick from comment #1)
Resolving INVALID.
Probably, but if you're up for it, it may still be interesting to figure out what the issue with the gdi/no3d renderer is. In particular, I guess the application doesn't like one of the caps set in "caps.ddsOldCaps.dwCaps". If you can figure out which one(s), perhaps we can just make sure they aren't set with the gdi/no3d renderer.
Hello,
With a debugging FIXME and filtering the caps one by one the dwCaps that causes trouble to the gdi/no3d renderer is identified as DDCAPS_ALIGNSIZESRC.
With this debugging patch the application fails:
--- diff --- + FIXME("caps.ddsOldCaps.dwCaps was %#x.\n", caps.ddsOldCaps.dwCaps); caps.ddsOldCaps.dwCaps = caps.ddsCaps.dwCaps; + FIXME("caps.ddsOldCaps.dwCaps wants %#x.\n", caps.ddsOldCaps.dwCaps); + caps.ddsOldCaps.dwCaps &= ~DDCAPS_PALETTE; + caps.ddsOldCaps.dwCaps &= ~DDCAPS_OVERLAY; + caps.ddsOldCaps.dwCaps &= ~DDCAPS_BLTSTRETCH; + caps.ddsOldCaps.dwCaps &= ~DDCAPS_BLTFOURCC; + caps.ddsOldCaps.dwCaps &= ~DDCAPS_BLT; + caps.ddsOldCaps.dwCaps &= ~DDCAPS_ALIGNSTRIDE; + caps.ddsOldCaps.dwCaps &= ~DDCAPS_ALIGNSIZEDEST; + caps.ddsOldCaps.dwCaps &= ~DDCAPS_ALIGNBOUNDARYDEST; + FIXME("caps.ddsOldCaps.dwCaps got %#x.\n", caps.ddsOldCaps.dwCaps); --- end of diff ---
--- output --- (...) 002d:fixme:ddraw:ddraw7_GetCaps caps.ddsOldCaps.dwCaps was 0. 002d:fixme:ddraw:ddraw7_GetCaps caps.ddsOldCaps.dwCaps wants 0x8b76. 002d:fixme:ddraw:ddraw7_GetCaps caps.ddsOldCaps.dwCaps got 0x10. (...) 002d:trace:ddraw:ddraw_surface1_Blt iface 0x15a760, dst_rect (0,0)-(640,400), src_surface (nil), src_rect (null), flags 0x1000400, fx 0xacfb00. 002d:trace:ddraw:ddraw_surface7_Blt iface 0x15a750, dst_rect (0,0)-(640,400), src_surface (nil), src_rect (null), flags 0x1000400, fx 0xacfb00. wine: Unhandled page fault on read access to 0x00000014 at address 0x44c5cc (thread 002d), starting debugger... Unhandled exception: page fault on read access to 0x00000014 in 32-bit code (0x0044c5cc). (...) --- end of output ---
With this debugging patch the application works:
--- diff --- + FIXME("caps.ddsOldCaps.dwCaps was %#x.\n", caps.ddsOldCaps.dwCaps); caps.ddsOldCaps.dwCaps = caps.ddsCaps.dwCaps; + FIXME("caps.ddsOldCaps.dwCaps wants %#x.\n", caps.ddsOldCaps.dwCaps); + caps.ddsOldCaps.dwCaps &= ~DDCAPS_ALIGNSIZESRC; + FIXME("caps.ddsOldCaps.dwCaps got %#x.\n", caps.ddsOldCaps.dwCaps); --- end of diff ---
--- output --- (...) 002d:fixme:ddraw:ddraw7_GetCaps caps.ddsOldCaps.dwCaps was 0. 002d:fixme:ddraw:ddraw7_GetCaps caps.ddsOldCaps.dwCaps wants 0x8b76. 002d:fixme:ddraw:ddraw7_GetCaps caps.ddsOldCaps.dwCaps got 0x8b66. (...) 002d:trace:ddraw:ddraw_surface1_Blt iface 0x2d8a890, dst_rect (0,0)-(640,400), src_surface (nil), src_rect (null), flags 0x1000400, fx 0xacfb00. 002d:trace:ddraw:ddraw_surface7_Blt iface 0x2d8a880, dst_rect (0,0)-(640,400), src_surface (nil), src_rect (null), flags 0x1000400, fx 0xacfb00. 002d:trace:ddraw:ddraw_surface1_Restore iface 0x2d8a890. 002d:trace:ddraw:ddraw_surface7_Restore iface 0x2d8a880. (...) --- end of output ---
Regards.