fix bufferSize control

main-headless
ink-soul 2024-04-16 15:12:42 +08:00
parent c2b3bbec51
commit 07487be2bf
4 changed files with 37 additions and 7 deletions

View File

@ -123,7 +123,7 @@ void VulkanExampleBase::prepare()
*/
VkCommandPoolCreateInfo cmdPoolInfo = {};
cmdPoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
cmdPoolInfo.queueFamilyIndex = swapChain.queueNodeIndex;
cmdPoolInfo.queueFamilyIndex = queueFamilyIndex;
cmdPoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
VK_CHECK_RESULT(vkCreateCommandPool(device, &cmdPoolInfo, nullptr, &cmdPool));
@ -334,7 +334,7 @@ void VulkanExampleBase::renderLoop()
{
renderFrame();
}
renderingFrameIndex++;
// Flush device to make sure all resources can be freed
vkDeviceWaitIdle(device);
}
@ -501,6 +501,28 @@ void VulkanExampleBase::initVulkan()
vkGetPhysicalDeviceFeatures(physicalDevice, &deviceFeatures);
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &deviceMemoryProperties);
/*
queueFamilyIndex creation
*/
const float defaultQueuePriority(0.0f);
VkDeviceQueueCreateInfo queueCreateInfo = {};
uint32_t queueFamilyCount;
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, nullptr);
std::vector<VkQueueFamilyProperties> queueFamilyProperties(queueFamilyCount);
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, queueFamilyProperties.data());
for (uint32_t i = 0; i < static_cast<uint32_t>(queueFamilyProperties.size()); i++) {
if (queueFamilyProperties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) {
queueFamilyIndex = i;
queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queueCreateInfo.queueFamilyIndex = i;
queueCreateInfo.queueCount = 1;
queueCreateInfo.pQueuePriorities = &defaultQueuePriority;
break;
}
}
/*
Device creation
*/
@ -522,6 +544,8 @@ void VulkanExampleBase::initVulkan()
*/
vkGetDeviceQueue(device, vulkanDevice->queueFamilyIndices.graphics, 0, &queue);
/*
Suitable depth format
*/

View File

@ -113,6 +113,8 @@ public:
uint32_t lastFPS = 0;
VkFormat colorFormat = VK_FORMAT_R8G8B8A8_SRGB;
uint32_t queueFamilyIndex;
uint32_t renderingFrameIndex;
struct Signal
{

View File

@ -1553,13 +1553,14 @@ PlumageRender::PlumageRender()
camera.rotationSpeed = 0.25f;
camera.movementSpeed = 0.1f;
auto frameRange = settings.outputFrameCount - settings.startFrameCount + 1;
waitFences.resize(renderAhead);
presentCompleteSemaphores.resize(renderAhead);
renderCompleteSemaphores.resize(renderAhead);
commandBuffers.resize(swapChain.imageCount);
uniformBuffers.resize(swapChain.imageCount);
descriptorSets.resize(swapChain.imageCount);
commandBuffers.resize(renderingFrameIndex);
uniformBuffers.resize(renderingFrameIndex);
descriptorSets.resize(renderingFrameIndex);
// Command buffer execution fences
for (auto& waitFence : waitFences) {
VkFenceCreateInfo fenceCI{ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, nullptr, VK_FENCE_CREATE_SIGNALED_BIT };
@ -1598,8 +1599,8 @@ PlumageRender::PlumageRender()
sampleCount = settings.sampleCount;
}
gui = new UI(vulkanDevice, renderPass, queue, pipelineCache, sampleCount);
updateUIOverlay();
//gui = new UI(vulkanDevice, renderPass, queue, pipelineCache, sampleCount);
//updateUIOverlay();
buildCommandBuffers();
@ -2311,6 +2312,7 @@ PlumageRender::PlumageRender()
{
for (int32_t i = 0; i < __argc; i++) { PlumageRender::args.push_back(__argv[i]); };
plumageRender = new PlumageRender();
std::cout << "start to init vulkan" << std::endl;
plumageRender->initVulkan();
//plumageRender->setupWindow(hInstance, WndProc);
plumageRender->prepare();

View File

@ -56,6 +56,8 @@ public:
} info ;
struct Models