diff options
Diffstat (limited to 'tools/gfx/vulkan/vk-shader-program.h')
| -rw-r--r-- | tools/gfx/vulkan/vk-shader-program.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/gfx/vulkan/vk-shader-program.h b/tools/gfx/vulkan/vk-shader-program.h new file mode 100644 index 000000000..f24f95e5c --- /dev/null +++ b/tools/gfx/vulkan/vk-shader-program.h @@ -0,0 +1,44 @@ +// 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<DeviceImpl> m_device; + + Array<VkPipelineShaderStageCreateInfo, 8> m_stageCreateInfos; + Array<String, 8> m_entryPointNames; + Array<ComPtr<ISlangBlob>, 8> m_codeBlobs; //< To keep storage of code in scope + Array<VkShaderModule, 8> m_modules; + RefPtr<RootShaderObjectLayout> m_rootObjectLayout; + + VkPipelineShaderStageCreateInfo compileEntryPoint( + const char* entryPointName, + ISlangBlob* code, + VkShaderStageFlagBits stage, + VkShaderModule& outShaderModule); + + virtual Result createShaderModule( + slang::EntryPointReflection* entryPointInfo, ComPtr<ISlangBlob> kernelCode) override; +}; + + +} // namespace vk +} // namespace gfx |
