[Chore] (MG_Test/Backend/DirectVulkan): create surface first, then logical device

This commit is contained in:
2026-02-11 22:53:50 +08:00
parent a28f5eeee6
commit b2ea29b91d
2 changed files with 7 additions and 5 deletions
@@ -60,19 +60,19 @@ namespace MobileGL::MG_Backend::DirectVulkan {
void VulkanRenderer::Initialize() { void VulkanRenderer::Initialize() {
CreateInstance(); CreateInstance();
CreateSurface();
PickPhysicalDevice(); PickPhysicalDevice();
CreateLogicalDevice(); CreateLogicalDevice();
CreateSurface();
MGLOG_D("VulkanRenderer initialized"); MGLOG_D("VulkanRenderer initialized");
} }
void VulkanRenderer::Shutdown() { void VulkanRenderer::Shutdown() {
if (m_surface != VK_NULL_HANDLE)
vkDestroySurfaceKHR(m_instance, m_surface, nullptr);
if (m_device != VK_NULL_HANDLE) if (m_device != VK_NULL_HANDLE)
vkDestroyDevice(m_device, nullptr); vkDestroyDevice(m_device, nullptr);
if (m_surface != VK_NULL_HANDLE)
vkDestroySurfaceKHR(m_instance, m_surface, nullptr);
if (m_debugMessenger != VK_NULL_HANDLE) if (m_debugMessenger != VK_NULL_HANDLE)
DestroyDebugMessenger(); DestroyDebugMessenger();
@@ -59,11 +59,13 @@ namespace MobileGL::MG_Backend::DirectVulkan {
VkDebugUtilsMessengerEXT m_debugMessenger = VK_NULL_HANDLE; VkDebugUtilsMessengerEXT m_debugMessenger = VK_NULL_HANDLE;
VkPhysicalDevice m_physicalDevice = VK_NULL_HANDLE; VkPhysicalDevice m_physicalDevice = VK_NULL_HANDLE;
VkDevice m_device = VK_NULL_HANDLE; VkDevice m_device = VK_NULL_HANDLE;
VkQueue m_graphicsQueue = VK_NULL_HANDLE;
VkSurfaceKHR m_surface = VK_NULL_HANDLE; VkSurfaceKHR m_surface = VK_NULL_HANDLE;
Vector<VkQueueFamilyProperties> m_queueFamilies; Vector<VkQueueFamilyProperties> m_queueFamilies;
QueueFamilyIndices m_queueFamilyIndices; QueueFamilyIndices m_queueFamilyIndices;
VkQueue m_graphicsQueue = VK_NULL_HANDLE;
void CreateInstance(); void CreateInstance();
void DestroyInstance(); void DestroyInstance();
VkResult SetupDebugMessenger(); VkResult SetupDebugMessenger();