diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index b576143e..aca5642e 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1115,7 +1115,10 @@ namespace dxvk { ID3D11GeometryShader** ppGeometryShader) { InitReturnPtr(ppGeometryShader); Logger::err("D3D11Device::CreateGeometryShaderWithStreamOutput: Not implemented"); - return E_NOTIMPL; + + // Returning S_OK instead of an error fixes some issues + // with Overwatch until this is properly implemented + return m_d3d11Options.test(D3D11Option::FakeStreamOutSupport) ? S_OK : E_NOTIMPL; } diff --git a/src/d3d11/d3d11_options.cpp b/src/d3d11/d3d11_options.cpp index 613a27c1..e5ac4841 100644 --- a/src/d3d11/d3d11_options.cpp +++ b/src/d3d11/d3d11_options.cpp @@ -5,8 +5,9 @@ namespace dxvk { const static std::unordered_map g_d3d11AppOptions = {{ - { "Dishonored2.exe", D3D11OptionSet(D3D11Option::AllowMapFlagNoWait) }, + { "Dishonored2.exe", D3D11OptionSet(D3D11Option::AllowMapFlagNoWait) }, { "Fallout4.exe", D3D11OptionSet(D3D11Option::DisableGetDataFlagDoNotFlush) }, + { "Overwatch.exe", D3D11OptionSet(D3D11Option::FakeStreamOutSupport) }, }}; diff --git a/src/d3d11/d3d11_options.h b/src/d3d11/d3d11_options.h index 97e8a603..c0c6b2e1 100644 --- a/src/d3d11/d3d11_options.h +++ b/src/d3d11/d3d11_options.h @@ -23,6 +23,16 @@ namespace dxvk { * when passing the \c DONOTFLUSH flag. */ DisableGetDataFlagDoNotFlush = 1, + + /** + * \brief Fakes stream output support + * + * Temporary hack that fixes issues in some games + * which technically need stream output but work + * well enough without it. Will be removed once + * Stream Output is properly supported in DXVK. + */ + FakeStreamOutSupport = 63, }; using D3D11OptionSet = Flags;