]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/validate.h
Even more validation for uniform mismatches
[libs/gl.git] / source / glsl / validate.h
index 63af3610a3b9a81e7bc3c73921eb6c16c3808964..acb5b4e4086810972263a03ad5f2cb065fc205d1 100644 (file)
@@ -145,24 +145,29 @@ private:
 class GlobalInterfaceValidator: private Validator
 {
 private:
-       struct Binding
+       struct Uniform
        {
                Node *node;
                TypeDeclaration *type;
                std::string name;
+               int location;
+               unsigned loc_count;
+               int desc_set;
+               int bind_point;
 
-               Binding(VariableDeclaration &v): node(&v), type(v.type_declaration), name(v.name) { }
-               Binding(InterfaceBlock &i): node(&i), type(i.struct_declaration), name(i.block_name) { }
+               Uniform(): node(0), type(0), location(-1), loc_count(1), desc_set(0), bind_point(-1) { }
        };
 
-       std::map<unsigned, std::map<unsigned, Binding> > used_bindings;
+       std::list<Uniform> uniforms;
+       std::map<std::string, const Uniform *> used_names;
+       std::map<unsigned, const Uniform *> used_locations;
+       std::map<unsigned, std::map<unsigned, const Uniform *> > used_bindings;
 
 public:
        void apply(Module &);
 
 private:
-       void get_binding(const Layout &, unsigned &, int &);
-       void check_binding(const Layout &, const Binding &);
+       void check_uniform(const Uniform &);
 
        virtual void visit(VariableDeclaration &);
        virtual void visit(InterfaceBlock &);