diff options
| author | lucy96chen <47800040+lucy96chen@users.noreply.github.com> | 2022-05-26 10:54:35 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-26 10:54:35 -0700 |
| commit | 43e1b7cdc70b2fcac8a3e8ee72f5bc91726f4ec5 (patch) | |
| tree | 1e4701b4ab324a199b81e1f6c671f6660f1050c5 /tools/gfx/vulkan/vk-shader-program.h | |
| parent | 5ff4f42c636a67724523e4fe60697cfac64908cd (diff) | |
Split render-vk.h/.cpp into a set of smaller files (#2244)
* Some preliminary work on splitting render-vk
* render-vk split, tests currently crash on null reference
* fixed circular include
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 |
