f29e152b7e
While it’s unlikely, it’s possible that different MoltenVK versions could require their own compatability patches. Support that by making the `moltenvk` derivation provide the patch via `passthru`. There is no package with the patch applied because the patch should never be used by anything other than DXVK.
59 lines
No EOL
2.5 KiB
Diff
59 lines
No EOL
2.5 KiB
Diff
Source: https://github.com/Gcenx/MoltenVK/commit/1f268bd45f6c928784d7cb90dedce382895f10ae
|
|
|
|
Fake extensions for DXVK;
|
|
- _features.geometryShader
|
|
- _features.tessellationShader
|
|
- _features.shaderCullDistance
|
|
|
|
Enabled defaults;
|
|
- MVK_ALLOW_METAL_FENCES=1
|
|
- MVK_CONFIG_RESUME_LOST_DEVICE=1
|
|
---
|
|
MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm | 3 +++
|
|
MoltenVK/MoltenVK/Utility/MVKEnvironment.h | 4 ++--
|
|
2 files changed, 5 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
|
|
index bc6d19df..e1959c6e 100644
|
|
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
|
|
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
|
|
@@ -1656,6 +1656,8 @@
|
|
_features.robustBufferAccess = true; // XXX Required by Vulkan spec
|
|
_features.fullDrawIndexUint32 = true;
|
|
_features.independentBlend = true;
|
|
+ _features.geometryShader = true; // XXX Required by DXVK for D3D10
|
|
+ _features.tessellationShader = true; // XXX Required by DXVK for D3D11
|
|
_features.sampleRateShading = true;
|
|
_features.depthBiasClamp = true;
|
|
_features.fillModeNonSolid = true;
|
|
@@ -1669,6 +1671,7 @@
|
|
_features.shaderUniformBufferArrayDynamicIndexing = true;
|
|
_features.shaderStorageBufferArrayDynamicIndexing = true;
|
|
_features.shaderClipDistance = true;
|
|
+ _features.shaderCullDistance = true; // XXX Required by DXVK for 10level9
|
|
_features.shaderInt16 = true;
|
|
_features.multiDrawIndirect = true;
|
|
_features.inheritedQueries = true;
|
|
diff --git a/MoltenVK/MoltenVK/Utility/MVKEnvironment.h b/MoltenVK/MoltenVK/Utility/MVKEnvironment.h
|
|
index 81d0defc..80c414d3 100644
|
|
--- a/MoltenVK/MoltenVK/Utility/MVKEnvironment.h
|
|
+++ b/MoltenVK/MoltenVK/Utility/MVKEnvironment.h
|
|
@@ -240,7 +240,7 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig);
|
|
# define MVK_ALLOW_METAL_EVENTS 1
|
|
#endif
|
|
#ifndef MVK_ALLOW_METAL_FENCES
|
|
-# define MVK_ALLOW_METAL_FENCES 0
|
|
+# define MVK_ALLOW_METAL_FENCES 1 // XXX Required by DXVK for Apple/NVidia GPUs (better FPS than CPU Emulation)
|
|
#endif
|
|
|
|
/** Substitute Metal 2D textures for Vulkan 1D images. Enabled by default. */
|
|
@@ -275,7 +275,7 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig);
|
|
|
|
/** Resume MVKDevice VK_ERROR_DEVICE_LOST errors that do not cause MVKPhysicalDevice errors. Disabled by default. */
|
|
#ifndef MVK_CONFIG_RESUME_LOST_DEVICE
|
|
-# define MVK_CONFIG_RESUME_LOST_DEVICE 0
|
|
+# define MVK_CONFIG_RESUME_LOST_DEVICE 1
|
|
#endif
|
|
|
|
/** Support Metal argument buffers. Disabled by default. */
|
|
|