From e0d0551e7b8173c6f8f0cc44c031c57070225123 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Tue, 24 Feb 2026 12:55:28 +0800 Subject: [PATCH] [Chore] (MG_Test/Backend/DirectVulkan/TestExec): `FramebufferManager` -> `RenderTargetManager` --- CMakeLists.txt | 2 +- .../Renderer/UniformDescriptorBinder.cpp | 8 ++-- .../Renderer/UniformDescriptorBinder.h | 6 +-- ...rManager.cpp => VkRenderTargetManager.cpp} | 32 ++++++++-------- ...ufferManager.h => VkRenderTargetManager.h} | 6 +-- .../DirectVulkan/Renderer/VulkanRenderer.cpp | 38 +++++++++---------- .../DirectVulkan/Renderer/VulkanRenderer.h | 4 +- 7 files changed, 48 insertions(+), 48 deletions(-) rename MobileGL/MG_Backend/DirectVulkan/Renderer/{VkFramebufferManager.cpp => VkRenderTargetManager.cpp} (95%) rename MobileGL/MG_Backend/DirectVulkan/Renderer/{VkFramebufferManager.h => VkRenderTargetManager.h} (97%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f937b73..21e207ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -225,7 +225,7 @@ set(SOURCE_FILES MobileGL/MG_Backend/DirectVulkan/Renderer/VertexInputStateBuilder.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/VertexInputStateFactory.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/VkBufferObject.cpp - MobileGL/MG_Backend/DirectVulkan/Renderer/VkFramebufferManager.cpp + MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderTargetManager.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderPassManager.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/VkTextureSamplerManager.cpp diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.cpp index de546996..9d8761cc 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.cpp @@ -8,7 +8,7 @@ #include "UniformDescriptorBinder.h" -#include "VkFramebufferManager.h" +#include "VkRenderTargetManager.h" #include "MG_State/GLState/Core.h" #include "MG_State/GLState/ProgramState/ProgramObject.h" #include "MG_Util/ShaderTranspiler/Types.h" @@ -139,7 +139,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { VkDeviceSize minUniformBufferOffsetAlignment, Uint32 frameCount, Uint32 maxBindings, Uint32 setsPerFrame, VkDeviceSize perFrameUploadBytes, VkTextureSamplerManager* textureSamplerManager, - VkFramebufferManager* framebufferManager) { + VkRenderTargetManager* framebufferManager) { Shutdown(); MOBILEGL_ASSERT(device != VK_NULL_HANDLE, "UniformDescriptorBinder::Initialize requires valid VkDevice"); @@ -481,8 +481,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { } if (m_framebufferManager->Transition(commandBuffer, - VkFramebufferManager::TransitionResource::OffscreenColorTexture, - VkFramebufferManager::TransitionUsage::ShaderRead, + VkRenderTargetManager::TransitionResource::OffscreenColorTexture, + VkRenderTargetManager::TransitionUsage::ShaderRead, texture->GetExternalIndex())) { VkImageView offscreenView = VK_NULL_HANDLE; if (m_framebufferManager->GetOffscreenColorViewByTexture(texture->GetExternalIndex(), offscreenView) && diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.h b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.h index 884fcb51..1b73d403 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.h +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformDescriptorBinder.h @@ -19,7 +19,7 @@ namespace MobileGL::MG_State::GLState { } namespace MobileGL::MG_Backend::DirectVulkan { - class VkFramebufferManager; + class VkRenderTargetManager; class UniformDescriptorBinder { public: @@ -33,7 +33,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { Uint32 frameCount, Uint32 maxBindings = 16, Uint32 setsPerFrame = 64, VkDeviceSize perFrameUploadBytes = 4 * 1024 * 1024, VkTextureSamplerManager* textureSamplerManager = nullptr, - VkFramebufferManager* framebufferManager = nullptr); + VkRenderTargetManager* framebufferManager = nullptr); void Shutdown(); void BeginFrame(Uint32 frameIndex); @@ -98,7 +98,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { Uint32 m_setsPerFrame = 0; Uint32 m_peakDescriptorSetsObserved = 0; VkTextureSamplerManager* m_textureSamplerManager = nullptr; - VkFramebufferManager* m_framebufferManager = nullptr; + VkRenderTargetManager* m_framebufferManager = nullptr; }; } // namespace MobileGL::MG_Backend::DirectVulkan diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkFramebufferManager.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderTargetManager.cpp similarity index 95% rename from MobileGL/MG_Backend/DirectVulkan/Renderer/VkFramebufferManager.cpp rename to MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderTargetManager.cpp index cbc7fbae..4ec84789 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkFramebufferManager.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderTargetManager.cpp @@ -6,19 +6,19 @@ // SPDX-License-Identifier: LGPL-3.0-only // End of Source File Header -#include "VkFramebufferManager.h" +#include "VkRenderTargetManager.h" #include #include namespace MobileGL::MG_Backend::DirectVulkan { - Bool VkFramebufferManager::Initialize(const InitInfo& initInfo) { + Bool VkRenderTargetManager::Initialize(const InitInfo& initInfo) { m_device = initInfo.device; m_physicalDevice = initInfo.physicalDevice; return m_device != VK_NULL_HANDLE && m_physicalDevice != VK_NULL_HANDLE; } - void VkFramebufferManager::Shutdown() { + void VkRenderTargetManager::Shutdown() { for (auto& [_, target] : m_offscreenColorTargets) { DestroyOffscreenColorTarget(target); } @@ -27,7 +27,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { m_physicalDevice = VK_NULL_HANDLE; } - Bool VkFramebufferManager::EnsureOffscreenColorTarget(Uint glFboExternalIndex, + Bool VkRenderTargetManager::EnsureOffscreenColorTarget(Uint glFboExternalIndex, const MG_State::GLState::FramebufferObject& glFbo) { const auto& colorAttachment = glFbo.GetAttachment(FramebufferAttachmentType::Color0); if (!colorAttachment.IsValid() || colorAttachment.IsEmpty()) { @@ -44,7 +44,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return RecreateOffscreenColorTarget(target, glFbo, colorAttachment, objectVersion); } - Bool VkFramebufferManager::Transition(VkCommandBuffer commandBuffer, TransitionResource resource, + Bool VkRenderTargetManager::Transition(VkCommandBuffer commandBuffer, TransitionResource resource, TransitionUsage usage, Uint externalIndex) { auto resolveDepthStencilAspectMask = [](VkFormat format) { VkImageAspectFlags aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; @@ -169,7 +169,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return false; } - Bool VkFramebufferManager::GetOffscreenColorImage(Uint glFboExternalIndex, VkImage& outImage, + Bool VkRenderTargetManager::GetOffscreenColorImage(Uint glFboExternalIndex, VkImage& outImage, VkExtent2D& outExtent) const { auto it = m_offscreenColorTargets.find(glFboExternalIndex); if (it == m_offscreenColorTargets.end() || it->second.image == VK_NULL_HANDLE) { @@ -180,7 +180,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return true; } - Bool VkFramebufferManager::GetOffscreenDepthStencilImage(Uint glFboExternalIndex, VkImage& outImage, + Bool VkRenderTargetManager::GetOffscreenDepthStencilImage(Uint glFboExternalIndex, VkImage& outImage, VkExtent2D& outExtent, VkFormat& outFormat) const { auto it = m_offscreenColorTargets.find(glFboExternalIndex); if (it == m_offscreenColorTargets.end() || it->second.depthStencilImage == VK_NULL_HANDLE) { @@ -192,7 +192,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return true; } - Bool VkFramebufferManager::GetOffscreenColorViewByTexture(Uint textureExternalIndex, + Bool VkRenderTargetManager::GetOffscreenColorViewByTexture(Uint textureExternalIndex, VkImageView& outImageView) const { for (const auto& [_, target] : m_offscreenColorTargets) { if (target.colorTextureExternalIndex != textureExternalIndex || target.imageView == VK_NULL_HANDLE) { @@ -204,7 +204,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return false; } - Bool VkFramebufferManager::GetOffscreenRenderSurface(Uint glFboExternalIndex, VkImageView& outColorView, + Bool VkRenderTargetManager::GetOffscreenRenderSurface(Uint glFboExternalIndex, VkImageView& outColorView, VkFormat& outColorFormat, VkImageView& outDepthStencilView, VkFormat& outDepthStencilFormat, VkExtent2D& outExtent) const { auto it = m_offscreenColorTargets.find(glFboExternalIndex); @@ -219,7 +219,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return true; } - Bool VkFramebufferManager::RecreateOffscreenColorTarget( + Bool VkRenderTargetManager::RecreateOffscreenColorTarget( OffscreenColorTarget& target, const MG_State::GLState::FramebufferObject& glFbo, const MG_State::GLState::FramebufferAttachmentObject& colorAttachment, Uint16 glObjectVersion) { DestroyOffscreenColorTarget(target); @@ -354,7 +354,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return true; } - void VkFramebufferManager::DestroyOffscreenColorTarget(OffscreenColorTarget& target) { + void VkRenderTargetManager::DestroyOffscreenColorTarget(OffscreenColorTarget& target) { if (target.imageView != VK_NULL_HANDLE) { vkDestroyImageView(m_device, target.imageView, nullptr); target.imageView = VK_NULL_HANDLE; @@ -388,7 +388,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { target.colorTextureExternalIndex = 0; } - Bool VkFramebufferManager::TransitionImageLayout(VkCommandBuffer commandBuffer, VkImage image, + Bool VkRenderTargetManager::TransitionImageLayout(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout& trackedLayout, VkImageLayout newLayout, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, @@ -420,7 +420,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return true; } - Uint32 VkFramebufferManager::FindMemoryType(Uint32 typeFilter, VkMemoryPropertyFlags properties) const { + Uint32 VkRenderTargetManager::FindMemoryType(Uint32 typeFilter, VkMemoryPropertyFlags properties) const { VkPhysicalDeviceMemoryProperties memoryProperties{}; vkGetPhysicalDeviceMemoryProperties(m_physicalDevice, &memoryProperties); for (Uint32 i = 0; i < memoryProperties.memoryTypeCount; ++i) { @@ -433,7 +433,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { return 0; } - VkFormat VkFramebufferManager::ResolveColorFormat( + VkFormat VkRenderTargetManager::ResolveColorFormat( const MG_State::GLState::FramebufferAttachmentObject& colorAttachment) { TextureInternalFormat internalFormat = TextureInternalFormat::Unknown; if (colorAttachment.IsTexture()) { @@ -454,7 +454,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { } } - VkFormat VkFramebufferManager::ResolveDepthStencilFormat( + VkFormat VkRenderTargetManager::ResolveDepthStencilFormat( const MG_State::GLState::FramebufferAttachmentObject& depthAttachment, const MG_State::GLState::FramebufferAttachmentObject& stencilAttachment) { const auto resolveAttachmentFormat = [](const MG_State::GLState::FramebufferAttachmentObject& attachment) { @@ -498,7 +498,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { } } - VkFormat VkFramebufferManager::FindSupportedDepthStencilFormat(const Vector& candidates) const { + VkFormat VkRenderTargetManager::FindSupportedDepthStencilFormat(const Vector& candidates) const { for (auto format : candidates) { VkFormatProperties properties{}; vkGetPhysicalDeviceFormatProperties(m_physicalDevice, format, &properties); diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkFramebufferManager.h b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderTargetManager.h similarity index 97% rename from MobileGL/MG_Backend/DirectVulkan/Renderer/VkFramebufferManager.h rename to MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderTargetManager.h index 55159785..a21bc2e8 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkFramebufferManager.h +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderTargetManager.h @@ -13,7 +13,7 @@ #include namespace MobileGL::MG_Backend::DirectVulkan { - class VkFramebufferManager { + class VkRenderTargetManager { public: enum class TransitionResource { OffscreenColor, @@ -34,8 +34,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { VkPhysicalDevice physicalDevice = VK_NULL_HANDLE; }; - VkFramebufferManager() = default; - ~VkFramebufferManager() = default; + VkRenderTargetManager() = default; + ~VkRenderTargetManager() = default; Bool Initialize(const InitInfo& initInfo); void Shutdown(); diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp index 8e3fbaed..6b032ddf 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp @@ -222,7 +222,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { &m_config}); MOBILEGL_ASSERT(succeeded, "VkTextureSamplerManager initialization failed."); - m_framebufferManager = MakeUnique(); + m_framebufferManager = MakeUnique(); MOBILEGL_ASSERT(m_framebufferManager != nullptr, "VkFramebufferManager creation failed."); succeeded = m_framebufferManager->Initialize({m_device, m_physicalDevice.handle}); MOBILEGL_ASSERT(succeeded, "VkFramebufferManager initialization failed."); @@ -510,8 +510,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { return; } - if (!m_framebufferManager->Transition(commandBuffer, VkFramebufferManager::TransitionResource::OffscreenColor, - VkFramebufferManager::TransitionUsage::Attachment, + if (!m_framebufferManager->Transition(commandBuffer, VkRenderTargetManager::TransitionResource::OffscreenColor, + VkRenderTargetManager::TransitionUsage::Attachment, drawFboExternalIndex)) { MGLOG_D("EnsureFrameRecordingStarted skipped: failed to transition offscreen FBO %u for attachment", drawFboExternalIndex); @@ -1280,8 +1280,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { EnsureOffscreenRenderTarget(targetFboExternalIndex, *targetFbo, offscreenRenderPass, offscreenFramebuffer, offscreenExtent, offscreenDepthStencilFormat) && m_framebufferManager->Transition(commandBuffer, - VkFramebufferManager::TransitionResource::OffscreenColor, - VkFramebufferManager::TransitionUsage::Attachment, + VkRenderTargetManager::TransitionResource::OffscreenColor, + VkRenderTargetManager::TransitionUsage::Attachment, targetFboExternalIndex)) { m_renderPassManager->BeginRenderPass(commandBuffer, offscreenRenderPass, offscreenFramebuffer, offscreenExtent); @@ -1434,8 +1434,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { VK_ACCESS_TRANSFER_READ_BIT); } } else if (!m_framebufferManager->Transition(commandBuffer, - VkFramebufferManager::TransitionResource::OffscreenColor, - VkFramebufferManager::TransitionUsage::TransferSrc, + VkRenderTargetManager::TransitionResource::OffscreenColor, + VkRenderTargetManager::TransitionUsage::TransferSrc, readFboExternalIndex)) { MGLOG_W("BlitFramebuffer skipped: failed to transition read FBO %u to transfer src", readFboExternalIndex); @@ -1452,16 +1452,16 @@ namespace MobileGL::MG_Backend::DirectVulkan { } } else if (sameImage) { if (!m_framebufferManager->Transition(commandBuffer, - VkFramebufferManager::TransitionResource::OffscreenColor, - VkFramebufferManager::TransitionUsage::General, + VkRenderTargetManager::TransitionResource::OffscreenColor, + VkRenderTargetManager::TransitionUsage::General, drawFboExternalIndex)) { MGLOG_W("BlitFramebuffer skipped: failed to transition draw FBO %u to general", drawFboExternalIndex); return false; } } else if (!m_framebufferManager->Transition(commandBuffer, - VkFramebufferManager::TransitionResource::OffscreenColor, - VkFramebufferManager::TransitionUsage::TransferDst, + VkRenderTargetManager::TransitionResource::OffscreenColor, + VkRenderTargetManager::TransitionUsage::TransferDst, drawFboExternalIndex)) { MGLOG_W("BlitFramebuffer skipped: failed to transition draw FBO %u to transfer dst", drawFboExternalIndex); @@ -1670,8 +1670,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { VK_ACCESS_TRANSFER_READ_BIT); } } else if (!m_framebufferManager->Transition( - commandBuffer, VkFramebufferManager::TransitionResource::OffscreenDepthStencil, - VkFramebufferManager::TransitionUsage::TransferSrc, readFboExternalIndex)) { + commandBuffer, VkRenderTargetManager::TransitionResource::OffscreenDepthStencil, + VkRenderTargetManager::TransitionUsage::TransferSrc, readFboExternalIndex)) { MGLOG_W("BlitFramebuffer: failed to transition read depth/stencil FBO %u to transfer src", readFboExternalIndex); } @@ -1688,14 +1688,14 @@ namespace MobileGL::MG_Backend::DirectVulkan { } } else if (sameDepthImage) { if (!m_framebufferManager->Transition( - commandBuffer, VkFramebufferManager::TransitionResource::OffscreenDepthStencil, - VkFramebufferManager::TransitionUsage::General, drawFboExternalIndex)) { + commandBuffer, VkRenderTargetManager::TransitionResource::OffscreenDepthStencil, + VkRenderTargetManager::TransitionUsage::General, drawFboExternalIndex)) { MGLOG_W("BlitFramebuffer: failed to transition draw depth/stencil FBO %u to general", drawFboExternalIndex); } } else if (!m_framebufferManager->Transition( - commandBuffer, VkFramebufferManager::TransitionResource::OffscreenDepthStencil, - VkFramebufferManager::TransitionUsage::TransferDst, drawFboExternalIndex)) { + commandBuffer, VkRenderTargetManager::TransitionResource::OffscreenDepthStencil, + VkRenderTargetManager::TransitionUsage::TransferDst, drawFboExternalIndex)) { MGLOG_W("BlitFramebuffer: failed to transition draw depth/stencil FBO %u to transfer dst", drawFboExternalIndex); } @@ -1851,8 +1851,8 @@ namespace MobileGL::MG_Backend::DirectVulkan { return false; } if (!m_framebufferManager->Transition(commandBuffer, - VkFramebufferManager::TransitionResource::OffscreenColor, - VkFramebufferManager::TransitionUsage::Attachment, + VkRenderTargetManager::TransitionResource::OffscreenColor, + VkRenderTargetManager::TransitionUsage::Attachment, targetFboExternalIndex)) { return false; } diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h index 24d9b22d..920f22f3 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h @@ -15,7 +15,7 @@ #include "UniformDescriptorBinder.h" #include "VertexInputStateFactory.h" #include "VkBufferObject.h" -#include "VkFramebufferManager.h" +#include "VkRenderTargetManager.h" #include "VkRenderPassManager.h" #include "VkTextureSamplerManager.h" #include "MG_Util/Math/VectorTypes.h" @@ -152,7 +152,7 @@ namespace MobileGL::MG_Backend::DirectVulkan { UniquePtr m_programFactory; UniquePtr m_uniformDescriptorBinder; UniquePtr m_vertexInputStateFactory; - UniquePtr m_framebufferManager; + UniquePtr m_framebufferManager; UniquePtr m_renderPassManager; UniquePtr m_textureSamplerManager;