• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • About
  • Life
  • Tech
  • Travel
  • Work
  • Questions
  • Contact

Welcome

.

Vulkan queue waiting on semaphore that can’t be signaled

April 10, 2020 by

Questions › Vulkan queue waiting on semaphore that can’t be signaled
0
Vote Up
Vote Down
Garmaine asked 4 years ago

It seems I have had invalid code for a while but the validation layers were silent. After updating my sdk to the latest version I started getting this error:

Message ID name: VUID-vkQueuePresentKHR-pWaitSemaphores-03268
Message: [ VUID-vkQueuePresentKHR-pWaitSemaphores-03268 ] Object: 0x55b4b87478f0 (Name = Selected logical device : Type = 3) | VkQueue 0x55b4b8224020[Main queue] is waiting on VkSemaphore 0x110000000011[Render Finished Semaphore: 0] that has no way to be signaled. The Vulkan spec states: All elements of the pWaitSemaphores member of pPresentInfo must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must have also been submitted for execution. (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkQueuePresentKHR-pWaitSemaphores-03268)
Severity: VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT

This happens inside of my main draw loop and it's the only validation layer error in my code. If I never call the code that is responsible for surface presentation. I get no errors.

I am sure the place where I am doing things wrong is here:

void DisplayTarget::StartPass(uint target_num, bool should_clear,
    VulkanImage* external_depth)
{
    auto device = h_interface->GetDevice();

    auto result = device.acquireNextImageKHR(
        *swap_chain,
        std::numeric_limits<uint64_t>::max(),
        *img_available_sems[current_frame],
        nullptr,
        &active_image_index);

    if(result != vk::Result::eSuccess)
        Log::RecordLog("Failed to acquire image");
}

vk::Result DisplayTarget::EndPass()
{
    auto device         = h_interface->GetDevice();
    auto cmd_buff       = h_interface->GetCmdBuffer();
    auto graphics_queue = h_interface->GetQueue();

    device.waitForFences(
        1,
        &*in_flight_fences[current_frame],
        VK_TRUE,
        std::numeric_limits<uint64_t>::max());

    vk::Semaphore wait_semaphores[]      = {*img_available_sems[current_frame]};
    vk::PipelineStageFlags wait_stages[] = {
        vk::PipelineStageFlagBits::eColorAttachmentOutput};
    vk::Semaphore signal_semaphores[] = {*render_finished_sems[current_frame]};
    vk::SubmitInfo submit_info(
        1, wait_semaphores, wait_stages, 1, &cmd_buff, 1, signal_semaphores);

    device.resetFences(1, &*in_flight_fences[current_frame]);

    auto result =
        graphics_queue.submit(1, &submit_info, *in_flight_fences[current_frame]);
    if(result != vk::Result::eSuccess)
        Log::RecordLog("Failed to submit draw command buffer!");

    graphics_queue.waitIdle();
    device.waitIdle();

    vk::SwapchainKHR swap_chains[] = {*swap_chain};
    vk::PresentInfoKHR present_info = {};
    present_info.waitSemaphoreCount = 1;
    present_info.pWaitSemaphores = signal_semaphores;
    present_info.swapchainCount = 1;
    present_info.pSwapchains = swap_chains;
    present_info.pImageIndices = &active_image_index;

    result = graphics_queue.presentKHR(&present_info);

    current_frame = (current_frame + 1) % MAX_FRAMES_IN_FLIGHT;

    return result;
}

Currently they are called consecutively:

display.StartPass();        
display.EndPass();

To get things working I have tried both commenting parts of these 2 functions out or changing the order in which things are called, but either the error persists or I get different validation errors.

I also tried signaling the semaphore directly:

vk::SemaphoreSignalInfo semaphore_info = {};
semaphore_info.semaphore = *render_finished_sems[current_frame];
semaphore_info.value = 0;
device.signalSemaphore(semaphore_info);

But all I managed is to cause a segmentation fault

Are you looking for the answer?
Original Question and Possible Answers can be found on `http://stackoverflow.com`

Question Tags: c++, gpu, validation-layers, vulkan

Please login or Register to submit your answer




Primary Sidebar

Tags

Advancements best Business strategies commercial convenience economic Finances Cognitive decline Financial growth firm Future Hidden Gems Home hydration Impact Innovations lighting line of work Mental health Must-See New York City office patronage Productivity profession Profitability tips Profit optimization pursuit recreation Revenue enhancement romance sippy cups social station Technological breakthroughs technology toddlers trading transaction Treasures Uncover undertaking Well-being Wonders Work Young onset dementia

Newsletter

Complete the form below, and we'll send you all the latest news.

Footer

Footer Funnies

Who knew that reading the footer could be such a hilarious adventure? As we navigate websites, books, and documents, we often stumble upon the unassuming space at the bottom, only to discover a treasure trove of amusement. In this side-splitting compilation, we present 100 jokes that celebrate the unsung hero of content – the footer. Get ready to chuckle, giggle, and maybe even snort as we dive into the world of footnotes, disclaimers, and hidden comedic gems. Brace yourself for a wild ride through the footer!

Recent

  • Unveiling the Enigma: Almost-Magical Lamp Lights Highway Turns
  • The Impact of Young Onset Dementia on Employment and Finances: Optimizing Post-Diagnostic Approaches
  • 11 Wonders of 2023 Technological Breakthrough – Unveiling the Future
  • Work from Home and Stay Mentally Sane – Achieve Productivity and Well-being
  • Hidden Gems of New York City – Uncover the Must-See Treasures!

Search

Tags

Advancements best Business strategies commercial convenience economic Finances Cognitive decline Financial growth firm Future Hidden Gems Home hydration Impact Innovations lighting line of work Mental health Must-See New York City office patronage Productivity profession Profitability tips Profit optimization pursuit recreation Revenue enhancement romance sippy cups social station Technological breakthroughs technology toddlers trading transaction Treasures Uncover undertaking Well-being Wonders Work Young onset dementia

Copyright © 2023