https://bugs.winehq.org/show_bug.cgi?id=30600
--- Comment #9 from Anastasius Focht focht@gmx.net --- Hello folks,
quartz is not the blocking issue here - unlike in 'Emergency 4'. The older game seems to handle failure to play intro video better.
My test (comment #3, 2012) was with NVIDIA blob -> ok.
I encountered two problems with my current machines that are either pure Mesa/Nouveau or "Bumblebee/Optimus" with Mesa/Intel and NVIDIA Blob.
First one is with Mesa/Intel and Mesa/Noveuau setups: they fail very early.
--- snip --- $ glxinfo | grep OpenGL OpenGL vendor string: nouveau OpenGL renderer string: Gallium 0.4 on NVC1 OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.6.3 (git-ccef890) OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 10.6.3 (git-ccef890) OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.6.3 (git-ccef890) OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions: --- snip ---
--- snip --- $ glxinfo | grep OpenGL OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.6.3 (git-ccef890) OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 10.6.3 (git-ccef890) OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.6.3 (git-ccef890) OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions: --- snip ---
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/sixteen tons entertainment/Emergency 3 Demo
$ WINEDEBUG=+tid,+seh,+relay,+wgl wine ./Em3.exe >>log.txt 2>&1 ... 0028:Call gdi32.ChoosePixelFormat(000c0031,008821e0) ret=00662b04 0028:Call opengl32.wglChoosePixelFormat(000c0031,008821e0) ret=7eb6e548 0028:trace:wgl:wglChoosePixelFormat 0xc0031 0x8821e0: size 40 version 1 flags 45 type 0 color 32 0,0,0,0 accum 0 depth 16 stencil 0 aux 0 0028:Call gdi32.__wine_get_wgl_driver(000c0031,0000000d) ret=7a8c3fb9 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo GL version : 3.0 Mesa 10.6.3 (git-ccef890). 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo GL renderer : Gallium 0.4 on NVC1. 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo GLX version : 1.4. 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo Server GLX version : 1.4. 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo Server GLX vendor: : SGI. 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo Client GLX version : 1.4. 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo Client GLX vendor: : Mesa Project and SGI. 0028:trace:wgl:X11DRV_WineGL_InitOpenglInfo Direct rendering enabled: True 0028:trace:wgl:has_opengl GLX is up and running error_base = 170 0028:trace:wgl:register_extension 'WGL_ARB_create_context' 0028:trace:wgl:register_extension 'WGL_ARB_create_context_profile' 0028:trace:wgl:register_extension 'WGL_ARB_pixel_format_float' 0028:trace:wgl:register_extension 'WGL_ATI_pixel_format_float' 0028:trace:wgl:register_extension 'WGL_ARB_extensions_string' 0028:trace:wgl:register_extension 'WGL_ARB_make_current_read' 0028:trace:wgl:register_extension 'WGL_ARB_multisample' 0028:trace:wgl:register_extension 'WGL_ARB_pbuffer' 0028:trace:wgl:register_extension 'WGL_ARB_pixel_format' 0028:trace:wgl:register_extension 'WGL_ARB_render_texture' 0028:trace:wgl:register_extension 'WGL_NV_render_texture_rectangle' 0028:trace:wgl:register_extension 'WGL_EXT_extensions_string' 0028:trace:wgl:register_extension 'WGL_EXT_swap_control' 0028:trace:wgl:register_extension 'WGL_EXT_framebuffer_sRGB' 0028:trace:wgl:register_extension 'WGL_WINE_pixel_format_passthrough' 0028:trace:wgl:init_pixel_formats Found 120 bitmap capable fbconfigs ... 0028:Call gdi32.SetPixelFormat(000c0031,0000000a,008821e0) ret=00662b15 0028:Call opengl32.wglSetPixelFormat(000c0031,0000000a,008821e0) ret=7eb6e6f4 0028:Call gdi32.__wine_get_wgl_driver(000c0031,0000000d) ret=7a8c3fb9 0028:Ret gdi32.__wine_get_wgl_driver() retval=7d63cd40 ret=7a8c3fb9 0028:trace:wgl:set_pixel_format (0xc0031,10) 0028:trace:wgl:get_pixel_format Returning fmt_id=0x91 for iPixelFormat=10 0028:trace:wgl:set_pixel_format FBConfig have : 0028:trace:wgl:set_pixel_format - FBCONFIG_ID 0x91 0028:trace:wgl:set_pixel_format - VISUAL_ID 0x1f9 0028:trace:wgl:set_pixel_format - DRAWABLE_TYPE 0x7 0028:trace:wgl:set_win_format created GL drawable 4400003 for win 0x1006c format 91 0028:Call winex11.drv.WindowPosChanging(0001006c,00000000,0000181f,00dcfa20,00dcfa10,00dcf9a8,00dcf984) ret=7ecd82ba 0028:Ret winex11.drv.WindowPosChanging() retval=00000000 ret=7ecd82ba 0028:Call winex11.drv.WindowPosChanged(0001006c,00000000,0000181f,00dcfa20,00dcfa10,00dcf9a8,00000000,00000000) ret=7ecd87a9 0028:Ret winex11.drv.WindowPosChanged() retval=00000000 ret=7ecd87a9 0028:Ret opengl32.wglSetPixelFormat() retval=00000001 ret=7eb6e6f4 0028:Ret gdi32.SetPixelFormat() retval=00000001 ret=00662b15 0028:Call opengl32.wglCreateContext(000c0031) ret=00662b20 0028:Call gdi32.__wine_get_wgl_driver(000c0031,0000000d) ret=7a8c3fb9 0028:Ret gdi32.__wine_get_wgl_driver() retval=7d63cd40 ret=7a8c3fb9 0028:trace:wgl:glxdrv_wglCreateContext 0xc0031 -> 0x15b838 0028:Call ntdll.RtlAllocateHeap(00110000,00000008,00000018) ret=7a8c4b93 0028:Ret ntdll.RtlAllocateHeap() retval=00156360 ret=7a8c4b93 0028:Ret opengl32.wglCreateContext() retval=00011000 ret=00662b20 0028:Call opengl32.wglMakeCurrent(000c0031,00011000) ret=00662b2e 0028:trace:wgl:glxdrv_wglMakeCurrent (0xc0031,0x15b838) 0028:trace:wgl:describeContext Context 0x15b838 have (vis:0x7c8dd378): 0028:trace:wgl:describeContext - FBCONFIG_ID 0x91 0028:trace:wgl:describeContext - VISUAL_ID 0x1f9 0028:trace:wgl:glxdrv_wglMakeCurrent hdc 0xc0031 drawable 4400003 fmt 0x159ac0 ctx 0x7c8dd510 X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 154 (GLX) Minor opcode of failed request: 3 (X_GLXCreateContext) Value in failed request: 0x0 Serial number of failed request: 196 Current serial number in output stream: 197 --- snip ---
Works with NVIDIA blob:
--- snip --- $ glxinfo | grep OpenGL OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: GeForce GTX 850M/PCIe/SSE2 OpenGL core profile version string: 4.4.0 NVIDIA 352.21 OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 4.5.0 NVIDIA 352.21 OpenGL shading language version string: 4.50 NVIDIA OpenGL context flags: (none) OpenGL profile mask: (none) OpenGL extensions: --- snip ---
With NVIDIA blob I encountered another albeit expected issue...
Use of "Virtual Desktop" mode and choosing various in-game resolutions from game launcher dialog.
--- snip --- $ wine explorer /desktop=foo,800x600 ./Em3.exe # game launcher selection 800x600 = ok
$ wine explorer /desktop=foo,800x600 ./Em3.exe # game launcher selection 1024x768 = ok, resized (enlarged) virtual desktop
$ wine explorer /desktop=foo,800x600 ./Em3.exe # game launcher selection 1280x960 = crash (fails to switch mode)
$ wine explorer /desktop=foo,800x600 ./Em3.exe # game launcher selection 1280x1024 = ok, resized (enlarged) virtual desktop
$ wine explorer /desktop=foo,1280x960 ./Em3.exe # game launcher selection 1280x960 = ok
$ wine explorer /desktop=foo,1280x960 ./Em3.exe # game launcher selection 1280x1024 = ok, resized (enlarged) virtual desktop --- snip ---
Relevant part of trace log for failing case (vgl is some custom gl/wrapper the game engine uses):
--- snip --- ... 0037:CALL vision71.?Init@VisVideo_cl@@QAEJPBD0P6AXPAUHWND__@@IIJ@Z@Z(<unknown, check return>) ret=006639de 0037:CALL vBase71.?VGLInitialize@@YAJPAD0P6AXPAUHWND__@@IIJ@Z@Z(<unknown, check return>) ret=1003f169 ... 0037:Call KERNEL32.LoadLibraryA(002b117c "OpenGL32.dll") ret=0027b952 0037:Ret KERNEL32.LoadLibraryA() retval=7a840000 ret=0027b952 0037:RET vBase71.?VGLInitialize@@YAJPAD0P6AXPAUHWND__@@IIJ@Z@Z() retval=00000000 ret=1003f169 ... 0037:Call msvcr71.strncpy(00ddbaba,00dcdc38 "Initialising video driver: 0\r\n",0000001e) ret=10011958 ... 0037:RET vision71.?Init@VisVideo_cl@@QAEJPBD0P6AXPAUHWND__@@IIJ@Z@Z(00e02468,00e02468,00000000) retval=00000000 ret=006639de 0037:CALL vision71.?SaveGamma@VisVideo_cl@@QAEXXZ(<unknown, check return>) ret=006639f8 0037:CALL vBase71.?VGLGetGammaRamp@@YAJPAM00@Z(101663e4,101667e4,10166be4) ret=1003f278 ... 0037:RET vBase71.?VGLGetGammaRamp@@YAJPAM00@Z() retval=00000000 ret=1003f278 0037:RET vision71.?SaveGamma@VisVideo_cl@@QAEXXZ() retval=00000000 ret=006639f8 ... 0037:CALL vision71.?SetMode@VisVideo_cl@@QAEJHHJJHHH@Z(<unknown, check return>) ret=0066378b 0037:CALL vBase71.?VGLSetScreen@@YAJPAUVGLMode_t@@PAUHWND__@@@Z(<unknown, check return>) ret=1003f329 0037:Call KERNEL32.GetProcAddress(7ecc0000,002b6792 "GetClientRect") ret=002a74e6 0037:Ret KERNEL32.GetProcAddress() retval=7ecc99e8 ret=002a74e6 0037:Call user32.GetClientRect(0001009c,00dcfbd8) ret=0027a9b8 0037:Ret user32.GetClientRect() retval=00000001 ret=0027a9b8 0037:Call user32.EnumDisplaySettingsA(00000000,00000000,00dcfb08) ret=0027a5ce 0037:Call winex11.drv.EnumDisplaySettingsEx(00000000,00000000,00dcf980,00000000) ret=7ed40e11 0037:Ret winex11.drv.EnumDisplaySettingsEx() retval=00000001 ret=7ed40e11 0037:Ret user32.EnumDisplaySettingsA() retval=00000001 ret=0027a5ce ... 0037:Call user32.EnumDisplaySettingsA(00000000,0000001e,00dcfb08) ret=0027a5ce 0037:Call winex11.drv.EnumDisplaySettingsEx(00000000,0000001e,00dcf980,00000000) ret=7ed40e11 0037:Ret winex11.drv.EnumDisplaySettingsEx() retval=00000000 ret=7ed40e11 0037:Ret user32.EnumDisplaySettingsA() retval=00000000 ret=0027a5ce 0037:RET vBase71.?VGLSetScreen@@YAJPAUVGLMode_t@@PAUHWND__@@@Z() retval=fffffe6e ret=1003f329 ... 0037:Call msvcr71.strncpy(00ddbad8,00dcdbc0 "Setting screen mode to x:1280 / y:960 / bpp:32 / refresh:0\r\n",0000003c) ret=10011958 ... 0037:Call msvcr71.strncpy(00ddbb14,00dcdbd4 "Screen Mode is fullscreen, return value: -402\r\n",0000002f) ret=10011958 ... 0037:Call msvcr71.strncpy(00ddbb43,00dcdbd0 "Stencil buffer: 0 bit / ZBuffer: 24 bit\r\n",00000029) ret=10011958 ... 0037:CALL vBase71.?VGLRestoreScreen@@YAXXZ(<unknown, check return>) ret=1003f399 ... 0037:Call user32.ChangeDisplaySettingsA(002e6868,00000004) ret=0027a480 ... 0037:Ret user32.ChangeDisplaySettingsA() retval=00000000 ret=0027a486 ... 0037:RET vBase71.?VGLRestoreScreen@@YAXXZ() retval=00000000 ret=1003f399 0037:RET vision71.?SetMode@VisVideo_cl@@QAEJHHJJHHH@Z(00000500,000003c0,00000020,00000018,00000001,00000000,0001009c) retval=fffffe6e ret=0066378b ... 0037:Call msvcr71._vsnprintf(00e13e50,00000800,008325d8 "?VulpineWrapper::ChangeScreenMode(): VERR_NOSCREENMODE - Screen mode could not be set",00dcfc44) ret=00598545 ... --- snip ---
At this point the game continues to initialize further (input, sound) and finally hits some code that was skipped due to failure to switch screen mode (GL extensions/function pointer table -> NULL)
So what's the actual problem this bug is about?
$ sha1sum Emergency3_Demo_JeuxVideo.com_9549.zip 719b6857cfe3ec14f4ae5107506095f85be7f08e Emergency3_Demo_JeuxVideo.com_9549.zip
$ du -sh Emergency3_Demo_JeuxVideo.com_9549.zip 75M Emergency3_Demo_JeuxVideo.com_9549.zip
$ wine --version wine-1.7.51
Regards