summaryrefslogtreecommitdiffstats
path: root/pkgs/misc
diff options
context:
space:
mode:
authorRandy Eckenrode <randy@largeandhighquality.com>2022-06-01 16:18:19 -0400
committerRandy Eckenrode <randy@largeandhighquality.com>2022-06-06 23:59:19 -0400
commita97a4f491f59a2efe8e2d6a74932ad101a21fcca (patch)
tree87b19886556777b897a1dff08d7400edd17a908e /pkgs/misc
parente2de23b6db6c1f36bbf52e953929bb9283c549bf (diff)
dxvk: work with unpatched MoltenVK on Darwin
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/dxvk/darwin-dxvk-compat.patch51
-rw-r--r--pkgs/misc/dxvk/default.nix19
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";