When isBuffer=true the array allocates _bufferTextureRefs and leaves
_textureRefs null. SetSamplers and QueueWriteToReadBarriers dereferenced
_textureRefs unconditionally, and the TextureView branch of SetTextures
and SetImages did the same when a non-buffer view landed in a
buffer-targeted array. Reached in practice when shaders sample from
texel-buffer-typed array bindings with mixed contents.
Branch SetTextures and SetImages on _isBuffer first, then on input type.
A TextureView in a buffer-mode array, and a TextureBuffer in a
non-buffer-mode array, are both dropped to null. The latter was a
pre-existing mirror bug, unreached by current callers.
Early-return from SetSamplers and QueueWriteToReadBarriers for
buffer-mode arrays: texel-buffer descriptors carry no sampler state and
storage barriers do not apply.
* Ensure descriptor sets are only re-used when all command buffers using it have completed
* Fix some SPIR-V capabilities
* Set update after bind flag if we exceed limits
* Simpler fix for Intel
* Format whitespace
* Make struct readonly
* Add barriers for extra set arrays too
* Report base and extra sets from the backend
* Pass texture set index everywhere
* Key textures using set and binding (rather than just binding)
* Start using extra sets for array textures
* Shader cache version bump
* Separate new commands, some PR feedback
* Introduce new manual descriptor set reservation method that prevents it from being used by something else while owned by an array
* Move bind extra sets logic to new method
* Should only use separate array is MaximumExtraSets is not zero
* Format whitespace
* Add support for large sampler arrays on Vulkan
* Shader cache version bump
* Format whitespace
* Move DescriptorSetManager to PipelineLayoutCacheEntry to allow different pool sizes per layout
* Handle array textures with different types on the same buffer
* Somewhat better caching system
* Avoid useless buffer data modification checks
* Move redundant bindings update checking to the backend
* Fix an issue where texture arrays would get the same bindings across stages on Vulkan
* Backport some fixes from part 2
* Fix typo
* PR feedback
* Format whitespace
* Add some missing XML docs