X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fprogram_backend.h;h=14650708e32abe77ee8f3ac3e851212e4b2ce895;hp=dbf043e9c89ba39a808432f80a001c2e933d68cb;hb=89347a620294a1136ee111edeadec68390654f78;hpb=2e6e6fd559010aad6ae0d44c433e32acb387e8b9 diff --git a/source/backends/opengl/program_backend.h b/source/backends/opengl/program_backend.h index dbf043e9..14650708 100644 --- a/source/backends/opengl/program_backend.h +++ b/source/backends/opengl/program_backend.h @@ -4,12 +4,13 @@ #include #include #include +#include #include "reflectdata.h" namespace Msp { namespace GL { -class OpenGLProgram +class OpenGLProgram: public NonCopyable { friend class OpenGLPipelineState; @@ -22,13 +23,6 @@ protected: MAX_STAGES }; - struct TransientData - { - std::map textures; - std::map blocks; - std::map spec_values; - }; - struct UniformCall { using FuncPtr = void (*)(unsigned, unsigned, const void *); @@ -47,19 +41,19 @@ protected: std::string debug_name; OpenGLProgram(); + OpenGLProgram(OpenGLProgram &&); ~OpenGLProgram(); bool has_stages() const; unsigned add_stage(Stage); - void add_glsl_stages(const GlslModule &, const std::map &, TransientData &); + void add_glsl_stages(const GlslModule &, const std::map &); void compile_glsl_stage(const GlslModule &, unsigned); - void add_spirv_stages(const SpirVModule &, const std::map &, TransientData &); + void add_spirv_stages(const SpirVModule &, const std::map &); - void finalize(const Module &, TransientData &); + void link(const Module &); void query_uniforms(); void query_uniform_blocks(const std::vector &); void query_attributes(); - void apply_bindings(const TransientData &); void finalize_uniforms(); void set_debug_name(const std::string &);