Fix issue where push constants contain a buffer address, but no descriptor
resources are encoded, resulting in addressed buffer not resident in GPU.
- Add MVKGPUAddressableBuffersCommandEncoderState to track when the
GPU-addressable buffer usage needs to be encoded, and only encode
them once per Metal renderpass.
- Set MVKGPUAddressableBuffersCommandEncoderState dirty whenever
a buffer is bound for a descriptor or a push constant.
Unrelated changes:
- MVKCommandEncoder::finalizeDrawState() reorder encoding of encoder
states to encode resource and push-constant encoder states together.
- Move getGraphicsPipeline() and getComputePipeline() to MVKCommandEncoder.
- MVKDevice Remove preallocation on _resources and _gpuAddressableBuffers.
- Align conditions for VkPhysicalDeviceVulkan12Features::bufferDeviceAddress
to those for VK_KHR_buffer_device_address/VK_EXT_buffer_device_address.