Separate types and cases in random descriptor set tests
Several descriptor types are now allowed to have test combinations with
no descriptors of that type when using dynamic indexing. This enables us
to check dynamic indexing features only when the amount of descriptors
for the given type is nonzero. For example, if dynamic indexing is
available for uniform buffers but not texel buffers in a given
implementation, dynamic indexing tests can now run for combinations in
which the amount of texel buffers is zero.
Storage images, previously only used for storing test results, are now
part of the combinations too and independent from storage texel buffers.
This commit also introduces some checks to make sure the number of test
combinations and the resulting shader size remain reasonable.
In addition, this commit prepares the random descriptor set tests to
include write checks in the future for the following descriptor types:
* VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
* VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
* VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
* VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
The plan is to pseudorandomly choose around half the checks to be read
checks and the other half to be write checks.
Affected tests:
dEQP-VK.binding_model.descriptorset_random.*
Components: Vulkan
VK-GL-CTS issue: 1973
Change-Id: I43708bf7a4e630c2299ccf6215ed7a78294e9ba0