From f93ff006425a90759829aefad0fc96a725a30228 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Mon, 1 Jun 2026 21:35:28 +0800 Subject: [PATCH] [Chore] (MG_State/ProgramState): add more remarks to GenerateBinary() --- MobileGL/MG_State/GLState/ProgramState/ProgramObject.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MobileGL/MG_State/GLState/ProgramState/ProgramObject.cpp b/MobileGL/MG_State/GLState/ProgramState/ProgramObject.cpp index 4fb7d242..93831d19 100644 --- a/MobileGL/MG_State/GLState/ProgramState/ProgramObject.cpp +++ b/MobileGL/MG_State/GLState/ProgramState/ProgramObject.cpp @@ -386,6 +386,8 @@ namespace MobileGL::MG_State::GLState { MGLOG_D("ProgramObject %u: GenerateBinary - start", m_externalIndex); Vector> shaders(m_shaders.size()); Vector shaderTypes(m_shaders.size()); + + // 1. Compile shaders for (SizeT i = 0; i < m_shaders.size(); i++) { auto shaderType = MG_Util::ConvertShaderStageToGLEnum(m_shaders[i]->GetShaderStage()); shaderTypes[i] = shaderType; @@ -409,6 +411,7 @@ namespace MobileGL::MG_State::GLState { shaders[i].get()); } + // 2. Do actual linking ProgramAttrib attrib{.shaders = Move(shaders), .explicitVertexInLocations = m_explicitAttribLocations, .explicitFragmentOutLocations = m_explicitFragDataLocation}; @@ -435,11 +438,13 @@ namespace MobileGL::MG_State::GLState { MGLOG_D("ProgramObject %u: GenerateBinary - generated %zu SPIR-V modules", m_externalIndex, m_generatedSpirv.size()); + // 3. Linked SPIR-V generated, sanitize and optimize it for (auto& spv : m_generatedSpirv) { auto success = ShaderCompiler::SanitizeAndOptimizeBinary(spv, spv); MOBILEGL_ASSERT(success, "SanitizeBinary failed"); } + // 4. Do reflection (find global UBO etc.) for (SizeT i = 0; i < m_generatedSpirv.size(); i++) { auto& spv = m_generatedSpirv[i];