2416 Commits

Author SHA1 Message Date
Bill Hollings
c4920375d2
Merge pull request #1295 from billhollings/remove-release-build-asserts
Add NDEBUG macro to all Release builds to remove assert() calls.
2021-03-04 14:49:07 -05:00
Bill Hollings
ff7269f26e Add NDEBUG macro to all Release builds to remove assert() calls.
External libraries in particular make liberal use of assert() calls, which bypass
error catching, sometimes causing crashes rather than catch errors and moving on.
2021-03-04 13:47:25 -05:00
Bill Hollings
3bcc7e4558
Merge pull request #1290 from billhollings/remove-vulkansamples
Remove LunarG/VulkanSamples as a dependency library.
2021-03-04 08:21:11 -05:00
Bill Hollings
5648258da7 Remove LunarG/VulkanSamples as a dependency library.
LunarG is planning to retire the LunarG/VulkanSamples repository.
Remove dependency to it, and remove the affected Hologram and API-Samples demo apps.
Update documents, including directing developers to the
KhronosGroup/Vulkan-Samples repository for official demo apps.
2021-03-03 16:43:11 -05:00
Bill Hollings
f28ab1c127
Merge pull request #1288 from VZout/patch-2
Updated SPIRV-Cross revision
2021-03-02 14:59:23 -05:00
Bill Hollings
4cd8532540
Merge pull request #1287 from billhollings/spvx-integration
Remove project qualifiers from references to SPIRV-Cross and glslang header files.
2021-03-02 14:56:24 -05:00
Viktor Zoutman
fbaa616695
Update SPIRV-Cross_repo_revision 2021-03-02 11:06:52 +01:00
Bill Hollings
7684f4a198 Update What's New document. 2021-03-01 17:47:03 -05:00
Bill Hollings
5dd56ccfd3 Restore project qualifiers to references to glslang header files. 2021-03-01 17:44:13 -05:00
Bill Hollings
64681832c1 Remove project qualifiers from references to SPIRV-Cross and glslang header files.
Remove SPIRV-Cross/ qualifier from include references to SPIRV-Cross header files.
Remove glslang/ qualifier from include references to glslang header files.
This change allows easier integration with app build scripts.
2021-02-28 18:22:52 -05:00
Bill Hollings
802fd4b2a1
Merge pull request #1286 from billhollings/cts-fix-phys-dvc-feats
Permit extension functions when all extensions have been disabled via configuration.
2021-02-27 15:02:34 -05:00
Bill Hollings
b9d9ab613d Permit extension functions when all extensions have been disabled via configuration.
When mvkGetMVKConfiguration()->advertiseExtensions is disabled, and MoltenVK
artificially advertises that all extensions are not supported, allow the functions
of those extensions to be called anyway.

Some CTS tests are structured to assume one or more basic extensions are supported,
and do not bother checking for those extensions and provide alternate code paths
based on the extension not being supported. Permitting the calls to be made anyway
allows those tests to proceed and avoid crashing.
2021-02-27 14:18:40 -05:00
Bill Hollings
9dc1fc9442
Merge pull request #1284 from billhollings/queue-submit-finish-logging
Ensure queue submission message logging occurs before submission object is destroyed.
2021-02-26 06:09:14 -05:00
Bill Hollings
68a0119f21 Fix typo. 2021-02-25 21:09:14 -05:00
Bill Hollings
a4d36cb757 Reduce debug log noise by only logging header msg for
shader debug logs if at least one shader log exists.
2021-02-25 17:19:53 -05:00
Bill Hollings
08d9fa8ea2 Ensure queue submission message logging occurs before submission object is destroyed.
Fixes to MVKQueueCommandBufferSubmission:
- Consolidate MTLCommandBuffer completion callbacks, and ensure all other activities,
  including logging, which references the object, occurs before finish() is called.
- Remove separate flag that indicates whether to track MTLCommandBuffer completion times.
- Localize Vulkan error reporting to the queue instead of the device.
2021-02-25 16:37:06 -05:00
Bill Hollings
bee482927a
Merge pull request #1281 from cdavis5e/enhanced-cmdbuf-errors
Log enhanced command buffer errors in debug mode.
2021-02-25 10:56:54 -05:00
Bill Hollings
8c7ca56707
Merge pull request #1280 from billhollings/conformance-config
Support configuring supported Vulkan API version and whether to advertise extensions.
2021-02-25 10:16:04 -05:00
Chip Davis
48aff9f45d Log enhanced command buffer errors in debug mode.
If we're on macOS 11 or iOS/tvOS 14, and debug mode (`MVK_DEBUG=1`) were
enabled, then we'll enable enhanced command buffer errors, which give us
more information about which encoder triggered the error. We'll also
print log messages from shader validation.
2021-02-24 19:53:10 -06:00
Bill Hollings
7ba625718a Support configuring whether to advertise extensions.
Always advertise VK_KHR_portability_subset. Advertise other extensions only if
MVKConfiguration::advertiseExtensions enabled and extension available on platform.
Reorganize and simplify checking extension platform availability.
2021-02-24 20:01:59 -05:00
Bill Hollings
8e610a43a8 Support configuring supported Vulkan API version.
Add MVKConfiguration::apiVersionToAdvertise and MVK_CONFIG_API_VERSION_TO_ADVERTISE
env var to configure MoltenVK to advertise a particular Vulkan version.

Advertise MVKConfiguration::apiVersionToAdvertise in:
  vkEnumerateInstanceVersion()
  vkGetPhysicalDeviceProperties()
  vkEnumerateInstanceLayerProperties()
  vkEnumerateDeviceLayerProperties()

Add MVKConfiguration::advertiseExtensions and MVK_CONFIG_ADVERTISE_EXTENSIONS
env var to configure MoltenVK to not advertise support for any Vulkan  extensions.
Refactor population of MVKConfiguration from environment variables to better
support validating and baking config values set by app.
Update MoltenVK version to 1.1.3.
Update VK_MVK_MOLTENVK_SPEC_VERSION to 31.
2021-02-24 16:32:14 -05:00
Bill Hollings
40f5cbba90
Merge pull request #1276 from billhollings/sdk-ext-deps
Update external dependency libraries for Vulkan SDK 1.2.170.
2021-02-22 21:32:24 -05:00
Bill Hollings
d78de04b56 Update external dependency libraries for Vulkan SDK 1.2.170. 2021-02-22 19:14:00 -05:00
Bill Hollings
d2ddba1b52
Merge pull request #1275 from cdavis5e/private-temp-buffers
MVKMTLBufferAllocation: Support private temp buffers.
2021-02-22 06:18:48 -05:00
Chip Davis
c225c423ba MVKMTLBufferAllocation: Support private temp buffers.
Some buffers, particularly those used by tessellation, indirect
multiview, or occlusion queries, are never written or read from the
host. Keeping the relevant data in VRAM should improve performance by
reducing the need for the GPU to make expensive accesses over the PCI
bus.

VRAM is a scarce resource on discrete GPUs, but this is part of why we
marked the buffers volatile.
2021-02-21 15:06:04 -06:00
Bill Hollings
3058a130d1
Merge pull request #1273 from billhollings/simulator-buffer-alignment
Set Metal buffer alignment to 256 on non-Apple Silicon iOS/tvOS simulators.
2021-02-21 13:03:22 -05:00
Bill Hollings
4675481a06 Redefine derivations of MVK_APPLE_SILICON, MVK_MACOS_APPLE_SILICON, and MVK_XCODE_12.
Derive MVK_APPLE_SILICON from target CPU.
Derive MVK_MACOS_APPLE_SILICON from target CPU and macOS platform.
Derive MVK_XCODE_12 from macOS and iOS SDK versions.
Test for simulator on non-Apple GPU using MVK_OS_SIMULATOR && !MVK_APPLE_SILICON.
2021-02-20 09:33:32 -05:00
Bill Hollings
ef64dc4654
Merge pull request #1272 from billhollings/cts-descset-crash
Report accurate value for VkPhysicalDeviceLimits::maxBoundDescriptorSets.
2021-02-18 17:44:54 -05:00
Bill Hollings
0d1975907e Set Metal buffer alignment to 256 on non-Apple Silicon iOS/tvOS simulators. 2021-02-18 17:13:34 -05:00
Bill Hollings
c38f19dd20 Report accurate value for VkPhysicalDeviceLimits::maxBoundDescriptorSets.
This value is derived from limit expected by SPIRV-Cross.
The previous unbounded value was breaking CTS tests that used this value.
2021-02-18 13:47:45 -05:00
Bill Hollings
82ab40e52f
Merge pull request #1270 from billhollings/cts-multithreading
Fixes for CTS multithread tests.
2021-02-17 17:01:35 -05:00
Bill Hollings
14dc8578ce Fix code formatting on completion handler blocks. 2021-02-17 14:09:05 -05:00
Bill Hollings
a1e33384c1 Remove @synchronized from MTLFunction specialization to avoid reentrant hang. 2021-02-17 13:56:37 -05:00
Bill Hollings
0b90a53d76 Fixes for CTS multithread tests.
MTLDevice retains an internal object web that is used during the creation of
new objects, such as pipeline states, libraries, functions, and samplers.
Simultaneously creating and destroying objects of these types can trigger
race conditions on the internal MTLDevice content.

Wrap the following in @synchronized (mtlDevice) {...}:
- MTLRenderPipelineState creation and destruction
- MTLComputePipelineState creation and destruction
- MTLLibrary creation
- MTLFunction creation and specialization
- MTLSampler creation and destruction
2021-02-17 09:33:04 -05:00
Bill Hollings
4a0a5cd0b4
Merge pull request #1267 from billhollings/rmv-cmd-enc-state-reset
Remove MVKCommandEncoderState::reset().
2021-02-12 19:28:02 -05:00
Bill Hollings
c9b5a3bffc
Merge pull request #1266 from billhollings/undoc-direct-msl
Remove official support for direct MSL shader loading from documentation.
2021-02-12 19:24:36 -05:00
Bill Hollings
acf2a80535 Remove MVKCommandEncoderState::reset().
MVKCommandEncoderState has numerous subclasses, and the polymorphic
MVKCommandEncoderState::resetImpl() requires significant maintenance
across these subclasses. It's only use was in disabling depth-stencil state.

Remove MVKCommandEncoderState::reset() and all implementations of resetImpl()
across all MVKCommandEncoderState subclasses.
Remove MVKPipeline::__hasDepthStencilInfo and disable depth-stencil state
automatically via cleared Vulkan struct in MVKPipeline.
2021-02-12 19:04:17 -05:00
Bill Hollings
612c84d79e Remove official support for direct MSL shader loading from documentation. 2021-02-12 18:33:28 -05:00
Bill Hollings
4d46cf7375
Merge pull request #1262 from billhollings/add-github-discussions
GitHub repository enhancements.
2021-02-12 11:49:14 -05:00
Bill Hollings
40e00c3da9
Merge pull request #1258 from billhollings/remove-debug-ONLY_ACTIVE_ARCH
Remove ONLY_ACTIVE_ARCH from Debug builds.
2021-02-12 11:48:35 -05:00
Bill Hollings
bce76f1d29 GitHub repository enhancements.
Document availability of GitHub Discussions in `README.md`.
Expose .github/workflows/CI.yml in MoltenVKPackaging Xcode project.
2021-02-12 10:46:57 -05:00
Bill Hollings
4d60058efb Remove ONLY_ACTIVE_ARCH from Debug builds.
Debug builds now build for all platform architectures.
2021-02-12 09:50:17 -05:00
Bill Hollings
54e5723ff7
Merge pull request #1255 from billhollings/vizbuff-index
Fix Metal validation error of duplicate visibility offsets.
2021-02-10 19:37:59 -05:00
Bill Hollings
a015e39158
Merge pull request #1254 from cdavis5e/family-1-no-simd-permute
MVKPhysicalDevice: Disable SIMD-group permutation for Mac family 1.
2021-02-10 19:18:16 -05:00
Bill Hollings
bbe87fe2fc Fix Metal validation error of duplicate visibility offsets.
Don't reset MVKOcclusionQueryCommandEncoderState::_mtlVisibilityResultOffset
when ending occlusion query, as subsequent queries need different offsets.

Also, remove MVKOcclusionQueryCommandEncoderState::_needsVisibilityResultMTLBuffer,
as it is always set once from MVKCommandBuffer::_needsVisibilityResultMTLBuffer.

When app setting MVKConfiguration it with a partial copy, start with existing.
2021-02-10 18:51:42 -05:00
Chip Davis
0ac65c87b8 MVKPhysicalDevice: Disable SIMD-group permutation for Mac family 1.
Our testing shows that none of the SIMD-group functions work on family
1, including `simd_is_first()`, which is needed for even `BASIC`
support.
2021-02-10 13:25:41 -06:00
Bill Hollings
84c6095fbf
Merge pull request #1243 from billhollings/config-strings
Test for null string on MVKConfiguration copy.
2021-02-08 07:14:08 -05:00
Bill Hollings
bbea8dabc9 Test for null string on MVKConfiguration copy.
When app sets MVKConfig not fully populated by app, or if app sets strings to null,
copy can fail. Test for this before copying.
2021-02-06 21:42:30 -05:00
Bill Hollings
05066429e2
Merge pull request #1242 from cdavis5e/max-buffer-range-4gib
MVKPhysicalDevice: Clamp maximum buffer range to 4 GiB - 1.
2021-02-06 20:16:19 -05:00
Chip Davis
515a2cbcfe MVKPhysicalDevice: Clamp maximum buffer range to 4 GiB - 1.
It is possible for the maximum buffer size to be 4 binary gigabytes or
greater. In that case, the upper 32 bits will be lost, and the value of
the `maxUniformBufferRange` and `maxStorageBufferRange` limits would be
too small or even zero. Clamp it to 4 GiB - 1 in that case, since that
is the maximum value of a 32-bit integer.

For #1240.
2021-02-06 15:42:40 -06:00