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