diff --git a/Demos/Cube/Cube.xcodeproj/project.pbxproj b/Demos/Cube/Cube.xcodeproj/project.pbxproj index 471e762c..1412260b 100644 --- a/Demos/Cube/Cube.xcodeproj/project.pbxproj +++ b/Demos/Cube/Cube.xcodeproj/project.pbxproj @@ -415,7 +415,7 @@ MARKETING_VERSION = 1; PRODUCT_NAME = Cube; SDKROOT = appletvos; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Debug; }; @@ -438,7 +438,7 @@ MARKETING_VERSION = 1; PRODUCT_NAME = Cube; SDKROOT = appletvos; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Release; }; @@ -462,7 +462,7 @@ "@executable_path/../Frameworks", "@executable_path/../Frameworks/MoltenVK.framework", ); - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = Cube; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; @@ -489,7 +489,7 @@ "@executable_path/../Frameworks", "@executable_path/../Frameworks/MoltenVK.framework", ); - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = Cube; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; @@ -511,8 +511,8 @@ MVK_SAMP_CUBE, ); INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/Frameworks", "@executable_path/Frameworks/MoltenVK.framework", @@ -541,8 +541,8 @@ MVK_SAMP_CUBE, ); INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/Frameworks", "@executable_path/Frameworks/MoltenVK.framework", diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md index 2d28e054..aa354523 100644 --- a/Docs/Whats_New.md +++ b/Docs/Whats_New.md @@ -16,8 +16,10 @@ Copyright (c) 2015-2024 [The Brenwill Workshop Ltd.](http://www.brenwill.com) MoltenVK 1.2.8 -------------- -Released TBD +Released 2024/03/12 +- Add support for extensions: + - `VK_KHR_shader_integer_dot_product` - Improve support for _iOS App Store_ rules by using dynamic _XCFramework_, instead of naked `dylib`. - Static _XCFramework_ now available in `Package/Latest/MoltenVK/static/MoltenVK.xcframework`. - Dynamic _XCFramework_ now available in `Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework`. @@ -28,10 +30,35 @@ Released TBD - `VkPhysicalDeviceFeatures::depthBounds` enabled on AMD GPUs when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build. - `VkPhysicalDevicePortabilitySubsetFeaturesKHR::samplerMipLodBias` enabled when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build. - _Metal_ native pipeline sample masks supported when `MVK_USE_METAL_PRIVATE_API` is enabled in a **MoltenVK** build. +- Enable use of native texture atomics where supported. - Fix potential crash when using multi-planar images. +- Fix translation of fully remapped multi vertex attribute bindings. +- Fix unresolvable layered compute resolve. +- Fix visionOS build. +- Handle depth/stencil swizzle sample correctly. - Ensure buffers available for buffer addresses in push constants. - Don't update `currentExtent` of headless surface when swapchain attached. +- Don't return `VK_SUBOPTIMAL_KHR` for headless surfaces. - `runcts` script also output a file containing a list of the failed CTS tests. +- Add documentation for using Metal GPU capture with **MoltenVK**. +- Update minimum _macOS_ deployment target to 10.15. +- Update minimum _iOS/tvOS_ deployment target to 13.0. +- Update dependency libraries to match _Vulkan SDK 1.3.280_. +- Update `MVK_PRIVATE_API_VERSION` to `40`. +- Update to latest SPIRV-Cross: + - MSL: Plumb through member state to image/sampler types. + - MSL: Support variable sized descriptor array in argument buffer. + - MSL: Implement `spvDescriptorArray` path for SSBO/UBO. + - MSL: Add support for SPV_EXT_integer_dot_product. + - MSL: Fix misc sign issues with dot product impl and add more coverage. + - MSL: Handle volatile properly for emulated image atomics. + - MSL: OpCopyObject declare a temp var of base type, not pointer type. + - MSL: Pass texture array index separately to atomic texture operations. + - MSL: Test image atomic for image2DArray. + - MSL: Improve handling of BDA + atomics. + - MSL: Fix type hierarchy for extended vectors. + - MSL: Fix type hierarchy for extended vectors. + - MSL: `atomic_compare_exchange_weak()` support `CompilerMSL:msl_options.texture_1D_as_2D`. @@ -72,6 +99,7 @@ Released 2024/01/08 - The _Cube_ demo is now based on _Volk_, with dynamic library linking, and dynamic function pointer calls. - Update copyright notices to year 2024. - Update dependency libraries to match _Vulkan SDK 1.3.275_. +- Update `MVK_CONFIGURATION_API_VERSION` and `MVK_PRIVATE_API_VERSION` to `39`. - Update to latest SPIRV-Cross: - MSL: Fix regression error in argument buffer runtime arrays. - MSL: Work around broken cube texture gradients on Apple Silicon. diff --git a/ExternalDependencies.xcodeproj/project.pbxproj b/ExternalDependencies.xcodeproj/project.pbxproj index 5c1e6f71..27442c7b 100644 --- a/ExternalDependencies.xcodeproj/project.pbxproj +++ b/ExternalDependencies.xcodeproj/project.pbxproj @@ -7174,11 +7174,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_PARAMETER = YES; GCC_WARN_UNUSED_VARIABLE = NO; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.15; SKIP_INSTALL = YES; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; }; name = Debug; }; @@ -7224,11 +7224,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_PARAMETER = YES; GCC_WARN_UNUSED_VARIABLE = NO; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.15; SKIP_INSTALL = YES; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/ExternalRevisions/README.md b/ExternalRevisions/README.md index 06f19371..835f4087 100644 --- a/ExternalRevisions/README.md +++ b/ExternalRevisions/README.md @@ -18,9 +18,9 @@ Table of Contents - [Fetching and Building External Libraries](#fetching) - [Updating External Library Versions](#updating) - [Adding the *cereal* Library to the *MoltenVK Xcode* Project](#add_cereal) -- [Adding the *SPIRV-Cross* Library to the *ExternalDependencies Xcode* Project](#add_spirv-cross) -- [Adding the *SPIRV-Tools* Library to the *ExternalDependencies Xcode* Project](#add_spirv-tools) - [Adding the *glslang* Library to the *ExternalDependencies Xcode* Project](#add_glslang) +- [Adding the *SPIRV-Tools* Library to the *ExternalDependencies Xcode* Project](#add_spirv-tools) +- [Adding the *SPIRV-Cross* Library to the *ExternalDependencies Xcode* Project](#add_spirv-cross) @@ -31,11 +31,12 @@ Fetching and Building External Libraries **MoltenVK** uses technology from the following external open-source libraries: - [*cereal*](https://github.com/USCiLab/cereal) -- [*Vulkan-Headers*](https://github.com/KhronosGroup/Vulkan-Headers) -- [*SPIRV-Cross*](https://github.com/KhronosGroup/SPIRV-Cross) - [*glslang*](https://github.com/KhronosGroup/glslang) -- [*SPIRV-Tools*](https://github.com/KhronosGroup/SPIRV-Tools) -- [*SPIRV-Headers*](https://github.com/KhronosGroup/SPIRV-Headers) + - [*SPIRV-Tools*](https://github.com/KhronosGroup/SPIRV-Tools) + - [*SPIRV-Headers*](https://github.com/KhronosGroup/SPIRV-Headers) +- [*SPIRV-Cross*](https://github.com/KhronosGroup/SPIRV-Cross) +- [*volk*](https://github.com/zeux/volk) +- [*Vulkan-Headers*](https://github.com/KhronosGroup/Vulkan-Headers) - [*Vulkan-Tools*](https://github.com/KhronosGroup/Vulkan-Tools) These external open-source libraries are maintained in the `External` directory. @@ -59,27 +60,29 @@ determined as follows: - **_cereal_**: a GitHub repository commit identifier found in the `ExternalRevisions/cereal_repo_revision` file. -- **_Vulkan-Headers_**: a GitHub repository commit identifier found in the - `ExternalRevisions/Vulkan-Headers_repo_revision` file. +- **_glslang_**: a GitHub repository commit identifier found + in the `ExternalRevisions/glslang_repo_revision` file. + + - **_SPIRV-Tools_**: automatically retrieved by the *glslang* repository. + + - **_SPIRV-Headers_**: automatically retrieved by the *glslang* repository. - **_SPIRV-Cross_**: a GitHub repository commit identifier found in the `ExternalRevisions/SPIRV-Cross_repo_revision` file. - -- **_glslang_**: a GitHub repository commit identifier found - in the `ExternalRevisions/glslang_repo_revision` file. - -- **_SPIRV-Tools_**: automatically retrieved by the *glslang* repository. -- **_SPIRV-Headers_**: automatically retrieved by the *glslang* repository. - +- **_volk_**: a GitHub repository commit identifier found in the + `ExternalRevisions/Volk_repo_revision` file. + +- **_Vulkan-Headers_**: a GitHub repository commit identifier found in the + `ExternalRevisions/Vulkan-Headers_repo_revision` file. + - **_Vulkan-Tools_**: a GitHub repository commit identifier found in the `ExternalRevisions/Vulkan-Tools_repo_revision` file. - -You can update which versions of the *cereal*, *Vulkan-Headers*, *SPIRV-Cross*, -*glslang*, *Vulkan-Tools*, or *VulkanSamples* libraries are retrieved by changing + +You can update which versions of the external libraries are retrieved by changing the value held in the corresponding `*_repo_revision` file listed above. -The version of the *SPIRV-Tools* and *SPIRV-Headers* libraries is automatically +The versions of the *SPIRV-Tools* and *SPIRV-Headers* libraries are automatically determined by the version of the *glslang* library you have retrieved. Once you have made changes to the `*_repo_revision` files, you can retrieve the updated @@ -89,6 +92,9 @@ library versions by running the `fetchDependencies` script, as described above, >build errors when building **MoltenVK**, review the instructions in the sections below >to ensure all necessary external library files are included in the **MoltenVK** builds. +>***Note:*** _Vulkan-Tools_ and _volk_ are not used by **MoltenVK** itself, but are used +>by the _Cube_ demo app included in the **MoltenVK** repository. + @@ -106,6 +112,87 @@ errors, you may need to re-add the *cereal* library to the `MoltenVK` *Xcode* pr "$(SRCROOT)/../External/cereal/include" + + +Adding the *glslang* Library to the *ExternalDependencies Xcode* Project +------------------------------------------------------------------------ + +The `ExternalDependencies` *Xcode* project is already configured to use the *glslang* +library. However, after updating the version of *glslang*, as described [above](#updating), +if you encounter any building errors, you may need to re-add the *glslang* library to the +`ExternalDependencies` *Xcode* project as follows: + +1. In the *Project Navigator* panel, select the `ExternalDependencies` *Xcode* project, then + select the `glslang-macOS` target, and open the *Build Settings* tab. Locate the build + setting entry **Header Search Paths** (`HEADER_SEARCH_PATHS`) and add the following paths: + + $(inherited) + "$(SRCROOT)/External/glslang" + "$(SRCROOT)/External/glslang/build/include" + +2. Repeat *Step 1* for the `glslang-iOS` target within the `ExternalDependencies` *Xcode* project + +3. In the *Project Navigator*, remove all *Groups* from under the *Group* named + `External/glslang`. + +4. Drag the following folders from the `External/glslang` file folder to the `External/glslang` + *Group* in the *Project Navigator* panel: + + glslang + SPIRV + + In the ***Choose options for adding these files*** dialog that opens, select the ***Create groups*** option, + add the files to *all* of the `glslang-macOS`, `glslang-iOS`, and `glslang-tvOS` targets, and click the ***Finish*** button. + +5. In the *Project Navigator* panel, remove the references to the following files and folders: + + External/glslang/glslang/MachineIndependant/glslang.y + External/glslang/glslang/OSDependent/Windows + External/glslang/glslang/OSDependent/Web + External/glslang/glslang/HLSL + + + + +Adding the *SPIRV-Tools* Library to the *ExternalDependencies Xcode* Project +---------------------------------------------------------------------------- + +The `ExternalDependencies` *Xcode* project is already configured to use the *SPIRV-Tools* +library. However, after updating the version of *glslang* (which adds *SPIRV-Tools*), +as described [above](#updating), if you encounter any building errors, you may need to re-add +the *SPIRV-Tools* library to the `ExternalDependencies` *Xcode* project as follows: + +1. In the *Project Navigator* panel, select the `ExternalDependencies` *Xcode* project, then + select the `SPIRV-Tools-macOS` target, and open the *Build Settings* tab. Locate the build + setting entry **Header Search Paths** (`HEADER_SEARCH_PATHS`) and add the following paths: + + $(inherited) + "$(SRCROOT)/External/glslang/External/spirv-tools/" + "$(SRCROOT)/External/glslang/External/spirv-tools/include" + "$(SRCROOT)/External/glslang/External/spirv-tools/external/spirv-headers/include" + "$(SRCROOT)/External/glslang/External/spirv-tools/build" + +2. Repeat *Step 1* for the `SPIRV-Tools-iOS` target within the `ExternalDependencies` *Xcode* project + +3. In the *Project Navigator*, remove the *Group* named `source` from under the *Group* named + `External/SPIRV-Tools`. + +4. Drag the `External/glslang/External/spirv-tools/source` file folder to the `External/SPIRV-Tools` + group in the *Project Navigator* panel. In the _**Choose options for adding these files**_ dialog + that opens, select the _**Create groups**_ option, add the files to *all* of the `SPIRV-Tools-macOS`, + `SPIRV-Tools-iOS`, and `SPIRV-Tools-tvOS` targets, and click the ***Finish*** button. + +5. Remove the following *Groups* from under the *Group* named `External/SPIRV-Tools/source`: + - `fuzz` + - `wasm` + +6. In the `Scripts` folder, run `./packagePregenSpirvToolsHeaders`, which will fetch and build the + full `SPIRV-Tools` library and will update `Templates/spirv-tools/build.zip` from the `*.h` and + `*.inc` files in `External/glslang/External/spirv-tools/build`. Test by running `./fetchDependencies --all` + and a **MoltenVK** build. + + + Adding the *SPIRV-Cross* Library to the *ExternalDependencies Xcode* Project ---------------------------------------------------------------------------- @@ -174,84 +261,3 @@ following steps: - -Adding the *SPIRV-Tools* Library to the *ExternalDependencies Xcode* Project ----------------------------------------------------------------------------- - -The `ExternalDependencies` *Xcode* project is already configured to use the *SPIRV-Tools* -library. However, after updating the version of *glslang* (which adds *SPIRV-Tools*), -as described [above](#updating), if you encounter any building errors, you may need to re-add -the *SPIRV-Tools* library to the `ExternalDependencies` *Xcode* project as follows: - -1. In the *Project Navigator* panel, select the `ExternalDependencies` *Xcode* project, then - select the `SPIRV-Tools-macOS` target, and open the *Build Settings* tab. Locate the build - setting entry **Header Search Paths** (`HEADER_SEARCH_PATHS`) and add the following paths: - - $(inherited) - "$(SRCROOT)/External/glslang/External/spirv-tools/" - "$(SRCROOT)/External/glslang/External/spirv-tools/include" - "$(SRCROOT)/External/glslang/External/spirv-tools/external/spirv-headers/include" - "$(SRCROOT)/External/glslang/External/spirv-tools/build" - -2. Repeat *Step 1* for the `SPIRV-Tools-iOS` target within the `ExternalDependencies` *Xcode* project - -3. In the *Project Navigator*, remove the *Group* named `source` from under the *Group* named - `External/SPIRV-Tools`. - -4. Drag the `External/glslang/External/spirv-tools/source` file folder to the `External/SPIRV-Tools` - group in the *Project Navigator* panel. In the _**Choose options for adding these files**_ dialog - that opens, select the _**Create groups**_ option, add the files to *all* of the `SPIRV-Tools-macOS`, - `SPIRV-Tools-iOS`, and `SPIRV-Tools-tvOS` targets, and click the ***Finish*** button. - -5. Remove the following *Groups* from under the *Group* named `External/SPIRV-Tools/source`: - - `fuzz` - - `wasm` - -6. In the `Scripts` folder, run `./packagePregenSpirvToolsHeaders`, which will fetch and build the - full `SPIRV-Tools` library and will update `Templates/spirv-tools/build.zip` from the `*.h` and - `*.inc` files in `External/glslang/External/spirv-tools/build`. Test by running `./fetchDependencies --all` - and a **MoltenVK** build. - - - - -Adding the *glslang* Library to the *ExternalDependencies Xcode* Project ------------------------------------------------------------------------- - -The `ExternalDependencies` *Xcode* project is already configured to use the *glslang* -library. However, after updating the version of *glslang*, as described [above](#updating), -if you encounter any building errors, you may need to re-add the *glslang* library to the -`ExternalDependencies` *Xcode* project as follows: - -1. In the *Project Navigator* panel, select the `ExternalDependencies` *Xcode* project, then - select the `glslang-macOS` target, and open the *Build Settings* tab. Locate the build - setting entry **Header Search Paths** (`HEADER_SEARCH_PATHS`) and add the following paths: - - $(inherited) - "$(SRCROOT)/External/glslang" - "$(SRCROOT)/External/glslang/build/include" - -2. Repeat *Step 1* for the `glslang-iOS` target within the `ExternalDependencies` *Xcode* project - -3. In the *Project Navigator*, remove all *Groups* from under the *Group* named - `External/glslang`. - -4. Drag the following folders from the `External/glslang` file folder to the `External/glslang` - *Group* in the *Project Navigator* panel: - - glslang - SPIRV - - In the ***Choose options for adding these files*** dialog that opens, select the ***Create groups*** option, - add the files to *all* of the `glslang-macOS`, `glslang-iOS`, and `glslang-tvOS` targets, and click the ***Finish*** button. - -5. In the *Project Navigator* panel, remove the references to the following files and folders: - - External/glslang/glslang/MachineIndependant/glslang.y - External/glslang/glslang/OSDependent/Windows - External/glslang/glslang/OSDependent/Web - External/glslang/glslang/HLSL - - - - diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision index dcb1b01e..33caece3 100644 --- a/ExternalRevisions/SPIRV-Cross_repo_revision +++ b/ExternalRevisions/SPIRV-Cross_repo_revision @@ -1 +1 @@ -64f64c837a8ba7e32e91cebcc6c796e9b45ab186 +de0e72a0db21d1a12eb37cbfd15199b3e66fc9d9 diff --git a/ExternalRevisions/Volk_repo_revision b/ExternalRevisions/Volk_repo_revision index 13f22dcc..f4dd505e 100644 --- a/ExternalRevisions/Volk_repo_revision +++ b/ExternalRevisions/Volk_repo_revision @@ -1 +1 @@ -fdf78c22c3e66a3c7ff62d8dcdcb5fcad023bec7 +01986ac85fa2e5c70df09aeae9c907e27c5d50b2 diff --git a/ExternalRevisions/Vulkan-Headers_repo_revision b/ExternalRevisions/Vulkan-Headers_repo_revision index afc52456..23f918a4 100644 --- a/ExternalRevisions/Vulkan-Headers_repo_revision +++ b/ExternalRevisions/Vulkan-Headers_repo_revision @@ -1 +1 @@ -217e93c664ec6704ec2d8c36fa116c1a4a1e2d40 +577baa05033cf1d9236b3d078ca4b3269ed87a2b diff --git a/ExternalRevisions/Vulkan-Tools_repo_revision b/ExternalRevisions/Vulkan-Tools_repo_revision index 3a663ab4..baa6090f 100644 --- a/ExternalRevisions/Vulkan-Tools_repo_revision +++ b/ExternalRevisions/Vulkan-Tools_repo_revision @@ -1 +1 @@ -2c0a644db855f40f100f9f39e5a8a8dfa2b0014d +da49add44591bee19975e4668e418591effd8240 diff --git a/ExternalRevisions/glslang_repo_revision b/ExternalRevisions/glslang_repo_revision index e4f9fcd3..c361a845 100644 --- a/ExternalRevisions/glslang_repo_revision +++ b/ExternalRevisions/glslang_repo_revision @@ -1 +1 @@ -a91631b260cba3f22858d6c6827511e636c2458a +ee2f5d09eaf8f4e8d0d598bd2172fce290d4ca60 diff --git a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj index 7bc97d58..a4965cb1 100644 --- a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj +++ b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj @@ -2607,17 +2607,15 @@ "\"$(SRCROOT)/../External/cereal/include\"", "\"${BUILT_PRODUCTS_DIR}\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MACOSX_DEPLOYMENT_TARGET = 10.13; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = "${CURRENT_PROJECT_VERSION}"; MTL_ENABLE_DEBUG_INFO = YES; - MVK_SKIP_DYLIB = ""; - "MVK_SKIP_DYLIB[sdk=appletvsimulator*]" = YES; PRELINK_LIBS = "${CONFIGURATION_BUILD_DIR}/libMoltenVKShaderConverter.a"; PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.framework; PRODUCT_NAME = MoltenVK; SKIP_INSTALL = YES; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; WARNING_CFLAGS = "-Wreorder"; }; name = Debug; @@ -2682,17 +2680,15 @@ "\"$(SRCROOT)/../External/cereal/include\"", "\"${BUILT_PRODUCTS_DIR}\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MACOSX_DEPLOYMENT_TARGET = 10.13; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = "${CURRENT_PROJECT_VERSION}"; MTL_ENABLE_DEBUG_INFO = NO; - MVK_SKIP_DYLIB = ""; - "MVK_SKIP_DYLIB[sdk=appletvsimulator*]" = YES; PRELINK_LIBS = "${CONFIGURATION_BUILD_DIR}/libMoltenVKShaderConverter.a"; PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.framework; PRODUCT_NAME = MoltenVK; SKIP_INSTALL = YES; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; WARNING_CFLAGS = "-Wreorder"; }; diff --git a/MoltenVK/MoltenVK/API/mvk_private_api.h b/MoltenVK/MoltenVK/API/mvk_private_api.h index 0d2d9ae9..93f8b47b 100644 --- a/MoltenVK/MoltenVK/API/mvk_private_api.h +++ b/MoltenVK/MoltenVK/API/mvk_private_api.h @@ -349,7 +349,7 @@ typedef struct { VkBool32 simdPermute; /**< If true, SIMD-group permutation functions (vote, ballot, shuffle) are supported in shaders. */ VkBool32 simdReduction; /**< If true, SIMD-group reduction functions (arithmetic) are supported in shaders. */ uint32_t minSubgroupSize; /**< The minimum number of threads in a SIMD-group. */ - VkBool32 textureBarriers; /**< If true, texture barriers are supported within Metal render passes. */ + VkBool32 textureBarriers; /**< If true, texture barriers are supported within Metal render passes. Deprecated. Will always be false on all platforms. */ VkBool32 tileBasedDeferredRendering; /**< If true, this device uses tile-based deferred rendering. */ VkBool32 argumentBuffers; /**< If true, Metal argument buffers are supported. */ VkBool32 descriptorSetArgumentBuffers; /**< If true, a Metal argument buffer can be assigned to a descriptor set, and used on any pipeline and pipeline stage. If false, a different Metal argument buffer must be used for each pipeline-stage/descriptor-set combination. */ diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm index cb223171..0818adf1 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm @@ -152,10 +152,6 @@ void MVKCmdPipelineBarrier::encode(MVKCommandEncoder* cmdEncoder) { break; } } - } else if (cmdEncoder->getDevice()->_pMetalFeatures->textureBarriers) { -#if !MVK_MACCAT - if (coversTextures()) { [cmdEncoder->_mtlRenderEncoder textureBarrier]; } -#endif } #endif diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index 61a441de..c3960f47 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -2152,11 +2152,11 @@ void MVKPhysicalDevice::initMetalFeatures() { // Don't use barriers in render passes on Apple GPUs. Apple GPUs don't support them, // and in fact Metal's validation layer will complain if you try to use them. + // Texture barriers deprecated as of macOS 10.14. if ( !supportsMTLGPUFamily(Apple1) ) { if (supportsMTLFeatureSet(macOS_GPUFamily1_v4)) { _metalFeatures.memoryBarriers = true; } - _metalFeatures.textureBarriers = true; } #endif diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj index 5227ff09..677398e4 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj @@ -733,12 +733,12 @@ "\"$(SRCROOT)/glslang\"", "\"$(SRCROOT)/glslang/External/spirv-tools/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = MoltenVKShaderConverter; SKIP_INSTALL = YES; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; WARNING_CFLAGS = "-Wreorder"; }; name = Debug; @@ -794,12 +794,12 @@ "\"$(SRCROOT)/glslang\"", "\"$(SRCROOT)/glslang/External/spirv-tools/include\"", ); - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = MoltenVKShaderConverter; SKIP_INSTALL = YES; - TVOS_DEPLOYMENT_TARGET = 12.0; + TVOS_DEPLOYMENT_TARGET = 13.0; VALIDATE_PRODUCT = YES; WARNING_CFLAGS = "-Wreorder"; }; diff --git a/Templates/spirv-tools/build.zip b/Templates/spirv-tools/build.zip index 31889a3c..79bcd7c6 100644 Binary files a/Templates/spirv-tools/build.zip and b/Templates/spirv-tools/build.zip differ