mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-07 19:58:32 +09:00
[Fix] (MG_Backend/DirectVulkan): Fix VkBufferManager initialization assertion failure
This commit is contained in:
@@ -279,9 +279,6 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
||||
void VulkanRenderer::CreateFrameContexts() {
|
||||
VK_VERIFY(m_frameContext.Initialize(m_device, m_commandPool, m_config.MaxFramesInFlight),
|
||||
"CreateFrameContexts");
|
||||
VK_VERIFY(m_frameContext.InitializeSwapchainSemaphores(m_device,
|
||||
static_cast<Uint32>(m_swapchainObject.GetImageCount())),
|
||||
"CreateFrameContexts, InitializeSwapchainSemaphores");
|
||||
MGLOG_I("CreateFrameContexts completed");
|
||||
}
|
||||
|
||||
@@ -293,9 +290,20 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
||||
CreateAllocator();
|
||||
|
||||
CreateCommandPool();
|
||||
CreateFrameContexts();
|
||||
auto succeeded = false;
|
||||
succeeded = m_bufferManager.Initialize({
|
||||
.allocator = m_allocator,
|
||||
.frameCount = m_frameContext.GetFrameCount(),
|
||||
.minVertexUploadBytes = 4 * 1024 * 1024,
|
||||
.minIndexUploadBytes = 1 * 1024 * 1024,
|
||||
.transientMemoryUsage = VMA_MEMORY_USAGE_AUTO,
|
||||
.transientAllocationFlags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT,
|
||||
.transientPersistentMapping = false,
|
||||
});
|
||||
MOBILEGL_ASSERT(succeeded, "VkBufferManager initialization failed.");
|
||||
m_textureManager = MakeUnique<VkTextureManager>();
|
||||
MOBILEGL_ASSERT(m_textureManager != nullptr, "VkTextureManager creation failed.");
|
||||
auto succeeded = false;
|
||||
succeeded = m_textureManager->Initialize(
|
||||
{m_device, m_physicalDevice.handle, m_allocator, m_commandPool, m_graphicsQueue});
|
||||
MOBILEGL_ASSERT(succeeded, "VkTextureManager initialization failed.");
|
||||
@@ -333,18 +341,6 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
||||
m_vertexInputStateFactory = MakeUnique<VertexInputStateFactory>(m_config);
|
||||
MOBILEGL_ASSERT(m_vertexInputStateFactory != nullptr, "VertexInputStateFactory creation failed.");
|
||||
|
||||
CreateFrameContexts();
|
||||
succeeded = m_bufferManager.Initialize({
|
||||
.allocator = m_allocator,
|
||||
.frameCount = m_frameContext.GetFrameCount(),
|
||||
.minVertexUploadBytes = 4 * 1024 * 1024,
|
||||
.minIndexUploadBytes = 1 * 1024 * 1024,
|
||||
.transientMemoryUsage = VMA_MEMORY_USAGE_AUTO,
|
||||
.transientAllocationFlags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT,
|
||||
.transientPersistentMapping = false,
|
||||
});
|
||||
MOBILEGL_ASSERT(succeeded, "Buffer manager initialization failed.");
|
||||
|
||||
// Prime the first frame so Render() always targets an acquired swapchain image.
|
||||
VK_VERIFY(m_frameContext.WaitAndAcquireNextImage(m_device, m_swapchainObject.GetHandle(), m_imageIndexAcquired),
|
||||
"Initialize, WaitAndAcquireNextImage");
|
||||
|
||||
Reference in New Issue
Block a user