[Bug 39277] New: Enhance error diagnosis for DX10/11 games crashing due to missing support for Mesa OpenGL >= 3.2 core profiles, Shader Model 4, GLSL 1.50

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Sep 15 14:19:21 CDT 2015


https://bugs.winehq.org/show_bug.cgi?id=39277

            Bug ID: 39277
           Summary: Enhance error diagnosis for DX10/11 games crashing due
                    to missing support for Mesa OpenGL >= 3.2 core
                    profiles, Shader Model 4, GLSL 1.50
           Product: Wine
           Version: 1.7.51
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: directx-d3d
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
      Distribution: ---

Hello folks,

this is an improvement request for better error diagnosis.

People using Mesa/Intel/Nouveau/foo encounter crashes with various DirectX10/11
games where the cause is not obvious from pure terminal output/backtrace.

An example (don't mind disabling of builtin 'd3d10_1.dll' here, it's another
issue):

--- snip ---
$ WINEDLLOVERRIDES=d3d10_1=d wine ./AssassinsCreed_Dx10.exe 
...
fixme:gameux:GameExplorerImpl_VerifyAccess (0x13b750, L"C:\\Program
Files\\Ubisoft\\Assassin's Creed\\AssassinsCreed_Dx10.exe", 0x33f778)
fixme:win:EnumDisplayDevicesW ((null),0,0x386e314,0x00000000), stub!
fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x18cb28, format
DXGI_FORMAT_R8G8B8A8_UNORM, flags 0x1, mode_count 0x386e8d4, desc (nil) partial
stub!
fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x18cb28, format
DXGI_FORMAT_R8G8B8A8_UNORM, flags 0x1, mode_count 0x386e8d4, desc 0x3084758
partial stub!
fixme:dxgi:dxgi_output_FindClosestMatchingMode iface 0x18cb28, mode 0x386e884,
closest_match 0x386e8a0, device (nil) stub!
fixme:d3d11:D3D11CoreCreateDevice Ignoring feature levels.
fixme:dxgi:dxgi_device_init Ignoring adapter type.
fixme:dxgi:dxgi_factory_MakeWindowAssociation iface 0x18c988, window (nil),
flags 0 stub!
wine: Unhandled page fault on read access to 0x00000000 at address 0x8754ba
(thread 002a), starting debugger...
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code
(0x008754ba).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:008754ba ESP:0386e830 EBP:0b67ba34 EFLAGS:00010202(  R- --  I   - - - )
 EAX:00000000 EBX:0386e8d4 ECX:0386e8a8 EDX:031a0114
 ESI:7fc5dfc8 EDI:0b678450
...
Backtrace:
=>0 0x008754ba in assassinscreed_dx10 (+0x4754ba) (0x0b67ba34)
  1 0x00000000 (0x0167f09c)
  2 0x008763c0 in assassinscreed_dx10 (+0x4763bf) (0x00875960)
  3 0x06c74c4e (0x8df18b56)
...
--- snip ---

It becomes apparent with additional debug channels:

--- snip ---
...
002c:Call
d3d10.D3D10CreateDeviceAndSwapChain(001a5010,00000000,00000000,00000001,0000001d,0b67845c,0b678458,0386e8ec)
ret=007d9641
002c:trace:d3d10:D3D10CreateDeviceAndSwapChain adapter 0x1a5010, driver_type
D3D10_DRIVER_TYPE_HARDWARE, swrast (nil), flags 0x1, sdk_version 29,
swapchain_desc 0xb67845c, swapchain 0xb678458, device 0x386e8ec
002c:trace:d3d10:D3D10CreateDevice adapter 0x1a5010, driver_type
D3D10_DRIVER_TYPE_HARDWARE, swrast (nil), flags 0x1, sdk_version 29, device
0x386e8ec
...
002c:Call
d3d10core.D3D10CoreCreateDevice(001a65b0,001a5010,00000001,00000000,0386e8ec)
ret=7e378d9b
002c:Call
d3d11.D3D11CoreCreateDevice(001a65b0,001a5010,00000001,0386e5fc,00000001,0386e5f8)
ret=7e35a837
002c:fixme:d3d11:D3D11CoreCreateDevice Ignoring feature levels.
...
002c:Call
dxgi.DXGID3D10CreateDevice(7e310000,001a65b0,001a5010,00000001,00000000,0386e534)
ret=7e315759
002c:trace:dxgi:DXGID3D10CreateDevice d3d10core 0x7e310000, factory 0x1a65b0,
adapter 0x1a5010, flags 0x1, unknown0 (nil), device 0x386e534.
...
002c:Call d3d11.D3D11CoreRegisterLayers() ret=7e2e6151
...
002c:Ret  d3d11.D3D11CoreRegisterLayers() retval=00000000 ret=7e2e6151
...
002c:Call wined3d.wined3d_get_device_caps(001a9e08,00000000,00000001,0386e1c0)
ret=7e2e5ae7
002c:trace:d3d:wined3d_get_device_caps wined3d 0x1a9e08, adapter_idx 0,
device_type WINED3D_DEVICE_TYPE_HAL, caps 0x386e1c0.
002c:Ret  wined3d.wined3d_get_device_caps() retval=00000000 ret=7e2e5ae7
002c:warn:dxgi:dxgi_device_init Direct3D 10 is not supported on this GPU with
the current shader backend. 
...
002c:warn:dxgi:DXGID3D10CreateDevice Failed to initialize device, hr
0x80004005.
...
002c:Ret  dxgi.DXGID3D10CreateDevice() retval=80004005 ret=7e315759
002c:Ret  d3d11.D3D11CoreCreateDevice() retval=80004005 ret=7e35a837
002c:Ret  d3d10core.D3D10CoreCreateDevice() retval=80004005 ret=7e378d9b
...
002c:warn:d3d10:D3D10CreateDevice Failed to create a device, returning
0x80004005
002c:warn:d3d10:D3D10CreateDeviceAndSwapChain Failed to create a device,
returning 0x80004005
002c:Ret  d3d10.D3D10CreateDeviceAndSwapChain() retval=80004005 ret=007d9641
002c:trace:dxgi:dxgi_adapter_GetDesc iface 0x1a5010, desc 0xb678498.
002c:trace:dxgi:dxgi_adapter_GetDesc1 iface 0x1a5010, desc 0x386e77c.
002c:Call
wined3d.wined3d_get_adapter_identifier(001a9e08,00000000,00000000,0386e6c0)
ret=7e2e40bb
002c:trace:d3d:wined3d_get_adapter_identifier wined3d 0x1a9e08, adapter_idx 0,
flags 0, identifier 0x386e6c0.
002c:Ret  wined3d.wined3d_get_adapter_identifier() retval=00000000 ret=7e2e40bb
... 
--- snip ---

Telling users to run with 'warn+dxgi' is not an option for me.

I suggest to turn "Direct3D 10 is not supported on this GPU with the current
shader backend." WARN into an ERR or FIXME.

One problem with ERR could be that games probe for DX11/10 first and might fall
back to DX9 mode hence the failure would not be considered critical (still
works through DX9 fallback).
Maybe a FIXME just to appear in terminal by default without any debug
channels/classes given.

$ wine --version
wine-1.7.51-102-ga7e294c

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list