diff --git a/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.cpp b/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.cpp index 535c910a..401573cf 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.cpp @@ -1,6 +1,10 @@ -// -// Created by Swung0x48 on 2026/2/9. -// +// MobileGL - MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.cpp +// Copyright (c) 2025-2026 MobileGL-Dev +// Licensed under the GNU Lesser General Public License v3.0: +// https://www.gnu.org/licenses/gpl-3.0.txt +// https://www.gnu.org/licenses/lgpl-3.0.txt +// SPDX-License-Identifier: LGPL-3.0-only +// End of Source File Header #include "ProgramManager.h" #include "MG_Backend/DirectVulkan/Renderer/VulkanContext.h" @@ -16,9 +20,14 @@ namespace MobileGL::MG_Backend::DirectVulkan { XXH64_freeState(m_hashState); } - Vector ProgramManager::CreatePipelineShaderStages() { + Vector& ProgramManager::CreatePipelineShaderStages(ProgramObject* programObject) { + auto hash = GetHash(programObject); + MOBILEGL_ASSERT(m_shaderStageCreateInfo.find(hash) == m_shaderStageCreateInfo.end(), + "A program with the same hash has already been created"); Vector info; + + return info; } diff --git a/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.h b/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.h index 262b056b..045f6c09 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.h +++ b/MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.h @@ -1,4 +1,4 @@ -// MobileGL - MobileGL/MG_Backend/DirectVulkan/Renderer/ProgramManager.h +// MobileGL - MobileGL/MG_Backend/DirectVulkan/Managers/ProgramManager.h // Copyright (c) 2025-2026 MobileGL-Dev // Licensed under the GNU Lesser General Public License v3.0: // https://www.gnu.org/licenses/gpl-3.0.txt @@ -17,13 +17,13 @@ namespace MobileGL::MG_Backend::DirectVulkan { class ProgramManager { public: + using ProgramObject = MobileGL::MG_State::GLState::ProgramObject; using HashType = XXH64_hash_t; ProgramManager(VulkanContext& ctx); ~ProgramManager(); - Vector CreatePipelineShaderStages(); + Vector& CreatePipelineShaderStages(ProgramObject* programObject); private: - using ProgramObject = MobileGL::MG_State::GLState::ProgramObject; void Cleanup(); HashType GetHash(ProgramObject* programObject);