// metal-shader-program.h #pragma once #include "metal-base.h" #include "metal-shader-object-layout.h" namespace gfx { using namespace Slang; namespace metal { class ShaderProgramImpl : public ShaderProgramBase { public: DeviceImpl* m_device; RefPtr m_rootObjectLayout; struct Module { SlangStage stage; String entryPointName; ComPtr code; NS::SharedPtr library; }; List m_modules; ShaderProgramImpl(DeviceImpl* device); ~ShaderProgramImpl(); virtual Result createShaderModule( slang::EntryPointReflection* entryPointInfo, List>& kernelCodes) override; }; } // namespace metal } // namespace gfx