Stefan Dösinger stefan@codeweavers.com writes:
From f49fd192ed2747663bdb0445dff9d602519fbc95 Mon Sep 17 00:00:00 2001 From: Stefan Doesinger stefan@codeweavers.com Date: Fri, 3 Aug 2007 20:26:29 +0200 Subject: [PATCH] WineD3D: Optimize float constants in stateblocks
dlls/wined3d/device.c | 24 +++++++++++++- dlls/wined3d/stateblock.c | 68 +++++++++++++++++++++------------------- dlls/wined3d/wined3d_private.h | 4 ++ 3 files changed, 62 insertions(+), 34 deletions(-)
This one is broken:
../../../tools/runtest -q -P wine -M d3d8.dll -T ../../.. -p d3d8_test.exe.so device.c && touch device.ok wine: Unhandled page fault on write access to 0x000000f6 at address 0x61aad11c (thread 0039), starting debugger... WineDbg starting on pid 003a Unhandled exception: page fault on write access to 0x000000f6 in 32-bit code (0x61aad11c). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:61aad11c ESP:0033fa90 EBP:0033fac8 EFLAGS:00010202( - 00 - -RI1) EAX:000000f6 EBX:61b3ae04 ECX:00000001 EDX:00000000 ESI:001bd4d0 EDI:001c6f78 Stack dump: 0x0033fa90: 001bd4d0 001bd4e4 00000001 00000000 0x0033faa0: 00000000 00000000 00000000 602d53b1 0x0033fab0: 00000000 00000000 0000002b 617da640 0x0033fac0: 617dad24 001bd4b8 0033faf8 617caebf 0x0033fad0: 00123d30 00000001 001bd4c0 001bd4b8 0x0033fae0: 606e97df 0000005c 617cae3b 60715808 Backtrace: =>1 0x61aad11c IWineD3DDeviceImpl_CreateStateBlock+0x3dc(iface=0x123d30, Type=0x1, ppStateBlock=0x1bd4c0, parent=0x1bd4b8) [/home/julliard/wine/wine/dlls/wined3d/device.c:478] in wined3d (0x0033fac8) 2 0x617caebf IDirect3DDevice8Impl_CreateStateBlock+0x8f(iface=0x121780, Type=0x1, pToken=0x33fe08) [/home/julliard/wine/wine/dlls/d3d8/device.c:1177] in d3d8 (0x0033faf8) 3 0x606e1260 func_device+0x2190() [/home/julliard/wine/wine/dlls/d3d8/tests/device.c:528] in d3d8_test (0x0033fe58) 4 0x606e8818 run_test+0x128(name=0x1103c5) [/home/julliard/wine/wine/dlls/d3d8/tests/../../../include/wine/test.h:389] in d3d8_test (0x0033fea8) 5 0x606e8ead main+0x14d(argc=<register ECX not in topmost frame>, argv=<register ECX not in topmost frame>) [/home/julliard/wine/wine/dlls/d3d8/tests/../../../include/wine/test.h:437] in d3d8_test (0x0033fed8) 6 0x606e958b __wine_spec_exe_entry+0x5b(peb=0x7ffdf000) [/home/julliard/wine/wine/dlls/winecrt0/exe_entry.c:36] in d3d8_test (0x0033ff08) 7 0x6041352e start_process+0xee(arg=0x0) [/home/julliard/wine/wine/dlls/kernel32/process.c:820] in kernel32 (0x0033ffe8) 8 0x60027997 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000) 0x61aad11c IWineD3DDeviceImpl_CreateStateBlock+0x3dc [/home/julliard/wine/wine/dlls/wined3d/device.c:478] in wined3d: movl %edx,0x0(%eax,%edx,4) 478 object->contained_vs_consts_f[j] = j;
Am Dienstag, 14. August 2007 20:56 schrieb Alexandre Julliard:
Stefan Dösinger stefan@codeweavers.com writes:
From f49fd192ed2747663bdb0445dff9d602519fbc95 Mon Sep 17 00:00:00 2001 From: Stefan Doesinger stefan@codeweavers.com Date: Fri, 3 Aug 2007 20:26:29 +0200 Subject: [PATCH] WineD3D: Optimize float constants in stateblocks
This one is broken:
Actually it is perfectly OK, the previous one isbroken...
DWORD contained_transform_states[WINEHIGHEST_RENDER_STATE + 1];