MVKDeviceMemory track MVKImages and MVKBuffers separately.
Per Vulkan spec, restrict linear images to 2D, non-array, single mipmap.
Use texel buffer if possible for texture on coherent device memory.
Only flush MVKImages (not MVKBuffers) when device memory mapped.
Do not flush texel buffer images.
MVKDeviceMemory uses a single memory allocation, which may be an MTLBuffer or host memory.
Image populates MTLTexture when bound to host accessible device memory.
Update MoltenVK version to 1.0.10.
Move surface access to UI components to main thread.
Fix deadlock possibility between MVKFence and MVKFenceSitter.
Fix handling of locking on deferred-destruction objects.
Update MoltenVK version to 1.0.9.
Add MVKDeviceConfiguration::synchronousQueueSubmits configuration setting.
Update to latest SPRIV-Cross version to fix atomic_compare issue.
Update MoltenVK version to 1.0.8.
Add MVKDeviceConfiguration::metalCompileTimeout config setting.
Limit Metal compilation timeouts to 125 ms by default in Release mode.
Invoke Metal library, function specialization, and pipeline compilations
asynchronously with completion handlers. Abort after timeout expires.
Set default value of MVKDeviceConfiguration::supportLargeQueryPools to true,
to support large Query Pools by default.
Access vertexDescriptor in MTLRenderPipelineDescriptor only if needed.
Update MoltenVK version to 1.0.7.
Move MVKQueueFamily to MVKPhysicalDevice. Cache MTLCommandQueues in MVKQueueFamily
and assign to MVKQueues as they are created.
Refactor performance tracking. Replace vkGetShaderCompilationPerformanceMVK()
with vkGetPerformanceStatisticsMVK() and associated structures.
Add MTLCommandQueue access performance tracker.
Update MoltenVK version to v1.0.6.
Dynamically create frag shaders for clearning attachments and images.
Dynamically create frag shaders for blitting scaled images.
MVKGraphicsPipeline don't create MTLRenderPipelineState if vertex function conversion fails.
MVKComputePipeline don't create MTLComputePipelineState if compute function conversion fails.
Handle SPIRV-Cross errors thrown during SPIR-V parsing in compiler construction.
Set undefined property limits to large, but not max, values to avoid casting issues in app.
Mark multiDrawIndirect features as available.
Update to latest SPIRV-Cross version.
Update to MoltenVK version 1.0.5.
As the feature flags get more complicated, it will be better to just
leave these blank rather than guess what the flags might be if/when
Metal supports their corresponding configs in the future.
Helps to fix#147
Support deferred secondary signaling of semaphore & fence acquired while image is free.
Add MVKBaseObject::destroy() function to support customization of object destruction.
Support deferred destruction of MVKSemaphore & MVKFence instances.