// XXX All these mutables are a bit silly, but I'm out of better ideas
const Program *tied_program;
std::vector<TaggedUniform> uniforms;
+ unsigned generation;
mutable std::vector<SharedBlock> blocks;
mutable std::vector<ProgramBlock> programs;
mutable BufferBackedUniformBlock *last_buffer_block;
mutable Buffer *buffer;
mutable Mask dirty;
+ std::string debug_name;
public:
ProgramData(const Program * = 0);
void uniform_array(Tag, unsigned, V);
bool validate_tag(Tag) const;
void add_uniform(Tag, Uniform *);
+ void mark_dirty(Mask);
public:
void uniform(Tag, const Uniform &);
void uniform(Tag, int);
void remove_uniform(Tag);
+ unsigned get_generation() const { return generation; }
+
std::vector<Tag> get_uniform_tags() const;
const Uniform &get_uniform(Tag) const;
const Uniform *find_uniform(Tag) const;
/** Applies uniform blocks for the currently bound program, creating them
if needed. */
void apply() const;
+
+ void set_debug_name(const std::string &);
};
template<typename T, unsigned N>