]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/programdata.cpp
Split reflection data from Program to a separate struct
[libs/gl.git] / source / render / programdata.cpp
index 1ef013ddac86e5a6be72643fe711764f01428d30..65934d382ae29fad792c0b67031a406658b7b3fb 100644 (file)
@@ -159,7 +159,7 @@ bool ProgramData::validate_tag(Tag tag) const
        {
                if(tied_program)
                {
-                       const Program::UniformInfo &info = tied_program->get_uniform_info(tag);
+                       const ReflectData::UniformInfo &info = tied_program->get_uniform_info(tag);
                        if(is_image(info.type))
                                throw invalid_operation("ProgramData::uniform");
                }
@@ -473,25 +473,25 @@ int ProgramData::find_uniform_index(Tag tag) const
 
 vector<ProgramData::ProgramBlock>::iterator ProgramData::get_program(const Program &prog) const
 {
-       Program::LayoutHash prog_hash = prog.get_uniform_layout_hash();
+       ReflectData::LayoutHash prog_hash = prog.get_uniform_layout_hash();
        auto i = lower_bound_member(programs, prog_hash, &ProgramBlock::prog_hash);
        if(i!=programs.end() && i->prog_hash==prog_hash)
                return i;
 
-       const vector<Program::UniformBlockInfo> &block_infos = prog.get_uniform_blocks();
+       const vector<ReflectData::UniformBlockInfo> &block_infos = prog.get_uniform_blocks();
        unsigned index = i-programs.begin();
        programs.insert(i, 1+block_infos.size(), ProgramBlock(prog_hash));
 
        /* Block indices may change if new shared blocks need to be inserted.  Store
        the hashes so they can be matched up later. */
-       vector<Program::LayoutHash> block_hashes;
+       vector<ReflectData::LayoutHash> block_hashes;
        block_hashes.reserve(programs.size());
        for(const ProgramBlock &b: programs)
                block_hashes.push_back(b.block_index>=0 ? blocks[b.block_index].block_hash : 0);
 
        for(unsigned j=0; j<block_infos.size(); ++j)
        {
-               const Program::UniformBlockInfo &info = block_infos[j];
+               const ReflectData::UniformBlockInfo &info = block_infos[j];
                block_hashes[index+1+j] = info.layout_hash;
                programs[index+1+j].bind_point = info.bind_point;
 
@@ -519,7 +519,7 @@ vector<ProgramData::ProgramBlock>::iterator ProgramData::get_program(const Progr
        return programs.begin()+index;
 }
 
-void ProgramData::update_block_uniform_indices(SharedBlock &block, const Program::UniformBlockInfo &info) const
+void ProgramData::update_block_uniform_indices(SharedBlock &block, const ReflectData::UniformBlockInfo &info) const
 {
        uint8_t *indices = block.indices.values;
        if(info.uniforms.size()>16)
@@ -586,7 +586,7 @@ void ProgramData::update_block_uniform_indices(SharedBlock &block, const Program
        }
 }
 
-void ProgramData::update_block(SharedBlock &block, const Program::UniformBlockInfo &info) const
+void ProgramData::update_block(SharedBlock &block, const ReflectData::UniformBlockInfo &info) const
 {
        const uint8_t *indices = block.get_uniform_indices();
        for(unsigned i=0; i<info.uniforms.size(); ++i)
@@ -620,7 +620,7 @@ vector<ProgramData::ProgramBlock>::const_iterator ProgramData::prepare_program(c
                        dirty = 0;
                }
 
-               const vector<Program::UniformBlockInfo> &block_infos = prog.get_uniform_blocks();
+               const vector<ReflectData::UniformBlockInfo> &block_infos = prog.get_uniform_blocks();
 
                if(prog_begin->masks.dirty==ALL_ONES)
                {
@@ -628,7 +628,7 @@ vector<ProgramData::ProgramBlock>::const_iterator ProgramData::prepare_program(c
                        Refresh uniform indices within the program's blocks. */
                        prog_begin->masks.used = 0;
                        auto j = prog_begin+1;
-                       for(const Program::UniformBlockInfo &b: block_infos)
+                       for(const ReflectData::UniformBlockInfo &b: block_infos)
                        {
                                SharedBlock &shared = blocks[j->block_index];
                                if(shared.dirty==ALL_ONES)
@@ -642,7 +642,7 @@ vector<ProgramData::ProgramBlock>::const_iterator ProgramData::prepare_program(c
                // Update the contents of all dirty blocks.
                bool buffered_blocks_updated = false;
                auto j = prog_begin+1;
-               for(const Program::UniformBlockInfo &b: block_infos)
+               for(const ReflectData::UniformBlockInfo &b: block_infos)
                {
                        SharedBlock &shared = blocks[j->block_index];
                        if(shared.dirty)
@@ -684,7 +684,7 @@ vector<ProgramData::ProgramBlock>::const_iterator ProgramData::prepare_program(c
 void ProgramData::apply(const Program &prog, PipelineState &state) const
 {
        auto prog_begin = prepare_program(prog);
-       Program::LayoutHash prog_hash = prog_begin->prog_hash;
+       ReflectData::LayoutHash prog_hash = prog_begin->prog_hash;
        for(auto i=prog_begin+1; (i!=programs.end() && i->prog_hash==prog_hash); ++i)
                if(i->block)
                {
@@ -725,7 +725,7 @@ void ProgramData::TaggedUniform::replace_value(Uniform *v)
 }
 
 
-ProgramData::SharedBlock::SharedBlock(Program::LayoutHash h):
+ProgramData::SharedBlock::SharedBlock(ReflectData::LayoutHash h):
        block_hash(h),
        used(0),
        dirty(0),
@@ -740,7 +740,7 @@ const uint8_t *ProgramData::SharedBlock::get_uniform_indices() const
 }
 
 
-ProgramData::ProgramBlock::ProgramBlock(Program::LayoutHash h):
+ProgramData::ProgramBlock::ProgramBlock(ReflectData::LayoutHash h):
        prog_hash(h),
        bind_point(-1),
        block_index(-1)