https://bugs.winehq.org/show_bug.cgi?id=38545
Bug ID: 38545 Summary: Calculate surface size is wrong sometimes Product: Wine Version: 1.7.42 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3dx9 Assignee: wine-bugs@winehq.org Reporter: isakov-sl@bk.ru Distribution: ---
Bug 38178 is closed resolved by prohibit DXTn texture. The real reason for the game crash is wrong sizes calculation in case of compressed textures. Even if we are not supporting DXTn compress/decompress we should allow the application do this by own libraries and we must correctly calculate sizes in those cases. First what I see is the procedure calculate_dds_surface_size(..) It adopted to block based textures but not to compressed textures According to MSDN https://msdn.microsoft.com/en-us/library/windows/desktop/bb205578(v=vs.85).a... the formula should be max(1, ( (width + 3) / 4 ) ) x max(1, ( (height + 3) / 4 ) ) x 8(DXT1) or 16(DXT2-5)
But I see there are more caveats...