[Bug 47229] gog.com - The Void: crashes when entering two game locations

WineHQ Bugzilla wine-bugs at winehq.org
Thu Jan 7 14:36:51 CST 2021


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

Paul Gofman <pgofman at codeweavers.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pgofman at codeweavers.com

--- Comment #12 from Paul Gofman <pgofman at codeweavers.com> ---
Created attachment 69095
  --> https://bugs.winehq.org/attachment.cgi?id=69095
PoC patch

I've tested the game.

This is the first game I see which depends on d3d9 shader validator interface
actually validating the shaders, just returning 'ok' from
IDirect3DShaderValidator9_Instruction is not enough.

The game currently needs native d3dx9_36 override (due to Bug #48528; also it
compiles a lot of shaders and that would currently need d3dcompiler_47 override
if builtin d3dx9_36 is used).

The game disassembles and assembles back some shaders (I have no idea why).
Some shaders fail to assemble back due to: 'dcl_texcoord10_pp v10' (only 10
inputs are supported in ps_3_0 and this is eleventh) which result in the crash
as the game doesn't cosnider D3DXAssembleShader() failures. I didn't debug how
exactly the game gets those shaders (loads them in binary form, compiles
somehow or does something else), but the binary of the shader is passed through
d3d9 shader validator and if it is rejected (by returning failure from
IDirect3DShaderValidator9_Instruction for the incorrect declaration) the game
is fine. 

I am going to prepare some more or less sensible patch for that soon, the
attached patch is very ugly proof of concept which fixes the crashes I could
reproduce.

-- 
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