// vk-shader-program.h #pragma once #include "vk-base.h" #include "vk-shader-object-layout.h" namespace gfx { using namespace Slang; namespace vk { class ShaderProgramImpl : public ShaderProgramBase { public: ShaderProgramImpl(DeviceImpl* device); ~ShaderProgramImpl(); virtual void comFree() override; BreakableReference m_device; List m_stageCreateInfos; List m_entryPointNames; List> m_codeBlobs; //< To keep storage of code in scope List m_modules; RefPtr m_rootObjectLayout; VkPipelineShaderStageCreateInfo compileEntryPoint( const char* entryPointName, ISlangBlob* code, VkShaderStageFlagBits stage, VkShaderModule& outShaderModule); virtual Result createShaderModule( slang::EntryPointReflection* entryPointInfo, ComPtr kernelCode) override; }; } // namespace vk } // namespace gfx