[Bug 35444] New: Wayward Terran Frontier Open Alpha (.NET 4.0/XNA 4 game) reports 'Could not find a Direct3D device that supports the XNA Framework HiDef profile'

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Jan 25 15:17:17 CST 2014


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

            Bug ID: 35444
           Summary: Wayward Terran Frontier Open Alpha (.NET 4.0/XNA 4
                    game) reports 'Could not find a Direct3D device that
                    supports the XNA Framework HiDef profile'
           Product: Wine
           Version: 1.7.11
          Hardware: x86
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: -unknown
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
    Classification: Unclassified

Hello folks,

as the summary says.

Prerequisite: 'winetricks -q dotnet40' in 32-bit WINEPREFIX

The game will install XNA 4.0 on its own.

Trace log isn't very interesting ... it's managed code that does the actual
work.

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Wayward Terran Frontier

$ WINEDEBUG=+tid,+seh,+relay,+d3d9,+d3d wine ./Wayward\ Terran\ Frontier.exe
>>log.txt 2>&1
...
002a:Ret  PE DLL (proc=0x7e0a24d0,module=0x7df90000
L"wined3d.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1
002a:Call PE DLL (proc=0x7e218ee8,module=0x7e1f0000
L"d3d9.dll",reason=PROCESS_ATTACH,res=(nil))
...
002a:Call PE DLL (proc=0x3abf6b8,module=0x3a80000
L"Microsoft.Xna.Framework.Graphic",reason=PROCESS_ATTACH,res=(nil))
002a:Call KERNEL32.GetModuleFileNameW(03a80000,0033c310,00000104) ret=603d40c1
002a:Ret  KERNEL32.GetModuleFileNameW() retval=0000008d ret=603d40c1
002a:Call KERNEL32.CreateFileW(0033c310
L"C:\\windows\\Microsoft.Net\\assembly\\GAC_32\\Microsoft.Xna.Framework.Graphics\\v4.0_4.0.0.0__842cf8be1de50553\\Microsoft.Xna.Framework.Graphics.dll",80000000,00000001,00000000,00000003,08000000,00000000)
ret=603be944
002a:Ret  KERNEL32.CreateFileW() retval=00000184 ret=603be944 
...
002a:Call d3d9.Direct3DCreate9(00000020) ret=04c2c787
002a:trace:d3d9:Direct3DCreate9 sdk_version 0x20. 
...
002a:trace:d3d:wined3d_create Created wined3d object 0x1a5860 for d3d9 support.
002a:Ret  wined3d.wined3d_create() retval=001a5860 ret=7e20e6fe
...
002a:trace:d3d9:Direct3DCreate9 Created d3d9 object 0x18fed0.
002a:Ret  d3d9.Direct3DCreate9() retval=0018fed0 ret=04c2c787 
...
002a:Call d3d9.D3DPERF_SetOptions(00000002) ret=04c2c8c7
002a:fixme:d3d9:D3DPERF_SetOptions (0x2) : stub
002a:Ret  d3d9.D3DPERF_SetOptions() retval=00000030 ret=04c2c8c7 
...
002a:trace:d3d9:d3d9_GetDeviceCaps iface 0x18fed0, adapter 0, device_type 0x1,
caps 0x33efd4.
...
002a:Call wined3d.wined3d_get_device_caps(001a5860,00000000,00000001,001a9c20)
ret=7e20d852
002a:trace:d3d:wined3d_get_device_caps wined3d 0x1a5860, adapter_idx 0,
device_type WINED3D_DEVICE_TYPE_HAL, caps 0x1a9c20.
002a:Ret  wined3d.wined3d_get_device_caps() retval=00000000 ret=7e20d852 
...
002a:Call KERNEL32.RaiseException(e0434352,00000001,00000005,0033f094)
ret=791cac08
002a:trace:seh:raise_exception code=e0434352 flags=1 addr=0x7b83a913
ip=7b83a913 tid=002a
002a:trace:seh:raise_exception  info[0]=80131500
002a:trace:seh:raise_exception  info[1]=00000000
002a:trace:seh:raise_exception  info[2]=00000000
002a:trace:seh:raise_exception  info[3]=00000000
002a:trace:seh:raise_exception  info[4]=79140000
002a:trace:seh:raise_exception  eax=7b826989 ebx=7b8ba000 ecx=80131500
edx=0033efa4 esi=0033f050 edi=0033f010
002a:trace:seh:raise_exception  ebp=0033efe8 esp=0033ef84 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00000283 
...
002a:Call user32.MessageBoxW(0001006c,00cde088 L"No suitable graphics card
found.\n\nCould not find a Direct3D device that supports the XNA Framework
HiDef profile.\r\n\r\nVerify that a suitable graphics device is
installed.\r\n\r\nMake sure the desktop is not locked, and that no other
application is running in full screen mode.\r\n\r\nAvoid runnin"...,00ccbe48
L"Wayward Terran Frontier",00000010) ret=04c6de0f 
...
--- snip ---

With a managed debugger:

--- snip ---
0033f140 7b83a913 [HelperMethodFrame: 0033f140] 
0033f190 04c2c514
Microsoft.Xna.Framework.GraphicsDeviceManager.FindBestPlatformDevice(Boolean)
0033f1ac 04c2c3fc
Microsoft.Xna.Framework.GraphicsDeviceManager.FindBestDevice(Boolean)
0033f1b0 04c2bf01
Microsoft.Xna.Framework.GraphicsDeviceManager.ChangeDevice(Boolean)
0033f218 04c2bddb
Microsoft.Xna.Framework.GraphicsDeviceManager.Microsoft.Xna.Framework.IGraphicsDeviceManager.CreateDevice()
0033f21c 04c2bb98 Microsoft.Xna.Framework.Game.RunGame(Boolean)
0033f250 037326f2 WTFLauncher.Program.Main(System.String[])
0033f4a8 791421db [GCFrame: 0033f4a8] 
--- snip ---

The XNA code compares the returned D3D device caps against XNA 4.0 'HiDef'
profile values.

More info here:

http://msdn.microsoft.com/en-us/library/ff604995.aspx (What Is a Profile?)

http://blogs.msdn.com/b/shawnhar/archive/2010/03/12/reach-vs-hidef.aspx (Reach
vs. HiDef)

Debugging the actual validation is very annoying so I just dumped the profile
values.
Maybe one D3D dev can spot values that aren't met in Wine by default (shader is
3.0).

--- snip ---
    VertexShaderVersion = 768u,
    PixelShaderVersion = 768u,
    OcclusionQuery = true,
    GetBackBufferData = true,
    SeparateAlphaBlend = true,
    DestBlendSrcAlphaSat = true,
    MinMaxSrcDestBlend = false,
    MaxPrimitiveCount = 1048575,
    IndexElementSize32 = true,
    MaxVertexStreams = 16,
    MaxStreamStride = 255,
    MaxVertexBufferSize = 67108863,
    MaxIndexBufferSize = 67108863,
    MaxTextureSize = 4096,
    MaxCubeSize = 4096,
    MaxVolumeExtent = 256,
    MaxTextureAspectRatio = 2048,
    MaxSamplers = 16,
    MaxVertexSamplers = 4,
    MaxRenderTargets = 4,
    NonPow2Unconditional = true,
    NonPow2Cube = true,
    NonPow2Volume = true,
    ValidTextureFormats = 
    {
        SurfaceFormat.Color,
        SurfaceFormat.Bgr565,
        SurfaceFormat.Bgra5551,
        SurfaceFormat.Bgra4444,
        SurfaceFormat.Dxt1,
        SurfaceFormat.Dxt3,
        SurfaceFormat.Dxt5,
        SurfaceFormat.NormalizedByte2,
        SurfaceFormat.NormalizedByte4,
        SurfaceFormat.Rgba1010102,
        SurfaceFormat.Rg32,
        SurfaceFormat.Rgba64,
        SurfaceFormat.Alpha8,
        SurfaceFormat.Single,
        SurfaceFormat.Vector2,
        SurfaceFormat.Vector4,
        SurfaceFormat.HalfSingle,
        SurfaceFormat.HalfVector2,
        SurfaceFormat.HalfVector4,
        SurfaceFormat.HdrBlendable
    },
    ValidCubeFormats = 
    {
        SurfaceFormat.Color,
        SurfaceFormat.Bgr565,
        SurfaceFormat.Bgra5551,
        SurfaceFormat.Bgra4444,
        SurfaceFormat.Dxt1,
        SurfaceFormat.Dxt3,
        SurfaceFormat.Dxt5,
        SurfaceFormat.Rgba1010102,
        SurfaceFormat.Rg32,
        SurfaceFormat.Rgba64,
        SurfaceFormat.Alpha8,
        SurfaceFormat.Single,
        SurfaceFormat.Vector2,
        SurfaceFormat.Vector4,
        SurfaceFormat.HalfSingle,
        SurfaceFormat.HalfVector2,
        SurfaceFormat.HalfVector4,
        SurfaceFormat.HdrBlendable
    },
    ValidVolumeFormats = 
    {
        SurfaceFormat.Color,
        SurfaceFormat.Bgr565,
        SurfaceFormat.Bgra5551,
        SurfaceFormat.Bgra4444,
        SurfaceFormat.Rgba1010102,
        SurfaceFormat.Rg32,
        SurfaceFormat.Rgba64,
        SurfaceFormat.Alpha8,
        SurfaceFormat.Single,
        SurfaceFormat.Vector2,
        SurfaceFormat.Vector4,
        SurfaceFormat.HalfSingle,
        SurfaceFormat.HalfVector2,
        SurfaceFormat.HalfVector4,
        SurfaceFormat.HdrBlendable
    },
    ValidVertexTextureFormats = 
    {
        SurfaceFormat.Single,
        SurfaceFormat.Vector2,
        SurfaceFormat.Vector4,
        SurfaceFormat.HalfSingle,
        SurfaceFormat.HalfVector2,
        SurfaceFormat.HalfVector4,
        SurfaceFormat.HdrBlendable
    },
    InvalidFilterFormats = 
    {
        SurfaceFormat.Single,
        SurfaceFormat.Vector2,
        SurfaceFormat.Vector4,
        SurfaceFormat.HalfSingle,
        SurfaceFormat.HalfVector2,
        SurfaceFormat.HalfVector4,
        SurfaceFormat.HdrBlendable
    },
    InvalidBlendFormats = 
    {
        SurfaceFormat.Single,
        SurfaceFormat.Vector2,
        SurfaceFormat.Vector4,
        SurfaceFormat.HalfSingle,
        SurfaceFormat.HalfVector2,
        SurfaceFormat.HalfVector4
    },
    ValidDepthFormats = 
    {
        DepthFormat.Depth16,
        DepthFormat.Depth24,
        DepthFormat.Depth24Stencil8
    },
    ValidVertexFormats = 
    {
        VertexElementFormat.Color,
        VertexElementFormat.Single,
        VertexElementFormat.Vector2,
        VertexElementFormat.Vector3,
        VertexElementFormat.Vector4,
        VertexElementFormat.Byte4,
        VertexElementFormat.Short2,
        VertexElementFormat.Short4,
        VertexElementFormat.NormalizedShort2,
        VertexElementFormat.NormalizedShort4,
        VertexElementFormat.HalfVector2,
        VertexElementFormat.HalfVector4
    }
--- snip ---

NOTE: Not all 'formats' (enum) values need to be present but most likely all
the integer/bool properties need to pass.

$ sha1sum WaywardSetup.msi 
ad1b0bf88ce284b2c4c36fbb93012b60cb0a673f  WaywardSetup.msi

$ du -sh WaywardSetup.msi 
8.5M    WaywardSetup.msi

$ wine --version
wine-1.7.11-159-gee33839

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