···163163 if (c->vk.cmd_pool != VK_NULL_HANDLE) {
164164 // Make sure that any of the command buffers from this command
165165 // pool are n used here, this pleases the validation layer.
166166+ os_mutex_lock(&c->vk.queue_mutex);
166167 c->vk.vkDeviceWaitIdle(c->vk.device);
168168+ os_mutex_unlock(&c->vk.queue_mutex);
167169168170 c->vk.vkDestroyCommandPool(c->vk.device, c->vk.cmd_pool, NULL);
169171 c->vk.cmd_pool = VK_NULL_HANDLE;
···668668 *
669669 * This is done after a swap so isn't time critical.
670670 */
671671+ os_mutex_lock(&r->c->vk.queue_mutex);
671672 r->c->vk.vkDeviceWaitIdle(r->c->vk.device);
673673+ os_mutex_unlock(&r->c->vk.queue_mutex);
672674}
673675674676static void
···735737 * make sure that validation doesn't complain. This is done
736738 * during resize so isn't time critical.
737739 */
740740+ os_mutex_lock(&vk->queue_mutex);
738741 vk->vkDeviceWaitIdle(vk->device);
742742+ os_mutex_unlock(&vk->queue_mutex);
739743740744 comp_target_create_images( //
741745 r->c->target, //
+2
src/xrt/compositor/main/comp_swapchain.c
···240240 * validation doesn't complain. This is done during image destruction so
241241 * isn't time critical.
242242 */
243243+ os_mutex_lock(&vk->queue_mutex);
243244 vk->vkDeviceWaitIdle(vk->device);
245245+ os_mutex_unlock(&vk->queue_mutex);
244246245247 clean_image_views(vk, image->array_size, &image->views.alpha);
246248 clean_image_views(vk, image->array_size, &image->views.no_alpha);