Merge vk-gl-cts/vulkan-cts-1.2.1 into vk-gl-cts/vulkan-cts-1.2.2
Change-Id: I6f501d0a79d072f3c3178ceda69dff5dfa9f98a0
diff --git a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
index bfec8b2..5ae5310 100644
--- a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
+++ b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
@@ -220,9 +220,11 @@
CommonDescriptorInstance (Context& context,
const TestParams& testParams);
- deUint32 computeAvailableDescriptorCount (VkDescriptorType descriptorType) const;
+ deUint32 computeAvailableDescriptorCount (VkDescriptorType descriptorType,
+ bool reserveUniformTexelBuffer) const;
- Move<VkDescriptorSetLayout> createDescriptorSetLayout (deUint32& descriptorCount) const;
+ Move<VkDescriptorSetLayout> createDescriptorSetLayout (bool reserveUniformTexelBuffer,
+ deUint32& descriptorCount) const;
Move<VkDescriptorPool> createDescriptorPool (deUint32 descriptorCount) const;
@@ -528,17 +530,19 @@
{
}
-deUint32 CommonDescriptorInstance::computeAvailableDescriptorCount (VkDescriptorType descriptorType) const
+deUint32 CommonDescriptorInstance::computeAvailableDescriptorCount (VkDescriptorType descriptorType,
+ bool reserveUniformTexelBuffer) const
{
DE_UNREF(descriptorType);
const deUint32 vertexCount = m_testParams.frameResolution.width * m_testParams.frameResolution.height;
- const deUint32 availableDescriptorsOnDevice = ut::DeviceProperties(m_context).computeMaxPerStageDescriptorCount(m_testParams.descriptorType, m_testParams.updateAfterBind);
+ const deUint32 availableDescriptorsOnDevice = ut::DeviceProperties(m_context).computeMaxPerStageDescriptorCount(m_testParams.descriptorType, m_testParams.updateAfterBind, reserveUniformTexelBuffer);
return deMinu32(deMinu32(vertexCount, availableDescriptorsOnDevice), MAX_DESCRIPTORS);
}
-Move<VkDescriptorSetLayout> CommonDescriptorInstance::createDescriptorSetLayout (deUint32& descriptorCount) const
+Move<VkDescriptorSetLayout> CommonDescriptorInstance::createDescriptorSetLayout (bool reserveUniformTexelBuffer,
+ deUint32& descriptorCount) const
{
- descriptorCount = computeAvailableDescriptorCount(m_testParams.descriptorType);
+ descriptorCount = computeAvailableDescriptorCount(m_testParams.descriptorType, reserveUniformTexelBuffer);
bool optional = (m_testParams.additionalDescriptorBinding != BINDING_Undefined) && (m_testParams.additionalDescriptorType != VK_DESCRIPTOR_TYPE_UNDEFINED);
@@ -1187,7 +1191,7 @@
variables.lowerBound = 0;
variables.upperBound = variables.vertexCount;
- variables.descriptorSetLayout = createDescriptorSetLayout(variables.availableDescriptorCount);
+ variables.descriptorSetLayout = createDescriptorSetLayout(m_testParams.calculateInLoop, variables.availableDescriptorCount);
variables.validDescriptorCount = ut::computePrimeCount(variables.availableDescriptorCount);
variables.descriptorPool = createDescriptorPool(variables.availableDescriptorCount);
variables.descriptorSet = createDescriptorSet(*variables.descriptorPool, *variables.descriptorSetLayout);
diff --git a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.hpp b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.hpp
index 00709c8..131beff 100644
--- a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.hpp
+++ b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.hpp
@@ -207,7 +207,8 @@
inline const VkPhysicalDeviceFeatures& physicalDeviceFeatures (void) const;
deUint32 computeMaxPerStageDescriptorCount (VkDescriptorType descriptorType,
- bool enableUpdateAfterBind) const;
+ bool enableUpdateAfterBind,
+ bool reserveUniformTexelBuffer) const;
};
inline const VkPhysicalDeviceDescriptorIndexingFeatures& DeviceProperties::descriptorIndexingFeatures (void) const
diff --git a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTestsUtils.cpp b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTestsUtils.cpp
index ca7b675..c81b845 100644
--- a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTestsUtils.cpp
+++ b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTestsUtils.cpp
@@ -688,7 +688,8 @@
}
deUint32 DeviceProperties::computeMaxPerStageDescriptorCount (VkDescriptorType descriptorType,
- bool enableUpdateAfterBind) const
+ bool enableUpdateAfterBind,
+ bool reserveUniformTexelBuffer) const
{
const VkPhysicalDeviceDescriptorIndexingProperties& descriptorProps = descriptorIndexingProperties();
const VkPhysicalDeviceProperties& deviceProps = physicalDeviceProperties();
@@ -703,7 +704,11 @@
deUint32 storageImages = 0;
deUint32 inputAttachments = 0;
deUint32 inlineUniforms = 0;
- const deUint32 resources = deviceProps.limits.maxPerStageResources;
+
+ // in_loop tests use an additional single texel buffer, which is calculated against the limits below
+ const deUint32 reservedCount = (reserveUniformTexelBuffer ? 1u : 0u);
+
+ const deUint32 resources = deviceProps.limits.maxPerStageResources - reservedCount;
if (enableUpdateAfterBind)
{
@@ -718,14 +723,14 @@
}
else
{
- samplers = deMinu32( deviceProps.limits.maxPerStageDescriptorSamplers, deviceProps.limits.maxDescriptorSetSamplers); // 1048576
- uniformBuffers = deMinu32( deviceProps.limits.maxPerStageDescriptorUniformBuffers, deviceProps.limits.maxDescriptorSetUniformBuffers); // 15
- uniformBuffersDynamic = deMinu32( deviceProps.limits.maxPerStageDescriptorUniformBuffers, deviceProps.limits.maxDescriptorSetUniformBuffersDynamic); // 8
- storageBuffers = deMinu32( deviceProps.limits.maxPerStageDescriptorStorageBuffers, deviceProps.limits.maxDescriptorSetStorageBuffers); // 1048576
- storageBuffersDynamic = deMinu32( deviceProps.limits.maxPerStageDescriptorStorageBuffers, deviceProps.limits.maxDescriptorSetStorageBuffersDynamic); // 8
- sampledImages = deMinu32( deviceProps.limits.maxPerStageDescriptorSampledImages-1, deviceProps.limits.maxDescriptorSetSampledImages-1); // 1048576. -1 because during in_loop tests a single texel buffer is created and is calculated against this limit
- storageImages = deMinu32( deviceProps.limits.maxPerStageDescriptorStorageImages, deviceProps.limits.maxDescriptorSetStorageImages); // 1048576
- inputAttachments = deMinu32( deviceProps.limits.maxPerStageDescriptorInputAttachments, deviceProps.limits.maxDescriptorSetInputAttachments); // 1048576
+ samplers = deMinu32( deviceProps.limits.maxPerStageDescriptorSamplers, deviceProps.limits.maxDescriptorSetSamplers); // 1048576
+ uniformBuffers = deMinu32( deviceProps.limits.maxPerStageDescriptorUniformBuffers, deviceProps.limits.maxDescriptorSetUniformBuffers); // 15
+ uniformBuffersDynamic = deMinu32( deviceProps.limits.maxPerStageDescriptorUniformBuffers, deviceProps.limits.maxDescriptorSetUniformBuffersDynamic); // 8
+ storageBuffers = deMinu32( deviceProps.limits.maxPerStageDescriptorStorageBuffers, deviceProps.limits.maxDescriptorSetStorageBuffers); // 1048576
+ storageBuffersDynamic = deMinu32( deviceProps.limits.maxPerStageDescriptorStorageBuffers, deviceProps.limits.maxDescriptorSetStorageBuffersDynamic); // 8
+ sampledImages = deMinu32( deviceProps.limits.maxPerStageDescriptorSampledImages - reservedCount, deviceProps.limits.maxDescriptorSetSampledImages - reservedCount); // 1048576.
+ storageImages = deMinu32( deviceProps.limits.maxPerStageDescriptorStorageImages, deviceProps.limits.maxDescriptorSetStorageImages); // 1048576
+ inputAttachments = deMinu32( deviceProps.limits.maxPerStageDescriptorInputAttachments, deviceProps.limits.maxDescriptorSetInputAttachments); // 1048576
}
// adding arbitrary upper bound limits to restrain the size of the test ( we are testing big arrays, not the maximum size arrays )