X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fprogram_backend.h;fp=source%2Fbackends%2Fvulkan%2Fprogram_backend.h;h=3bdf3b7339625828e4650d75be9dba08ebbc2bad;hb=99ca354f18119f82f1adeca100cd665a8f640317;hp=0000000000000000000000000000000000000000;hpb=4cd245dafe6a7ee5c93edca5aee2d146f1155309;p=libs%2Fgl.git diff --git a/source/backends/vulkan/program_backend.h b/source/backends/vulkan/program_backend.h new file mode 100644 index 00000000..3bdf3b73 --- /dev/null +++ b/source/backends/vulkan/program_backend.h @@ -0,0 +1,48 @@ +#ifndef MSP_GL_PROGRAM_BACKEND_H_ +#define MSP_GL_PROGRAM_BACKEND_H_ + +#include +#include +#include +#include +#include "reflectdata.h" + +namespace Msp { +namespace GL { + +class Device; + +class VulkanProgram: public NonCopyable +{ + friend class VulkanPipelineState; + +protected: + struct TransientData + { }; + + Device &device; + unsigned n_stages = 0; + std::vector creation_info; + std::vector desc_set_layout_handles; + VkPipelineLayout layout_handle = 0; + + VulkanProgram(); + VulkanProgram(VulkanProgram &&); + ~VulkanProgram(); + + bool has_stages() const; + void add_glsl_stages(const GlslModule &, const std::map &, TransientData &); + void add_spirv_stages(const SpirVModule &, const std::map &); + + void finalize(const Module &, TransientData &) { } + void finalize_uniforms(); + + void set_debug_name(const std::string &) { } +}; + +using ProgramBackend = VulkanProgram; + +} // namespace GL +} // namespace Msp + +#endif