Add tests for sparseImageFloat32Atomics
This commit adds image atomic operation tests using sparse images in
order to check the sparseImageFloat32Atomics feature.
In addition, it addresses several issues with the image atomic operation
tests, related to the tests behaving differently depending on which
features the implementation supported:
* If supported, transfer operations were performed on storage images,
with a code path containing a fallback using shaders.
* 64-bit formats always used shaders instead of transfer operations.
* When reading values back from images using shaders, if the
implementation supported shaderResourceResidency, values were read
back using sparseImageLoadARB instead of normal reads.
These behaviors are now encoded in the test parameters and combined,
producing a higher number of variants without losing test coverage.
Also in addition, this commit adds the de::dataOrNull function to obtain
a vector's data pointer or a null pointer when the vector is empty.
Similar functions and checks are commonly performed in many tests, but
this commit does not attempt to replace existing uses.
Affected and new tests:
dEQP-VK.image.atomic_operations.*
Components: Framework, Vulkan
VK-GL-CTS issue: 2752
Change-Id: I5c77eb42990ad57fdd43e6e4a7e74b7c149f8e14
13 files changed: