Hi,
while trying to fix the bug I posted a few days ago, the game's developer pointed out on request that the ingame shader issues are not related to the graphics card detection but more likely to a failing shader compilation.
They are using d3d9_33.dll for development and recommended to try with this version. I've thus removed all other versions of the library and also deleted the game's cached shaders. The game now crashes on startup with the following error: fixme:d3d_surface:flush_to_framebuffer_drawpixels >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glDrawPixels @ surface.c / 1061
If I use d3d9_31.dll instead, the shaders are compiled and the game starts but the water is again looking like a low-end fallback.
Any ideas on this?
Regards,
the game's cached shaders. The game now crashes on startup with the following error: fixme:d3d_surface:flush_to_framebuffer_drawpixels >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glDrawPixels @ surface.c / 1061
You should try running the app with '+d3d_surface' on. The fixme you show indicates a GL_INVALID_VALUE, this crash is either from glDrawPixels or a call before it as we don't have glError calls around each function. Likely some parameter to the function is invalid.
Roderick
On Wednesday 16 January 2008 18:41:46 you wrote:
the game's cached shaders. The game now crashes on startup with the following error: fixme:d3d_surface:flush_to_framebuffer_drawpixels >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glDrawPixels @ surface.c / 1061
You should try running the app with '+d3d_surface' on.
Here is (hopefully relevant) output with +d3d_surface set:
trace:d3d_surface:IWineD3DSurfaceImpl_LoadLocation Surface 0x4e8fdf0 is an onscreen surface trace:d3d_surface:IWineD3DSurfaceImpl_LoadLocation (0x4e8fdf0)->(SFLAG_INDRAWABLE, (nil)) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) Returning 6400 trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) Returning 6400 trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetContainer (This 0x4e8fdf0, riid {34d01b10-6f30-11d9-c687-00046142c14f}, ppContainer 0x1a9daa8) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetContainer Relaying to QueryInterface trace:d3d_surface:surface_get_gl_buffer (0x4e8fdf0) : swapchain 0x4e7cc58 trace:d3d_surface:surface_get_gl_buffer Returning GL_BACK trace:d3d_surface:flush_to_framebuffer_drawpixels Unlocking 0x405 buffer trace:d3d_surface:flush_to_framebuffer_drawpixels glDrawBuffer call ok surface.c / 1015 fixme:d3d_surface:flush_to_framebuffer_drawpixels >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glDrawPixels @ surface.c / 1061 trace:d3d_surface:flush_to_framebuffer_drawpixels glDrawBuffer(GL_BACK) call ok surface.c / 1087 trace:d3d_surface:IWineD3DSurfaceImpl_ModifyLocation (0x4e8fdf0)->(SFLAG_INDRAWABLE, TRUE) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetContainer (This 0x4e8fdf0, riid {34d01b10-6f30-11d9-c687-00046142c14f}, ppContainer 0x1a9dbc0)
Let me know if more info is needed.
-------- Original-Nachricht --------
Datum: Wed, 16 Jan 2008 19:12:31 +0100 Von: Markus kde@graph-ix.net An: "Roderick Colenbrander" thunderbird2k@gmx.net, wine-devel@winehq.org Betreff: Re: Shader compiler GL error
On Wednesday 16 January 2008 18:41:46 you wrote:
the game's cached shaders. The game now crashes on startup with the following error: fixme:d3d_surface:flush_to_framebuffer_drawpixels >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glDrawPixels @ surface.c / 1061
You should try running the app with '+d3d_surface' on.
Here is (hopefully relevant) output with +d3d_surface set:
trace:d3d_surface:IWineD3DSurfaceImpl_LoadLocation Surface 0x4e8fdf0 is an onscreen surface trace:d3d_surface:IWineD3DSurfaceImpl_LoadLocation (0x4e8fdf0)->(SFLAG_INDRAWABLE, (nil)) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) Returning 6400 trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetPitch (0x4e8fdf0) Returning 6400 trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetContainer (This 0x4e8fdf0, riid {34d01b10-6f30-11d9-c687-00046142c14f}, ppContainer 0x1a9daa8) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetContainer Relaying to QueryInterface trace:d3d_surface:surface_get_gl_buffer (0x4e8fdf0) : swapchain 0x4e7cc58 trace:d3d_surface:surface_get_gl_buffer Returning GL_BACK trace:d3d_surface:flush_to_framebuffer_drawpixels Unlocking 0x405 buffer trace:d3d_surface:flush_to_framebuffer_drawpixels glDrawBuffer call ok surface.c / 1015 fixme:d3d_surface:flush_to_framebuffer_drawpixels >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glDrawPixels @ surface.c / 1061 trace:d3d_surface:flush_to_framebuffer_drawpixels glDrawBuffer(GL_BACK) call ok surface.c / 1087 trace:d3d_surface:IWineD3DSurfaceImpl_ModifyLocation (0x4e8fdf0)->(SFLAG_INDRAWABLE, TRUE) trace:d3d_surface:IWineD3DBaseSurfaceImpl_GetContainer (This 0x4e8fdf0, riid {34d01b10-6f30-11d9-c687-00046142c14f}, ppContainer 0x1a9dbc0)
You should get see what gets passed to glDrawPixels. According to the opengl man pages GL_INVALID_VALUE can occur if e.g. the dimensions are invalid. If these are indeed invalid, you need to figure out why they are wrong (I see that the pitch is 6400, which could mean a width of 1600 assuming bpp=4)
Roderick
On Wednesday 16 January 2008 20:31:51 you wrote:
fixme:d3d_surface:flush_to_framebuffer_drawpixels >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glDrawPixels @ surface.c / 1061
You should get see what gets passed to glDrawPixels. According to the opengl man pages GL_INVALID_VALUE can occur if e.g. the dimensions are invalid. If these are indeed invalid, you need to figure out why they are wrong (I see that the pitch is 6400, which could mean a width of 1600 assuming bpp=4)
This is a trace of the variables used to create the glDrawPixels call:
trace:d3d_surface:flush_to_framebuffer_drawpixels right 0, left 0, bottom 0, top 0, mem 0x5db0040, bpp 4, pitch 6400
I assume GL is complaining because the rectangle passed to it has a size of (0,-1).
Adding a simple right>left and bottom>top condition at least resolves this error. However, whether that is correctly emulating D3D behavior, I don't know.