X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fprogram.h;h=b6b639bfcbb49b877bcc46254193daa36ab41400;hb=d8d4c2aeaf109ab7ba55888bef5364fe11b5b02d;hp=7f6ad54e3a6c9a14c3cfb4224d1d0d83ce07c69a;hpb=99ca354f18119f82f1adeca100cd665a8f640317;p=libs%2Fgl.git diff --git a/source/core/program.h b/source/core/program.h index 7f6ad54e..b6b639bf 100644 --- a/source/core/program.h +++ b/source/core/program.h @@ -51,6 +51,7 @@ private: }; ReflectData reflect_data; + SpirVModule *specialized_spirv = 0; public: /// Constructs an empty Program with no shader stages attached. @@ -59,13 +60,14 @@ public: /// Constructs a Program from a Module, with specialization constants. Program(const Module &, const std::map & = std::map()); + Program(Program &&); + ~Program(); + void add_stages(const Module &, const std::map & = std::map()); private: - static std::vector collect_used_variables(const SpirVModule &, const std::map &); - static void collect_visited_blocks(const std::vector &, unsigned, std::vector &); - void collect_uniforms(const SpirVModule &, const std::vector &); + void collect_uniforms(const SpirVModule &); void collect_block_uniforms(const SpirVModule::Structure &, const std::string &, unsigned, std::vector &); - void collect_attributes(const SpirVModule &, const std::vector &); + void collect_attributes(const SpirVModule &); void collect_builtins(const SpirVModule &); void collect_builtins(const SpirVModule::Structure &);