Hello,Everyone,
When I execute vkCreateSwapchainKHR, android studio reports some error:
VkSwapchainCreateInfoKHR swapChainCreateInfo{
.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
.surface = GetSurface(),
.minImageCount = imageCount,
.imageFormat = VK_FORMAT_R8G8B8A8_SRGB,
.imageColorSpace = GetColorSpace,
.imageExtent = extent2D,
.imageArrayLayers = 1,
.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
.preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
.compositeAlpha = static_cast<VkCompositeAlphaFlagBitsKHR>(swapChainSupport.capabilities.supportedCompositeAlpha),//VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,
.presentMode = presentMode,
.clipped = VK_TRUE,
.oldSwapchain = VK_NULL_HANDLE,
};
Error:
ERROR: Format allocation info not found for format: 38
ERROR: Format allocation info not found for format: 0
Invalid base format! req_base_format = 0x0, req_format = 0x38, type = 0x0
ERROR: Unrecognized and/or unsupported format 0x38 and usage 0xb00
isSupported(1, 1, 56, 1, ...) failed with 5
Failed to allocate (4 x 4) layerCount 1 format 56 usage b00: 5
GraphicBuffer(w=4, h=4, lc=1) failed (Unknown error -5), handle=0x0
ERROR: Format allocation info not found for format: 3b
ERROR: Format allocation info not found for format: 0
Invalid base format! req_base_format = 0x0, req_format = 0x3b, type = 0x0
ERROR: Unrecognized and/or unsupported format 0x3b and usage 0xb00
isSupported(1, 1, 59, 1, ...) failed with 5
Failed to allocate (4 x 4) layerCount 1 format 59 usage b00: 5
GraphicBuffer(w=4, h=4, lc=1) failed (Unknown error -5), handle=0x0
I run the following code, and when I execute vkQueuePresentKHR, I get “acquireNextBufferLocked: Failed to acquire a buffer, err=NO_BUFFER_AVAILABLE”
void DrawFrame() {
if(!initState){
InitRenderDevice();
}
std::vector<VkFence>& inFlightFences = syncObject->GetInFlightFences();
std::vector<VkSemaphore>& imageAvailableSemaphores =syncObject->GetImageAvailableSemaphores();
std::vector<VkSemaphore>& renderFinishedSemaphores = syncObject->GetRenderFinishedSemaphores();
vkWaitForFences(device->GetDevice(), 1, &inFlightFences[currentFrameIndex], VK_TRUE, UINT64_MAX);
uint32_t imageIndex = 0;
VkResult result = vkAcquireNextImageKHR(device->GetDevice(),
swapChain->GetSwapChain(),
UINT64_MAX,
imageAvailableSemaphores[currentFrameIndex],
VK_NULL_HANDLE,
&imageIndex);
if(result == VK_ERROR_OUT_OF_DATE_KHR ) {
Reset();
return;
}
else if(result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR) {
throw std::runtime_error("failed to vkAcquireNextImageKHR");
}
vkResetFences(device->GetDevice(), 1, &inFlightFences[currentFrameIndex]);
std::vector<VkCommandBuffer>& commandBuffers = command->GetCommandBuffers();
VkCommandBuffer commandBuffer = commandBuffers[currentFrameIndex];
vkResetCommandBuffer(commandBuffer, VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT);
vkxCommand->RecordCommandBuffer(commandBuffer, imageIndex);
VkSemaphore waitSemaphores[] = {imageAvailableSemaphores[currentFrameIndex]};
VkSemaphore signalSemaphores[] = {renderFinishedSemaphores[currentFrameIndex]};
VkPipelineStageFlags waitStages[] = {VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT};
VkSubmitInfo submitInfo{
.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
.waitSemaphoreCount = 1,
.pWaitSemaphores = waitSemaphores,
.pWaitDstStageMask = waitStages,
.commandBufferCount = 1,
.pCommandBuffers = &commandBuffer,
.signalSemaphoreCount = 1,
.pSignalSemaphores = signalSemaphores
};
result = vkQueueSubmit(device->GetGraphicsQueue(), 1, &submitInfo, inFlightFences[currentFrameIndex]);
if(result!=VK_SUCCESS){
throw std::runtime_error("failed to vkQueueSubmit");
}
VkSwapchainKHR swapChains[] = {swapChain->GetSwapChain()};
VkPresentInfoKHR presentInfo{
.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
.pNext = nullptr,
.waitSemaphoreCount = 1,
.pWaitSemaphores = signalSemaphores,
.swapchainCount = 1,
.pSwapchains = swapChains,
.pImageIndices = &imageIndex,
.pResults = nullptr,
};
//!Error_1 [SurfaceView[.MainActivity]#1](f:1,a:3) acquireNextBufferLocked: Failed to acquire a buffer, err=NO_BUFFER_AVAILABLE
Debug("vkQueuePresentKHR begin");
result = vkQueuePresentKHR(device->GetPresentQueue(), &presentInfo);
Debug("vkQueuePresentKHR end");
if (framebufferResized || result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR ) {
Reset();
framebufferResized = false;
}
else if (result != VK_SUCCESS) {
throw std::runtime_error("failed to vkQueuePresentKHR");
}
currentFrameIndex = (currentFrameIndex + 1) % maxFramesInFlight;
}
Error:
2024-12-07 02:18:32.470 31651-884 VK D vkQueuePresentKHR begin
2024-12-07 02:18:32.470 31651-884 BLASTBufferQueue E [SurfaceView[com.example.vk/com.example.vk.MainActivity]#3](f:1,a:3) acquireNextBufferLocked: Failed to acquire a buffer, err=NO_BUFFER_AVAILABLE
2024-12-07 02:18:32.470 31651-884 VK D vkQueuePresentKHR end
2024-12-07 02:18:32.472 31651-884 VK D vkQueuePresentKHR begin
2024-12-07 02:18:32.472 31651-884 VK D vkQueuePresentKHR end
2024-12-07 02:18:32.474 31651-884 VK D vkQueuePresentKHR begin
2024-12-07 02:18:32.474 31651-884 BLASTBufferQueue E [SurfaceView[com.example.vk/com.example.vk.MainActivity]#3](f:1,a:3) acquireNextBufferLocked: Failed to acquire a buffer, err=NO_BUFFER_AVAILABLE
2024-12-07 02:18:32.474 31651-884 VK D vkQueuePresentKHR end