http://bugs.winehq.org/show_bug.cgi?id=22459
Stefan Dösinger stefandoesinger@gmx.at changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefandoesinger@gmx.at
--- Comment #6 from Stefan Dösinger stefandoesinger@gmx.at 2011-09-25 11:04:30 CDT --- Wine does not support pixel shaders on this card. For Pixel Shader support we need at least GL_ARB_fragment_program, which sort of matches Shader Model 2.0 on Windows. This card supports shader model 1.4. The OpenGL equivalent of this is GL_ATI_fragment_shader, which is a vendor specific extension and only supported on r200 chips(radeon 8500 to radeon 9200).
We have a fixed function pipeline replacement with GL_ATI_fragment_shader(see dlls/wined3d/ati_fragment_shader.c). We could implement Pixel Shader 1.4 with it, but we have very few users with this card, so it's not likely to happen. It is mostly a fill-in-the-blanks work, the infrastructure for supporting another shader model is in place. The biggest challenges are maintaining it in the long term and testing it.
From the log: Mesa 7.12-devel implementation error: Unexpected texture format in radeon_update_wrapper() Please report at bugs.freedesktop.org
This also happens with the wine tests. I wanted to add this on the Mesa bug, but I don't have my password at the moment(different keychain). For the Mesa devs debugging the tests may be easier than debugging NFS:MW.
Mesa: User error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_FALSE) err:d3d_surface:surface_allocate_surface >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glTexImage2D @ surface.c / 2338
This suggests we're trying to create a texture with an unsupported format. A +d3d_surface log might reveal which format this is.
err:d3d_shader:shader_arb_select >>>>>>>>>>>>>>>>> GL_INVALID_ENUM (0x500) from glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, priv->current_fprogram_id); @ arb_program_shader.c / 4589
The game is trying to create a pixel shader here, and GL complains that it can't do that(see above). Wine is missing some checks here and report an error to the application as well. According to amazon the minimum requirement for this app is a Radeon 7500. If this is true, reporting an error to the app may make it fall back to the fixed function pipeline.
fixme:d3d_shader:shader_arb_generate_vshader HW VertexShader Error at position 658: "line 21, char 21: error: invalid texture coordinate unit selector\n"
I fixed this about a week ago. Or rather, made a change that might have swept this under the rug, the actual problem is still there and needs fixing.