2680 Commits

Author SHA1 Message Date
Bill Hollings
4d003bf256 Document new linkage model used by Xcode 14 and later, and how to link
MoltenVK to an app or game using Xcode 13 or earlier.
2022-11-15 18:48:36 -05:00
Bill Hollings
6d7f4330c7 Work around MTLCounterSet crash on additional Intel Iris Plus Graphics devices.
Add 0x8a5a and 0x8a5c to list of Intel Iris Plus Graphics
device IDs requiring workaround.
2022-11-15 17:44:55 -05:00
Bill Hollings
c8f581088f
Merge pull request #1767 from cdavis5e/optimal-tiling-atomics
MVKImage: Always use a texel buffer for atomic storage images.
2022-11-13 17:01:53 -05:00
Chip Davis
b871d8f603 MVKDevice: Fix backwards attribution of storage/uniform texel buffer alignments.
A drive-by fix for something I noticed while investigating a problem
with linear-for-atomics textures.
2022-11-12 14:27:39 -08:00
Chip Davis
94b1ea3c95 MVKImage: Always use a texel buffer for atomic storage images.
Do this even if `OPTIMAL` tiling were requested. Vulkan mandates support
for image atomics on `OPTIMAL`-tiled `R32_UINT` and `R32_SINT` images.
In a way, this is "optimal"; image atomics won't work without this.

Advertise support for atomics on `OPTIMAL` tiled images now.

Fixes at least two CTS tests under
`dEQP-VK.compute.basic.image_atomic_op_*`.
2022-11-12 14:27:32 -08:00
Bill Hollings
9cdf4ed881
Merge pull request #1770 from spnda/fix_cmd_blit
Fix: Invalid blit offsets
2022-11-11 13:47:16 -05:00
sean
0b62f647d5
Fix: Invalid blit offsets 2022-11-11 18:33:54 +01:00
Bill Hollings
5ebeac741d
Merge pull request #1755 from cdavis5e/raw-buffer-tese-input
MVKPipeline: Stop using vertex-style input for tessellation evaluatio…
2022-11-10 20:46:24 -05:00
Chip Davis
2cb33c09b6 MVKPipeline: Stop using vertex-style input for tessellation evaluation shaders.
This has caused us nothing but trouble. The code to build up the vertex
descriptor is fragile; we can rip that out now.

Also, make sure to positively identify per-patch blocks as per-patch.
For those, the individual members have the `Patch` decoration.

Update SPIRV-Cross to pull in the changes needed for this.

Fixes 66 tests in the CTS.
2022-11-10 14:12:02 -08:00
Bill Hollings
b283868aea
Merge pull request #1763 from spnda/bda_requirements
Fix: Proper requirements for enabling BDA extensions
2022-11-09 15:28:02 -05:00
sean
237e538bd0
Fix: Proper requirements for enabling BDA extensions 2022-11-09 20:41:42 +01:00
Bill Hollings
7740554a9c
Merge pull request #1759 from spnda/KHR_copy_commands2
Add: KHR_copy_commands2
2022-11-09 13:49:14 -05:00
sean
8a7979d3d0
Cleanup MVKCmdBufferImageCopy::setContent 2022-11-09 16:33:08 +01:00
sean
331d8e1d0b
Deduplicate code 2022-11-09 16:11:02 +01:00
sean
270a0198e0
Add: KHR_copy_commands2 2022-11-06 00:58:19 +01:00
Bill Hollings
9fa413d54c
Merge pull request #1754 from billhollings/fix-desc-update-bounds-crash
Fix crash on descriptor update with out-of-bounds descriptor count data.
2022-10-31 17:07:57 -04:00
Bill Hollings
0287a3242c Fix crash on descriptor update with out-of-bounds descriptor count data.
Update MoltenVK version to 1.2.1.
2022-10-31 14:41:08 -04:00
Bill Hollings
67d59ae3ee
Merge pull request #1747 from KhronosGroup/rw_lunarg_fixjson
fix for wrong version number in icd json
2022-10-25 12:46:23 -04:00
Richard S. Wright Jr
9987bca0d2 fix for wrong version number in icd json 2022-10-20 15:29:24 -04:00
Bill Hollings
260bad42e1
Merge pull request #1744 from billhollings/fix-prefilling-mem-leaks
Fix memory leaks when configured for prefilling Metal command buffers.
2022-10-18 12:51:17 -04:00
Bill Hollings
608342b528 Update documentation for prefilling Metal command buffers options. 2022-10-18 12:41:13 -04:00
Bill Hollings
00b2184c23 Fix crash and memory leaks when configured for prefilling Metal command buffers.
- Redefine enumeration values of MVKPrefillMetalCommandBuffersStyle.
- Add option to defer encoding prefilled MTLCommandBuffer to queue submission.
- Remove option to create an autorelease pool in the MVKCommandEncoder
  to span immediate command encodings, because it causes crashes when
  multiple command buffers were overlapping prefilling on the same thread.
- Replace MTLCommandEncoder retain/release macros with template member functions.
- Rename MVKCommandPool::newMTLCommandBuffer() to getMTLCommandBuffer()
  and do not retain the returned MTLCommandBuffer (unrelated).
- Revert MoltenVK logging to use stderr instead of stdout (unrelated).
- Merge branch from master.
2022-10-18 03:28:12 -04:00
Bill Hollings
7662501280
Merge pull request #1745 from billhollings/sdk-1.3.231
Update dependency libraries to match Vulkan SDK 1.3.231.
2022-10-17 16:59:19 -04:00
Bill Hollings
e061e5ebf8 Update dependency libraries to match Vulkan SDK 1.3.231. 2022-10-17 16:05:43 -04:00
Bill Hollings
b751c07eb3 Fix memory leaks when configured for prefilling Metal command buffers.
- Add MVKPrefillMetalCommandBuffersStyle enumeration to enable prefilling,
  and configure memory recovery options.
- Redefine MVKConfiguration::prefillMetalCommandBuffers as a value from
  MVKPrefillMetalCommandBuffersStyle instead of a simple boolean. Set the
  values of MVKPrefillMetalCommandBuffersStyle and the default value of
  MVKConfiguration::prefillMetalCommandBuffers to be compatible with
  legacy use of this setting as a simple enable/disable boolean value.
- MVKCommandEncoder track prefill style, and support option to maintain
  a Metal autorelease pool that is created on vkBeginCommandBuffer()
  and drained on vkEndCommandBuffer(), when prefiling a command buffer
  from a single thread, and an option to wrap each command addition in
  a separate @autoreleasepool{} scope to create and drain an autorelease
  pool at every command addition to the Vulkan command buffer, when
  prefilling a single command buffer from multiple threads.
- MVKCommandEncoder retain Metal encoders when prefilling, because
  prefilling may span multiple autorelease pools.
- MVKCommandEncoder clean up memory leak of MTLBlitPassDescriptor
  during prefilling.
- MVKCommandEncoder rearrange declarations of MVKCommandUse member
  variables to tighten up class memory use (unrelated).
- MVKCommandBuffer remove unnecessary inline declarations (unrelated).
- Change MoltenVK logging to use stdout instead of stderr (unrelated).
2022-10-16 17:03:55 -04:00
Bill Hollings
707da6e043
Merge pull request #1738 from billhollings/fix-vulkan-sem4-fallback
Vulkan semaphore fallback to using single queue if `MTLEvents` unusable.
2022-10-10 09:05:50 -05:00
Bill Hollings
ceb298965e Vulkan semaphore fallback to using single queue if MTLEvents unusable.
- If MTLEvents are unusable, fallback to single queue.
- Adjust values of MVKVkSemaphoreSupportStyle enumeration.
- For legacy compatibility, if legacy semaphoreUseMTLEvent and
  semaphoreUseMTLFence are both disabled, use CPU callback emulation.
- Update and expand related documentation in vk_mvk_moltenvk.h.
2022-10-09 21:17:18 -04:00
Bill Hollings
45e339a283
Merge pull request #1737 from billhollings/fix-hide-vulkan-symbols
Fix support for `MVK_HIDE_VULKAN_SYMBOLS` build setting.
2022-10-09 16:37:15 -05:00
Bill Hollings
0cc6e1d3a4 Fix support for MVK_HIDE_VULKAN_SYMBOLS build setting.
- Remove separate extension entry points for 1.3 promoted
  vkCmdBeginRenderingKHR() and vkCmdEndRenderingKHR() functions,
  which caused build breaks when MVK_HIDE_VULKAN_SYMBOLS=1.
- For consistency, hide vkGetMoltenVKConfigurationMVK(),
  vkSetMoltenVKConfigurationMVK(), and vkGetVersionStringsMVK()
  when MVK_HIDE_VULKAN_SYMBOLS=1, which was an oversight in original
  implementation of hiding Vulkan functions.
- Update build `README.md` for generic command line build settings
  and MVK_HIDE_VULKAN_SYMBOLS in particular.
2022-10-09 16:32:26 -04:00
Bill Hollings
5f52f38f2e
Merge pull request #1730 from rasky/fix_macros
Makefile: fix environment variable definitions
2022-10-09 15:16:19 -05:00
Giovanni Bajo
d32c60a901
Makefile: fix environment variable definitions 2022-10-04 22:58:55 +02:00
Bill Hollings
c2e9f1d876
Merge pull request #1726 from billhollings/vulkan-1_2
Add support for Vulkan 1.2.
2022-09-28 11:01:52 -04:00
sean
e8b32dec92 Final 1.2 fixes 2022-09-26 12:38:03 -04:00
Bill Hollings
ac39eb24e1 Add support for Vulkan 1.2.
- Set MVK_VULKAN_API_VERSION from VK_API_VERSION_1_2.
- Update MoltenVK version to 1.2.0.
- Remove several previously overlooked extension suffixes
  in use of promoted Vulkan struct and enum values.
- Update documentation.
2022-09-26 11:25:49 -04:00
Bill Hollings
77b3cc03f4
Merge pull request #1722 from spnda/provide_1_3_stubs
Add Vulkan 1.3 command stubs
2022-09-24 18:31:14 -04:00
sean
6eaa0351fa
Add Vulkan 1.3 command stubs 2022-09-24 23:54:41 +02:00
Bill Hollings
daea6b3e6a
Merge pull request #1724 from billhollings/VK_KHR_spirv_1_4
Advertise support for extension VK_KHR_spirv_1_4.
2022-09-24 12:53:54 -04:00
Bill Hollings
293e005ac5 GitHub CI use macos-11 to build using Xcode 11.7.
GitHub CI has deprecated and removed support for the macos-10.15 runner image.
2022-09-23 13:22:53 -04:00
Bill Hollings
31a77834f1 Advertise support for extension VK_KHR_spirv_1_4.
- Advertise support for extension VK_KHR_spirv_1_4.
- MoltenVKShaderConverter automatically map bindings when converting GLSL.
- MoltenVKShaderConverter improvements to diagnostic logging.
- Update Whats_New.md document.
2022-09-23 11:43:32 -04:00
Bill Hollings
73a3faa13b
Merge pull request #1723 from rasky/make_vars
Makefile: forward to xcode any variable declared on the command line
2022-09-23 11:13:09 -04:00
Giovanni Bajo
b0e433ad11
Makefile: forward to xcode any variable declared on the command line
Makefile currently special-case MVK_HIDE_VULKAN_SYMBOLS as the only
variable that can be customised on the command line. There are many
others that are useful though, such as MVK_LOG_*. This commit
makes the Makefile more generic and allows to forward to xcode whatever
variable was declared on the command line.
2022-09-23 11:31:14 +02:00
Bill Hollings
44bf22592b
Merge pull request #1720 from rasky/update_spirv
Update SPIRV-Cross to latest version.
2022-09-22 12:08:05 -04:00
Giovanni Bajo
d38cb86e9e
Update SPIRV-Cross to latest version.
MSL: Handle descriptor aliasing of raw buffer descriptors.
MSL: Do not attempt to alias push constants.
MSL: Report unsupported 64-bit atomics.
MSL: Add more keywords to reserved set.
2022-09-22 14:58:25 +02:00
Bill Hollings
b2409824dc
Merge pull request #1719 from billhollings/fix-hidden-symbol-leak
Fix undefined reference to vkGetBufferDeviceAddressEXT when building with MVK_HIDE_VULKAN_SYMBOLS=1.
2022-09-19 16:41:40 -04:00
Bill Hollings
63be111958 Fix undefined reference to vkGetBufferDeviceAddressEXT
when building with MVK_HIDE_VULKAN_SYMBOLS=1.

Alias vkGetBufferDeviceAddressEXT to core function,
and add it as promoted extension function in MVKInstance.
2022-09-19 15:29:40 -04:00
Bill Hollings
250e1f988a
Merge pull request #1715 from cdavis5e/tess-unwritten-builtin-read
MVKPipeline: Add builtins that are read but not written to tessellation pipelines.
2022-09-14 10:25:05 -04:00
Chip Davis
fafcc4b844 MVKPipeline: Add builtins that are read but not written to tessellation pipelines.
It is always legal in Vulkan to read a builtin, particularly
`BuiltInPosition`, even if it weren't written by the previous stage. The
CTS tests that this scenario works in the driver.

Update SPIRV-Cross to pull in a change required for this.

Fixes 8 CTS tests under `dEQP-VK.pipeline.*.no_position`. (Eight other
tests worked solely by accident without this change.)
2022-09-13 13:18:41 -07:00
Bill Hollings
5bae97a4ae
Merge pull request #1709 from KhronosGroup/SingleQueueSemaphore
Merge SingleQueueSemaphore branch into master
2022-09-02 11:51:53 -04:00
Bill Hollings
d7b5a36ddc
Merge pull request #1707 from billhollings/SingleQueueSemaphore
Vulkan semaphore functional improvements.
2022-09-01 17:03:05 -04:00
Bill Hollings
14de07b6f4 Vulkan semaphore functional improvements.
- Support option to use MTLEvents for Vulkan semaphores on NVIDIA and Rosetta2.
- Add public MVKVkSemaphoreSupportStyle enumeration.
- MVKConfiguration replace deprecated legacy booleans semaphoreUseMTLEvent,
  and semaphoreUseMTLFence with enumerated semaphoreSupportStyle.
- Alias legacy semaphoreUseMTLEvent to semaphoreSupportStyle and support legacy
  use of semaphoreUseMTLFence and semaphoreUseMTLEvent for backwards compatibility.
- MVKConfiguration rename recently renamed semaphoreUseSingleQueue back to
  semaphoreUseMTLFence for backwards compatibility.
2022-09-01 12:10:23 -04:00