http://bugs.winehq.org/show_bug.cgi?id=34008
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |focht@gmx.net Summary|Bioshock Infinite won't |Bioshock Infinite won't |start |start (needs | |D3D11CreateDevice | |implementation to support | |at least | |D3D_FEATURE_LEVEL_10_0) Ever Confirmed|0 |1
--- Comment #2 from Anastasius Focht focht@gmx.net 2013-10-29 04:30:21 CDT --- Hello folks,
confirming. The stub for D3D11CreateDevice() is not enough.
"needs DX10/11 compatible hardware and DX11 runtime"
You can force the game to use specific D3D_FEATURE_LEVEL through additional command line arguments. Arguments that are recognized by game code:
-d3d10 or -sm4 (shader model 4) -d3d11 or -sm5 (shader model 5) -forcePretendUserHasDX10Card -d3ddebug
"-forcePretendUserHasDX10Card" actually forces use of D3D_FEATURE_LEVEL_10_0
But even if you request dx10 feature set, D3D11CreateDevice() will be still used unconditionally. I debugged the game - there is no d3d10.dll fallback (hence the DX11 runtime requirement).
I quickly hacked something together, reusing D3D10CreateDevice code to return a stubbed ID3D11Device and ID3D11DeviceContext. This allows the game to overcome the initial checks (running much farther) but ending up really wanting fleshed out ID3D11Device methods (CheckFeatureSupport(), ...). I stopped at this point ...
$ wine --version wine-1.7.5-105-g1666087
Regards