Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

black screen in guild wars 2 #344

Open
logan001 opened this issue Mar 16, 2019 · 9 comments
Open

black screen in guild wars 2 #344

logan001 opened this issue Mar 16, 2019 · 9 comments

Comments

@logan001
Copy link

logan001 commented Mar 16, 2019

Its first time i've tried this version of wine/nouveau/mesa so i'm not sure if i missed some things.
I'm trying to play/test Guild Wars 2 (x64) on linuxmint 19.1 cinnamon
the launcher starts but when the actuall game is suppose to start i'm getting only a black screen.

i've install wine/mesa with the help of https://wiki.ixit.cz/d3d9_tutorial
i've also try the NINE_DEBUG=all csmt_force=0 method to get a better output from wine which you can find it here

$ glxinfo | grep "OpenGL version"
OpenGL version string: 4.3 (Compatibility Profile) Mesa 19.1.0-devel (git-9bb63e9 2019-03-15 bionic-oibaf-ppa)

@LingMan
Copy link

LingMan commented Apr 3, 2019

How long have you waited? Does the menu music start after a while? It's possible that the game is just compiling shaders at the start and will work fine after that. It takes two minutes for me but that will vary depending on your CPU.

I've already filed a bug about the shader cache apparently not working here: iXit/wine-nine-standalone#19

@iiv3
Copy link

iiv3 commented Apr 11, 2019

Here is the relevant line from the very end of the log.

4A16564A0ADD\Games\Guild Wars 2\Gw2-64.exe:
 ../src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp:229:
 void nv50_ir::CodeEmitterGM107::emitField(uint32_t*, int, int, uint32_t):
 Assertion `!(v & ~m) || (v & ~m) == ~m' failed.

That assert doesn't make sense, e.g. (!x)||(x) is always true. The check could only succeed if m=0 and true=-1. No debug build should have worked since 2014.

Try disabling the check and see if there are some issues - hangs, visual glitches, etc.

@dhewg
Copy link

dhewg commented Apr 11, 2019

== takes precedence over ||, so it's more like (!x)||(x==y).
It checks if all bits of the value v are part of the mask m.

@iiv3
Copy link

iiv3 commented Apr 12, 2019

== takes precedence over ||, so it's more like (!x)||(x==y).
It checks if all bits of the value v are part of the mask m.

Now it seems obvious.

@logan001, could you try recording an apitrace that reproduces the issue.
You can try using the wined3d for the recording, just make sure that the bug is reproduced when playing it back with Nine.
I hope the trace would be smaller than the game and you will allow us to use it for regression testing. Try to make it as small as possible (lower texture quality, limit framerate, etc).

@PluMGMK
Copy link

PluMGMK commented May 11, 2019

I can confirm that this also happens on stable Mesa (19.0.2-4), with Rayman Origins (and in fact any game I try). I think it's an issue that appeared somewhere in the Mesa 19 branch, affecting the combination of the direct3d state tracker with the nouveau driver. I can set D3D_ALWAYS_SOFTWARE=1 to make it use llvmpipe, which fixes the crash but obviously destroys the performance.

I would imagine that the population of gamers attempting to use nouveau on the GM107 GPU is vanishingly small, which is why only two people seem to have reported this so far…

@iiv3
Copy link

iiv3 commented May 12, 2019

@PluMGMK, two people are plenty.

Would you try recording an apitrace (using wined3d or always_software) that can reproduce the problem with Nine.

If you think it is regression, then finding the commit that broke it could also turn out useful.

@PluMGMK
Copy link

PluMGMK commented May 12, 2019

Okay, I did an apitrace with always_software, and when I play it back on nouveau (using d3dretrace --headless --verbose, I get:

C:\GOG Games\Rayman Origins\Rayman Origins.exe
0 @0 Direct3DCreate9(SDKVersion = 32) = 0x176c88
Native Direct3D 9 v0.4.0.294-release is active.
For more information visit https://github.com/iXit/wine-nine-standalone
220 @0 IDirect3D9::CreateDevice(this = 0x176c88, Adapter = D3DADAPTER_DEFAULT, DeviceType = D3DDEVTYPE_HAL, hFocusWindow = 0x1006a, BehaviorFlags = D3DCREATE_MULTITHREADED | D3DCREATE_PUREDEVICE | D3DCREATE_HARDWARE_VERTEXPROCESSING, pPresentationParameters = &{BackBufferWidth = 1024, BackBufferHeight = 576, BackBufferFormat = D3DFMT_A8R8G8B8, BackBufferCount = 1, MultiSampleType = D3DMULTISAMPLE_NONE, MultiSampleQuality = 0, SwapEffect = D3DSWAPEFFECT_COPY, hDeviceWindow = 0x1006a, Windowed = TRUE, EnableAutoDepthStencil = TRUE, AutoDepthStencilFormat = D3DFMT_D24S8, Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER, FullScreen_RefreshRateInHz = 0, PresentationInterval = D3DPRESENT_INTERVAL_ONE}, ppReturnedDeviceInterface = &0xf4f23080) = D3D_OK
002b:fixme:kernelbase:AppPolicyGetThreadInitializationType 0xfffffffa, 0xb7feb0
fixme:d3d9nine:DRIPresentGroup_GetMultiheadCount (0x1946d0), stub!
fixme:d3d9nine:DRIPresentGroup_GetMultiheadCount (0x1946d0), stub!
222 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x4 g_mUVmat;
//   float4x4 g_mWorldViewProjection;
//   float4 g_vconst0;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_mUVmat               c4       4
//   g_vconst0              c13      1
//

    vs_2_0
    def c6, 2, -1, 1, 0.5
    dcl_position v0
    dcl_color v1
    dcl_texcoord v2
    dp4 oPos.x, v0, c0
    dp4 oPos.y, v0, c1
    dp4 oPos.z, v0, c2
    dp4 oPos.w, v0, c3
    mul oD0, v1, c13
    mov r0.xw, c6
    mad r0.xy, v2, r0.x, c7
    add r0.xy, r0, c6.y
    mul r1.xy, r0, c4
    mul r0.xy, r0, c5
    add r0.y, r0.y, r0.x
    add r0.x, r1.y, r1.x
    add r0.xy, r0, c6.z
    mad oT0.x, r0.x, r0.w, c4.w
    mad oT0.y, r0.y, r0.w, c5.w

// approximately 15 instruction slots used
", ppShader = &0xdfa605f0) = D3D_OK
223 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x4 g_mWorldViewProjection;
//   float4 g_vconst0;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_vconst0              c13      1
//

    vs_2_0
    dcl_position v0
    dcl_color v1
    dp4 oPos.x, v0, c0
    dp4 oPos.y, v0, c1
    dp4 oPos.z, v0, c2
    dp4 oPos.w, v0, c3
    mul oD0, v1, c13

// approximately 5 instruction slots used
", ppShader = &0xdfa63780) = D3D_OK
224 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x4 g_mWorldViewProjection;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//

    vs_2_0
    dcl_position v0
    dcl_texcoord v1
    dp4 oPos.x, v0, c0
    dp4 oPos.y, v0, c1
    dp4 oPos.z, v0, c2
    dp4 oPos.w, v0, c3
    mov oT0.xy, v1

// approximately 5 instruction slots used
", ppShader = &0xdfa60920) = D3D_OK
225 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float g_fconst1;
//   float4x4 g_mWorldViewProjection;
//   float4 g_va0[128];
//   float4 g_va1[64];
//   float4 g_vconst0;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_fconst1              c9       1
//   g_vconst0              c13      1
//   g_va0                  c17    128
//   g_va1                  c145    64
//

    vs_2_0
    def c4, 8, 4, 1, 3
    def c5, 1, 0, 0, 0
    dcl_position v0
    dcl_texcoord v1
    mul r0.xy, v0.z, c4
    frc r0.zw, r0.xyxy
    add r1.xy, r0, -r0.zwzw
    slt r0.zw, -r0, r0
    slt r0.xy, r0, -r0
    mad r0.xy, r0, r0.zwzw, r1
    mova a0.xy, r0
    mul r0, v1.y, c22[a0.x]
    add r1.xy, -v1.yxzw, c4.z
    mad r0, c18[a0.x], r1.x, r0
    mul r0, r0, v1.x
    mul r1.z, r1.y, r1.y
    mul r0, r0, r1.z
    mul r1.z, r1.y, r1.z
    mul r0, r0, c4.w
    mul r2, v1.y, c21[a0.x]
    mad r2, c17[a0.x], r1.x, r2
    mad r0, r2, r1.z, r0
    mul r2, v1.y, c23[a0.x]
    mad r2, c19[a0.x], r1.x, r2
    mul r1.z, v1.x, v1.x
    mul r2, r2, r1.z
    mul r1.z, r1.z, v1.x
    mul r2, r1.y, r2
    mad r0, r2, c4.w, r0
    mul r2, v1.y, c24[a0.x]
    mad r2, c20[a0.x], r1.x, r2
    mad r3.xy, r2, r1.z, r0
    mad oT0.xy, r2.zwzw, r1.z, r0.zwzw
    mov r0.xy, c5
    mad r3.zw, c9.x, r0.xyxy, r0.xyyx
    dp4 oPos.x, r3, c0
    dp4 oPos.y, r3, c1
    dp4 oPos.z, r3, c2
    dp4 oPos.w, r3, c3
    mov r0, c145[a0.y]
    add r0, -r0, c146[a0.y]
    mad r0, v1.x, r0, c145[a0.y]
    mov r1, c147[a0.y]
    add r1, -r1, c148[a0.y]
    mad r1, v1.x, r1, c147[a0.y]
    lrp r2, v1.y, r1, r0
    mul oD0, r2, c13

// approximately 43 instruction slots used
", ppShader = &0xdfa60b20) = D3D_OK
226 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x4 g_mUVmat;
//   float4x4 g_mWorldViewProjection;
//   float4 g_vconst0;
//   float4 g_vconst1;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_mUVmat               c4       2
//   g_vconst0              c13      1
//   g_vconst1              c14      1
//

    vs_2_0
    def c6, 0.159154937, 0.5, 6.28318548, -3.14159274
    def c7, 1, 0, 0, 0
    def c8, -1.55009923e-006, -2.17013894e-005, 0.00260416674, 0.00026041668
    def c9, -0.020833334, -0.125, 1, 0.5
    dcl_position v0
    dcl_normal v1
    dcl_color v2
    dcl_texcoord v3
    mad r0.x, c14.x, c14.z, v1.x
    mad r0.x, r0.x, c6.x, c6.y
    frc r0.x, r0.x
    mad r0.x, r0.x, c6.z, c6.w
    sincos r1.x, r0.x, c8, c9
    mul r0.x, r1.x, c14.y
    mul r1, v1.yzyy, c7.xxyy
    mad r0, r1, r0.x, v0
    dp4 oPos.x, r0, c0
    dp4 oPos.y, r0, c1
    dp4 oPos.z, r0, c2
    dp4 oPos.w, r0, c3
    mul oD0, v2, c13
    mul r0.xy, v3, c4
    add r0.x, r0.y, r0.x
    add oT0.x, r0.x, c4.w
    mul r0.xy, v3, c5
    add r0.x, r0.y, r0.x
    add oT0.y, r0.x, c5.w

// approximately 26 instruction slots used
", ppShader = &0xdf9a1140) = D3D_OK
227 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x4 g_mUVmat;
//   float4x4 g_mWorldViewProjection;
//   float4 g_vconst0;
//   float4 g_vconst1;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_mUVmat               c4       2
//   g_vconst0              c13      1
//   g_vconst1              c14      1
//

    vs_2_0
    def c6, 1, 0, 0, 0
    dcl_position v0
    dcl_color v1
    dcl_texcoord v2
    dcl_texcoord1 v3
    dcl_texcoord2 v4
    dcl_texcoord3 v5
    mul r0.xyz, v4.wzww, c14.yyxw
    mad r0.x, c14.x, v4.z, -r0.x
    add r0.y, r0.z, r0.y
    mad r0.y, r0.y, v3.y, v3.w
    mad r0.x, r0.x, v3.x, v3.z
    mul r0.xy, r0, v4
    mul r1.xyz, v5.yxyw, c14.wwzw
    add r0.z, r1.z, r1.y
    mad r0.w, v5.x, c14.z, -r1.x
    mul r1.x, r0.z, r0.y
    mul r0.y, r0.w, r0.y
    mad r0.w, r0.x, r0.w, -r1.x
    mad r0.x, r0.x, r0.z, r0.y
    add r1.xy, r0.wxzw, v0
    mad r1.zw, v0.z, c6.xyxy, c6.xyyx
    dp4 oPos.x, r1, c0
    dp4 oPos.y, r1, c1
    dp4 oPos.z, r1, c2
    dp4 oPos.w, r1, c3
    mul oD0, v1, c13
    mul r0.xy, v2, c4
    add r0.x, r0.y, r0.x
    add oT0.x, r0.x, c4.w
    mul r0.xy, v2, c5
    add r0.x, r0.y, r0.x
    add oT0.y, r0.x, c5.w

// approximately 26 instruction slots used
", ppShader = &0xdf9a16e0) = D3D_OK
228 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float g_fconst0;
//   float g_fconst1;
//   float g_fconst2;
//   float g_fconst3;
//   float g_fconst4;
//   float4x4 g_mWorldViewProjection;
//   float4 g_va0[128];
//   float4 g_va1[64];
//   float4 g_vconst0;
//   float4 g_vconst1;
//   float4 g_vconst2;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_fconst0              c8       1
//   g_fconst1              c9       1
//   g_fconst2              c10      1
//   g_fconst3              c11      1
//   g_fconst4              c12      1
//   g_vconst0              c13      1
//   g_vconst1              c14      1
//   g_vconst2              c15      1
//   g_va0                  c17    128
//   g_va1                  c145    64
//

    vs_2_0
    def c4, 0.5, 4, 1, 0
    dcl_position v0
    dcl_texcoord v1
    mul r0.x, v1.y, c8.x
    mad r0.y, r0.x, c4.x, c4.x
    frc r0.z, r0.y
    add r0.w, r0.y, -r0.z
    slt r0.z, -r0.z, r0.z
    slt r0.y, r0.y, -r0.y
    mad r0.y, r0.y, r0.z, r0.w
    mul r0.z, r0.x, c4.x
    frc r0.w, r0.z
    add r1.x, r0.z, -r0.w
    slt r0.w, -r0.w, r0.w
    slt r0.z, r0.z, -r0.z
    mad r0.z, r0.z, r0.w, r1.x
    add r0.y, -r0.z, r0.y
    mova a0.x, r0.z
    lrp r1.xy, r0.y, c17[a0.x].zwzw, c17[a0.x]
    add r0.y, -v1.x, c4.z
    mad r2.x, r1.y, -r0.y, v0.x
    mov r3.x, c8.x
    mad r0.z, v1.y, -r3.x, c10.x
    mul r0.w, r0.x, c12.x
    mad r0.z, c11.x, r0.z, r0.w
    mad r2.y, r0.z, r0.y, v0.y
    mov r2.zw, v0
    dp4 oPos.x, r2, c0
    dp4 oPos.y, r2, c1
    dp4 oPos.z, r2, c2
    dp4 oPos.w, r2, c3
    rcp r0.z, c9.x
    mul r0.w, r0.z, r0.x
    mad r0.x, r0.x, -r0.z, c4.z
    mul r2, r0.w, c15
    mad r2, c14, r0.x, r2
    mul r0.yz, r0.y, r2.xzww
    mad oT0.xy, r2, v1.x, r0.yzzw
    frc r0.y, r1.x
    add r0.y, -r0.y, r1.x
    mul r0.y, r0.y, c4.y
    mova a0.x, r0.y
    mul r1, r0.w, c147[a0.x]
    mul r2, r0.w, c148[a0.x]
    mad r2, c146[a0.x], r0.x, r2
    mad r0, c145[a0.x], r0.x, r1
    lrp r1, v1.x, r0, r2
    mul oD0, r1, c13

// approximately 45 instruction slots used
", ppShader = &0xdf9a3ef0) = D3D_OK
229 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float g_fconst0;
//   float g_fconst1;
//   float g_fconst2;
//   float g_fconst3;
//   float g_fconst4;
//   float4x4 g_mWorldViewProjection;
//   float4 g_va0[128];
//   float4 g_va1[64];
//   float4 g_vconst0;
//   float4 g_vconst1;
//   float4 g_vconst2;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_fconst0              c8       1
//   g_fconst1              c9       1
//   g_fconst2              c10      1
//   g_fconst3              c11      1
//   g_fconst4              c12      1
//   g_vconst0              c13      1
//   g_vconst1              c14      1
//   g_vconst2              c15      1
//   g_va0                  c17    128
//   g_va1                  c145    64
//

    vs_2_0
    def c4, 0.5, 4, 1, 0
    dcl_position v0
    dcl_texcoord v1
    mul r0.x, v1.y, c8.x
    mad r0.y, r0.x, c4.x, c4.x
    frc r0.z, r0.y
    add r0.w, r0.y, -r0.z
    slt r0.z, -r0.z, r0.z
    slt r0.y, r0.y, -r0.y
    mad r0.y, r0.y, r0.z, r0.w
    mul r0.z, r0.x, c4.x
    frc r0.w, r0.z
    add r1.x, r0.z, -r0.w
    slt r0.w, -r0.w, r0.w
    slt r0.z, r0.z, -r0.z
    mad r0.z, r0.z, r0.w, r1.x
    add r0.y, -r0.z, r0.y
    mova a0.x, r0.z
    lrp r1.xy, r0.y, c17[a0.x].zwzw, c17[a0.x]
    add r0.y, -v1.x, c4.z
    mad r2.z, r1.y, -r0.y, v0.z
    mov r3.x, c8.x
    mad r0.z, v1.y, -r3.x, c10.x
    mul r0.w, r0.x, c12.x
    mad r0.z, c11.x, r0.z, r0.w
    add r2.y, r0.z, v0.y
    mov r2.xw, v0
    dp4 oPos.x, r2, c0
    dp4 oPos.y, r2, c1
    dp4 oPos.z, r2, c2
    dp4 oPos.w, r2, c3
    rcp r0.z, c9.x
    mul r0.w, r0.z, r0.x
    mad r0.x, r0.x, -r0.z, c4.z
    mul r2, r0.w, c15
    mad r2, c14, r0.x, r2
    mul r0.yz, r0.y, r2.xzww
    mad oT0.xy, r2, v1.x, r0.yzzw
    frc r0.y, r1.x
    add r0.y, -r0.y, r1.x
    mul r0.y, r0.y, c4.y
    mova a0.x, r0.y
    mul r1, r0.w, c147[a0.x]
    mul r2, r0.w, c148[a0.x]
    mad r2, c146[a0.x], r0.x, r2
    mad r0, c145[a0.x], r0.x, r1
    lrp r1, v1.x, r0, r2
    mul oD0, r1, c13

// approximately 45 instruction slots used
", ppShader = &0xdf9a5a20) = D3D_OK
230 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float g_fconst0;
//   float g_fconst1;
//   float g_fconst2;
//   float4x4 g_mWorldViewProjection;
//   float4 g_va0[128];
//   float4 g_va1[64];
//   float4 g_vconst0;
//   float4 g_vconst1;
//   float4 g_vconst2;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_fconst0              c8       1
//   g_fconst1              c9       1
//   g_fconst2              c10      1
//   g_vconst0              c13      1
//   g_vconst1              c14      1
//   g_vconst2              c15      1
//   g_va0                  c17    128
//   g_va1                  c145    64
//

    vs_2_0
    def c4, 4, 0.25, 8, -4
    def c5, -1, -2, 0, 0.5
    dcl_position v0
    dcl_texcoord v1
    mul r0.x, v1.y, c8.x
    frc r0.y, r0.x
    add r0.z, r0.x, -r0.y
    slt r0.y, -r0.y, r0.y
    slt r0.w, r0.x, -r0.x
    mad r0.y, r0.w, r0.y, r0.z
    mul r0.zw, r0.y, c4.xyxy
    sge r0.z, r0.z, -r0.z
    mad r0.z, r0.z, c4.z, c4.w
    rcp r1.x, r0.z
    mul r1.x, r0.y, r1.x
    frc r1.x, r1.x
    mul r0.z, r0.z, r1.x
    frc r1.xz, r0.zyww
    add r1.yw, r0.xzzw, -r1.xxzz
    slt r0.zw, r0, -r0
    slt r1.xz, -r1, r1
    mad r0.z, r0.z, r1.x, r1.y
    add r1.xy, r0.z, c5
    mul r0.z, r0.z, r0.z
    sge r0.z, -r0.z, r0.z
    mul r1.xy, r1, r1
    sge r1.xy, -r1, r1
    mad r0.w, r0.w, r1.z, r1.w
    mova a0.x, r0.w
    lrp r0.w, r1.y, c145[a0.x].z, c145[a0.x].w
    lrp r2.x, r1.x, c145[a0.x].y, r0.w
    lrp r1.z, r0.z, c145[a0.x].x, r2.x
    mova a0.x, r0.y
    lrp r1.xy, v1.x, c17[a0.x].zwzw, c17[a0.x]
    add r0.zw, c17[a0.x], c17[a0.x].xyxy
    mov r1.w, v0.w
    dp4 oPos.x, r1, c0
    dp4 oPos.y, r1, c1
    dp4 oPos.z, r1, c2
    dp4 oPos.w, r1, c3
    add r1.x, r0.y, c5.x
    slt r0.y, c5.z, r0.y
    mova a0.x, r1.x
    add r0.zw, r0, -c17[a0.x].xyxy
    add r0.zw, r0, -c17[a0.x]
    mul r0.zw, r0, r0
    add r0.z, r0.w, r0.z
    rsq r0.z, r0.z
    rcp r0.z, r0.z
    mul r0.z, r0.z, c5.w
    rcp r0.w, c10.x
    mul r0.z, r0.w, r0.z
    min r0.z, r0.z, -c5.x
    rcp r0.w, c9.x
    mul r0.x, r0.w, r0.x
    mov r1, c14
    add r1, -r1, c15
    mad r1, r0.x, r1, c14
    mov oT0.x, r0.x
    mad r0.x, r1.w, r0.z, -r1.w
    mov r0.z, c5.z
    slt r0.z, r0.z, c10.x
    mul r0.y, r0.y, r0.z
    mad r1.w, r0.y, r0.x, r1.w
    mul oD0, r1, c13
    mov oT0.y, v1.x

// approximately 62 instruction slots used
", ppShader = &0xdf9a78a0) = D3D_OK
231 @0 IDirect3DDevice9::CreateVertexShader(this = 0xf4f23080, pFunction = "//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x4 g_mWorldViewProjection;
//   float4 g_va0[128];
//   float4 g_vconst0;
//   float4 g_vconst1;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   g_mWorldViewProjection c0       4
//   g_vconst0              c13      1
//   g_vconst1              c14      1
//   g_va0                  c17    128
//

    vs_2_0
    def c4, -3, 1, -1, 0
    def c5, -2, 2, 0.5, 9
    def c6, 5, 4, 10, 8
    dcl_position v0
    dcl_texcoord v1
    add r0.x, v1.y, -c5.z
    mul r0.x, r0.x, c14.y
    mov r1.xw, c4
    add r0.y, r1.x, c14.x
    mul r0.z, r0.y, v1.x
    mad r0.y, v1.x, r0.y, c4.y
    frc r0.z, r0.z
    slt r0.w, -r0.z, r0.z
    add r0.z, r0.y, -r0.z
    slt r1.x, r0.y, -r0.y
    mad r0.z, r1.x, r0.w, r0.z
    add r0.w, r0.z, c4.z
    add r0.y, -r0.z, r0.y
    mova a0.xy, r0.wzzw
    slt r0.z, c17[a0.y].w, r1.w
    mul r0.z, r0.z, c17[a0.y].w
    mov r1.x, c5.x
    mad r0.z, r0.z, r1.x, c17[a0.y].w
    lrp r2.x, r0.y, -c18[a0.y].w, r0.z
    add r0.w, -r0.z, r2.x
    add r1.x, -r0.z, -c18[a0.y].w
    lrp r3.x, r0.y, c18[a0.y].w, r0.z
    rcp r0.z, r1.x
    mul r1.x, r0.z, r0.w
    mul r1.y, r1.x, r1.x
    mul r1.z, r1.x, r1.y
    mul r4.xy, r1.y, c6
    mad r4.x, r1.z, -c4.x, -r4.x
    mad r4.y, r1.z, c4.x, r4.y
    mad r1.z, r1.y, c5.y, -r1.z
    mad r1.z, r0.w, -r0.z, r1.z
    mad r0.z, r0.w, r0.z, r4.y
    mul r0.z, r0.z, c5.z
    mul r0.w, r1.z, c5.z
    add r1.z, r4.x, c5.y
    mul r1.z, r1.z, c5.z
    mul r4.xyz, r1.z, c17[a0.y]
    mad r4.xyz, c17[a0.x], r0.w, r4
    mad r4.xyz, c18[a0.y], r0.z, r4
    mad r0.z, r1.y, r1.x, -r1.y
    mul r0.z, r0.z, c5.z
    mad r4.xyz, c19[a0.y], r0.z, r4
    add r0.z, -r0.y, c4.y
    mul r5.xyz, r0.y, c18[a0.y]
    mad r0.yzw, c17[a0.y].xxyz, r0.z, r5.xxyz
    slt r1.z, c18[a0.y].w, r1.w
    lrp r5.xyz, r1.z, r4, r0.yzww
    mul r0.yzw, r1.x, c6
    mad r0.z, r1.y, c5.w, -r0.z
    mul r0.z, r0.z, c5.z
    mul r4.xyz, r0.z, c17[a0.y]
    mad r0.y, r1.y, c4.x, r0.y
    mad r0.z, r1.y, -c5.w, r0.w
    mul r0.w, r1.y, -c4.x
    mad r0.w, r1.x, -c5.y, r0.w
    add r0.yz, r0, c4.xzyw
    mul r0.yzw, r0, c5.z
    mad r1.xyw, c17[a0.x].xyzz, r0.y, r4.xyzz
    mad r1.xyw, c18[a0.y].xyzz, r0.z, r1
    mad r0.yzw, c19[a0.y].xxyz, r0.w, r1.xxyw
    mov r4.xyz, c18[a0.y]
    add r1.xyw, r4.xyzz, -c17[a0.y].xyzz
    mul r4.xy, r0.yzzw, r0.yzzw
    add r4.x, r4.y, r4.x
    mad r4.x, r0.w, r0.w, r4.x
    rsq r4.x, r4.x
    mul r2.yzw, r0, r4.x
    mul r0.yz, r1.xxyw, r1.xxyw
    add r0.y, r0.z, r0.y
    mad r0.y, r1.w, r1.w, r0.y
    rsq r0.y, r0.y
    mul r3.yzw, r0.y, r1.xxyw
    lrp r4, r1.z, r2, r3
    mul r0.yzw, r4.xzyw, c4.xyzy
    mul oT0.x, r4.x, c5.z
    mad r0.xyz, r0.yzww, r0.x, r5
    mov r0.w, v0.w
    dp4 oPos.x, r0, c0
    dp4 oPos.y, r0, c1
    dp4 oPos.z, r0, c2
    dp4 oPos.w, r0, c3
    mov oD0, c13
    mov oT0.y, v1.y

// approximately 83 instruction slots used
", ppShader = &0xdf9a97a0) = D3D_OK
../src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp:229: void nv50_ir::CodeEmitterGM107::emitField(uint32_t*, int, int, uint32_t): Assertion `!(v & ~m) || (v & ~m) == ~m' failed.

Followed by a crash, "assertion failed in 32-bit code" (as opposed to a silent hang, which is what I get from the game itself).
Anyway, I've xzipped it and put it on my server, if that helps: https://vigovproductions.net/trace.xz

I don't know about tracking down the commit that caused it. If I get a bit more time, I might try it.

@axeldavy
Copy link

If it is nouveau issue, it would make sense to open a bug report to the nouveau component of mesa on freedesktop's bugzilla, linking to this bug report.

@PluMGMK
Copy link

PluMGMK commented May 12, 2019

Yeah, I might just do that. FWIW, commenting out the offending assert within Mesa fixes the issue and doesn't (seem to) break anything else, if anyone's looking for a quick fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants