Limit number of concurrent query pools
authorRicardo Garcia <rgarcia@igalia.com>
Tue, 15 Nov 2022 15:07:16 +0000 (16:07 +0100)
committerRicardo Garcia <rgarcia@igalia.com>
Tue, 15 Nov 2022 15:07:16 +0000 (16:07 +0100)
The max concurrency tests use a heuristic to try to estimate a safe
number of objects of different types that the implementation would be
able to create, with an upper limit of 16384 objects.

However, in some implementations the creation of these objects have
external limitations that make the safe value hard to guess by only
looking at system and device memory usage. For example, the kernel
driver may impose further limits on the total number of certain objects.

This is reflected in the current tests with some lower hardcoded limits
for some types of objects, like instances, devices, synchronization
primitives and pipeline caches.

This commit halves the limit of concurrent query pools being tested to a
value that doesn't trigger any issue in the Mesa RPi drivers.

Affects:
dEQP-VK.api.object_management.max_concurrent.query_pool

VK-GL-CTS issue: 4106
Components: Vulkan

Change-Id: If88c6aa1ecd3d9c18892b38cb55907a82eee6cf8

external/vulkancts/modules/vulkan/api/vktApiObjectManagementTests.cpp

index cc7c543..e39a030 100644 (file)
@@ -448,6 +448,7 @@ enum
        MAX_CONCURRENT_DEVICES                  = 32,
        MAX_CONCURRENT_SYNC_PRIMITIVES  = 100,
        MAX_CONCURRENT_PIPELINE_CACHES  = 128,
+       MAX_CONCURRENT_QUERY_POOLS              = 8192,
        DEFAULT_MAX_CONCURRENT_OBJECTS  = 16*1024,
 };
 
@@ -1174,7 +1175,7 @@ struct QueryPool
 
        static deUint32 getMaxConcurrent (Context& context, const Parameters& params)
        {
-               return getSafeObjectCount<QueryPool>(context, params, DEFAULT_MAX_CONCURRENT_OBJECTS);
+               return getSafeObjectCount<QueryPool>(context, params, MAX_CONCURRENT_QUERY_POOLS);
        }
 
        static Move<VkQueryPool> create (const Environment& env, const Resources&, const Parameters& params)