1174 Commits

Author SHA1 Message Date
Bill Hollings
f8520ba3e7
Merge pull request #758 from billhollings/master
Support Metal 3.0 capabilities
2019-10-17 10:51:06 -04:00
Bill Hollings
ae8a39e0d3 Update Travis to Xcode 11.1 to correctly resolve MTLGPUFamily values. 2019-10-17 08:23:41 -04:00
Bill Hollings
b5b103e75c Fix crashes for Metal 3.0 capabilities.
Don't allocate MTLHeap of zero size.
MVKImage check for device memory when accessing MTLCPUCacheMode..
2019-10-16 18:50:01 -04:00
Bill Hollings
c6ea99e4db Support Metal 3.0.
Merge Metal-3.0 branch into master branch.
Update What's New document with merged features.
2019-10-16 18:26:58 -04:00
Bill Hollings
ba5a8745b4
Merge pull request #754 from billhollings/master
Reduce memory usage...particularly on descriptor sets.
2019-10-11 18:43:53 -04:00
Bill Hollings
c6e9d6b189 Support Xcode 11.1. 2019-10-11 15:16:13 -04:00
Bill Hollings
ebe38ba2ea Reduce memory usage by replacing use of MVKVectorDefault
with std::vector in descriptor set bindings.
2019-10-11 15:12:17 -04:00
Bill Hollings
5c87700732 Reduce memory usage by adjusting default memory allocs for many MVKVectorInline uses.
MVKRenderPass use emplace_back() instead of push_back()
when populating _subpasses  & _attachments vectors.
Add mvkLogSizeOf(T) development debugging function.
2019-10-10 16:46:17 -04:00
Bill Hollings
2ba65c50a3
Merge pull request #753 from billhollings/master
Fix memory leaks when compiling shaders and pipelines without default OS autorelease pool
2019-10-07 19:26:20 -04:00
Bill Hollings
1d628baca4 Fix memory leaks when compiling shaders and pipelines without default OS autorelease pool.
Wrap MVKMetalCompiler compiling execution in an @autoreleasepool.
2019-10-07 18:52:24 -04:00
Bill Hollings
c6f5a09004
Merge pull request #751 from billhollings/master
Fix memory leaks of system classes during VkInstance and VkQueue creation.
2019-10-06 00:48:18 -04:00
Bill Hollings
62fa0d4a65 Fix memory leaks of system classes during VkInstance and VkQueue creation.
Wrap retrieval of MTLDevice and MTLCommandQueue in an @autoreleasepool.
2019-10-04 13:26:04 -04:00
Bill Hollings
f6cf1ce722
Merge pull request #749 from billhollings/master
Support Xcode 11.
2019-10-01 14:07:27 -04:00
Bill Hollings
a2951a19e6 Support Xcode 11.
Declare _formatDescriptions[] in mvk_datatypes.mm as officially writable
because Clang now locates static const in non-writable memory.
Update build settings to Xcode 11.
Update MoltenVK_Runtime_UserGuide.md about embedding `libMoltenVK.dylib` in an application.
2019-10-01 00:25:09 -04:00
Bill Hollings
cef201df8c
Merge pull request #745 from billhollings/master
Allow MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS build setting to be overridden.
2019-09-27 10:13:06 -05:00
Bill Hollings
b805ccf702 Allow MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS build setting to be overridden. 2019-09-26 15:28:30 -05:00
Bill Hollings
b08f53e66f
Merge pull request #744 from billhollings/master
Small documentation updates
2019-09-26 13:01:59 -04:00
Bill Hollings
9f7eeb46a0 Clarify static linking as the recommended linking approach for iOS app store distribution. 2019-09-25 19:04:33 -05:00
Bill Hollings
5c7904c3a7 Add request for feedback from people who reject MoltenVK to README.md document.
Update MoltenVK version to 1.0.38.
2019-09-25 15:41:40 -05:00
Bill Hollings
db666549bb
Merge pull request #743 from EwoutH/patch-1
Travis: Update build enviourment to xcode11
2019-09-24 11:26:28 -04:00
Ewout ter Hoeven
18f3e15046
Travis: Update build enviourment to xcode11 2019-09-20 11:09:33 +02:00
Bill Hollings
23de5ac075
Merge pull request #741 from billhollings/Metal-3.0
Merge master 1.0.37 into Metal-3.0 branch.
2019-09-18 16:20:59 -04:00
Bill Hollings
b99a2ea53f Merge master 1.0.37 into Metal-3.0 branch. 2019-09-18 14:15:41 -04:00
Bill Hollings
0934e3216f
Merge pull request #736 from billhollings/master
Updates to support Vulkan SDK 1.1.121.
2019-09-10 16:59:25 -04:00
Bill Hollings
5636233f47 Report error only on the first time a format substitution is made. 2019-09-10 15:40:18 -04:00
Bill Hollings
1a0bf648b9 vkCmdFillBuffer(): Avoid threadgroup Metal validation error on Intel devices.
On Intel devices, Metal reports different values for max threadgroup width
between the pipeline state and device, so conservatively use the minimum of
these two reported values.
2019-09-10 14:41:26 -04:00
Bill Hollings
d585a9819e Updates to support Vulkan SDK 1.1.121.
Remove obsolescence log message for vkCreateMacOSSurfaceMVK()
and vkCreateIOSSurfaceMVK() functions.
Fix test for alignment of invalid pixel formats.
Update dependency libraries to match Vulkan SDK 1.1.121.
Update to renaming of VK_INTEL_shader_integer_functions2
enums and structs in latest Vulkan headers.
Update Whats_New.md document.
2019-09-10 13:25:19 -04:00
Bill Hollings
f8d8f9bd57
Merge pull request #734 from cdavis5e/fragment-shader-interlock
Support the VK_EXT_fragment_shader_interlock extension.
2019-09-07 21:07:26 -04:00
Bill Hollings
055466bec6
Merge pull request #733 from aerofly/master
Avoid MTLDevice minimumLinearTextureAlignmentForPixelFormat failed assertion
2019-09-07 21:05:32 -04:00
Chip Davis
deaaab8eff Support the VK_EXT_fragment_shader_interlock extension.
This extension allows fragment shaders to delineate critical sections
where pairs of invocations may not execute simultaneously. In Metal, the
nearest equivalent functionality is raster order groups. This
implementation is thus implemented on top of them.

Update SPIRV-Cross to pull in SPIR-V support for this new extension.
2019-09-06 12:52:39 -05:00
aerofly
5a02641fa1 fixes for iOS 13 2019-09-06 11:49:55 +02:00
aerofly
813c5300a1 mvk_vector 2019-09-06 11:48:37 +02:00
Bill Hollings
73ac6b63e7
Merge pull request #731 from cdavis5e/uniform-buffer-max-size
MVKDevice: Constant buffer bindings on macOS cannot exceed 64k.
2019-09-05 14:30:48 -04:00
Chip Davis
e7e8610a62 MVKDevice: Constant buffer bindings on macOS cannot exceed 64k.
This limitation appears to be have been present all along (cf. Metal
Feature Set Tables, under "Maximum function memory allocation for a
buffer in the constant address space"). I guess we never ran into it
before.

Prompted by #730.
2019-09-03 11:08:04 -05:00
Bill Hollings
4695b63532
Merge pull request #728 from billhollings/master
Support optional use of MTLFence for Vulkan semaphores via the MVK_ALLOW_METAL_FENCES environment variable.
2019-08-31 23:11:15 -04:00
Bill Hollings
fd5f0ada2c Support optional use of MTLFence for Vulkan semaphores via the
MVK_ALLOW_METAL_FENCES environment variable.

Refactor MVKSemaphore class into separate MVKSemaphoreMTLFence,
MVKSemaphoreMTLEvent, and MVKSemaphoreEmulated subclasses.
Add MVK_ALLOW_METAL_FENCES environment variable to optionally
enable using MTLFence for Vulkan semaphores.
Add MVKPhysicalDeviceMetalFeatures::fences to track MTLFence availability.
Update VK_MVK_MOLTENVK_SPEC_VERSION to version 22.
2019-08-31 22:37:33 -04:00
Bill Hollings
99743c8f84
Merge pull request #727 from billhollings/master
Improve performance of vkCmdFillBuffer().
2019-08-31 15:44:04 -04:00
Bill Hollings
399d24c1e2 Improve performance of vkCmdFillBuffer().
Use  parallelism more effectively to massively cover buffer with
multiple full threadgroups, instead of serial looping in shader.
Performance improvement measured at 150x (yes...x not %) on macOS.
MVKCmdFillBuffer move validation test to setContent() instead of encode().
2019-08-31 14:45:21 -04:00
Bill Hollings
90f2b7a1af
Merge pull request #724 from billhollings/master
Streamline design and use of MVKSemaphore
2019-08-27 15:58:01 -04:00
Bill Hollings
a2b5d0dd18 MVKSwapchain::signalWhenAvailable() add autoreleasepool around MTLCommandBuffer use. 2019-08-27 12:04:58 -04:00
Bill Hollings
937813f48e Don't use MTLCommandBuffer push/popDebugGroup if not available.
Log use of MTLEvent for semaphores.
2019-08-27 11:38:32 -04:00
Bill Hollings
bb3cdd7af4 Streamline design and use of MVKSemaphore.
One set of MVKSemaphore::encodeWait() & encodeSignal() functions either use MTLEvent
or not, and are called twice with and without MTLCommandBuffer to handle both cases
of encoded and inline waits and signals.
Always submit surface presentations using MTLCommandBuffer.
MVKConfiguration::presentWithCommandBuffer is now obsolete.
Fix memory leak of MVKQueueCommandBufferSubmissions with no content.
2019-08-26 23:47:55 -04:00
Bill Hollings
98d59025f3 Fix crash when signalling swapchain semaphore using MTLEvent.
Clear out some dead swapchain image code.
2019-08-26 16:10:13 -04:00
Bill Hollings
a87ef6bc77
Merge pull request #723 from billhollings/master
Track supported instance and device extensions correctly.
2019-08-18 23:45:44 -04:00
Bill Hollings
2b398fe610 Track supported instance and device extensions correctly.
MVKExtensionList add support for identifying and enabling instance or device extensions.
Rename MVKLayer::getExtensionProperties() to getInstanceExtensionProperties() and
MVKLayer::getSupportedExtensions() to getSupportedInstanceExtensions().
2019-08-18 23:17:03 -04:00
Bill Hollings
8fd5e183f2
Merge pull request #722 from billhollings/master
Fixes to issues found during CTS testing
2019-08-17 12:30:22 -04:00
Bill Hollings
25acafdb3f Disable depth and/or stencil testing if corresponding attachment is missing.
MVKDepthStencilCommandEncoderState track whether depth and
stencil attachements exist, and modify testing accordingly.
Add MVKMTLDepthStencilDescriptorData::disable() function.
MoltenVK_Runtime_UserGuide.md remove VkEvent as known limitation.
2019-08-15 13:39:34 -04:00
Bill Hollings
e2ce1a6329 vkCreateRenderPass() return VK_ERROR_FORMAT_NOT_SUPPORTED if format not supported. 2019-08-13 17:34:14 -04:00
Bill Hollings
0bc3be3707
Merge pull request #718 from billhollings/master
vkCmdBlitImage() fix test for different sample counts.
2019-08-12 23:55:56 -04:00
Bill Hollings
95e805c8c2 vkCmdBlitImage() fix test for different sample counts. 2019-08-12 23:55:18 -04:00