http://bugs.winehq.org/show_bug.cgi?id=58460
Bug ID: 58460 Summary: Application crashes when you run on generic video adapter Product: Wine Version: 10.11 Hardware: x86-64 OS: Windows Status: UNCONFIRMED Severity: major Priority: P2 Component: d3d Assignee: wine-bugs@winehq.org Reporter: svyatpro@gmail.com
For example you run Firefox on Windows with WineD3D and you have basic VBOX graphics adapter.
096c:trace:d3d:wined3d_init Initialising adapters. 096c:trace:d3d:wined3d_adapter_gl_init adapter_gl 17DAD470, ordinal 0, wined3d_creation_flags 0. 096c:trace:d3d:wined3d_adapter_init adapter 17DAD470 LUID 00000000:00044065. 096c:trace:d3d:wined3d_output_init output 17D84DE0, device_name L"\\.\DISPLAY1". 096c:trace:d3d:wined3d_adapter_create_output Initialised output L"\\.\DISPLAY1". 096c:trace:d3d:wined3d_adapter_init Initialised 1 outputs for adapter 17DAD470. 096c:trace:d3d:wined3d_caps_gl_ctx_create getting context... 096c:trace:d3d:wined3d_adapter_init_gl_caps adapter_gl 17DAD470. 096c:trace:d3d:wined3d_adapter_init_gl_caps GL_RENDERER: "GDI Generic". 096c:trace:d3d:wined3d_adapter_init_gl_caps GL_VENDOR: "Microsoft Corporation". 096c:trace:d3d:wined3d_adapter_init_gl_caps GL_VERSION: "1.1.0". 096c:trace:d3d:wined3d_parse_gl_version Found OpenGL version 1.1. 096c:trace:d3d:wined3d_adapter_init_gl_caps GL extensions reported: 96c:trace:d3d:parse_extension_string - "GL_WIN_swap_hint". 096c:trace:d3d:parse_extension_string - "GL_EXT_bgra". 096c:trace:d3d:parse_extension_string - "GL_EXT_paletted_texture". 096c:warn:d3d:wined3d_adapter_init_gl_caps WGL extensions not supported. 096c:trace:d3d:wined3d_adapter_init_limits Clip plane support - max planes 6. 096c:trace:d3d:wined3d_adapter_init_limits Light support - max lights 8. 096c:trace:d3d:wined3d_adapter_init_limits Maximum texture size support - max texture size 1024. 096c:trace:d3d:wined3d_check_gl_call extension detection call ok ../wine-src-copy/dlls/wined3d/adapter_gl.c / 3691. 096c:fixme:d3d:wined3d_guess_gl_vendor Received unrecognized GL_VENDOR "Microsoft Corporation". Returning GL_VENDOR_UNKNOWN. 096c:trace:d3d:wined3d_adapter_init_gl_caps Guessed GL vendor 0. 096c:trace:d3d_shader:shader_glsl_get_caps Shader model 2. 096c:fixme:d3d:wined3d_guess_card_vendor Received unrecognized GL_VENDOR "Microsoft Corporation". Returning HW_VENDOR_NVIDIA. 096c:trace:d3d:wined3d_adapter_init_gl_caps Guessed vendor PCI ID 0x10de. 096c:trace:d3d:wined3d_guess_card Applying card selector "NVIDIA". 096c:fixme:d3d:select_card_handler Couldn't find a suitable card selector for GL vendor 0000 (using GL_RENDERER "GDI Generic") 096c:trace:d3d:wined3d_guess_card Unrecognized renderer "GDI Generic", falling back to default. 096c:trace:d3d:wined3d_adapter_init_gl_caps Guessed device PCI ID 0x0100. 096c:err:d3d:wined3d_check_gl_call >>>>>>> GL_INVALID_ENUM (0x500) from glTexImage2D @ ../wine-src-copy/dlls/wined3d/adapter_gl.c / 641.
http://bugs.winehq.org/show_bug.cgi?id=58460
Zeb Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #1 from Zeb Figura z.figura12@gmail.com --- The VirtualBox graphics driver exposes GL 1.1 with almost no extensions. We used to support that in theory, but I think it was probably broken in practice. Making it work would be very difficult, and depending on what the application even wants, potentially impossible.
http://bugs.winehq.org/show_bug.cgi?id=58460
--- Comment #2 from Zeb Figura z.figura12@gmail.com --- We should be falling back to the GDI renderer, though. Is something breaking in the process?
Is that +d3d log complete?
http://bugs.winehq.org/show_bug.cgi?id=58460
--- Comment #3 from Svyatpro svyatpro@gmail.com --- Thank you Zeb for response, I just added these lines to adapter_gl and now it works:
if (strstr(gl_vendor_string, "Microsoft Corporation") || strstr(gl_renderer, "GDI Generic")) return HW_VENDOR_VMWARE;
BTW, there are lots of OpenGl capabilities detection bugs there specially for legacy GPU drivers.
http://bugs.winehq.org/show_bug.cgi?id=58460
--- Comment #4 from Svyatpro svyatpro@gmail.com --- Adding registry key "renderer=GDI" helps. But it should always return no3D if the device has poor OGL capabilities. Despite this current WineD3D implementation tries to load GL renderer. Why is it so?
http://bugs.winehq.org/show_bug.cgi?id=58460
--- Comment #5 from Zeb Figura z.figura12@gmail.com --- (In reply to Svyatpro from comment #4)
Adding registry key "renderer=GDI" helps. But it should always return no3D if the device has poor OGL capabilities. Despite this current WineD3D implementation tries to load GL renderer. Why is it so?
That's indeed the confusing part, we should be failing GL and falling back to the no3d renderer if the GL is missing certain extensions.
Again, is that +d3d log complete? Was any part of it cut off?
http://bugs.winehq.org/show_bug.cgi?id=58460
--- Comment #6 from Svyatpro svyatpro@gmail.com --- (In reply to Zeb Figura from comment #5)
(In reply to Svyatpro from comment #4)
Adding registry key "renderer=GDI" helps. But it should always return no3D if the device has poor OGL capabilities. Despite this current WineD3D implementation tries to load GL renderer. Why is it so?
That's indeed the confusing part, we should be failing GL and falling back to the no3d renderer if the GL is missing certain extensions.
Again, is that +d3d log complete? Was any part of it cut off?
Yes, it is a full log. The application crashes righ after encountering 096c:err:d3d:wined3d_check_gl_call >>>>>>> GL_INVALID_ENUM (0x500) from glTexImage2D @ ../wine-src-copy/dlls/wined3d/adapter_gl.c / 641.
And I even tried to add a logic inside "wined3d_adapter_init_gl_caps" to detect this "gl_version_str, "1.1.0"" and return E_FAIL but it still crashes. The only thing that helps is a registry key renderer=gdi. It seems it needs to implement this WINED3D_RENDERER_NO3D logic into "wined3d_adapter_init_gl_caps" for corresponding gl_version.