diff options
author | Randy Eckenrode <randy@largeandhighquality.com> | 2022-06-01 16:18:19 -0400 |
---|---|---|
committer | Randy Eckenrode <randy@largeandhighquality.com> | 2022-06-06 23:59:19 -0400 |
commit | a97a4f491f59a2efe8e2d6a74932ad101a21fcca (patch) | |
tree | 87b19886556777b897a1dff08d7400edd17a908e /pkgs/misc | |
parent | e2de23b6db6c1f36bbf52e953929bb9283c549bf (diff) |
dxvk: work with unpatched MoltenVK on Darwin
Diffstat (limited to 'pkgs/misc')
-rw-r--r-- | pkgs/misc/dxvk/darwin-dxvk-compat.patch | 51 | ||||
-rw-r--r-- | pkgs/misc/dxvk/default.nix | 19 |
2 files changed, 35 insertions, 35 deletions
diff --git a/pkgs/misc/dxvk/darwin-dxvk-compat.patch b/pkgs/misc/dxvk/darwin-dxvk-compat.patch index 1c68659215f0..99833a020cda 100644 --- a/pkgs/misc/dxvk/darwin-dxvk-compat.patch +++ b/pkgs/misc/dxvk/darwin-dxvk-compat.patch @@ -1,35 +1,48 @@ -Source: https://github.com/marzent/dxvk/commit/65247afe2de5dd6b555b8fdd46dddcdc6325e1d6 ---- - src/d3d11/d3d11_device.cpp | 12 +- - 1 file changed, 8 insertions(+), 4 deletions(-) - diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp -index 21f0d1b4a..5b1d05335 100644 +index 09f3559a..215787f9 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp -@@ -799,8 +799,12 @@ namespace dxvk { +@@ -801,8 +801,12 @@ namespace dxvk { InitReturnPtr(ppGeometryShader); D3D11CommonShader module; - + - if (!m_dxvkDevice->features().extTransformFeedback.transformFeedback) - return DXGI_ERROR_INVALID_CALL; -+ if (!m_dxvkDevice->features().extTransformFeedback.transformFeedback) { -+ Logger::err( -+ "D3D11: CreateGeometryShaderWithStreamOutput:" -+ "\n Transform feedback not supported by device"); -+ return S_OK; -+ } - ++ if (!m_dxvkDevice->features().extTransformFeedback.transformFeedback) { ++ Logger::err( ++ "D3D11: CreateGeometryShaderWithStreamOutput:" ++ "\n Transform feedback not supported by device"); ++ return S_OK; ++ } + // Zero-init some counterss so that we can increment // them while walking over the stream output entries -@@ -1973,8 +1977,8 @@ namespace dxvk { +@@ -1920,7 +1924,7 @@ namespace dxvk { + DxvkDeviceFeatures supported = adapter->features(); + DxvkDeviceFeatures enabled = {}; + +- enabled.core.features.geometryShader = VK_TRUE; ++ enabled.core.features.geometryShader = supported.core.features.geometryShader; + enabled.core.features.robustBufferAccess = VK_TRUE; + enabled.core.features.shaderStorageImageWriteWithoutFormat = VK_TRUE; + enabled.core.features.depthBounds = supported.core.features.depthBounds; +@@ -1951,7 +1955,7 @@ namespace dxvk { + enabled.core.features.sampleRateShading = VK_TRUE; + enabled.core.features.samplerAnisotropy = supported.core.features.samplerAnisotropy; + enabled.core.features.shaderClipDistance = VK_TRUE; +- enabled.core.features.shaderCullDistance = VK_TRUE; ++ enabled.core.features.shaderCullDistance = supported.core.features.shaderCullDistance; + enabled.core.features.textureCompressionBC = VK_TRUE; + enabled.extDepthClipEnable.depthClipEnable = supported.extDepthClipEnable.depthClipEnable; + enabled.extHostQueryReset.hostQueryReset = VK_TRUE; +@@ -1971,8 +1975,8 @@ namespace dxvk { enabled.core.features.logicOp = supported.core.features.logicOp; enabled.core.features.shaderImageGatherExtended = VK_TRUE; enabled.core.features.variableMultisampleRate = supported.core.features.variableMultisampleRate; - enabled.extTransformFeedback.transformFeedback = VK_TRUE; - enabled.extTransformFeedback.geometryStreams = VK_TRUE; -+ enabled.extTransformFeedback.transformFeedback = supported.extTransformFeedback.transformFeedback; -+ enabled.extTransformFeedback.geometryStreams = supported.extTransformFeedback.geometryStreams; ++ enabled.extTransformFeedback.transformFeedback = supported.extTransformFeedback.transformFeedback; ++ enabled.extTransformFeedback.geometryStreams = supported.extTransformFeedback.geometryStreams; } - + if (featureLevel >= D3D_FEATURE_LEVEL_10_1) { diff --git a/pkgs/misc/dxvk/default.nix b/pkgs/misc/dxvk/default.nix index 7c466b44ae6b..0305a5b9755f 100644 --- a/pkgs/misc/dxvk/default.nix +++ b/pkgs/misc/dxvk/default.nix @@ -70,23 +70,10 @@ let done ''; - # DXVK with MoltenVK requires a patched MoltenVK in addition to its own patches. Provide a - # convenience function to handle the necessary patching. - # - # Usage: - # let - # patchedMoltenVK = dxvk.patchMoltenVK darwin.moltenvk; - # in - # wine64Packages.full.override { moltenvk = patchedMoltenVK; vkd3dSupport = false; } + # DXVK is patched to work with an unpatched MoltenVK. This function is kept to facilitate + # backporting of MoltenVK updates to 22.05. It should be removed for 22.11. passthru.patchMoltenVK = moltenvk: - moltenvk.overrideAttrs (old: { - patches = old.patches or [ ] ++ [ - # Apply MoltenVK’s DXVK compatability patch. This is needed to fake support for certain - # extensions. There is no package for a patched MoltenVK to avoid any confusion by users - # whether they should use it. Except with DXVK, the answer is always no. - old.passthru.dxvkPatch - ]; - }); + lib.warn "patchMoltenVK is deprecated, does nothing, and is no longer necessary. Use MoltenVK directly." moltenvk; meta = { description = "A Vulkan-based translation layer for Direct3D 9/10/11"; |