Running VK-CTS in batch execution mode was raising the VK_ERROR_INITIALIZATION_FAILED error in multiple tests. But when the same failing tests were run isolated they always passed.
createDevice and destroyDevice were called before and after every tests. Because the binding_table_pool was never closed, we reached the maximum number of open file descriptors (ulimit -n) and when that happened every call to createDevice implied a VK_ERROR_INITIALIZATION_FAILED error. Fixes: c7db0ed4e94dce563d722e1b098684fbd7315d51 ("anv: Use a separate pool for binding tables when soft pinning") Cc: Scott D Phillips <scott.d.phill...@intel.com> Cc: Jason Ekstrand <ja...@jlekstrand.net> --- src/intel/vulkan/anv_device.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index ea24a0ad03d..5266b269244 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -1782,6 +1782,7 @@ void anv_DestroyDevice( const VkAllocationCallbacks* pAllocator) { ANV_FROM_HANDLE(anv_device, device, _device); + struct anv_physical_device *physical_device = &device->instance->physicalDevice; if (!device) return; @@ -1808,6 +1809,8 @@ void anv_DestroyDevice( if (device->info.gen >= 10) anv_gem_close(device, device->hiz_clear_bo.gem_handle); + if (physical_device->use_softpin) + anv_state_pool_finish(&device->binding_table_pool); anv_state_pool_finish(&device->surface_state_pool); anv_state_pool_finish(&device->instruction_state_pool); anv_state_pool_finish(&device->dynamic_state_pool); -- 2.18.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev