3090 Commits

Author SHA1 Message Date
Bill Hollings
3dac6ec8ca
Update MoltenVK/MoltenVK/Utility/MVKEnvironment.h
Aligning with syntax of other comments in this file.
2024-04-19 11:15:32 -04:00
Evan Tang
b420d58b59 Add option to dump shaders 2024-04-17 13:38:02 -05:00
Bill Hollings
d0f066a8fb
Merge pull request #2211 from billhollings/cfg-mtce-assert
Simplify maintenance of build-time checking of MVKConfiguration members.
2024-04-16 18:23:05 -04:00
Bill Hollings
8b46bd2e7a Simplify maintenance of build-time checking of MVKConfiguration members.
- Remove _unused_struct_padding from MVKConfiguration and MVKConfigMembers.def.
- Add kMVKConfigurationInternalPaddingByteCount to specify MVKConfiguration
  internal padding byte count, for use in build time assertion check.
2024-04-16 18:05:10 -04:00
Bill Hollings
3f6a3c28f7
Merge pull request #2200 from billhollings/VK_EXT_metal_objects-ARC
Fix crash when using VK_EXT_metal_objects under ARC.
2024-04-06 13:35:01 -04:00
Bill Hollings
11a3adcd26 Fix crash when using VK_EXT_metal_objects under ARC.
Apple's Automatic Reference Counting automatically releases
the Metal objects returned by VK_EXT_metal_objects.

The fetchDependencies script now applies
Templates/Vulkan-Headers/VK_EXT_metal_objects-unret.gitdiff
to add an __unsafe_unretained ownership qualifier to the
Metal object declarations in vulkan_metal.h.

This should be a temporary patch until the VK_EXT_metal_objects
extension can be properly modified.
2024-04-04 00:09:29 -04:00
Bill Hollings
c0dce05bf6
Merge pull request #2198 from nihui/patch-1
doc moltenvk link CoreGraphics and AppKit framework
2024-04-03 10:34:26 -04:00
nihui
0ddf0fe6fe doc moltenvk link CoreGraphics and AppKit framework 2024-04-03 16:36:01 +08:00
Bill Hollings
adcd448f04
Merge pull request #2196 from billhollings/incr-dyn-link-fix
Fix issue where incremental dynamic builds do not link to static dependencies.
2024-04-02 15:17:56 -04:00
Bill Hollings
7533974fda Fix issue where incremental dynamic builds do not link to static dependencies.
After the recent change to building dynamic frameworks and dylibs as targets
built by linking to a static library dependency, incremental builds do not
correctly link the dynamic frameworks and dylibs to the rebuilt static library.

- Delete dynamic target outputs during static target builds.
- Run platform schemes sequentially in manual order.
- Build the dynamic framework before the dylib.
- Clean up Xcode Scheme organization.

It is not entirely obvious what the dependency problem is, and why
these particular changes work. A lot of trial-and-error was required.
It's possible that Xcode dependency analysis does not correctly analyze
the flow used in MoltenVK builds.
2024-03-30 17:47:36 -04:00
Bill Hollings
e97ec49663
Merge pull request #2195 from billhollings/restore-dylib-directory
To support legacy apps, restore MoltenVK/dylib directory.
2024-03-26 17:14:30 -04:00
Bill Hollings
363d4867a6 To support legacy apps, restore MoltenVK/dylib directory.
- Create symlink from MoltenVK/dylib to MoltenVK/dynamic/dylib.
2024-03-26 16:09:10 -04:00
Bill Hollings
73f2b8c280
Merge pull request #2183 from SRSaunders/perf-tracker
Add "previous" member to MVKPerformanceTracker structure
2024-03-20 11:24:22 -04:00
SRSaunders
0cf9f7f24b Capture perf start times in MVKQueueSubmission constructors vs. arguments of execute() function 2024-03-20 00:03:35 -04:00
SRSaunders
1d3fe52db9 Update documentation for the new waitSubmitCommandBuffers and waitPresentSwapchains perf counters 2024-03-19 23:19:01 -04:00
Bill Hollings
fce66e1443
Merge pull request #2189 from billhollings/update-gitignore
Update .gitignore.
2024-03-19 12:18:16 -04:00
Bill Hollings
8e6b80b598 Update .gitignore.
- .gitignore exclude all directories under External, to allow
  temp directories to be created during dependency developments.
- .gitignore specify MoltenVK exclusions are relative to root directory.
2024-03-19 12:01:37 -04:00
SRSaunders
10810f41d0 Add two new counters in MVKQueuePerformance for async queue submit wait times 2024-03-19 00:09:11 -04:00
SRSaunders
08c1ad705a Increment MVK_PRIVATE_API_VERSION to 41 2024-03-17 11:35:08 -04:00
SRSaunders
3ec155a3b6 Fix mvkCopyGrowingStruct() to return success only if struct and buffer sizes match 2024-03-17 11:34:14 -04:00
Bill Hollings
5c51d2a265
Merge pull request #2185 from jeroenbakker-atmind/fix/incorrect-project-version
Fix compilation issue due to new project version
2024-03-14 15:15:43 -04:00
Jeroen Bakker
f7ffecd9a7 Fix compilation issue due to new version 2024-03-14 11:19:15 +01:00
Bill Hollings
baad62b63e
Merge pull request #2184 from billhollings/update-to-v1.2.9
Update MoltenVK version to 1.2.9.
2024-03-13 13:10:53 -04:00
Bill Hollings
a9ebfc2c76 Update MoltenVK version to 1.2.9. 2024-03-13 13:10:03 -04:00
SRSaunders
11bd581c8d Add "previous" to MVKPerformanceTracker and save value before capturing "latest" 2024-03-13 09:55:08 -04:00
Bill Hollings
1d98babb72
Merge pull request #2181 from billhollings/vulkan-sdk-1.3.280
Update dependency libraries to match Vulkan SDK 1.3.280.
2024-03-12 13:10:50 -04:00
Bill Hollings
d61cefb530 Update dependency libraries to match Vulkan SDK 1.3.280.
- Remove support for deprecated -[MTLRenderCommandEncoder textureBarrier]
  and deprecate MVKPhysicalDeviceMetalFeatures::textureBarriers.
- Update minimum macOS deployment target to 10.15.
- Update minimum iOS/tvOS deployment target to 13.0.
- Update Whats_New.md document.
2024-03-12 11:49:11 -04:00
Bill Hollings
10400cdaf0
Merge pull request #2178 from billhollings/doc-gpu-capture
Document GPU capture.
2024-03-08 11:55:01 -05:00
Bill Hollings
ee02401497 Document GPU capture. 2024-03-08 11:53:33 -05:00
Bill Hollings
7039a4d373
Merge pull request #2176 from billhollings/suppress-xcode-bld-setting-warns
Suppress Xcode project build settings update warnings.
2024-03-07 19:13:34 -05:00
Bill Hollings
41f1808cea Suppress Xcode project build settings update warnings.
Xcode validates project build settings with each new Xcode release and
issues warnings to apply recommendations. We ignore these. This patch
sets the validated Xcode version to the maximum so that Xcode will
not longer issue these warnings.
2024-03-07 17:54:28 -05:00
Bill Hollings
a6dbc2ed2c
Merge pull request #2175 from billhollings/create-dylib-with-xcode
Create macOS libMoltenVK.dylib directly from Xcode.
2024-03-07 17:33:02 -05:00
Bill Hollings
802470b5a8 Create macOS libMoltenVK.dylib directly from Xcode.
Previously, libMoltenVK.dylib was created by copying and renaming
the binary from MoltenVK.framework, but this resulted in an unsigned
dylib that was not loadable.

- Create signed macOS libMoltenVK.dylib directly from Xcode.
- Refactor package_moltenvk.sh into package_dylibs.sh & package_headers.sh.
- Remove unused non-packaging Xcode schemes (unrelated).
2024-03-07 15:54:31 -05:00
Bill Hollings
5d21869b6d
Merge pull request #2173 from js6i/fixup-2
Don't set MTLTextureUsageShaderAtomic if the pixel format does not support it.
2024-03-07 10:19:28 -05:00
Bill Hollings
dbaae5f8ad
Merge pull request #2161 from mkrus/fix/visionOS_build
Fix visionOS build
2024-03-06 17:22:25 -05:00
Bill Hollings
699e8d09e2
Update MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.mm
Restore original formatting.
2024-03-06 15:51:02 -05:00
Bill Hollings
4e89f2f802
Merge branch 'main' into fix/visionOS_build 2024-03-06 15:47:27 -05:00
Bill Hollings
eff7571446
Merge pull request #2170 from billhollings/xcode-built-dyn-xcfwk
Improve support for iOS App Store rules by using Xcode-built dynamic XCFramework.
2024-03-06 15:22:37 -05:00
Bill Hollings
116e9ec899
Merge pull request #2169 from js6i/fixup-1
Fix uninitialized MVKImage member.
2024-03-06 11:03:51 -05:00
Jan Sikorski
e388a0e3af MVKPixelFormats: Only set MTLTextureUsageShaderAtomic for supported pixel format. 2024-03-06 12:27:34 +01:00
Jan Sikorski
69446d122d MVKBuffer: Only set MTLTextureUsageShaderAtomic on views with supported pixel format. 2024-03-06 12:27:34 +01:00
Jan Sikorski
3056cae106 Fix uninitialized MVKImage member. 2024-03-06 11:14:24 +01:00
Bill Hollings
0d62ff8fb7 Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs.
Instead, these must be placed in frameworks, which are embedded in a
dynamic version of MoltenVK.xcframework.

- Use Xcode to directly generate a MoltenVK.framework for each platform,
  and remove create_dylib*.sh scripts.
- Move static XCFramework, containing libMoltenVK.a static libraries,
  to Package/Latest/MoltenVK/static/MoltenVK.xcframework.
- Generate dynamic XCFramework, containing MoltenVK.framework dynamic
  libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework.
- Add macro MVK_VERSION_STRING to create version string at compile time,
  use it to validate the CURRENT_PROJECT_VERSION build setting at compile time,
  and use it at runtime instead of mvkGetMoltenVKVersionString() function.
- Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress
  spurious linker warnings of the type
  "ld: warning: no platform load command found in '...', assuming: iOS"
  issued from the new linker introduced in Xcode 15.
- Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only)
  Xcode scheme to avoid building dynamic MoltenVK.framework for the
  Mac Catalyst platform, because Xcode does not support doing so.
- Always run MoltenVK build scripts, to ensure all components are
  added to the XCFrameworks, and MoltenVK/Package is always refreshed,
  even if code compilation is not required.
- Cube demo link to dynamic MoltenVK.framework through
  dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib.
- Update the version of Volk used by the Cube demo, to support
  loading MoltenVK from dynamic frameworks inside Volk.
- Update README.md and MoltenVK_Runtime_UserGuide.md documents.
- Update MVK_PRIVATE_API_VERSION to 40.
- Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated).
- Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
2024-03-05 20:38:35 -05:00
Mike Krus
9082ca839f Fix visionOS build
This adds a few macros to test which platform is currently being built.
Addresses some compile warnings such as missing return values.
2024-03-01 18:28:16 +00:00
Bill Hollings
b56c152a12
Merge pull request #2164 from js6i/native-atomics
Enable use of native texture atomics.
2024-02-27 10:20:18 -05:00
Jan Sikorski
c03893b5ad Enable use of native texture atomics.
This commit conditionally skips the emulated image atomics paths if native
texture atomics are available and a configuration option is set.

Apart from unlocking some potential performance benefits from not having to
force some textures to be linear, it also makes texture atomics work with
argument buffers.
2024-02-27 12:41:39 +01:00
Bill Hollings
37361ccd55
Merge pull request #2159 from billhollings/no-headless-sub-optimal
Don't return VK_SUBOPTIMAL_KHR for headless surfaces.
2024-02-12 19:46:53 -05:00
Bill Hollings
a62cada021
Merge pull request #2157 from cdavis5e/smallvec-const-correct
MVKSmallVector: Make iterator const correct.
2024-02-12 16:39:47 -05:00
Bill Hollings
4a04f886c7
Merge pull request #2155 from billhollings/private-api-fixes
Consolidation and fixes for MVK_USE_METAL_PRIVATE_API functionality.
2024-02-12 16:08:42 -05:00
Bill Hollings
9c812da6a6 Don't return VK_SUBOPTIMAL_KHR for headless surfaces.
This fixes a regression caused by a recent change that keeps size
of headless surfaces at the special value {0xFFFFFFFF, 0xFFFFFFFF}.
2024-02-12 15:53:58 -05:00