diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md index 3af26d9d..552ffbcc 100644 --- a/Docs/Whats_New.md +++ b/Docs/Whats_New.md @@ -16,24 +16,58 @@ Copyright (c) 2015-2024 [The Brenwill Workshop Ltd.](http://www.brenwill.com) MoltenVK 1.2.7 -------------- -Released TBD +Released 2024/01/08 - Add support for extensions: + - `VK_KHR_calibrated_timestamp` + - `VK_KHR_format_feature_flags2` + - `VK_KHR_vertex_attribute_divisor` - `VK_EXT_extended_dynamic_state3` *(Metal does not support `VK_POLYGON_MODE_POINT`)* - `VK_EXT_headless_surface` - `VK_EXT_layer_settings` +- Add support for format `VK_FORMAT_B4G4R4A4_UNORM_PACK16`. +- Add support for vertex formats `VK_FORMAT_B10G11R11_UFLOAT_PACK32` & `VK_FORMAT_E5B9G9R9_UFLOAT_PACK32`. - Fix regression that broke `VK_POLYGON_MODE_LINE`. - Fix regression in marking rendering state dirty after `vkCmdClearAttachments()`. -- Reduce disk space consumed after running `fetchDependencies` script by removing intermediate file caches. +- Fix regression error in argument buffer runtime arrays. - Fix rare deadlock during launch via `dlopen()`. - Fix initial value of `VkPhysicalDeviceLimits::timestampPeriod` on non-Apple Silicon GPUs. - Fix swapchain and surface bugs when windowing system is accessed from off the main thread. +- Fix system memory size of _tvOS_. +- Fix `heapUsage` query for non-unified memory devices. +- Add a defensive guard to ensure `heapUsage[0]` calculation is correct. +- Clamp max per-set descriptor limit to minimum `1024`. +- Enable the cube texture gradient workaround for Apple Silicon. +- Ensure `lineWidthGranularity` is zero if the `wideLines` feature isn't supported. +- Ensure `maxDrawIndexedIndexValue` set to `UINT32_MAX`. +- Ignore no external handle types specified for buffers and images. +- Expose `VK_EXT_debug_utils` device functions as device functions, not instance functions. +- Emit `primitiveRestartEnable` disabled warning only for strip topology. +- Enable mandatory `VK_EXT_descriptor_indexing` features, and don't advertise extension if they are not supported. +- Reduce disk space consumed after running `fetchDependencies` script by removing intermediate file caches. - Deprecate `vkSetMoltenVKConfigurationMVK()`. - Deprecate `mvk_config.h` and move content to `mvk_private_api.h` and `mvk_deprecated_api.h`. - Update copyright notices to year 2024. +- Update dependency libraries to match _Vulkan SDK 1.3.273_. - Update to latest SPIRV-Cross: - MSL: Fix regression error in argument buffer runtime arrays. - MSL: Work around broken cube texture gradients on Apple Silicon. + - MSL: Ensure discrete runtime arrays of buffers have known length. + - MSL: Implement Metal 3.1 image atomics natively. + - MSL: Fix patch vertex count with raw buffer tese input. + - MSL: Improve handling of sample masks. + - MSL: Add divide to reserved function names. + - MSL: Support std140 half matrices and arrays. + - MSL: Use more appropriate padded types. + - MSL: Don't use swizzle if we have wrapper. + - MSL: Add ray-cull mask + - MSL: Consider PtrAccessChain on array types. + - MSL: Use LHS expression to determine whether or not to do array copy. + - MSL: Only do address-of expression when needed. + - MSL: Improve PtrAccessChain handling. + - MSL: Use powr instead of pow. + - MSL: Remove special case for threadgroup array wrapper. + - MSL: Added an `Op` field to `SPIRType` and refactor. diff --git a/ExternalDependencies.xcodeproj/project.pbxproj b/ExternalDependencies.xcodeproj/project.pbxproj index fdbcf75f..75997635 100644 --- a/ExternalDependencies.xcodeproj/project.pbxproj +++ b/ExternalDependencies.xcodeproj/project.pbxproj @@ -218,12 +218,6 @@ A997FA1C26865A550006F71B /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F95E26865A550006F71B /* disassemble.cpp */; }; A997FA1D26865A550006F71B /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F95E26865A550006F71B /* disassemble.cpp */; }; A997FA1E26865A550006F71B /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F95E26865A550006F71B /* disassemble.cpp */; }; - A997FA1F26865A550006F71B /* InitializeDll.h in Headers */ = {isa = PBXBuildFile; fileRef = A997F96126865A550006F71B /* InitializeDll.h */; }; - A997FA2026865A550006F71B /* InitializeDll.h in Headers */ = {isa = PBXBuildFile; fileRef = A997F96126865A550006F71B /* InitializeDll.h */; }; - A997FA2126865A550006F71B /* InitializeDll.h in Headers */ = {isa = PBXBuildFile; fileRef = A997F96126865A550006F71B /* InitializeDll.h */; }; - A997FA2226865A550006F71B /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F96226865A550006F71B /* InitializeDll.cpp */; }; - A997FA2326865A550006F71B /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F96226865A550006F71B /* InitializeDll.cpp */; }; - A997FA2426865A550006F71B /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F96226865A550006F71B /* InitializeDll.cpp */; }; A997FA2826865A550006F71B /* ossource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F96C26865A550006F71B /* ossource.cpp */; }; A997FA2926865A550006F71B /* ossource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F96C26865A550006F71B /* ossource.cpp */; }; A997FA2A26865A550006F71B /* ossource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F96C26865A550006F71B /* ossource.cpp */; }; @@ -1783,7 +1777,6 @@ DCFD7CD72A45BA92007BBBF7 /* NonSemanticDebugPrintf.h in Headers */ = {isa = PBXBuildFile; fileRef = A997F94226865A550006F71B /* NonSemanticDebugPrintf.h */; }; DCFD7CD82A45BA92007BBBF7 /* glslang_tab.cpp.h in Headers */ = {isa = PBXBuildFile; fileRef = A997F9A126865A550006F71B /* glslang_tab.cpp.h */; }; DCFD7CD92A45BA92007BBBF7 /* ParseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = A997F9AC26865A550006F71B /* ParseHelper.h */; }; - DCFD7CDA2A45BA92007BBBF7 /* InitializeDll.h in Headers */ = {isa = PBXBuildFile; fileRef = A997F96126865A550006F71B /* InitializeDll.h */; }; DCFD7CDC2A45BA92007BBBF7 /* ParseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F98626865A550006F71B /* ParseHelper.cpp */; }; DCFD7CDD2A45BA92007BBBF7 /* doc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F95D26865A550006F71B /* doc.cpp */; }; DCFD7CDE2A45BA92007BBBF7 /* attribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F9A426865A550006F71B /* attribute.cpp */; }; @@ -1805,7 +1798,6 @@ DCFD7CEE2A45BA92007BBBF7 /* SpirvIntrinsics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F99426865A550006F71B /* SpirvIntrinsics.cpp */; }; DCFD7CEF2A45BA92007BBBF7 /* linkValidate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F9AA26865A550006F71B /* linkValidate.cpp */; }; DCFD7CF02A45BA92007BBBF7 /* parseConst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F99526865A550006F71B /* parseConst.cpp */; }; - DCFD7CF12A45BA92007BBBF7 /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F96226865A550006F71B /* InitializeDll.cpp */; }; DCFD7CF22A45BA92007BBBF7 /* Link.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F9CD26865A550006F71B /* Link.cpp */; }; DCFD7CF32A45BA92007BBBF7 /* iomapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F99A26865A550006F71B /* iomapper.cpp */; }; DCFD7CF42A45BA92007BBBF7 /* ParseContextBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F9B526865A550006F71B /* ParseContextBase.cpp */; }; @@ -2428,9 +2420,6 @@ A997F95C26865A550006F71B /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logger.h; sourceTree = ""; }; A997F95D26865A550006F71B /* doc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = doc.cpp; sourceTree = ""; }; A997F95E26865A550006F71B /* disassemble.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = disassemble.cpp; sourceTree = ""; }; - A997F96026865A550006F71B /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - A997F96126865A550006F71B /* InitializeDll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitializeDll.h; sourceTree = ""; }; - A997F96226865A550006F71B /* InitializeDll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = ""; }; A997F96426865A550006F71B /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; A997F96C26865A550006F71B /* ossource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ossource.cpp; sourceTree = ""; }; A997F96D26865A550006F71B /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; @@ -2982,7 +2971,6 @@ isa = PBXGroup; children = ( A997F96326865A550006F71B /* glslang */, - A997F95F26865A550006F71B /* OGLCompilersDLL */, A997F94126865A550006F71B /* SPIRV */, ); path = glslang; @@ -3073,16 +3061,6 @@ path = CInterface; sourceTree = ""; }; - A997F95F26865A550006F71B /* OGLCompilersDLL */ = { - isa = PBXGroup; - children = ( - A997F96026865A550006F71B /* CMakeLists.txt */, - A997F96126865A550006F71B /* InitializeDll.h */, - A997F96226865A550006F71B /* InitializeDll.cpp */, - ); - path = OGLCompilersDLL; - sourceTree = ""; - }; A997F96326865A550006F71B /* glslang */ = { isa = PBXGroup; children = ( @@ -3796,7 +3774,6 @@ A997F9CF26865A550006F71B /* NonSemanticDebugPrintf.h in Headers */, A997FAB326865A560006F71B /* glslang_tab.cpp.h in Headers */, A997FAD126865A560006F71B /* ParseHelper.h in Headers */, - A997FA2026865A550006F71B /* InitializeDll.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4517,7 +4494,6 @@ A997F9CE26865A550006F71B /* NonSemanticDebugPrintf.h in Headers */, A997FAB226865A560006F71B /* glslang_tab.cpp.h in Headers */, A997FAD026865A560006F71B /* ParseHelper.h in Headers */, - A997FA1F26865A550006F71B /* InitializeDll.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4577,7 +4553,6 @@ A997F9D026865A550006F71B /* NonSemanticDebugPrintf.h in Headers */, A997FAB426865A560006F71B /* glslang_tab.cpp.h in Headers */, A997FAD226865A560006F71B /* ParseHelper.h in Headers */, - A997FA2126865A550006F71B /* InitializeDll.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4694,7 +4669,6 @@ DCFD7CD72A45BA92007BBBF7 /* NonSemanticDebugPrintf.h in Headers */, DCFD7CD82A45BA92007BBBF7 /* glslang_tab.cpp.h in Headers */, DCFD7CD92A45BA92007BBBF7 /* ParseHelper.h in Headers */, - DCFD7CDA2A45BA92007BBBF7 /* InitializeDll.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5549,7 +5523,6 @@ A997FA8C26865A560006F71B /* SpirvIntrinsics.cpp in Sources */, A997FACE26865A560006F71B /* linkValidate.cpp in Sources */, A997FA8F26865A560006F71B /* parseConst.cpp in Sources */, - A997FA2326865A550006F71B /* InitializeDll.cpp in Sources */, A997FB2826865A560006F71B /* Link.cpp in Sources */, A997FA9E26865A560006F71B /* iomapper.cpp in Sources */, A997FAE926865A560006F71B /* ParseContextBase.cpp in Sources */, @@ -6300,7 +6273,6 @@ A997FA8B26865A560006F71B /* SpirvIntrinsics.cpp in Sources */, A997FACD26865A560006F71B /* linkValidate.cpp in Sources */, A997FA8E26865A560006F71B /* parseConst.cpp in Sources */, - A997FA2226865A550006F71B /* InitializeDll.cpp in Sources */, A997FB2726865A560006F71B /* Link.cpp in Sources */, A997FA9D26865A560006F71B /* iomapper.cpp in Sources */, A997FAE826865A560006F71B /* ParseContextBase.cpp in Sources */, @@ -6350,7 +6322,6 @@ A997FA8D26865A560006F71B /* SpirvIntrinsics.cpp in Sources */, A997FACF26865A560006F71B /* linkValidate.cpp in Sources */, A997FA9026865A560006F71B /* parseConst.cpp in Sources */, - A997FA2426865A550006F71B /* InitializeDll.cpp in Sources */, A997FB2926865A560006F71B /* Link.cpp in Sources */, A997FA9F26865A560006F71B /* iomapper.cpp in Sources */, A997FAEA26865A560006F71B /* ParseContextBase.cpp in Sources */, @@ -6442,7 +6413,6 @@ DCFD7CEE2A45BA92007BBBF7 /* SpirvIntrinsics.cpp in Sources */, DCFD7CEF2A45BA92007BBBF7 /* linkValidate.cpp in Sources */, DCFD7CF02A45BA92007BBBF7 /* parseConst.cpp in Sources */, - DCFD7CF12A45BA92007BBBF7 /* InitializeDll.cpp in Sources */, DCFD7CF22A45BA92007BBBF7 /* Link.cpp in Sources */, DCFD7CF32A45BA92007BBBF7 /* iomapper.cpp in Sources */, DCFD7CF42A45BA92007BBBF7 /* ParseContextBase.cpp in Sources */, diff --git a/ExternalRevisions/README.md b/ExternalRevisions/README.md index 21cf7398..06f19371 100644 --- a/ExternalRevisions/README.md +++ b/ExternalRevisions/README.md @@ -240,7 +240,6 @@ if you encounter any building errors, you may need to re-add the *glslang* libra *Group* in the *Project Navigator* panel: glslang - OGLCompilersDLL SPIRV In the ***Choose options for adding these files*** dialog that opens, select the ***Create groups*** option, diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision index cd24745d..219b9995 100644 --- a/ExternalRevisions/SPIRV-Cross_repo_revision +++ b/ExternalRevisions/SPIRV-Cross_repo_revision @@ -1 +1 @@ -50e90dd74e0e43e243f12a70f0326d2cf8ed3945 +d9f4280f4511e9bff9bdd5147370b9ee49dbe2af diff --git a/ExternalRevisions/Vulkan-Tools_repo_revision b/ExternalRevisions/Vulkan-Tools_repo_revision index 6ecf5015..631db350 100644 --- a/ExternalRevisions/Vulkan-Tools_repo_revision +++ b/ExternalRevisions/Vulkan-Tools_repo_revision @@ -1 +1 @@ -1532001f7edae559af1988293eec90bc5e2607d5 +afb8b9e8caeade2489372b8cf78b70b5301c8741 diff --git a/ExternalRevisions/glslang_repo_revision b/ExternalRevisions/glslang_repo_revision index cd54f4f3..83b8f136 100644 --- a/ExternalRevisions/glslang_repo_revision +++ b/ExternalRevisions/glslang_repo_revision @@ -1 +1 @@ -be564292f00c5bf0d7251c11f1c9618eb1117762 +719b6b7debbfe75bd427daa0e39c347fce16cf9a diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.cpp b/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.cpp index 80d83cbe..6e0cc67a 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.cpp +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.cpp @@ -22,6 +22,7 @@ #include "SPIRVSupport.h" #include "MVKStrings.h" #include +#include #include using namespace std; diff --git a/Templates/spirv-tools/build.zip b/Templates/spirv-tools/build.zip index d087d8e2..5f27a501 100644 Binary files a/Templates/spirv-tools/build.zip and b/Templates/spirv-tools/build.zip differ diff --git a/fetchDependencies b/fetchDependencies index c33380b6..5789b77d 100755 --- a/fetchDependencies +++ b/fetchDependencies @@ -4,7 +4,7 @@ # # fetchDependencies - Retrieves the correct versions of all dependencies # -# macOS usage: ./fetchDependencies [--macos] [--ios] [--iossim] [--tvos] [--tvossim] +# macOS usage: ./fetchDependencies [--macos] [--ios] [--iossim] [--maccat] [--tvos] [--tvossim] # [--visionos] [--visionossim] [--all] [--none] # [-v] [--debug] [--build-spirv-tools] # [--v-headers-root path] [--spirv-cross-root path] [--glslang-root path]