Device lost on multi-queue presentation

Running version 364.64.0 (as reported by Vulkan) on a GTX 950, on Linux.

I am working on a (rather loose) Lua binding to Vulkan, and am encountering a terrible bug. The Lua for the crux of the error is the following:

local numf = 60*60      -- 1min at 60fps
for i=1,numf do
        local s = graphics.acquire(sp)
        local q = graphics.getQueue(1, s)
        q:submit({commandBuffer, [sp]='b', [sr]=false})
        q:present(s, sr)
        q:idle()
end

where sp and sr are semaphores. The issue occurs when I have more than 1 image in my swapchain, which makes the loop submit and present on different queues for different frames. After ~5 frames, the program blocks, sits for a bit, and finally errors with a “Device Lost”. With this code, either using a 1 image swapchain or changing q to be the same every frame will not trigger the issue.

If you need a C code equivalent (for reproduction), I would be happy to provide one.

Thanks for reporting this.

Have you checked whether the validation layers report any errors?

If those are error free, then C source and a Windows repro app would be helpful to take a further look. If that works for you, please PM me so I could setup a temporary SFTP account for you.

Thanks,

Mathias Schott

Thank you for the quick response.

Enabling layers “VK_LAYER_GOOGLE_threading”, “VK_LAYER_GOOGLE_unique_objects”, and “VK_LAYER_LUNARG_standard_validation” (and disabling my error handling) results in this:

ParameterValidation(WARN): object: 0 type: 0 location: 565 msgCode: 1: vkQueueWaitIdle: returned VK_ERROR_DEVICE_LOST, indicating that initialization of an object has failed
ParameterValidation(WARN): object: 0 type: 0 location: 565 msgCode: 1: vkQueueWaitIdle: returned VK_ERROR_DEVICE_LOST, indicating that initialization of an object has failed
ParameterValidation(WARN): object: 0 type: 0 location: 565 msgCode: 1: vkQueueWaitIdle: returned VK_ERROR_DEVICE_LOST, indicating that initialization of an object has failed
ParameterValidation(WARN): object: 0 type: 0 location: 565 msgCode: 1: vkQueueSubmit: returned VK_ERROR_DEVICE_LOST, indicating that initialization of an object has failed

I will work on porting a section of the code to Windows (at the moment a good portion is tied up in pthreads, even though this piece is single-threaded). Is there any particular build environment that would be easiest for you to use?

Thanks.

I sent you a PM with some further questions.

Regards,

Mathias