OS: Windows 10
Vulkan Version: 22.214.171.124
Nvidia driver version: 388.43
I’m working on a project which is to build a high-performance rendering server based on Vulkan. The rendering server is multi-threaded in order to process rendering requests sent by users. Initially, for each unique model, an exclusive logical device is created and taken care by one rendering thread. Basically, it works fine until we found that there seems to be a limitation on maximum number of devices that can be created. And this limitation varies from device to device (My tested results: 750ti [Windows10 driver] -> Max = ~81, on Titan Xp [Linux driver] -> Max = ~35). In order to overcome this pitfall, we tried to create only one single logical device which is shared by every 3D model rendering threads. Every model has their own command buffer which is built in multi-threaded fashion and submitted to one graphics queue whenever a render request is received. Locks are heavily used in drawCall, buildSecondBuffer and uploadModelData stages in order to prevent from race conditions. But it doesn’t work this time. Error msg “VkDeviceLost-4” keeps throwing out when multiple rendering requests received at the same time.
According to Vulkan Specification:
Due to patented issue, I cannot show you the source code(~5000 lines). But still, can any of you guys got any idea about this issue? What could potentially cause this problem? Does anyone else have the same issue? Really appreciate it if you can help me! Thanks in advance!