participant App participant "ANGLE Front-end" participant "Vulkan Back-end" participant "ANGLE Translator" participant "GlslangWrapperVk" participant "Glslang" App->"ANGLE Front-end": glCompileShader (VS) "ANGLE Front-end"->"Vulkan Back-end": ShaderVk::compile "Vulkan Back-end"->"ANGLE Translator": sh::Compile "ANGLE Translator"-->"ANGLE Front-end": return Vulkan-compatible GLSL Note right of "ANGLE Front-end": Source is using bogus\nVulkan qualifiers to be\ncorrected at link time. Note right of App: Same for FS, GS, etc... App->"ANGLE Front-end": glCreateProgram (...) App->"ANGLE Front-end": glAttachShader (...) App->"ANGLE Front-end": glLinkProgram "ANGLE Front-end"->"Vulkan Back-end": ProgramVk::link Note right of "Vulkan Back-end": ProgramVk inits uniforms,\nlayouts, and descriptors. "Vulkan Back-end"->GlslangWrapperVk: GlslangWrapperVk::GetShaderSpirvCode GlslangWrapperVk->Glslang: GlslangToSpv Glslang-->GlslangWrapperVk: Return SPIR-V Note right of GlslangWrapperVk: Transform SPIR-V GlslangWrapperVk-->"Vulkan Back-end": return transformed SPIR-V "Vulkan Back-end"-->"ANGLE Front-end": return success Note right of App: App execution continues... App->"ANGLE Front-end": glDrawArrays (any draw) "ANGLE Front-end"->"Vulkan Back-end": ContextVk::drawArrays Note right of "Vulkan Back-end": We init VkShaderModules\nand VkPipeline then\nrecord the draw. "Vulkan Back-end"-->"ANGLE Front-end": return success AppAppANGLE Front-endANGLE Front-endVulkan Back-endVulkan Back-endANGLE TranslatorANGLE TranslatorGlslangWrapperVkGlslangWrapperVkGlslangGlslangglCompileShader (VS)ShaderVk::compilesh::Compilereturn Vulkan-compatible GLSLSource is using bogusVulkan qualifiers to becorrected at link time.Same for FS, GS, etc...glCreateProgram (...)glAttachShader (...)glLinkProgramProgramVk::linkProgramVk inits uniforms,layouts, and descriptors.GlslangWrapperVk::GetShaderSpirvCodeGlslangToSpvReturn SPIR-VTransform SPIR-Vreturn transformed SPIR-Vreturn successApp execution continues...glDrawArrays (any draw)ContextVk::drawArraysWe init VkShaderModulesand VkPipeline thenrecord the draw.return success