X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fprogram_backend.h;h=2a223ff5ae1b50ffc46fc343c4a45996a04208cc;hb=8a8cce8ef4ee28b3572a72958b8b407759f9f826;hp=4ae729e2c95525cc2ef8e102991d0bc25e464632;hpb=160e9eea29bd10034733d59507fa1bcca36be401;p=libs%2Fgl.git diff --git a/source/backends/opengl/program_backend.h b/source/backends/opengl/program_backend.h index 4ae729e2..2a223ff5 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; @@ -26,7 +27,6 @@ protected: { std::map textures; std::map blocks; - std::map spec_values; }; struct UniformCall @@ -40,26 +40,28 @@ protected: UniformCall(unsigned l, unsigned s, FuncPtr f): location(l), size(s), func(f) { } }; - unsigned id; - unsigned stage_ids[MAX_STAGES]; - bool linked; + unsigned id = 0; + unsigned stage_ids[MAX_STAGES] = { }; + bool linked = false; std::vector uniform_calls; 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 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 &); + void finalize(const Module &, TransientData &); 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 &); void set_stage_debug_name(unsigned, Stage);