Advertise support for shaderInt64 feature.
Add MVKDevice::mslVersionIsAtLeast() to support tests for MSL version.
Also bump MSL support level of standalone MoltenVKShaderConverter tool.
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 588461a..9739ba9 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -18,6 +18,7 @@
Released TBD
+- Advertise support for `shaderInt64` feature.
- Support fast math on MSL compiler via `MVKConfiguration::fastMathEnabled` configuration
setting and `MVK_CONFIG_FAST_MATH_ENABLED` environment variable (both disabled by default).
- Support _GitHub Actions_ for CI builds on pull requests.
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
index 2a2fccc..7bd2e81 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
@@ -322,6 +322,10 @@
}
}
+ /** Returns whether the MSL version is supported on this device. */
+ inline bool mslVersionIsAtLeast(MTLLanguageVersion minVer) { return _metalFeatures.mslVersionEnum >= minVer; }
+
+
#pragma mark Construction
/** Constructs an instance wrapping the specified Vulkan instance and Metal device. */
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index a11e858..8cc5f51 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -1575,6 +1575,7 @@
_features.shaderStorageBufferArrayDynamicIndexing = true;
_features.shaderClipDistance = true;
_features.shaderInt16 = true;
+ _features.shaderInt64 = mslVersionIsAtLeast(MTLLanguageVersion2_2);
_features.multiDrawIndirect = true;
_features.inheritedQueries = true;
@@ -1719,7 +1720,7 @@
// VkBool32 shaderClipDistance; // done
// VkBool32 shaderCullDistance;
// VkBool32 shaderFloat64;
-// VkBool32 shaderInt64;
+// VkBool32 shaderInt64; // done
// VkBool32 shaderInt16; // done
// VkBool32 shaderResourceResidency;
// VkBool32 shaderResourceMinLod; // done
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm
index db7b6cf..b46ba9f 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm
@@ -71,7 +71,11 @@
#define mslVer(MJ, MN, PT) mslVersionMajor == MJ && mslVersionMinor == MN && mslVersionPoint == PT
MTLLanguageVersion mslVerEnum = (MTLLanguageVersion)0;
- if (mslVer(2, 1, 0)) {
+ if (mslVer(2, 3, 0)) {
+ mslVerEnum = MTLLanguageVersion2_1;
+ } else if (mslVer(2, 2, 0)) {
+ mslVerEnum = MTLLanguageVersion2_1;
+ } else if (mslVer(2, 1, 0)) {
mslVerEnum = MTLLanguageVersion2_1;
} else if (mslVer(2, 0, 0)) {
mslVerEnum = MTLLanguageVersion2_0;