Replace getMTLPixelFormatFromVkFormat() in MVKDevice, MVKDeviceTrackingMixin
and MVKCommand with access to getPixelFormats().
Add mvkPlatformPixelFormats() to support default platform pixel format info.
Rename MVKFormatDesc to MVKPlatformFormatDesc in mvk_datatypes.mm to avoid
naming conflict.
Wrap MVKCommandBuffer::prefill() in autoreleasepool.
For non-reusable MVKCommandBuffers, release command instances
once prefilling is done to reduce memory pressure.
Change mvkClear() & mvkCopy() to accept array size.
Fix clearing of array content using mvkClear().
Update number of VkDynamicStates that can be tracked.
Change copying of sizeable structs in vk_mvk_moltenvk.mm.
Add mvkAreEqual() to compare values, structs and arrays.
query number within a single MTLRenderEncoder.
Track MTLRenderEncoder used for each query and validate query is not reused within the
scope of a single MTLRenderEncoder, logging error and ending current query if encountered.
Remove _t from pre-typedef struct declarations.
Move declaration of MVKSwapchainImageAvailability from MVKImage.h to MVKSwapchain.h.
Update What's New document.
Add MVK_CONFIG_PREALLOCATE_DESCRIPTORS env var to enable descriptor preallocation
in pool. Add MVKDescriptor subclasses for all used VkDescriptorType values.
Support allocating MVKDescriptor subclasses via direct instantiation,
or referencing preallocated instances held in a fixed collection.
MVKDescriptor subclasses support resetting and reuse from preallocated collection.
MVKDescriptorPool optionally holds collections of preallocated descriptors,
one collection per VkDescriptorType value.
Support VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT to mark preallocated
descriptors as available when freed.
MVKDescriptorPool no longer pools MVKDescriptorSet objects, keyed by their layouts.
MVKDescriptorSet are lightweight allocations, and instances are now created and
freed by the corresponding Vulkan commands.
MVKDescriptorSetLayoutBinding instantiates appropriate MVKDescriptorBinding subclasses.
MVKDescriptorSet hold pointers to MVKDescriptorBinding instead of instances.
Remove arrays of slots from MVKDescriptorBinding. For array types, multiple
MVKDescriptorBindings map to one corresponding MVKDescriptorLayoutBinding.
Simplify logic of copying and writing to descriptors.
Add MVKPhysicalDeviceMetalFeatures::pushConstantSizeAlignment, set value to 16 (size of
float4), and ensure push constant buffers have a size that is a multiple of that value.
Update VK_MVK_MOLTENVK_SPEC_VERSION to 24.
Change MVKPhysicalDeviceMetalFeatures::dynamicMTLBuffers from boolean to uint
dynamicMTLBufferSize limit and guard dynamic buffer usage sizes against it.
Update VK_MVK_MOLTENVK_SPEC_VERSION to 23.