Henri Verbeet hverbeet@codeweavers.com writes:
Despite what the comment says, switching the implementation of an already created surface isn't so straightforward.
dlls/ddraw/ddraw.c | 179 +-------------------------------------------- dlls/ddraw/surface.c | 25 ------- dlls/wined3d/swapchain.c | 4 +- include/wine/wined3d.h | 1 - 4 files changed, 6 insertions(+), 203 deletions(-)
This one is causing crashes on 64-bit:
../../../../wine/tools/runtest -q -P wine -M d3d8.dll -T ../../.. -p d3d8_test.exe.so ../../../../wine/dlls/d3d8/tests/buffer.c && touch buffer.ok wine: Unhandled page fault on read access to 0x00000000 at address 0x2b631b0deede (thread 0021), starting debugger... Unhandled exception: page fault on read access to 0x00000000 in 64-bit code (0x00002b631b0deede). Register dump: rip:00002b631b0deede rsp:000000000023f3a0 rbp:000000000023f45a eflags:00010246 ( R- -- I Z- -P- ) rax:0000000000000001 rbx:0000000000000000 rcx:0000000000000018 rdx:000000000023f459 rsi:000000000023f45a rdi:0000000000000000 r8:000000000023f45c r9:000000000023f45b r10:000000000023f45c r11:000000000023f330 r12:000000000023f459 r13:0000000000000000 r14:000000000003b5e0 r15:00002b631b0f00e0 Stack dump: 0x000000000023f3a0: 0000000000000000 0000000000000094 0x000000000023f3b0: 0000000000032ed0 0000000000000094 0x000000000023f3c0: 0000000000032ed0 000000000003e9f0 0x000000000023f3d0: 0000000000000000 00002b631b0307df 0x000000000023f3e0: ffffffffffffffff ffffff00ffffffff 0x000000000023f3f0: 0000000000202020 0000000020000000 0x000000000023f400: 0000000000000000 00000000ffffff00 0x000000000023f410: 0000000000000254 0000000000000000 0x000000000023f420: 0000000000000000 0000000000000000 0x000000000023f430: 0000000000000000 0000000000000000 0x000000000023f440: 0000000000000000 0000000000000000 0x000000000023f450: 5b5b5b5b5b5b5b5b 0808080018000020 Backtrace: =>0 0x00002b631b0deede getDepthStencilBits+0x2e(format=(nil), depthSize="", stencilSize="") [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/utils.c:2598] in wined3d (0x000000000023f45a) 1 0x00002b631b0307df context_choose_pixel_format+0xfe(device=0x3e9f0, hdc=0x254, color_format=0x3b5e0, ds_format=(nil), auxBuffers=0, findCompatible=0) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/context.c:1139] in wined3d (0x0000000000032ed0) 2 0x00002b631b034b79 context_create+0xc8(swapchain=0x58b80, target=0x358f0, ds_format=(nil)) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/context.c:1350] in wined3d (0x0000000000032ed0) 3 0x00002b631b0d297b swapchain_get_context+0x7a(swapchain=0x58b80) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/swapchain.c:1179] in wined3d (0x00000000000358f0) 4 0x00002b631b03a155 context_acquire+0x314(device=0x3e9f0, target=0x358f0) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/context.c:2455] in wined3d (0x00000000000358f0) 5 0x00002b631b047858 wined3d_device_init_3d+0x497(device=0x3e9f0, present_parameters=0x23f810) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/device.c:1335] in wined3d (0x0000000000032ed0) 6 0x00002b631add142a device_init+0x1b9(device=0x36710, parent=0x2f380, wined3d=0x32eb0, adapter=<is not available>, device_type=<is not available>, focus_window=(nil), flags=0x40, parameters=0x23fae0) [/home/julliard/wine/build/obj-elf64/dlls/d3d8/../../../wine/dlls/d3d8/device.c:3112] in d3d8 (0x000000000023fae0) 7 0x00002b631add194b IDirect3D8Impl_CreateDevice+0x10a(iface=0x2f380, adapter=0, device_type=D3DDEVTYPE_HAL, focus_window=(nil), flags=0x40, parameters=0x23fae0, device=0x23fb38) [/home/julliard/wine/build/obj-elf64/dlls/d3d8/../../../wine/dlls/d3d8/directx.c:371] in d3d8 (0x0000000000036710) 8 0x00002b6316db08d7 func_buffer+0x196() [/home/julliard/wine/build/obj-elf64/dlls/d3d8/tests/../../../../wine/dlls/d3d8/tests/buffer.c:61] in d3d8_test (0x000000000023fb38) 9 0x00002b6316dd06c7 run_test+0x126(name="../../../../wine/dlls/d3d8/tests/buffer.c") [/home/julliard/wine/build/obj-elf64/dlls/d3d8/tests/../../../../wine/include/wine/test.h:556] in d3d8_test (0x00002b6316dd95d7) 10 0x00002b6316dd11f6 main+0x115(argc=<is not available>, argv=0x106f0) [/home/julliard/wine/build/obj-elf64/dlls/d3d8/tests/../../../../wine/include/wine/test.h:624] in d3d8_test (0x00000000000106f0) 11 0x00002b6316dd13fe __wine_spec_exe_entry+0xcd(peb=<is not available>) [/home/julliard/wine/build/obj-elf64/dlls/winecrt0/../../../wine/dlls/winecrt0/exe_entry.c:36] in d3d8_test (0x00002b630ed8a908) 12 0x000000007b87217f start_process+0xbe(peb=0x7fffffbef000) [/home/julliard/wine/build/obj-elf64/dlls/kernel32/../../../wine/dlls/kernel32/process.c:1056] in kernel32 (0x00002b6316dd1330) 13 0x00002b630f5e5f7b call_thread_func+0x6a(entry=0x7b8720c0, arg=0x7fffffbef000, frame=0x23f459) [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/signal_x86_64.c:3189] in ntdll (0x00007fffafa61d40) 14 0x00002b630f5df856 call_thread_entry_point+0x29() in ntdll (0x00007fffafa61d40) 15 0x00002b630f5b0b66 start_process+0x15(kernel_start=0x23fec8) [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/loader.c:2612] in ntdll (0x00007fffafa61d40) 16 0x00002b630ea64213 wine_call_on_stack+0x12() in libwine.so.1 (0x00007fffafa61d40) 17 0x00002b630ea64269 wine_switch_to_stack+0x8(func=<is not available>, arg=<is not available>, stack=<is not available>) [/home/julliard/wine/build/obj-elf64/libs/wine/../../../wine/libs/wine/port.c:59] in libwine.so.1 (0x00007fffffbef000) 18 0x00002b630f5b673e LdrInitializeThunk+0x3dd(kernel_start=0x7b8720c0, unknown2=<is not available>, unknown3=<is not available>, unknown4=<is not available>) [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/loader.c:2668] in ntdll (0x00007fffffbef000) 19 0x000000007b8788d2 __wine_kernel_init+0x921() [/home/julliard/wine/build/obj-elf64/dlls/kernel32/../../../wine/dlls/kernel32/process.c:1257] in kernel32 (0x00007fffafa62fd0) 20 0x00002b630f5b7174 __wine_process_init+0x253() [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/loader.c:2877] in ntdll (0x00007fffafa6321c) 21 0x00002b630ea621ef wine_init+0x29e(argc=<is not available>, argv=0x7fffafa637a8, error="", error_size=0x400) [/home/julliard/wine/build/obj-elf64/libs/wine/../../../wine/libs/wine/loader.c:831] in libwine.so.1 (0x00007fffafa632b0) 22 0x000000007bf00de1 main+0x70(argc=0x3, argv=0x7fffafa637a8) [/home/julliard/wine/build/obj-elf64/loader/../../wine/loader/main.c:228] in <wine-loader> (0x0000000000000003) 23 0x00002b630efedead __libc_start_main+0xfc(main=<is not available>, argc=<is not available>, ubp_av=<is not available>, init=<is not available>, fini=<is not available>, rtld_fini=<is not available>, stack_end=0x7fffafa63798) [/home/aurel32/eglibc/eglibc-2.13/csu/libc-start.c:228] in libc.so.6 (0x0000000000000000) 24 0x000000007bf00ca9 _start+0x28() in <wine-loader> (0x0000000000000000) 0x00002b631b0deede getDepthStencilBits+0x2e [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/utils.c:2598] in wined3d: movl (%rbx),%edi 2598 switch (format->id)