| 2438 | } |
| 2439 | |
| 2440 | static void demo_prepare_submission_sync_objects(struct demo *demo) { |
| 2441 | VkSemaphoreCreateInfo semaphoreCreateInfo = { |
| 2442 | .sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, |
| 2443 | .pNext = NULL, |
| 2444 | .flags = 0, |
| 2445 | }; |
| 2446 | // Create fences that we can use to throttle if we get too far |
| 2447 | // ahead of the image presents |
| 2448 | VkFenceCreateInfo fence_ci = { |
| 2449 | .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, .pNext = NULL, .flags = VK_FENCE_CREATE_SIGNALED_BIT}; |
| 2450 | VkResult U_ASSERT_ONLY err; |
| 2451 | for (uint32_t i = 0; i < FRAME_LAG; i++) { |
| 2452 | err = vkCreateFence(demo->device, &fence_ci, NULL, &demo->submission_resources[i].fence); |
| 2453 | assert(!err); |
| 2454 | |
| 2455 | err = vkCreateSemaphore(demo->device, &semaphoreCreateInfo, NULL, &demo->submission_resources[i].image_acquired_semaphore); |
| 2456 | assert(!err); |
| 2457 | demo_name_object(demo, VK_OBJECT_TYPE_SEMAPHORE, (uint64_t)demo->submission_resources[i].image_acquired_semaphore, |
| 2458 | "AcquireSem(%u)", i); |
| 2459 | } |
| 2460 | } |
| 2461 | |
| 2462 | static void demo_prepare(struct demo *demo) { |
| 2463 | VkResult U_ASSERT_ONLY err; |
no test coverage detected