http://bugs.winehq.org/show_bug.cgi?id=20591
Summary: FIFA 08: crashes when starting a match Product: Wine Version: 1.1.31 Platform: PC URL: http://largedownloads.ea.com/pub/demos/Fifa/08/FIFA08_ PC_Demo.exe OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d AssignedTo: wine-bugs@winehq.org ReportedBy: b.brachaczek@gmail.com CC: stefandoesinger@gmx.at
FIFA 08 (also demo version, link in URL) crashes when starting a match (you see some frames, and when the game is going to show players, it crashes) in Wine 1.1.31 and later (also in current git). This was introduced in this commit:
wined3d: Don't reserve clipping constants needlessly. author Stefan Dösinger stefan@codeweavers.com Tue, 6 Oct 2009 18:59:44 +0000 (20:59 +0200) commit 8a68f418dbea0967003818e5bbac10e5ffc22512
I added the following code right before the new if..else clause in dlls/wined3d/arb_program_shader.c in current git:
FIXME("clip_limit: gl_info->limits.clipplanes = %u\n", gl_info->limits.clipplanes); FIXME("clip_limit: ctx->target_version = %u (ARB = %d)\n", ctx->target_version, ARB); FIXME("clip_limit: use_nv_clip(gl_info) = %d, ctx->target_version >= NV2 = %d\n", use_nv_clip(gl_info), ctx->target_version >= NV2); unsigned int __mask = ctx->cur_vs_args->boolclip.clipplane_mask; FIXME("clip_limit: mask = %u\n", __mask); FIXME("clip_limit: count_bits(mask) = %u\n", count_bits(__mask));
And got those messages right before the crash:
fixme:d3d_shader:shader_generate_arb_declarations clip_limit: gl_info->limits.clipplanes = 6 fixme:d3d_shader:shader_generate_arb_declarations clip_limit: ctx->target_version = 0 (ARB = 0) fixme:d3d_shader:shader_generate_arb_declarations clip_limit: use_nv_clip(gl_info) = 0, ctx->target_version >= NV2 = 0 fixme:d3d_shader:shader_generate_arb_declarations clip_limit: mask = 0 fixme:d3d_shader:shader_generate_arb_declarations clip_limit: count_bits(mask) = 0
And by the way I've also tried adding the following code in place of this if..else clause in the current git: clip_limit = gl_info->limits.clipplanes; if(ctx->target_version == ARB) clip_limit = min(clip_limit, 4); And FIFA doesn't crash then, but I guess it's not the proper way to fix the problem.
http://bugs.winehq.org/show_bug.cgi?id=20591
Bartosz Brachaczek b.brachaczek@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, regression
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #1 from Bartosz Brachaczek b.brachaczek@gmail.com 2009-11-06 07:22:37 --- And by the way I have Radeon 9550 (RV350) running on open source radeon driver if it changes anything.
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #2 from Stefan Dösinger stefandoesinger@gmx.at 2009-11-06 15:53:17 --- Can you post a backtrace of the crash? I guess we're not checking a NULL pointer somewhere, or wrongly assume that certain extensions or GPU features are available, and thus run into a NULL pointer dereference because some object is not created.
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #3 from Bartosz Brachaczek b.brachaczek@gmail.com 2009-11-06 18:51:14 --- Hm, I realized that actually it doesn't crash. It just exits with error code 255 (or -1). I'm attaching a log (probably useless).
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #4 from Bartosz Brachaczek b.brachaczek@gmail.com 2009-11-06 18:52:50 --- Created an attachment (id=24572) --> (http://bugs.winehq.org/attachment.cgi?id=24572) simple log from wine
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #5 from Bartosz Brachaczek b.brachaczek@gmail.com 2009-11-06 19:27:44 --- I think that it might be a bug in Mesa, not in Wine. I thought that this "Params exhasted" message is interesting so I looked at source code of r300VertexProgUpdateParams() function in Mesa DRI r300 driver and found this code:
if (vp->code.constants.Count * 4 > VSF_MAX_FRAGMENT_LENGTH) { /* Should have checked this earlier... */ fprintf(stderr, "%s:Params exhausted\n", __FUNCTION__); _mesa_exit(-1); }
If someone with different GPU is able to run FIFA 08 successfully (I cannot test), then it's definitely a bug in Mesa.
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #6 from Bartosz Brachaczek b.brachaczek@gmail.com 2009-11-06 20:09:30 --- I compiled libdrm and mesa from git and now FIFA 08 doesn't exit. Mesa bug was fixed in http://cgit.freedesktop.org/mesa/mesa/commit/?id=3594b53c0173ac810106f667604... . But now players aren't displayed (it look like there were no players at all; all other textures are ok) and thus the game is still unplayable. Can someone with another GPU check this?
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #7 from Stefan Dösinger stefandoesinger@gmx.at 2009-11-07 03:24:27 --- Its pretty likely that this patch triggers an out-of-constants situation, especially if the driver is managing them inefficiently or using some private constants. After all this patch was intended to free up 6 constants that aren't actually used, so the app has more of them available.
http://bugs.winehq.org/show_bug.cgi?id=20591
Bartosz Brachaczek b.brachaczek@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|FIFA 08: crashes when |FIFA 08: players are not |starting a match |displayed
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #8 from Jörg Höhle hoehle@users.sourceforge.net 2009-12-09 06:18:32 --- Created an attachment (id=25138) --> (http://bugs.winehq.org/attachment.cgi?id=25138) GL errors messages from the console triggered by the regression
But now players aren't displayed
Maybe it's the same issue with Lego Star Wars II on Intel. The regression is the same: commit 8a68f418dbea0967003818e5bbac10e5ffc22512 Author: Stefan Dösinger stefan@codeweavers.com Date: Tue Oct 6 20:59:44 2009 +0200 wined3d: Don't reserve clipping constants needlessly.
Since then in LSWII, the minifigs display without body, legs, arms, mouth or eyes on Intel i915 on Linux. Previously the rendering was perfect. Now only 3 pieces are rendered: the head (without eyes), the hair and the hips. Looks like ghosts moving. The parts that are now missing are the animated ones (legs move, eyes roll, body twists).
The attached log snippet shows: fixme:d3d_shader:shader_arb_generate_vshader HW VertexShader Error at position 218: "Too many parameter variables"
No regression on MacOS with nVidia graphics.
Using Ubuntu Intrepid. Beside that, I saw no other visual glitch in the app.
http://bugs.winehq.org/show_bug.cgi?id=20591
Michael Stefaniuc mstefani@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |mstefani@redhat.com Ever Confirmed|0 |1
--- Comment #9 from Michael Stefaniuc mstefani@redhat.com 2010-11-15 17:31:20 CST --- Confirming as per comment #8
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #10 from Stefan Dösinger stefandoesinger@gmx.at 2011-07-26 16:54:47 CDT --- After reading the posts in this bug again I think we should close this bug as invalid. The complaint from mesa that program parameters are exhausted strongly suggests that mesa can't provide the number of parameters it claims it supports.
If this was a binary driver I'd add a quirk in our driver quirk table that subtracts a few parameters from the number the driver claims it supports, like we do on OSX or fglrx. But Since this is Mesa there is a decent chance that the driver gets fixed.
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #11 from Austin English austinenglish@gmail.com 2011-07-26 17:28:32 CDT --- (In reply to comment #10)
After reading the posts in this bug again I think we should close this bug as invalid. The complaint from mesa that program parameters are exhausted strongly suggests that mesa can't provide the number of parameters it claims it supports.
A mesa bug should be filed and linked here, before closing this as invalid.
http://bugs.winehq.org/show_bug.cgi?id=20591
Henri Verbeet hverbeet@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |8a68f418dbea0967003818e5bba | |c10e5ffc22512
http://bugs.winehq.org/show_bug.cgi?id=20591
Stefan Dösinger stefan@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefan@codeweavers.com
--- Comment #12 from Stefan Dösinger stefan@codeweavers.com 2012-01-21 14:54:28 CST --- Does this bug still occur with wine git and a modern Mesa release? A few weeks ago I removed a fglrx hack that lowered the amount of uniforms, although I'd expect this change to make this specific problem worse, not better. Please test with the glsl shader backend, although I'm interested in the ARB shader result as well.
http://bugs.winehq.org/show_bug.cgi?id=20591
Jörg Höhle hoehle@users.sourceforge.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hoehle@users.sourceforge.ne | |t
--- Comment #13 from Jörg Höhle hoehle@users.sourceforge.net 2012-02-22 16:55:31 CST --- No modern mesa here, sorry. Lego Star Wars 2 still shows ghosts only, with: fixme:d3d_shader:shader_arb_generate_vshader HW VertexShader Error at position 234: "Too many parameter variables" and thousands of err:d3d_draw:drawStridedFast >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glDrawElements @ drawprim.c / 52
Graphics have regressed: In wine-1.4rc4 I observe the inverted "picture in picture" known from Mac OS bug #22029, comment #4 now on Intel too, e.g. when hitting Esc or during some animations or transitions.
http://bugs.winehq.org/show_bug.cgi?id=20591
lizhenbo litimetal@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |litimetal@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=20591
--- Comment #14 from lizhenbo litimetal@gmail.com 2013-01-31 20:09:19 CST --- Works fine in wine-1.5.22-254-gc14bdaf Fedora 16 32-bit, AMD A6-3670 (Radeon HD 6530D) Catalyst 12.10 Maybe you should try to update Wine.
http://bugs.winehq.org/show_bug.cgi?id=20591
Henri Verbeet hverbeet@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |UPSTREAM
--- Comment #15 from Henri Verbeet hverbeet@gmail.com 2013-06-12 05:41:12 CDT --- I'm going to close this as UPSTREAM, since the original crash has been fixed for a long time in Mesa. The constant issue is essentially a hardware limit, although with some GL extensions it could perhaps be mitigated enough. That part is pretty much a duplicate of bug 7991.
http://bugs.winehq.org/show_bug.cgi?id=20591
Henri Verbeet hverbeet@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #16 from Henri Verbeet hverbeet@gmail.com 2013-06-12 05:41:31 CDT --- Closing.